讨论这个方法之前,先说些题外话。首先,我感觉机器学习是一门值得我们去了解和学习的一门技术,它不仅仅应用于我们的生活,而且不断地在改变着我们的方方面面。虽然很早就已经接触它,并开始学习,但是总体感觉是学习的比较混乱,仅以从今天开始的一系列文章作为重新总结和学习机器学习的一个新的历程。其次,学习机器学习,要有耐心,要执着,要不断总结和实现。最后,也是最重要的,要明白你的初衷是什么,也就是为什么要学习它。如果没有搞清楚为什么,那还是先弄清楚吧。好了,废话不多说了,开始进入正题。

一、引言
机器学习中的一个大类的问题就是分类问题。分类在我们的生活中也是很常见的,比如说,你刚进入大学,要分清哪些同学喜欢玩游戏,哪些喜欢学习,这样,你想玩游戏的时候可以找爱玩游戏的同学一起,你学习遇到难题可以找喜欢学习的同学请教。当然,你的好友可以同时做到以上两点那是最好不过的了。
还要提一下分类和回归的区别,当我们要解决的问题是预测的离散值的时候,也就是上面提到的例子,分清哪些人喜欢玩游戏,哪些人喜欢学习,这就是一个分类问题。当要预测的值是一个连续值的话,那这就是一个回归问题。比如,我们可能在刚上大学的时候,不了解同学们平时喜欢打游戏或者喜欢学习,但是我们知道他们一系列的其他信息:A同学周一到周五喜欢去图书馆、自修室,但是周末就和寝室的同学打游戏,甚至玩通宵,当然还有其他信息。那么,我们的问题是A同学喜欢学习的可能性有多大,这个问题的答案是[0,1]上的任意一个实数(这取决于你的预测模型),你可能根据你的系统推测出A喜欢学习的概率是0.51。

二、问题的提出
我们考虑简单的单一变量的线性回归。我这里为了简便就举《机器学习基础教程》上的例子。男子100m比赛赢得金牌不同举办年份所需的时间。如图1 所示:
通过上图,我们至少可以看到年份和获胜时间存在一个关系。我们要预测2016年男子100米金牌所需的时间。

三、模型假设
yy表示所需时间, xx表示年份,则有如下假设。

y=ax+b(1)

y = ax+b \quad(1)
我们现在知道2016年之前每届奥运会的男子100米金牌所需的时间,通过图一我们看到数据点的分布呈现一种趋势关系,假设它们分布在公式1所示的直线周围,我们的目标是找到一条直线,来拟合我们的观测数据,进而用我们找到的这条最佳的线预测2016年的男子100m金牌所需时间。那么,什么样的直线最好呢?我们如何求公式1中的 aa, bb 这两个参数呢?

假定我们的模型已经选择好了,那么衡量这个模型的一个常用方式就是用平方损失函数

L(t,f(x;a,b))=(t−f(x;a,b))2(2)

L(t,f(x;a,b)) = (t-f(x;a,b))^2 \quad(2)
上述公式(2)最小,我们就说模型对我们现有的观测数据来说是最好的,我们暂且抛开数据过拟合的问题。那么问题转化为求 L(t,f(x;a,b))L(t,f(x;a,b))取得最小值时候的 a,ba,b.令 nn代表历史数据的数目,则我们的损失函数可以写为:

L=∑in(yi−(axi+b))2(3)

L=\sum_{i}^n(y_i-(ax_i+b))^2\quad(3)

四、推导过程
用公式(3)分别对a,ba,b求偏导数,然后令其分别等于0, 这就可以求得a,ba, b. 这里用到了函数极值,可以参考高等数学。

∂L∂a=∑in2(yi−(axi+b))(−xi)=−2∑in(yixi−ax2i−bxi)=0(4)∂L∂b=∑in2(yi−(axi+b))(−1)=−2∑in(yi−axi−b)=0(5)

\begin{array}{ll}\frac {\partial L}{\partial a} = \sum_{i}^n 2(y_i-(ax_i+b))(-x_i)\\ \quad=-2\sum_i^n(y_ix_i-ax_i^2-bx_i) =0 \quad (4)\\ \frac{\partial L}{\partial b}=\sum_i^n2(y_i-(ax_i+b))(-1)\\=-2\sum_i^n(y_i-ax_i-b)=0\quad(5) \end{array}
利用公式4,5求解得:

a=∑nixi∑niyi−n∑niyixi(∑nixi)2−n∑nix2i

a=\frac{\sum_i^nx_i\sum_i^ny_i-n\sum_i^ny_ix_i} {(\sum_i^nx_i)^2-n\sum_i^nx_i^2}

b=∑nixi∑niyixi−∑nix2i∑niyi(∑nixi)2−n∑nix2i

b=\frac{\sum_i^nx_i\sum_i^ny_ix_i-\sum_i^nx_i^2\sum_i^ny_i}{(\sum_i^nx_i)^2-n\sum_i^nx_i^2}
把 a,ba,b带入公式1,然后令 x=2016x=2016就可以求出所需时间,拟合直线的效果如图2所示:

