目录

  • 四、多元线性回归
    • 4.1 特征缩放
    • 4.2 学习率α
    • 4.4 特征和多项式
    • 4.4 正规方程

四、多元线性回归

多特征下的假设形式:

4.1 特征缩放

特征缩放:Feature Scaling,对模型特征的数量级进行放大缩小,使之都在相近或者同一数量级上;

Q:为什么要引入特征缩放?
~~~~~~       对于有两个特征的房价预测模型,特征1是房屋大小,特征2是卧室数量,房屋大小可能几百平方米,而卧室数量只有几个,二者的数量级不在一个等级,因此对于特征1如果要梯度下降的话,需要移动很多步,或者沿着很复杂的路径,需要很多时间,最后画出来的代价函数等值线的偏移会很大(很扁的椭圆);

~~~~~~       通过特征缩放,将两个特征的量级置于同一等级,范围一般控制在 [0,1] 或者 [-1,1] ;

~~~~~~       特征缩放适用于数量等级差别大的特征,如果相差不大,比如0<= x1 <=3,-2<= x2 <=0.5,那么就不用考虑缩放,梯度下降法会正常地工作;如果再来个特征-100<= x3 <=100 或者 -0.0001<= x4 <=0.0001,那就要进行缩放了;

均值归一化:Mean normalization,对特征值采取 (值-均值)/(最大值) 的动作,从而使各特征的数量级处于相近水平;


特征缩放并不要求精确缩放,只是为了让梯度下降的速度更快一点而已;

4.2 学习率α

1、梯度下降算法正确运行的情况

~~~~~~       迭代次数越多 -> 代价函数值越小 -> 代价函数减小得越慢 -> 最终收敛;

~~~~~~       不同的问题,其收敛所需要的迭代次数都不相同,可以通过自动收敛测试(automatic convergence test)来测试到达第n此迭代时,代价函数接近收敛;原理就是设置一个阈值p,当下一步迭代的代价函数值与上一步迭代的代价函数值之差小于这个阈值p时,说明收敛;Jθ( iteration (n+1) ) - Jθ( iteration (n) ) < p;
~~~~~~       但由于阈值p难以确定,通常不建议使用这种方法,还是通过 代价函数值-迭代次数 曲线图来判断比较直接;

2、梯度下降算法运行错误的情况:

~~~~~~       若曲线上升,则说明过大的学习率使得每一步幅度太大,导致代价函数发散;进一步降低学习率后,发现曲线时升时降,那么还是说明学习率较大,应进一步降低;
~~~~~~       实验证明,只要学习率α足够小,那么就能保证每一次迭代都会导致代价函数值下降;但过小的α带来高准确性的同时,也会导致收敛缓慢,大大增加运行时间;所以,选择合适的学习率对于梯度下降算法很重要;

Q:如何选择合适的学习率α?
~~~~~~       按一定的规律不断尝试α,比如0.001, 0.003, 0.01, 0.03, 0.1, 0.3,1 .....,通过做 不同学习率的迭代次数-代价函数值图像来比较选择;

4.4 特征和多项式

定义新的特征:
~~~~~~       比如,房价预测中特征1为房屋所占土地长,特征2为房屋所占土地宽,那么hθ(x)=θ01x12x2;如果没有对长或者宽有特殊的要求,那么我们可以将两个特征转换为1个特征 -> 面积 s=x1 * x2,这样就把二元转换成了一元
~~~~~~       有时候定义一个新的特征可以得到更好的模型,而有时候却不这样;以上面模型为例,当定义面积这个特征后,我们发现:不同的长宽可以得到相同的面积,那么价格也一样,那一个长10m2宽10m2的房子和一个长100m2宽1m2的房子,它们俩价格能一样吗?
~~~~~~       所以,是否定义一个新的特征应根据实际情况、模型要求做出调整,调整的好才能达到优化模型的效果;

多项式回归 -> 多元线性回归:

~~~~~~       根据函数的了解和数据的走势,确定合适的多项式很重要,这里如何选择二次多项式,那么在后面是一个下降的趋势,是凸的,而房价不可能随着房屋尺寸变大而降低,所以不能选二次多项式;
~~~~~~       将多项式转换为多元一次方程式,也要考虑特征缩放,因为特征量级发生了变化;
~~~~~~       通过对平方根函数的了解,我认为它更适用于这个模型,因为它后面是一个上升缓慢的趋势,与数据的走势吻合度较高; h θ ( x ) = θ 0 + θ 1 ( size ) + θ 2 ( size ) h_{\theta}(x)=\theta_{0}+\theta_{1}(\text {size})+\theta_{2} \sqrt{(\text {size})} hθ​(x)=θ0​+θ1​(size)+θ2​(size) ​

