数据科学之机器学习2:线性回归1
2014-05-09 14:39
417 查看
“文章原创,转载请注明出处”
一、回归分析
在统计分析中,最大的两支应该算是相关分析和回归分析。而回归分析应该是统计学的核心。回归分析,就是研究因变量y与自变量x之间的关系,存在条件数学期望:f(x)=E(y|x)。此时有:y=f(x)+ε,一般假设ε∼N(0,σ2)。回归分析有很多变种:简单线性回归;多项式回归;Logistic回归;非参数回归;非线性回归等等。本篇就介绍最简单的线性回归,首先来看看一元线性回归。
二、一元线性回归
对于一元线性回归来说,f(x)就是线性的,则有:f(x)=E(y|x)=β0+β1x。通过已知的数据,可以估计出β0,β1的估计值:β^0,β^1。那么就有y的预测值:y^=β^0+β^1x。1. 如何计算β0,β1的估计值β^0,β^1呢?
定义离差平方和:
Q(β0,β1)=∑i=1n(yi−f(xi))2
显然,我们希望f(xi)的值与真实值yi越接近越好。那么就是需要离差平方和越小越好。则得到目标:
minβ0,β1∑i=1n(yi−f(xi))2
如何寻找β^0,β^1使得上面方程达到最小呢?这个就需要对其对β^0,β^1求偏导,得到:
∂Q∂β0=−2∑i=1n(yi−β0−β1xi)
∂Q∂β1=−2∑i=1n(yi−β0−β1xi)xi
令上述两式都等于0,计算得到:
β^0=y¯−β^1x¯
β^1=∑ni=1(xi−x¯)(yi−x¯)∑ni=1(x−x¯)2
这样就得到β0,β1的估计值β^0,β^1。这个方法就叫做OLS,即普通最小二乘(ordinary
least squares)。
2. R语言实现
在R语言中有自带的函数可以处理线性回归,那就是
lm函数。这里使用自带的数据
cars做演示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | > attach(cars) # 使用数据集cars,与with函数类似 > lingre <- lm(dist ~ speed) > summary(lingre) Call: lm(formula = dist ~ speed) Residuals: Min 1Q Median 3Q Max -29.069 -9.525 -2.272 9.215 43.201 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -17.5791 6.7584 -2.601 0.0123 * speed 3.9324 0.4155 9.464 1.49e-12 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 15.38 on 48 degrees of freedom Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438 F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12 > plot(dist ~ speed, pch=4) # 画出散点图 > abline(lingre, col='red') # 添加拟合直线 > detach(cars) # 使用完记得释放 |
另外,得到拟合直线的图像:
三、多元线性回归
对于多元线性回归来说,其计算方式与一元线性回归类似,区别在于,多元的时候需要利用矩阵来处理。首先看一下回归模型:y=β0+β1x1+β2x2+⋯+βpxp+ε
其中p代表自变量的个数。
若取xT0=[1,1,…,1]1×n,则可将上述模型改写成:y=Xβ+ε。其中:
yT=[y1,y2,…,yn],X=[x0,x1,…,xp],βT=[β0,β1,…,βp],εT=[ε1,ε2,…,εn]
其中xTi=[x1i,x2i,…,xni]。
这样我们就可以将离差平方和∑ni=1(yi−β0+β1x1+β2x2+⋯+βpxp)2写成矩阵形式:
(y−Xβ)T(y−Xβ)
求导可得:−2XT(y−Xβ)(这里用到矩阵求导的知识,一般介绍线性模型的书籍中会讲到;当然也可以直接对上面不是矩阵形式的离差平和求导)。令其等于0,可得:
β^=(XTX)−1XTy
R语言实现
对于R语言的实现,依旧使用
lm函数:
1 2 | lingre_mul <- lm(y ~ x1 + x2, data=datasets) summary(lingre_mul) |
四、最后
至此,就把线性回归的基础内容介绍完了。但其实线性回归还存在很多其它的问题。比如说回归诊断(就是检查回归的效果),变量选择等等等等。感兴趣的话,可以找本讲线性回归的书看看,有很多!转自:http://jackycode.github.io/blog/2014/03/30/machine-learning1/
相关文章推荐
- 数据科学之机器学习3:线性回归2
- 数据科学之机器学习4:线性回归3
- 白手起家学习数据科学 ——线性回归之“简单线性回归篇”(十一)
- 数据科学之机器学习10: 聚类分析1
- 机器学习入门:线性回归及梯度下降
- 2017数据科学报告:机器学习工程师年薪最高,Python最常用
- 斯坦福机器学习公开课7-x线性回归逻辑回归的正则化min
- 构建你的数据科学作品集:机器学习项目
- 2017数据科学报告:机器学习工程师年薪最高,Python最常用
- 机器学习算法的Python实现 (1):logistics回归 与 线性判别分析(LDA)
- 机器学习入门:线性回归及梯度下降
- 干货丨从线性回归到无监督学习,数据科学家需要掌握的十大统计技术
- 机器学习实战_08预测数值型数据-回归
- 斯坦福机器学习视频之线性回归习题详解
- Python数据拟合与广义线性回归算法学习
- 数据科学之机器学习15: 主成分分析
- 从线性回归到无监督学习,数据科学家需要掌握的十大统计技术
- 代码注释:机器学习实战第8章 预测数值型数据:回归
- 数据科学:机器学习VS. 基于规则的系统
- 机器学习实战-8预测数值型数据-回归