1.什么是线性回归?

用线性关系去拟合输入和输出。

设输入为x,则输出y=ax+b。

对于多元的情况y=b×1+a1x1+a2x2+...+anxn

用θ表示系数,可以写作:

其中,x0=1。

2.线性回归有什么用?

对于连续输入和输出的问题,如果线性回归可以较好的拟合输入和输出,那么可以用这个模型预测其它输入时的输出。

反过来想:如果线性回归可以较好的拟合输入和输出,那么说明输出和输入有很强的线性相关性,可以识别输入中的冗余信息。

3.怎么判断是否较好的拟合?

初步考虑,就是当使用模型时的输出、和真实的输出有多大偏差,选择一个方法量化这个偏差。

每个样本输入模型时,均会产生一个偏差。

线性回归中,通过求这些偏差的平方平均值,来判断偏差的程度。写作:

其中实际输出为y,模型输出为h,上标i是指每个样本。系数在平方平均值的基础上除以2。

判断偏差的这个方程起名叫 Cost Function。当偏差越小、即Cost Function的值越小时,拟合的越好。

4.怎么训练模型?

训练模型的目的在于实现较好的拟合,也就是说使Cost Function的值尽量小。

训练在这里,就是选择一组系数θ(模型确定以后,模型的参数就是系数θ们),实现上面的目的。

微积分学过,可以对θ求偏导数等于0的点,直接得到极值点。

按照Andrew Ng的课件,当参数个数大于10000个时,直接求极值点时间太长,需要选择别的办法。

5.怎样训练模型:梯度下降。

顾名思义,就是沿着梯度下降。选择一个合适的步长α,一步一步改变θ,使Cost Function的值不断减小。

其中,θj表示各个系数。:=前面的冒号表示每个θj同时改变。

走多少步?和怎么判断模型训练好了呢?最好是观察每次θj改变后,J(θ)的值的变化。

最开始θj等于多少呢?最开始,随便选一组值就可以。

步长α应该选多大呢?要通过手动尝试,“找”到合适的值。

最后,经过多次迭代后,算法得到一组θ,使Cost Function的值比较小。

6.matlab实现一个线性回归。

%一个特征的输入参数
X1=[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50];
X0=ones(size(X1));
X=([X0;X1])';
y=([10, 22, 13, 43, 20, 22, 33, 50, 62, 48, 55, 75, 62, 73, 81, 76, 64, 82, 90, 93])';

%梯度下降参数设计
alpha=0.001;%当alpha大于1时就不收敛了
theta=[2;3];%选哪个点作为起点似乎对收敛速度影响不大
times=2000;%迭代次数

