线性回归标准方程及其概率解释

线性回归作为一种监督学习方法,在机器学习领域中属于最基本的优化问题,即根据现有的数据集,找到一个能够最好拟合这组数据的线性函数即可,根据这个线性函数对新来的数据进行预测。

本文将会覆盖最简单的线性回归的解释和标准方程求解最优线性回归参数,至于梯度下降法求解,会有单独的另外一篇博客介绍。

什么是回归分析


显而易见,线性回归就是一种回归分析,那么什么是回归分析呢?

简单的说,就是找到一条能够最好的代表所有数据的函数,这个函数可以是线性的,当然也可以是非线性的。

而通常情况下数据集并不会是严格的能够使用一条函数代表,所以就会需要我们引入误差的概念,就是说最小化这个误差就行了,通常使用的方法有:最小二乘法、最大似然估计法等,后面我们会介绍到,对于线性回归来说这两种方法其实是等价的。

最小二乘法:又称为最小平方法,就是把所有误差的平方相加,获得的值为总误差,最小化这个误差就是优化目标。

最大似然估计:简单的说,就是根据现有数据的分布,估算出一个能够获得该分布情况的分布函数,可以参考这里详细了解。

什么是线性回归(Linear Regression)


线性回归就是上面提到的,能够代表现有数据集的函数是线性的,如下图所示:

上图中的红色点就表示二维空间的数据集,而蓝色的线就是我们要求解的线性函数。

对于一个线性函数,我们通常的表示方法是:

f(x)=wx+b

其中w和b都是常量参数,推广到多维空间,该表示方法同样适用:

f(x1,x2xn)=w1x1+w2x2+wnxn+b=[x1,x2xn]w1w2wn+b

为了统一参数,我们可以为x维度加上一个1,为w维度增加上一个b,这样线性函数就统一成了:

f(x1,x2xn)=[x1,x2xn,1]w1w2wnb=xw

使用标准方程法求解


有了线性回归的函数表示,我们的目标自然是获得w的最优值了,根据这个最优值就可以对新来的数据进行预测了。

那么如何获得最优的w呢?我们这里可以使用最小二乘法,误差函数为:

L(w)=i(wxiyi)2

最小化线性误差:

minwL(w)=minwi(wxiyi)2

要获得该函数的最小值,只需要对其求w的导数,并令导数为0即可:

dL(w)dw=L(w)w1L(w)w2L(w)wn=2ixixTiw2ixiyi=0

即求L(w)关于w的各个维度的偏导数,然后求和即可。

为了表示方便,我们假设有n个样本,这些样本的属性集合,以及他们的结果值的集合分别为:

X=x1x2xn,Y=y1y2yn

即上面的导数可以重新写为:

dL(w)dw=2ixixTiw2ixiyi=2XTXw2XTY=0

由于矩阵的逆与原矩阵相乘为1,所以上式求解可得:

w=(XTX)1XTY

w 即为我们要求的最优值了。

第一个问题

有了上面的求解w*公式,我们只需要遍历所有训练数据集,将数据读出来后进行矩阵运算即可。也正因为如此,第一个问题来了,假如我们的数据维度特别高,那么这种矩阵运算是十分耗费时间的,即便使用一些如分治法的策略,也只能很有限的降低计算复杂度。

所以标准方程的方式,只适合于数据量和数据维度不是非常大的情况,否则更建议使用梯度下降法进行计算,关于梯度下降法,后面我会再写一篇文章专门介绍。

第二个问题

假如  XTX  不可逆怎么办,这个问题比较关键,为了解决这个问题,研究者为求解w*的函数引入了对角矩阵作为参数来保证  XTX 可逆,即原求解公式变为:

w=(XTX+λI)1XTY

其中 λI 为形如下列格式的单位对角矩阵:

λ1000010000100001

这种方法求出的w*一定是最优的。

那么,引入这么一个参数,必然要有其具体的函数意义,比如高斯分不中引入噪声、SVM中引入松弛变量,那么这里的  λI 表示什么含义呢。

概率解释


标准方程获得的结果可以从很多个角度来解释其意义,我们可以选择从概率的角度来看(但这个式子并非是从概率论推出来的,具体如何来的笔者也暂不知道……只是前辈告诉我就是突然出现这么一个式子比较合理,从各个角度都能解释的通)。

我们这里从三个不同的角度来看待线性回归的参数估计问题,他们分别是:最大似然估计、贝叶斯估计和最大后验估计。

