机器学习/Sklearn 学习笔记-解空间与正则化
回顾使用线性回归预测股价的例子,我采用了最简单的线性模型,y=Ax+b。在这个例子中,x是长度为5的列向量,分别记为x1、x2、x3、x4、x5。y和b是标量,A是长度为5的向量,记这5个量分别是A1、A2、A3、A4、A5,则这个模型可以表示为方程:y=A1*x1+A2*x2+A3*x3+A4*x4+A5*x5+b。sklearn从输入的样本中,算出A是多少,b是多少。sklearn是怎么找出A和b的值呢?就想我们学习任何新事物一样,很难一蹴而就的,总是一点一点学会的,学习的过程中经常有曲折,会不断地尝试、犯错然后改正,机器学习也有类型的过程。
在预测股价的这个例子中,我们要找出六个未知数。这六个未知数可能的取值范围是从负无穷大到正无穷大。模型假设这六个未知数是各不相干的,即当我们缩小了A1的取值范围,我们并不能据此缩小其他五个未知数的取值范围。如果可以,说明我们的方程可以进一步简化。这六个未知数的取值范围就是他们说的解空间。因为六个未知数是各不相干的,用他们的那套说辞就是,这个解空间是六维正交的。每一个未知数就是模型在其中一维上的长度,也是某个特征的权重。开玩笑地说,当然为了追求高大上,我们也可以把上面的方程用矩阵表示,然后说什么奇异矩阵,非奇异矩阵,进一步提高进入这一行的门槛。如果特征变多,我们也不能确定特征之间的相干性,其实用矩阵表示会方便一点。总之解空间就是模型或者方程组的未知系数的所有可能的取值范围。
初始的解空间很大,而计算机很笨的,只能一个一个地去尝试,速度再快的计算机也需很久的时间才能尝试完整个解空间。我们需要对解空间进行一些挑选,明显不可能的地方就不用搜索了。对解空间的挑选就是正则化。以预测股价的例子为例,我们知道A股有涨停跌停的限制的,可以对开盘价的权重进行一些限制。计算机在0.9到1.1之间搜寻就行了,其他范围多半是白费功夫。
什么样的A和b是好的?这个模型是用来预测股价的,当然是预测得越准越好。那我们怎么判断预测的准确性呢?