for i=1:times
delta=X*theta-y;%求偏导数
theta=theta-alpha.*(X'*delta);%梯度下降
J(i)=delta'*delta;%求此时的Cost Function值
end

%观察Cost Function值随迭代次数的变化
% plot(J);
%观察拟合情况
stem(X1,y);
p2=X*theta;
hold on;
plot(X1,p2);

7.实际使用

实际使用线性回归时,先对输入数据进行优化。包括:1.将冗余的和无关的变量去掉;2.对于非线性关系,采用多项式拟合,将一个变量变为多个变量;3.将输入范围归一化。


小结

线性回归开始假设输入和输出存在线性关系,

然后使用线性回归模型h=θTx,用Cost Function J(θ)评价拟合程度,

通过对J(θ)应用梯度下降算法逼近一组好的参数θ,从而得到一个适用的模型h。

线性回归的使用建立在“输入和输出存在线性关系”这一假设基础上,把一组特征映射到一个值。

使用起来,也许因为模型太简单,感觉不到“机器学习”的感觉。选用时也需要很多先验知识、针对特定情况,就像一般的编程处理问题一样。

在使用梯度下降的算法时,迭代的过程,有点“学习”的感觉。

转载于:https://www.cnblogs.com/sumr/p/9746649.html

Andrew Ng机器学习(一):线性回归相关推荐

  1. Andrew Ng机器学习课程6

    Andrew Ng机器学习课程6 说明 在前面跟随者台大机器学习基石课程和机器学习技法课程的设置,对机器学习所涉及到的大部分的知识有了一个较为全面的了解,但是对于没有动手写程序并加以使用的情况,基本上 ...

  2. Andrew Ng机器学习课程14(补)

    Andrew Ng机器学习课程14(补) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 利用EM对factor analysis进行的推导还是要参看我的上一 ...

  3. 【原】Coursera—Andrew Ng机器学习—Week 9 习题—异常检测

    [原]Coursera-Andrew Ng机器学习-Week 9 习题-异常检测 参考文章: (1)[原]Coursera-Andrew Ng机器学习-Week 9 习题-异常检测 (2)https: ...

  4. Andrew Ng机器学习课程17(1)

    Andrew Ng机器学习课程17(1) 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:主要介绍了强化学习与监督学习的设定上的区别,以及强化学习的框架 ...

  5. Andrew Ng机器学习算法入门(二):机器学习分类

    机器学习的定义 Arthur Samuel给出的定义,Field of Study that gives computers the ability to learn without being ex ...

  6. 斯坦福大学Andrew Ng - 机器学习笔记(3) -- 神经网络模型

    大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...

  7. 斯坦福大学Andrew Ng - 机器学习笔记(8) -- 推荐系统 大规模机器学习 图片文字识别...

    大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...

  8. 【机器学习】Andrew Ng——04多变量线性回归

    多变量线性回归 Linear Regression with Multiple Variables 房屋估价问题   在单变量线性回归一章,我们讲到了房屋估价问题,以房屋面积这一单变量来决定房屋的估价 ...

  9. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统...

    Lecture 16 Recommender Systems 推荐系统 16.1 问题形式化 Problem Formulation 在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到 ...

最新文章

  1. 怎样理解雷达的相参与非相参
  2. 蚁群算法,PSO算法以及两种算法可以融合的几种方法
  3. 组合数 com(n,r)
  4. 阿里巴巴和印度最大移动支付和商务平台Paytm
  5. QT之在QML中使用C++类和对象的两种方式
  6. 抢答网页PHP,[抢答]抢答环节已结束,相关答案已封箱 - 薅羊毛(Coupon)版 - 北大未名BBS...
  7. weblogic概览下的上下文根配置_weblogic创建域
  8. java内存模型之二volatile内存语义
  9. mysql为用户部分授权,MYSQL为用户授权
  10. Q96:PT(3.4):砂岩纹理(Sandstone Texture)
  11. Android 6.0 扫描不到 Ble 设备需开启位置权限
  12. 用glew,glfw,FreeImag实现opengl画图-第五课 摄像机
  13. js 在线压缩混淆工具
  14. java持久层框架分析
  15. Talk预告 | 北京大学人工智能研究院杨耀东:一个合作博弈的通用求解框架
  16. Itext设置页眉页脚、表头划线、水印、条形码、二维码
  17. JavaScript 通过注册表的形式调用搜狗输入法的手写输入功能
  18. linux脚本判断奇数偶数,Bash Shell -- 奇数 偶数 之和计算
  19. YOLOX训练代码分析3-损失函数
  20. win10打字反应慢处理

热门文章

  1. C# 控件双缓冲控制 ControlStyles 枚举详解
  2. 对IplImage 结构体的理解
  3. [Drupal] Submit and redirect back to the modify page
  4. Exchange ActiveSyn身份验证类型
  5. dynamic web module消失不见
  6. Laravel 5 4 实现前后台登录
  7. Redis(1):简介
  8. 同步手绘板——json
  9. ? SegmentFault Hackathon 文艺复兴上海站作品集 - 获奖篇
  10. 研究笔记:iOS中使用WebViewProxy拦截URL请求