这样,我们就可以进行预测了。当然,这里只是一个简单的事例,我们并没有考虑其他因素。最小二乘法是介绍完了。

五、总结
本文介绍了最小二乘法拟合数据的过程,最小二乘法是最优化方法中的一个,要了解更多优化方法,可以看看《最优化导论》。本文的事例只考虑了一个变量:年份,如果有多个自变量,它们在空间中也满足线性分布,能不能用最小二乘法去拟合数据呢?这个问题,我将在下一篇文章中进行介绍。

机器学习笔记(一) : 线性建模——最小二乘法相关推荐

  1. 机器学习笔记:线性判别分析(Fisher)

    线性判别分析可用于处理二分类问题,其过程是寻找一个最佳的投影方向,使得样本点在该方向上的投影符合类内小.类间大的思想("低耦合,高内聚"),具体指的是类内的方差之和小,类间的均值之 ...

  2. 白板机器学习笔记 P13-P21 线性分类

    视频地址:https://www.bilibili.com/video/BV1aE411o7qd 笔记地址:https://www.yuque.com/books/share/f4031f65-70c ...

  3. 机器学习笔记:线性SVM推导

    什么是SVM 支持向量机简称SVM是最大化分类间隔的线性分类器,如果使用核函数,可以解决非线性问题.支持向量机的目标是寻找一个分类超平面,它不仅能正确的分类每一个样本,并且要使得每一类样本中距离超平面 ...

  4. 迷人的神经网络——机器学习笔记1

    目录 迷人的神经网络--机器学习笔记1 第1章 神经元模型及网络结构 1.1 神经元模型 1.1.1 单输入神经元 1.1.2 激活函数 1.1.3 多输入神经元 1.2 网络结构 1.2.1 单层神 ...

  5. Python机器学习笔记:sklearn库的学习

    自2007年发布以来,scikit-learn已经成为Python重要的机器学习库了,scikit-learn简称sklearn,支持包括分类,回归,降维和聚类四大机器学习算法.还包括了特征提取,数据 ...

  6. python tensorflow学习笔记(六)最小二乘法

    说明:本文不包括TensorFlow相关内容 概念 概念:回归分析 回归分析(regression analysis)是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法.运用十分广泛,回归 ...

  7. 【机器学习笔记】:大话线性回归(二)拟合优度和假设检验

    大家好,我是东哥. 前一篇文章给大家介绍了线性回归的模型假设,损失函数,参数估计,和简单的预测.具体内容请看下面链接:[机器学习笔记]:大话线性回归(一) 但其实还有很多问题需要我们解决:这个模型的效 ...

  8. 李弘毅机器学习笔记:第五章—分类

    李弘毅机器学习笔记:第五章-分类 例子(神奇宝贝属性预测) 分类概念 神奇宝贝的属性(水.电.草)预测 回归模型 vs 概率模型 回归模型 其他模型(理想替代品) 概率模型实现原理 盒子抽球概率举例 ...

  9. cs229 斯坦福机器学习笔记(一)-- 入门与LR模型

    版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/Dinosoft/article/details/34960693 前言 说到机器学习,非常多人推荐的学习资 ...

最新文章

  1. Mybatis入门:4(多表查询操作)
  2. 使用P3P共享Cookie与Session小结
  3. [产品设计]为什么目前的运动手表的产品设计是错的?
  4. 开源Redis可视化客户端工具,用过的人都说好看又好用!
  5. Python数据分析学习笔记
  6. 【多线程学习笔记】sychronized关键字底层原理、sychronized与ReentrantLock、volatile和synchronized
  7. extjs tree下拉列表_使用ztree来代替Extjs的下拉树
  8. 自定义ClassLoader和双亲委派机制
  9. iOS开发需要哪些图片?
  10. 励志:滴滴打车App初期是怎么推广的?
  11. 农夫山泉市值超5000亿港元 域名还在优化中?
  12. 微服务不是架构演变的终点!
  13. GnomeSort(侏儒排序)——C语言实现
  14. 本地如何内网穿透映射外网
  15. 大厂项目经理分享 Code Review经验
  16. Windows 11和安全启动
  17. 推荐几款好用的UI框架 和 后台管理系统(开源免费)
  18. DedeCMS帝国备份王织梦系统网站搬家
  19. Python数据处理之pandas基础入门
  20. SpringBoot模块创建依赖报错:

热门文章

  1. python基础课程4(看代码看注释)--爬虫爬取网页信息
  2. 坯子库曲面推拉教程_一招曲面流动,搞定99%异形建模
  3. 判别两棵树是否相等 设计算法_一文看懂生成对抗网络 - GANs?(附:10种典型算法+13种应用)...
  4. 【Python爬虫】使用urllib.request下载已知链接的网络资源
  5. oracle的关键字
  6. Jmeter连接Mysql
  7. android.hardware.Camera类及其标准接口介绍
  8. Android Audio Play Out Channel
  9. 转载]Cyclone II JTAG ASP 配置下载程序
  10. Git Bash推送GitHub不成功---密钥设置