进入到机器学习中,最为简单的就是回归分析,其实回归分析在中学就差不多有涉及了。
所谓的回归分析就是利用已知数据来产生拟合方程,从而(对未知数据)进行预测,从这方面来说这算是一个监督学习。
回归分析的用途一般是用来分析新数据的合理性,或者预测未知数据。
回归分析又分为线性回归和非线性回归。
而线性回归又分为:一元线性回归;多元线性回归;广义线性回归。
先从一元线性回归开始说起:
其模型非常简单,就是一个线性模型:
y=ax+b+ε
其中a为斜率,b为截距项, ε为误差项。
确定了模型之后,接下来的任务就是确定各项参数了。
其中有一种方法是使用最小二乘法的原理去进行参数确定,使用平方误差和衡量预测值和真实值的差距:


RSS=∑i=1n(yi−yi^)2=∑i=1n[yi−(α+βxi)]2


分别对RSS求关于

α和 β的偏导并令其为0,就可以得出 α和 β的值。



β=∑ni=1(Xi−X¯)(Yi−Y¯)∑ni=1(Xi−X¯)2



α=Y¯−βX¯


由于总体是未知的,所以通过用样本值来估计:



b=β^=∑ni=1(xi−x¯)(yi−y¯)∑ni=1(xi−x¯)2



a=α^=y¯−bx¯


推广到一般的情况



\begin{equation}
\begin{bmatrix}\sum_{i=1}^m1&\sum_{i=1}^mx_i&\cdots&\sum_{i=1}^mx_i^n\\\sum_{i=1}^mx_i&\sum_{i=1}^mx_i^2&\cdots&\sum_{i=1}^mx_i^{n+1}\\\vdots&\vdots&&\vdots\\\sum_{i=1}^mx_i^n&\sum_{i=1}^mx_i^{n+1}&\cdots&\sum_{i=1}^mx_i^{2n}\end{bmatrix}
\begin{bmatrix}\alpha_0\\\alpha_1\end{bmatrix}
\end {equation}
现在来说下在R中的实现,首先建立一元线性模型:
lm.sol<-lm(y~1+x)
在这里$y\sim 1+x$表示的是$y=\beta_0+\beta_1 x+\varepsilon$。
summary(lm.sol),summary是提取模型的计算结果,
![这里写图片描述]()
如图可以看到其模型的具体计算结果,第一部分(call)列出了相应的回归模型公示,第二部分(Residuals)列出的是残差的最小值点,1/4分位点,中位数点,3/4分位点和最大值点。第三部分(Coefficients)中,Estimate表示回归方程参数的估计,即$\hat{\beta_0},\hat{\beta_1}$.Std. Error表示回归参数的标准差,即$std(\hat{\beta_0}),std(\hat{\beta_1})$.t value为t值.Pr(>|t|)表示P值,即概率值P{$T>|T_值|$}。还有显著性标志,其中$"***"$说明极为显著,$"**"$说明高度显著,$"*"$说明不太显著,没有记号额外i不显著。
\begin{equation}
\begin{bmatrix}
\bm{X}'\bm{X}&\bm{X}'\bm{Z}\\
\bm{X}'\bm{X}&\bm{Z}'\bm{Z}+\bm{A}^{-1}k
\end{bmatrix}
\begin{bmatrix}
\hat{\bm{\beta}}\\
\hat{\bm{s}}
\end{bmatrix}
=
\begin{bmatrix}
\bm{X}'\bm{y}\\
\bm{Z}'\bm{y}
\end{bmatrix}
\end{equation}