4.4 正规方程

正规方程:Normal Eqution,通过导数值为零的点为原函数最小值这一原理从而直接找到代价损失函数J(θ)的最小值,从而确定θ;

~~~~~~       不需要多次迭代,一步就能走到代价函数的最小点;原理是基于函数的求导,比如一元二次函数的导数为0的点即为最小点,对于多元函数就求偏导;



~~~~~~       对于正规方程的推导,吴恩达老师并未给出详细的解释,只是说这个方程能求出最小的θ;此外,使用正规方程不需要考虑特征缩放,这是一大优点

在网上搜了一下正规方程的推导过程,总结如下:
首先代价函数如下:
J ( θ ) = ∑ i = 1 n ( y i − y i ′ ) 2 = ∑ i = 1 n ( y i − h θ ( x i ) ) 2 = ( y − h θ ( X ) ) T ∗ ( y − h θ ( X ) ) J_{(\theta)}=\sum_{i=1}^{n}\left(y_{i}-y_{i}^{\prime}\right)^{2}=\sum_{i=1}^{n}\left(y_{i}-h_{\theta}\left(x_{i}\right)\right)^{2}=(y-h_{\theta}(X))^{T} *(y-h_{\theta}(X)) J(θ)​=i=1∑n​(yi​−yi′​)2=i=1∑n​(yi​−hθ​(xi​))2=(y−hθ​(X))T∗(y−hθ​(X))
因为
h θ ( X ) = θ ∗ X h_{\theta}(X)=\theta * X hθ​(X)=θ∗X
所以
J ( θ ) = ( y − X ∗ θ ) T ∗ ( y − X ∗ θ ) J_{(\theta)}=(y-X * \theta)^{T} *(y-X * \theta) J(θ)​=(y−X∗θ)T∗(y−X∗θ)
我们要得到J(θ)最小值多对应的θ,那么就要上面这个公式就要对θ求导,令其导数值为0;
矩阵求导是这样的:
d A B d B = A T \frac{d A B}{d B}=A^{T} dBdAB​=AT
d X T A X d X = 2 A X \frac{d X^{T} A X}{d X}=2 A X dXdXTAX​=2AX
那么我们对θ求导后得出:
d d ( θ ) ( y − X ∗ θ ) T ∗ ( y − X ∗ θ ) = 2 X T ∗ ( y − X ∗ θ ) = 0 \frac{d}{d(\theta)}(y-X * \theta)^{T} *(y-X * \theta)=2 X^{T} *(y-X * \theta)=0 d(θ)d​(y−X∗θ)T∗(y−X∗θ)=2XT∗(y−X∗θ)=0
展开后得到:
2 X T ∗ y = 2 ∗ X T ∗ X ∗ θ 2 X^{T} * y=2 * X^{T} * X * \theta 2XT∗y=2∗XT∗X∗θ
那么:
θ = ( X T ∗ X ) − 1 ∗ X T ∗ y \theta=\left(X^{T} * X\right)^{-1} * X^{T} * y θ=(XT∗X)−1∗XT∗y
这个θ即对应最小的代价函数值J(θ);

梯度下降法VS正规函数:

梯度下降 正规函数
学习率α 需要选择 不需要
迭代次数 需要很多次 一次到位,不用考虑迭代次数
特征缩放 需要考虑 不需要
数据量大时 当数据上万时,表现较好 (XTX)-1使得时间复杂度为O(n3),万以下的数据现代计算机还是能很快得出结果

~~~~~~       所以,对于上万级别的数据量,我们要考量两者了,看是否选择梯度下降法,而万以下的数据量,毫无疑问我们会选择正规函数,基于它有众多的优点;

