介绍

线性回归是特征与标签之间建立一个关系来描绘特征和标签之间的关系。

预测函数的本质就是我们构建的模型,而构造的函数核心就是找出模型的参数向量w

最小二乘法(解析解)求解W

通过已知的MSE损失函数,推导出来线性回归解析解求解公式

  1. 先将损失函数换一个写法(表达形式),写成线性代数的表达形式。

2. 对表达式进行推导

在rstudio用最小二乘法求回归方程 最小二乘法求回归系数_在rstudio用最小二乘法求回归方程


梯度:某个点上切线的斜率叫做梯度(对某个驻点求一阶导就是切线的斜率)

(不管是全局最优解还是局部最优解,切线斜率为零的地方就是最优解)

那么我们就设置上式导函数为零即梯度为零,最终求得theta,那么这时就是求的就是极大值或者极小值,但是凸函数那么就有一个极值就是极小值,如果是非凸函数就有可能是极大值也有可能是极小值,但是我们基本上都是假设我们的数据是凸函数。、

机器学习是凸函数

深度学习是非凸函数。

3.对上述公式求一阶导,因为驻点的斜率时零,所以当对公式求导时结果等于零就是驻点也就是最优解。

在rstudio用最小二乘法求回归方程 最小二乘法求回归系数_机器学习_02




在rstudio用最小二乘法求回归方程 最小二乘法求回归系数_在rstudio用最小二乘法求回归方程_03

 4.进一步求出θ解析解的公式

在rstudio用最小二乘法求回归方程 最小二乘法求回归系数_线性回归_04



5.那么现在将x,y带入解析解公式就可以一步求出θ的值

6.凸函数我们可以肯定的知道他的极值就是全局最优解

非凸函数有很多局部最优解,所以无法通过梯度等于0的方式将theta求解出来

7.判定凸函数的方式

用hessian matrix判定是否是半正定矩阵

目标函数在点X处的二阶偏导数组成的对称矩阵,如果特征值全是正数,那么是正定的,特征值大于等于0就是半正定的

机器学习中损失函数往往都是凸函数,到深度学习损失函数往往都是非凸函数,即找到的解未必是全局最优解,只要模型堪用就可好,不强调模型百分百正确,只要是有价值的就好!


sklearn线性回归参数

from sklearn.linear_model import LinearRegression

线性回归参数很少,用了线性回归如果预测的效果不好,基本上调不了什么参数,那就标准化试试,还不行就换个模型吧。

优点就是很简单,缺点就是没有过多可调的参数。


参数:

fit_intercept:布尔值,可不填,默认为True ,是否计算此模型的截距。如果设置为False,则不会计算截距


normalize: 布尔值,可不填,默认为 False

当 fifit_intercept 设置为 False 时,将忽略此参数。如果为 True ,则特征矩阵 X 在进入回归之前将



会被减去均值(中心化)并除以 L2 范式(缩放)。如果你希望进行标准化,请在 fifit 数据之前



使用 preprocessing 模块中的标准化专用类 StandardScaler






copy_X: 布尔值,可不填,默认为 True, 如果为真,将在 X.copy() 上进行操作,否则的话原本的特征矩阵 X 可能被线性回归影响并覆盖。






n_jobs: 整数或者 None ,可不填,默认为 None, 用于计算的作业数。只在多标签的回归和数据量足够大的时候才生效。除非 None 在 joblib.parallel_backend 上下文中,否则 None 统一表示为 1 。如果输入 -1 ,则表示使用全部 的 CPU 来进行计算。







属性:



coef_:线性回归方程中估计出的系数。(这个数值也就是特征对标签y的重要程度)
 




intercept_ : 数组,线性回归中的截距项。









评估指标:






MSE评估指标







from sklearn.metrics import mean_squared_error as MSE
MSE(y_predict, y_test)
# 交叉验证使用负均方误差做评估指标
cross_val_score(reg, X, y, cv=10, scoring='neg_mean_squared_error')
一般算出来这个值后,拿来和测试值的均值作比较
假设这个值是0.5
y_test.mean()是2.08
那么错误率就是0.2


R平方

在rstudio用最小二乘法求回归方程 最小二乘法求回归系数_最优解_05


方差本质是任意一个y值和样本均值的差异,差异越大所带信息越多。

1-均方误差/方差(真实值所带信息两)

1-模型没有捕获到的信息量占真实标签所带的信息量比例=模型信息量所占真是标签信息量

所以R平方越接近于1越好。

所以R平方也是会归类模型的第一衡量指标。

# 两种方式使用r平方评估指标
from sklearn.metrics import r2_score
注意:使用r2_score,真实值放前面,预测值放在后面
# 所有的回归类算法模型包括回归树,回归森林,还是线性回归score默认接口都是r平方
reg.score(X_test, y_test)
# 交叉验证,corss_val_score参数scoreing='r2'
corss_val_score(lr, X, y, cv=5, scoreing='r2')

当发现R平方是负的,说明线性回归完全没有拟合到真实数据集。


多重共线性问题

在rstudio用最小二乘法求回归方程 最小二乘法求回归系数_机器学习_06

解决多重共线性问题:

加上一个L2范数,让对角线变得不为零也不接近于0。让矩阵永远都是满秩矩阵

在rstudio用最小二乘法求回归方程 最小二乘法求回归系数_最优解_07