Cost Function(代价函数)
代价函数是一个测量模型的好坏,就能力而言是预测x和y之间的关系。
代价函数的值越小,则表示这个模型越好。
代价函数公式如下:
%3D%5Cfrac%7B1%7D%7B2m%7D%5Csum%7Bi%3D1%7D%5Em(h%5Ctheta(x%5E%7B(i)%7D)-y%5E%7B(i)%7D)%5E2%0A#card=math&code=J%28%5Ctheta0%2C%5Ctheta_1%29%3D%5Cfrac%7B1%7D%7B2m%7D%5Csum%7Bi%3D1%7D%5Em%28h_%5Ctheta%28x%5E%7B%28i%29%7D%29-y%5E%7B%28i%29%7D%29%5E2%0A&height=62&width=324)
这里公式只是针对一个特征量的情况,属于特殊情形。
回归函数(Hypothesis):
%3D%5Ctheta0%2B%5Ctheta_1x%0A#card=math&code=h%5Ctheta%28x%29%3D%5Ctheta_0%2B%5Ctheta_1x%0A&height=26&width=153)
目标(Goal):
%0A#card=math&code=minimizeJ%28%5Ctheta_0%2C%5Ctheta_1%29%0A&height=26&width=168)
使用代价函数的目的就是找到最优的回归函数,减小预测误差。
Gradient Descent(梯度下降)
:=在数学中表示赋值
梯度下降即使用偏导数,进行不断的尝试,从而找到代价函数的最优点
其公式为:
%5C%5C%0A%5Ctheta_1%3A%3D%5Ctheta_1-%5Calpha%20%5Cfrac%7B%5Cpartial%7D%7B%5Cpartial%5Ctheta_1%7DJ(%5Ctheta_0%2C%5Ctheta_1)%0A#card=math&code=%5Ctheta_0%3A%3D%5Ctheta_0-%5Calpha%20%5Cfrac%7B%5Cpartial%7D%7B%5Cpartial%5Ctheta_0%7DJ%28%5Ctheta_0%2C%5Ctheta_1%29%5C%5C%0A%5Ctheta_1%3A%3D%5Ctheta_1-%5Calpha%20%5Cfrac%7B%5Cpartial%7D%7B%5Cpartial%5Ctheta_1%7DJ%28%5Ctheta_0%2C%5Ctheta_1%29%0A&height=110&width=900)
其中α 表示学习效率,J(θ0,θ1)表示代价函数。
经过变换,可得:
%7D)-y%5E%7B(i)%7D)%5C%5C%0A%5Ctheta1%3A%3D%5Ctheta_1-%5Calpha%5Cfrac%7B1%7D%7Bm%7D%5Csum%7Bi%3D1%7D%5Em(h%5Ctheta(x%5E%7B(i)%7D)-y%5E%7B(i)%7D)%5Ccdot%20x%5E%7B(i)%7D%0A#card=math&code=%5Ctheta_0%3A%3D%5Ctheta_0-%5Calpha%5Cfrac%7B1%7D%7Bm%7D%5Csum%7Bi%3D1%7D%5Em%28h%5Ctheta%28x%5E%7B%28i%29%7D%29-y%5E%7B%28i%29%7D%29%5C%5C%0A%5Ctheta_1%3A%3D%5Ctheta_1-%5Calpha%5Cfrac%7B1%7D%7Bm%7D%5Csum%7Bi%3D1%7D%5Em%28h_%5Ctheta%28x%5E%7B%28i%29%7D%29-y%5E%7B%28i%29%7D%29%5Ccdot%20x%5E%7B%28i%29%7D%0A&height=129&width=900)
在代码当中这两个值需要同时更新,逐渐逼近最小值。
房价预测案例
利用矩阵和线性回归方程,对房价进行预测。
先构建一个n×2的矩阵
线性回归方程:
%3D-40%2B0.25x%0A#card=math&code=h_%5Ctheta%28x%29%3D-40%2B0.25x%0A&height=26&width=189)
上述回归方程可写成一个2×1的矩阵,两个矩阵相乘,便可得到预测值。
%7D%3D%0A%5Cleft%5B%0A%5Cbegin%7Bmatrix%7D%0A1%26houseprice1%5C%5C%0A1%26houseprice2%5C%5C%0A1%26houseprice3%5C%5C%0A%5Cvdots%26%5Cvdots%5C%5C%0A1%26housepricen%0A%5Cend%7Bmatrix%7D%0A%5Cright%5D%0A%5Ccdot%0A%5Cleft%5B%0A%5Cbegin%7Bmatrix%7D%0A-40%5C%5C0.25%0A%5Cend%7Bmatrix%7D%0A%5Cright%5D%3Dvector%7Bn%5Ctimes1%7D%0A#card=math&code=matrix%7Bn%5Ctimes2%7D%5Ccdot%20vector%7Bh%5Ctheta%28x%29%7D%3D%0A%5Cleft%5B%0A%5Cbegin%7Bmatrix%7D%0A1%26houseprice1%5C%5C%0A1%26houseprice2%5C%5C%0A1%26houseprice3%5C%5C%0A%5Cvdots%26%5Cvdots%5C%5C%0A1%26housepricen%0A%5Cend%7Bmatrix%7D%0A%5Cright%5D%0A%5Ccdot%0A%5Cleft%5B%0A%5Cbegin%7Bmatrix%7D%0A-40%5C%5C0.25%0A%5Cend%7Bmatrix%7D%0A%5Cright%5D%3Dvector_%7Bn%5Ctimes1%7D%0A&height=152&width=606)
此n维向量表示预测的房价。
New Gradient Descent(完整的梯度下降)
前边提到的公式都是特殊,下面的几个公式则是通式:
%3D%5Cfrac%7B1%7D%7B2m%7D%5Csum%7Bi%3D1%7D%5Em(h%5Ctheta(x%5E%7B(i)%7D)-y%5E%7B(i)%7D)%5E2%5C%5C%0Ah%5Ctheta(x)%3D%5Ctheta%5ETx%3D%5Ctheta_0x_0%2B%5Ctheta_1x_1%2B…%2B%5Ctheta_nx_n%5C%5C%0A%5Ctheta_j%3A%3D%5Ctheta_j-%5Calpha%5Cfrac%7B1%7D%7Bm%7D%5Csum%7Bi%3D1%7D%5Em(h%5Ctheta(x%5E%7B(i)%7D)-y%5E%7B(i)%7D)%5Ccdot%20x_j%5E%7B(i)%7D%5C%5C%0A0%5Cle%20j%20%5Cle%20n%0A#card=math&code=J%28%5Ctheta_0%2C%5Ctheta_1%2C…%2C%5Ctheta_n%29%3D%5Cfrac%7B1%7D%7B2m%7D%5Csum%7Bi%3D1%7D%5Em%28h%5Ctheta%28x%5E%7B%28i%29%7D%29-y%5E%7B%28i%29%7D%29%5E2%5C%5C%0Ah%5Ctheta%28x%29%3D%5Ctheta%5ETx%3D%5Ctheta0x_0%2B%5Ctheta_1x_1%2B…%2B%5Ctheta_nx_n%5C%5C%0A%5Ctheta_j%3A%3D%5Ctheta_j-%5Calpha%5Cfrac%7B1%7D%7Bm%7D%5Csum%7Bi%3D1%7D%5Em%28h_%5Ctheta%28x%5E%7B%28i%29%7D%29-y%5E%7B%28i%29%7D%29%5Ccdot%20x_j%5E%7B%28i%29%7D%5C%5C%0A0%5Cle%20j%20%5Cle%20n%0A&height=189&width=900)
上述的几个公式都是通过多元函数所得出来的结果。
注: x0默认设置为1
Feature Scaling(特征浓缩)
引入特征浓缩,目的是为了让梯度下降能够运行的更快,加速梯度下降的收敛
方法一
做法: 将每一个特征变量约束在一个范围当中。
例如:
上述的特征变量都被约束在一个比较小的范围内,这样能够提高梯度下降的速度,但时约束的范围也不能太小,或者太大,例如:
缩放特征公式之一:
上述当中的μ的意思是训练集中x的平均值
S是该特征值的范围:max-min,也可以用标准差,其中S不需要太精确
方法二
学习率α是另外一种特征浓缩的方法
在上面的梯度下降方程中,如果α太小,学习的效率则会非常慢;如果α太大,那么也许每一次迭代J(θ)并不会减小,甚至可能不会收敛。
通过不断的尝试,来选取最合适的α使得代价函数下降最快。
特征选择
- 选择合适的特征变量
当有多个特征变量的时候,可以选择一个这些变量的乘积或者加减的值作为特征变量,从而减少特征变量的个数。例如: 计算一个房子的占地面积与房价的关系,则可以用面积(Area)代替宽度(Width)和深度(Depth)。 - 选择合适的回归方程
相同的一堆数据,可以对应不同的回归方程,其中就得选择一个合适的回归方程来对数据进行处理,选择哪种回归方程就必须得根据实际的情况来决定了,有时候可能是开根,有时候也可能是二次、三次。
Normal Equation(正规方程)
用于求解参数θ的最优值的方法
正规方程法(标准方程法)只需要计算一次就可以得到,其公式如下:
%5E%7B-1%7DX%5ETy%0A#card=math&code=%5Ctheta%3D%28X%5ETX%29%5E%7B-1%7DX%5ETy%0A&height=29&width=164)
所得θ会最小化线性回归的代价函数J,X是设计矩阵(Design Matrix)
使用标准方程法就不需要进行特征浓缩,但同样特征浓缩还是非常重要的。
Gradient Descent
优点
- 有大量特征变量数目的情况下也能运行得相当好,适用于数据量大的情况
缺点
- 需要选择一个α学习率
- 需要多次迭代
Normal Equation
优点
- 不需要选择α学习率
- 不需要迭代
缺点
- 需要求解(X-1,矩阵的时间复杂度为O(n^3)
- 如果特征变量数目太大,计算则会非常慢,效率不高
