Cost Function(代价函数)

代价函数是一个测量模型的好坏,就能力而言是预测x和y之间的关系。

代价函数的值越小,则表示这个模型越好。

代价函数公式如下:

欧阳建荣-机器学习基础1 - 图1%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):

欧阳建荣-机器学习基础1 - 图2%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):

欧阳建荣-机器学习基础1 - 图3%0A#card=math&code=minimizeJ%28%5Ctheta_0%2C%5Ctheta_1%29%0A&height=26&width=168)

使用代价函数的目的就是找到最优的回归函数,减小预测误差。

Gradient Descent(梯度下降)

:=在数学中表示赋值

梯度下降即使用偏导数,进行不断的尝试,从而找到代价函数的最优点

其公式为:

欧阳建荣-机器学习基础1 - 图4%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)表示代价函数。

经过变换,可得:

欧阳建荣-机器学习基础1 - 图5%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的矩阵

欧阳建荣-机器学习基础1 - 图6

线性回归方程:

欧阳建荣-机器学习基础1 - 图7%3D-40%2B0.25x%0A#card=math&code=h_%5Ctheta%28x%29%3D-40%2B0.25x%0A&height=26&width=189)

上述回归方程可写成一个2×1的矩阵,两个矩阵相乘,便可得到预测值。

欧阳建荣-机器学习基础1 - 图8%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(完整的梯度下降)

前边提到的公式都是特殊,下面的几个公式则是通式:

欧阳建荣-机器学习基础1 - 图9%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(特征浓缩)

引入特征浓缩,目的是为了让梯度下降能够运行的更快,加速梯度下降的收敛

方法一

做法: 将每一个特征变量约束在一个范围当中。

例如:

欧阳建荣-机器学习基础1 - 图10

上述的特征变量都被约束在一个比较小的范围内,这样能够提高梯度下降的速度,但时约束的范围也不能太小,或者太大,例如:

欧阳建荣-机器学习基础1 - 图11

缩放特征公式之一:

欧阳建荣-机器学习基础1 - 图12

上述当中的μ的意思是训练集中x的平均值

S是该特征值的范围:max-min,也可以用标准差,其中S不需要太精确

方法二

学习率α是另外一种特征浓缩的方法

在上面的梯度下降方程中,如果α太小,学习的效率则会非常慢;如果α太大,那么也许每一次迭代J(θ)并不会减小,甚至可能不会收敛。

通过不断的尝试,来选取最合适的α使得代价函数下降最快。

特征选择

  • 选择合适的特征变量
    当有多个特征变量的时候,可以选择一个这些变量的乘积或者加减的值作为特征变量,从而减少特征变量的个数。例如: 计算一个房子的占地面积与房价的关系,则可以用面积(Area)代替宽度(Width)和深度(Depth)。
  • 选择合适的回归方程
    相同的一堆数据,可以对应不同的回归方程,其中就得选择一个合适的回归方程来对数据进行处理,选择哪种回归方程就必须得根据实际的情况来决定了,有时候可能是开根,有时候也可能是二次、三次。

Normal Equation(正规方程)

用于求解参数θ的最优值的方法

正规方程法(标准方程法)只需要计算一次就可以得到,其公式如下:

欧阳建荣-机器学习基础1 - 图13%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)
  • 如果特征变量数目太大,计算则会非常慢,效率不高