吴恩达机器学习入门笔记3-线性回归

3 线性回归

3.1 最小二乘法

试图找到一条直线,使所有样本到直线上的欧式距离之和最小

3.2 代价函数

cost function,往往令其最小化

单变量线性回归假设函数
\[ h(\theta)=\theta_0+\theta_1x\tag{3.1} \]
[外链图片转存失败(img-uwFyHX2d-1568602098755)(E:\Artificial Intelligence Markdown\Machine Learning\pictures\3.2 代价函数.png)]

3.2.1 梯度下降法

不停进行\(\theta\)迭代计算使代价函数J最小化

[外链图片转存失败(img-0joBWK6T-1568602098756)(E:\Artificial Intelligence Markdown\Machine Learning\pictures\3.2.1 梯度下降法梗概.png)]

[外链图片转存失败(img-E8lb3O2J-1568602098757)(E:\Artificial Intelligence Markdown\Machine Learning\pictures\3.2.1 梯度下降法直观解释.png)]

  • \(\alpha\)过小,代价函数需要很多步才能到达全局最低点
  • \(\alpha\)过大,代价函数可能会越过最低点,导致不收敛甚至发散
  • 正常选取\(\alpha\)后,下降过程中接近局部最低点时,因为局部最低点导数为0,因为斜率变小,梯度下降的幅度也会越来越小,因此无需担心\(\alpha\)过大导致不收敛
  • 如果代价函数已经到达局部最优点,下次参数数值便不会更新
(a)Batch梯度下降法

每次梯度下降均使用整个训练集的数据

3.2.2 代价函数-平方误差函数

\[ J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)^2\tag{3.2} \]

[外链图片转存失败(img-Mwb2RX9I-1568602098761)(E:\Artificial Intelligence Markdown\Machine Learning\pictures\3.2.2 平方误差函数.png)]

3.3 多元线性回归

多元即多个未知数\(x\),多个参数\(\theta\),其中\(x_0=1\)
\[ h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\cdots+\theta_nx_n=\theta^Tx\tag{3.3} \]

\[ x=\left[\begin{matrix}x_0\\x_1\\x_2\\\vdots\\x_n\end{matrix}\right] \theta=\left[\begin{matrix}\theta_0\\\theta_1\\\theta_2\\\vdots\\\theta_n\end{matrix}\right] \]

3.3.1 多元梯度下降法

[外链图片转存失败(img-yv969LKY-1568602098763)(E:\Artificial Intelligence Markdown\Machine Learning\pictures\3.3.1 多元梯度下降法.png)]

增快梯度下降速度的技巧

  • 特征缩放,接近[-3 3],过大过小都需要改变[外链图片转存失败(img-PpkdibbU-1568602098765)(E:\Artificial Intelligence Markdown\Machine Learning\pictures\3.3.1 加速下降_确保取值范围归一.png)]
  • 每个特征值减去总特征值的平均
  • \(x_1\leftarrow\frac{x_1-\mu_1}{S_1}\)\(S_1\)为特征值范围

确保代价函数下降正确方法

  • 降低学习率\(\alpha\):eg:0.003 0.03 0.3尽可能大
  • 画出\(J(\theta)\)-迭代次数的曲线,确保其随着次数增加函数减小

依据经验选择不同特征进行线性回归

3.3.2 正规方程

无需进行多次迭代运算即可得到合适的参数\(\theta\)值使代价函数下降到最小
\[ \theta=(X^TX)^{-1}X^Ty\tag{3.4} \]
X为特征矩阵,y为特征计算的真实值[外链图片转存失败(img-OfzAnyFH-1568602098766)(E:\Artificial Intelligence Markdown\Machine Learning\pictures\3.3.2 正规方程.png)]

3.3.3 梯度下降法和正规方程的优缺点

梯度下降法 正规方程
缺点 1.需要选择学习率\(\alpha\)
2.需要多次迭代计算
1.\((X^TX)^{-1}\)计算复杂
优点 计算速度受特征变量维度影响小 1.无需考虑学习率
2.无需进行迭代计算
  • 特征变量<10000可采用正规方程,再大则选取梯度下降法

3.4 编程tips

3.4.1 matlab

有关代码风格

  1. %%一段结束后空一行阅读容易
  • 作梯度下降时,进行代价函数偏导计算记得给求和后矩阵转置,令参数量与参数改变量对应

\[ \theta_j:=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})^2x_j^{(i)} \]

  • matlab中,inv(A)*B速度比A\B慢,\代表求解线性方程组Ax=B
    \[ inv(X'X)X==(X'X)\setminus{X} \]

  • 进行对应列运算时,可采用bsxfun(fun,A,B)实现,速度更快

  • 多元变量情况下,采用向量化计算更快
    \[ J(\theta)=\frac{1}{2m}(X\theta-\stackrel{\rightarrow}{y})^T(X\theta-\stackrel{\rightarrow}{y}) \]

  • 针对多元变量的线性回归,预测新数据时需要把新数据标准化后再将矩阵右侧加一列

  • 实际上无需编些\(J(\theta)\)只需编写其偏导数,但为了监控\(J(\theta)\)的值确保梯度下降法正确工作,需要记录代价函数每次更新的量

  • opptions=optimset('Gradobj','On','MaxIter','100');
    initialTheta=zeros(2,1);
    [jVal,gradient]=costFunction(theta);%gradient表示梯度,即代价函数对各个参数的偏导
    [optTheta,functionval,exitFlag]=fminunc(@costFunction,initialTheta,options);%@表示地址,fminunc可使代价函数最小化
    %该函数要求参数至少为二维
    %利用设定的高级函数计算代价函数最小化时的参数值
  • %反向传播
    thetaVec=[Theta1(:) ; Theta2(:) ; Theta3(:)];
    DVec=[D1(:) ; D2(:) ; D3(:)];
    Theta1=reshape(thetaVec(1:110),10,11);
    Theta2=reshape(thetaVec(111:220),10,11);
    Theta1=reshape(thetaVec(221:231),1,11);

    [外链图片转存失败(img-KrwH0cp0-1568602098767)(E:\Artificial Intelligence Markdown\Machine Learning\pictures\3.4.1 反向传播matlab算法.png)]

  • maltab中sum(A.^2)与A*A'的值有略微不同

  • 编程时注意使用矩阵,使函数满足不同维数的情况

  • SVM程序包一般会自动加上偏置量\(x_0=1\),因此无需额外添加

  • 使用svmTrain时记得应用训练集而不是交叉验证集

猜你喜欢

转载自www.cnblogs.com/jestland/p/11548483.html
今日推荐