吴恩达《机器学习》第四章:多元线性回归相关推荐

  1. 吴恩达机器学习(二)多元线性回归(假设、代价、梯度、特征缩放、多项式)

    目录 0. 前言 1. 假设函数(Hypothesis) 2. 代价函数(Cost Function) 3. 梯度下降(Gradient Descent) 4. 特征缩放(Feature Scalin ...

  2. 吴恩达机器学习第四章

    4.1 多维特征 参考视频: 4 - 1 - Multiple Features (8 min).mkv 前几章,我们学习了单变量/特征的回归模型,现在我们对房价模型增加更多的特征, 例如房间数楼层等 ...

  3. 吴恩达机器学习python作业之多变量线性回归

    建议先看单变量线性回归再看多变量线性回归哦. 参考链接: (7条消息) 吴恩达|机器学习作业1.1多变量线性回归_学吧学吧终成学霸的博客-CSDN博客 数据集:一共三列,左边两列是自变量x,最右边一列 ...

  4. python分类预测降低准确率_python实现吴恩达机器学习练习3(多元分类器和神经网络)...

    Programming Exercise 3: Multi-class Classification and Neural Networks 吴恩达机器学习教程练习3,练习数据是5000个手写数字(0 ...

  5. 【深度之眼吴恩达机器学习第四期】笔记(十二)

    目录 大规模学习 小批量梯度下降 在线学习 数据并行 应用举例 人工合成数据 上限分析 总结 大规模学习 现在机器学习的性能比过去的好,其中一个原因就是现在拥有大量的数据. 而且其中一种获得高性能机器 ...

  6. 吴恩达机器学习(第一章)——初识机器学习

    第一章 初识机器学习 文章目录 第一章 初识机器学习 前言 机器学习定义 机器学习算法 监督学习 无监督学习 学习工具 前言 Machine Learning: Grewout of work in ...

  7. 吴恩达机器学习(四)逻辑回归(二分类与多分类)

    目录 0. 前言 1. 假设函数(Hypothesis) 2. 决策边界(Decision Boundary) 3. 代价函数(Cost Funciton) 4. 梯度下降(Gradient Desc ...

  8. 干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归

    吴恩达Coursera机器学习课系列笔记 课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础 1 Linear Regression with Multiple Variable ...

  9. 【深度之眼吴恩达机器学习第四期】笔记(一)

    目录 第一章:什么是机器学习 第二章:线性回归模型 第三章:矩阵运算 第四章:多变量线性回归 正规方程 第五章:操作 第一章:什么是机器学习 机器学习主要分为监督学习(我们教计算机如何学习)和无监督学 ...

  10. 吴恩达机器学习笔记——第一章

    每学完一章都来写一篇博客,用来总结回顾和反思. 一.机器学习的一些简单应用 我们可以利用计算机实现基础的功能:例如计算A到B的最短路径. 但是 网页搜索.垃圾邮件的过滤.图片识别 等功能需要应用机器学 ...

最新文章

  1. padavan支持惠普打印服务器,[分享]Padavan打印机共享,电脑和手机上添加,亲测通过!...
  2. DebugView调试C#程序 学习总结
  3. 同时存多个变量缓存 微信小程序_微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解...
  4. python open方法下file模块_python 文件操作
  5. java fileupload 文件_java用Commons fileupload 文件的上传
  6. 如何用excel筛选相似内容_excel如何筛选出相同内容,excel怎么用公式筛选
  7. kaggle案例实战
  8. 全美首个AI本科专业今秋开课,CMU每年最多招35名新生
  9. Visual Studio 11更名为“Visual Studio 2012”,RC版(与.NET 4.5一起)开放下载
  10. libevent的水平触发与边缘触发
  11. 自己动手用electron+vue开发博客园文章编辑器客户端【一】
  12. 【Debug系列】ImportError: No module named ‘_tkinter‘
  13. 6.29--6.30郭天祥老师课程中的一些错误与我的存疑
  14. linux杀死ltp进程,LTP套件使用方法详解
  15. Python3.7 安装Airflow 报错tenacity.async import AsyncRetrying
  16. Could not autowire. No beans of xxx 解决办法
  17. Unit Test and Integration Test
  18. Tomcat启动出现乱码·解决方法
  19. 开发Windows Mobile今日插件 -- 内存电量,桌面便笺,桌面记单词
  20. 011 符号计算-积分、微分、极限、积分变换、方程求解

热门文章

  1. 山东省农村信用计算机社考试,山东省农村信用社计算机专业考试题
  2. 如何用标题博得观众眼球
  3. 交换机的Zoning技术
  4. zbrush常用笔刷_Zbrush各笔刷特性
  5. 流程图软件最新排名,一分钟了解画流程图用什么软件
  6. nodejs部署的服务用localhost+端口可以访问,换成ip+端口就无法访问
  7. 解决 VMware 中安装虚拟机时屏幕显示不全的问题
  8. 斯坦福大学校工程学院计算机,加州大学洛杉矶分校:受大脑启发的计算机视觉的对象发现和检测...
  9. python中什么是迭代?
  10. 非常漂亮的放焰火效果的Applet程序