机器学习方法:回归(一):线性回归Linear regression
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld。
开一个机器学习方法科普系列:做基础回顾之用,学而时习之;也拿出来与大家分享。数学水平有限,只求易懂,学习与工作够用。周期会比较长,因为我还想写一些其他的,呵呵。
content:
linear regression, Ridge, Lasso
Logistic Regression, Softmax
Kmeans, GMM, EM, Spectral Clustering
Dimensionality Reduction: PCA、LDA、Laplacian Eigenmap、 LLE、 Isomap(修改前面的blog)
SVM
ID3、C4.5
Apriori,FP
PageRank
minHash, LSH
Manifold Ranking,EMR
待补充
…
…
开始几篇将详细介绍一下线性回归linear regression,以及加上L1和L2的正则的变化。后面的文章将介绍逻辑回归logistic regression,以及Softmax regression。为什么要先讲这几个方法呢?因为它们是机器学习/深度学习的基石(building block)之一,而且在大量教学视频和教材中反复被提到,所以我也记录一下自己的理解,方便以后翻阅。这三个方法都是有监督的学习方法,线性回归是回归算法,而逻辑回归和softmax本质上是分类算法(从离散的分类目标导出),不过有一些场合下也有混着用的——如果目标输出值的取值范围和logistic的输出取值范围一致。
ok,废话不多说。
1、Linear Regression
可以说基本上是机器学习中最简单的模型了,但是实际上其地位很重要(计算简单、效果不错,在很多其他算法中也可以看到用LR作为一部分)。
先来看一个小例子,给一个“线性回归是什么”的概念。图来自[2]。
假设有一个房屋销售的数据如下:
面积(m^2) 销售价钱(万元)
123 250
150 320
87 160
102 220
… …
当我们有很多组这样的数据,这些就是训练数据,我们希望学习一个模型,当新来一个面积数据时,可以自动预测出销售价格(也就是上右图中的绿线);这样的模型必然有很多,其中最简单最朴素的方法就是线性回归,也就是我们希望学习到一个线性模型(上右图中的红线)。不过说是线性回归,学出来的不一定是一条直线,只有在变量x是一维的时候才是直线,高维的时候是超平面。
定义一下一些符号表达,我们通常习惯用X=(x1,x2,...,xn)T∈Rn×p表示数据矩阵,其中xi∈Rp表示一个p维度长的数据样本;y=(y1,y2,...,yn)T∈Rn表示数据的label,这里只考虑每个样本一类的情况。
线性回归的模型是这样的,对于一个样本xi,它的输出值是其特征的线性组合:
其中,w0称为截距,或者bias,上式中通过增加xi0=1把w0也吸收到向量表达中了,简化了形式,因此实际上xi有p+1维度。
线性回归的目标是用预测结果尽可能地拟合目标label,用最常见的Least square作为loss function:
从下图来直观理解一下线性回归优化的目标——图中线段距离(平方)的平均值,也就是最小化到分割面的距离和。
也就是很多中文教材中提到的最小二乘;线性回归是convex的目标函数,并且有解析解:
线性回归到这里就训练完成了,对每一个样本点的预测值是f(xi)=yi^=w^Txi。所以:
接下来看一下我们寻找到的预测值的一个几何解释:从上面的解析解w^=(XTX)−1XTy可以得到XT(y^−y)=0(垂直的向量相乘=0),因此实际上y^是y在平面X(由列向量x1和x2张成,假设只有两维)上的投影。
ok,一般介绍线性回归的文章到这里也就结束了,因为实际使用中基本就是用到上面的结果,解析解计算简单而且是最优解;当然如果求逆不好求的话就可以不用解析解,而是通过梯度下降等优化方法来求最优解,梯度下降的内容不在本篇中,后面讲逻辑回归会说到。也可以看我前面写的今天开始学PRML第5章中有写到,或者直接翻阅wikipedia:gradient descent。
不过在这里我再稍微提几个相关的分析,可以参考ESL[3]的第3章中的内容。前面我们对数据本身的分布是没有任何假设的,本节下面一小段我们假设观察值yi都是不相关的,并且方差都是σ2,并且样本点是已知(且是中心化过了的,均值为0)的。于是我们可以推出协方差矩阵
证明:
要估计方差σ2,可以用
这里和一般的方差的形式看起来不同,分母是n−p−1而不是n,是因为这样的估计才是σ2的无偏估计。
证明:
好,第一篇就写到这里。这个系列是从0开始的基础复习记录,力求清晰易懂。下一篇lasso和ridge regression。
参考资料
[1]http://freemind.pluskid.org/machine-learning/sparsity-and-some-basics-of-l1-regularization/
[2]http://www.cnblogs.com/LeftNotEasy/archive/2010/12/05/mathmatic_in_machine_learning_1_regression_and_gradient_descent.html
[3]The Elements of Statistical Learning,ch3
机器学习方法:回归(一):线性回归Linear regression的更多相关文章
- Stanford机器学习---第二讲. 多变量线性回归 Linear Regression with multiple variable
原文:http://blog.csdn.net/abcjennifer/article/details/7700772 本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归 ...
- Ng第二课:单变量线性回归(Linear Regression with One Variable)
二.单变量线性回归(Linear Regression with One Variable) 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 2.4 梯度下降 2.5 梯度下 ...
- 斯坦福第二课:单变量线性回归(Linear Regression with One Variable)
二.单变量线性回归(Linear Regression with One Variable) 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 I 2.4 代价函数的直观理解 I ...
- 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression
机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...
- 机器学习 (一) 单变量线性回归 Linear Regression with One Variable
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...
- 机器学习 (二) 多变量线性回归 Linear Regression with Multiple Variables
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人 ...
- TensorFlow 学习笔记(1)----线性回归(linear regression)的TensorFlow实现
此系列将会每日持续更新,欢迎关注 线性回归(linear regression)的TensorFlow实现 #这里是基于python 3.7版本的TensorFlow TensorFlow是一个机器学 ...
- 机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables)
机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables) 同样是预测房价问题 如果有多个特征值 那么这种情况下 假设h表示 ...
- ML 线性回归Linear Regression
线性回归 Linear Regression MOOC机器学习课程学习笔记 1 单变量线性回归Linear Regression with One Variable 1.1 模型表达Model Rep ...
随机推荐
- HDOJ.1257 最少拦截系统 (贪心)
最少拦截系统 点我挑战题目 题意分析 一开始理解错了这道题.这么多个导弹排好序不只需要1个拦截系统吗.后来发现自己真傻.那出这个题还有啥意思,反正都需要一个.(:′⌒`) 给出n个导弹,这n个导弹的顺 ...
- ContestHunter暑假欢乐赛 SRM 03
你们也没人提醒我有atcoderQAQ... A题曼哈顿距离=欧拉距离就是在同一行或者同一列,记录下i,j出现过的次数,减去就行,直接map过. B题一开始拿衣服了,一直以为排序和不排序答案是一个样的 ...
- 002 第一个Python简易游戏
1.初始版本 print('---------------我爱鱼C工作室-------------') temp = input("不妨猜一下小甲鱼现在心里想的是0~10中哪个数字:&quo ...
- Rsync+inotify自动同步数据
一.简介 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足. 首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传 ...
- MySQL5.5安装图解
MySQL5.5安装图解... ====================== 第一部分:去官网下载MySQL安装包... MySQL下载官网:https://dev.mysql.com/downloa ...
- (译)理解python线程
看到一篇老外写的线程文章,很赞,零基础都能看懂.先贴在这里,有时间再翻译出来. http://agiliq.com/blog/2013/09/understanding-threads-in-pyth ...
- 「6月雅礼集训 2017 Day11」jump
[题目大意] 有$n$个位置,每个位置有一个数$x_i$,代表从$i$经过1步可以到达的点在$[\max(1, i-x_i), \min(i+x_i, n)]$中. 定义$(i,j)$的距离表示从$i ...
- ASP.NET 设置DropDownList的当前选项
1.通过显示字符Text DropDownList.Items.FindByText("你的值").Selected=true; 如果在设置之前,进行过设置,应用如下格式: Dro ...
- charles & Fiddle
一.Charles Charles是在Mac下常用的截取网络封包的工具,在做移动端开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.Charles通过将自己设置成系统的网络访问 ...
- HTML -- get与post提交方式的区别 -- (转)
在写代码过程中,get与post是两种不同的提交方式.下面,列举出两种方式的不同. 方法/步骤 get是从服务器上获取数据,post是向服务器传送数据. get是把参数数据队列加到提交表单的A ...