机器学习笔记2:线性回归

机器学习笔记2:线性回归

Andrew Ng机器学习课程学习笔记2

线性回归

参数说明:
  θi:parameters,参数
  x:input,输入
  y:output,输出
  h:hypothesis,假设
  m:数据数量
回归方程:
  一元线性的回归方程的一般格式如下,用于反应输出与输入之间的关系。
h θ ( x ) = θ 0 + θ 1 x h_θ(x) = θ_0 + θ_1x hθ(x)=θ0+θ1x
cost function:
  代价函数,就是hθ(x)与源数据的误差的平方的平均数,用来反应hθ(x)的准确度。
J ( θ 1 , θ 2 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ_1,θ_2) = \dfrac{1}{2m} \sum_{i=1}^{m}(h_θ(x^{(i)})-y^{(i)})^{2} J(θ1,θ2)=2m1i=1m(hθ(x(i))y(i))2
目标:
  目标就是让代价函数最小。
m i n i m i z e θ 1 , θ 2 J ( θ 1 , θ 2 ) \begin{array}{c} minimize\\ θ_1,θ_2 \end{array}J(θ_1,θ_2) minimizeθ1,θ2J(θ1,θ2)
Gradient descent
  梯度下降法,最小化代价函数的一种方法。该法是从某组参数θ12开始,不断地改变θ12的值,以使代价函数最小(或局部最小)。而这个改变的方法是在原来的参数基础上,减去一个数,这个数就是损失函数的导数再乘以一个速率α。
  具体的实现如下:
  repeat until convergence{
   θ j : = θ j − α ∂ J ( θ 1 , θ 2 ) ∂ θ j f o r ( j = 0 a n d j = 1 ) θ_j:=θ_j-α\dfrac{∂J(θ_1,θ_2)}{∂θ_j}\quad for(j = 0\quad and\quad j = 1) θj:=θjαθjJ(θ1,θ2)for(j=0andj=1)
  }
  α是学习速率,若值过高,会无法收敛,找不到最小值;若过低,则收敛特别慢,需选择合适的值。
  而且,该方法的结果跟θ12的初值有很大关系,θ12处值不同可以会得到不同的结果。
注意,要同时更新每个θj,不可以分时更新。换句话说,算出θ0的值后,不能马上把这个值赋给θ0,而是应该用旧的θ0的值,算出θ1之后,再同时更新这两个值。

多变量的线性回归
  上文所都是关于单一变量的情况,现在将器扩展为多变量的情况(即多个输入,多个x)。
  n:变量参数的个数
  xj(i):变量j的第i个input,输入
  x0:值为1,把这个当成第0个变量,实际不存在,是为了写成向量的方便,使输入矩阵x与参数矩阵θ列数一致
  多变量的梯度下降法,与单变量的一样,也是最小化代价函数的一种方法。该法是从某组参数θ12…θj开始,不断地改变θ12…θj的值,以使代价函数最小(或局部最小)。
  具体的实现如下:
  repeat until convergence{
   θ j : = θ j − α ∂ J ( θ 1 , θ 2 , . . . , θ j ) ∂ θ j f o r ( j = 0 , 1 , . . , j ) θ_j:=θ_j-α\dfrac{∂J(θ_1,θ_2,...,θ_j)}{∂θ_j} for(j = 0,1,..,j) θj:=θjαθjJ(θ1,θ2,...,θj)for(j=0,1,..,j)
  }
  用这个计算式的时候,还是得注意要同时改变各个参数的值。此外,使用前需要将多余的变量(比如高度线性相关的变量)删掉,还需归一化各个变量,这个归一化不需要特别严格,只需要让各个输入量的量级一样即可。

你可能感兴趣的:(Andrew,Ng机器学习)