一)最大似然估计

最大似然估计比较简单,它假定要估计的模型参数w虽然是未知的,但应该当确定值,然后找到符合对数似然最大分布的参数值。

首先,我们假设线性模型为:

y=wx+ε

其中 δ 是线性样本上的噪声数据,我们假设噪声符合高斯分布,即

εN(0,δ2)

在确定w和x的情况下,我们可以看到y与 ε 分布相同,也就是说对于每一个数据点:

p(yi|xi;w)=p(ε)=12πδexp(ε22δ2)

由于 ε=ywx ,所以:

p(yi|xi;w)=12πδexp((yiwxi)22δ2)

对于所有的样本X,以及他们所有的预测结果Y有:

P(Y|X;w)=p(yi|xi;w)

最大化这个概率,求出w就是我们的目标,为了方便计算,我们把上式的连乘转换为负对数最大似然求极小值问题,把p值代入即可得:

L(w)=ilog(p(yi|xi;w))=12δ2i(yiwxi)2+C

由于 δ C 都是常数,所以最小化这个 L(w) 与最小二乘法的结果一样。

现在我们知道了为什么标准方程中使用差平方的和是合理的,而不是使用其他的误差计算方式。

二)贝叶斯最大后验估计


贝叶斯估计的特点是,假设已知样本处于分布D上(如高斯分布),根据已有样本计算在分布D上概率最大的参数w。

给定X、Y推导w的贝叶斯后验概率:

p(w|X,Y)=p(w,Y|X)p(Y|X)

由于贝叶斯的特点就是假设样本分布于D上,所以我们这里假设该分布为高斯分布,那么参数w在该分布上的概率为 w|XN(0,γ2) ,即:

p(w|X)=1γ2πexp(w22γ2)

则,贝叶斯后验概率可以转换为:

p(w|Y,X)=p(w,Y|X)p(Y|X)=p(Y|w,X)p(w|X)p(Y|w,X)p(w|X)dw

根据贝叶斯定理和条件概率的基本性质(维基百科),我们可以把上市做一些转换,因为我们已经预先假设了 p(w|X) ,所以要转换结果有它。

最大化 p(w|Y,X) 可以表示为:

maxwp(w|Y,X)=maxwp(w,Y|X)p(Y|X)=p(Y|w,X)p(w|X)p(Y|X)

由于 p(Y|X) 为常数,所以上式等价于 maxwp(Y|w,X)p(w|X)  最小化其负对数后验概率:

minwlog(p(Y|w,X)p(w|X))=minwlog(p(Y|w,X))log(p(w|X))

=log(p(yi|w,xi))log(p(w|X))

=1δ2(yiwxi)2+1γ2w2

如果我们令 λ=δ2γ2 ,则上式等价于:

minw(yiwxi)2+λw2

令其全导数为零,则最优解为:

w=(XTX+λI)12XTY

我们发现贝叶斯最大后验概率与标准方程形式相同,从概率的角度是有意义的。

λI 的含义,其中I是单位对角矩阵,

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Sure,我可以回答这个问题。首先,你需要准备考研绩和其他相关因素的数据,并使用python中的scikit-learn库中的线性回归模型来拟合这些数据。具体实现过程如下: 1. 导入必要的库和数据 ```python import pandas as pd from sklearn.linear_model import LinearRegression # 读取考研绩和相关因素的数据,例如GRE绩,GPA,志愿者经历等 data = pd.read_csv('data.csv', header=0) ``` 2. 将数据拆分为训练集和测试集,并对数据进行标准化处理 ```python from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler # 将数据拆分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(data.iloc[:, :-1], data.iloc[:, -1], test_size=0.2, random_state=1) # 对数据进行标准化处理 scaler = StandardScaler().fit(X_train) X_train_std = scaler.transform(X_train) X_test_std = scaler.transform(X_test) ``` 3. 使用线性回归模型进行拟合 ```python # 创建线性回归模型并拟合训练集数据 lr = LinearRegression() lr.fit(X_train_std, y_train) ``` 4. 使用模型进行预测 ```python # 对测试集数据进行预测 y_pred = lr.predict(X_test_std) ``` 5. 计算模型的性能指标 ```python from sklearn.metrics import r2_score, mean_squared_error print('R^2: %.2f' % r2_score(y_test, y_pred)) print('MSE: %.2f' % mean_squared_error(y_test, y_pred)) ``` 以上就是使用python通过线性回归方程编写预测考研概率的程序的大致步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值