线性方程
y = w1x1 + w2x2 + … … + wnxn + b
令 W = (w1, w2 … … wn), X = (x1, x2, … … xn)
则 y = W * X ^ T + b
称 W 为回归系数, X 为特征向量, b 为截距
线性方程的推导
现有 m 个已知样本, 每个样本有 n 个特征记为 X1, X2, … … , Xn 每个X中都有 n 个 x
对应的标签记为: y1, y2, … … , ym ,且特征和标签成线性关系
此时只要求得 W 就可得到线性回归方程
将m个已知量带入方程会得到方程组:
y1 = W * X1 ^ T + b = w1x1_1 + w2x1_2 + … … + wnx1_n + b
y2 = W * X2 ^ T + b = w1x2_1 + w2x2_2 + … … + wnx2_n + b
… …
ym = W * Xm ^ T + b = w1xm_1 + w2xm_2 + … … + wnxm_n + b
讨论: m > n 且无共线, 方程无解
m = n 且无共线, 有且只有一个解
m < n 无数个解
在实际生产环境中 m >> n (样本数远远大于特征维度), 所以上述方案行不通
最小二乘法
-
假设 W’ 和 b‘ 是最合适的, 得到假设出来的回归方程: W‘ * X ^ T + b’
-
把所有的样本带入, 得到假设的那些标签数据:
y1’ = W’ * X1 ^ T + b’
y2’ = W’ * X2 ^ T + b’
… …
ym’ = W’ * Xm ^ T + b’
此时 y1’, y2’, … … , ym’ 都是通过假设的 W’ 和 b‘ 得到的标签, 那么真实的标签 y1, y2, … … , ym 和假设推导的标签之间一定存在差异
-
采用均方误差最小化来求解的方法称为“最小二乘法”
from sklearn.linear_model import LinearRegression
lr = LinearRegression(fit_intercopt=True, noemalize=False, copy_X=True, n_jobs=None)
# fit_intercopt 是否计算截距
# noemalize在计算拮据的情况下, 回归前归一化, 回归因子X为减去均值,除以L2范数
# copy_X复制或覆盖
# n_jobs 采用多少CPU计算 n_jobs=-1 有多少用多少
岭回归
from sklearn.linear_model import Ridge·
改良的最小二乘法
1.岭回归可以解决特征数量比样本量多的问题
2.岭回归作为一种缩减算法可以判断哪些特征重要或者不重要,有点类似于降维的效果
3.缩减算法可以看作是对一个模型增加偏差的同时减少方差
岭回归用于处理下面两类问题:
1.数据点少于变量个数
2.变量间存在共线性(最小二乘回归得到的系数不稳定,方差很大)
罗斯回归
from sklearn.learn_model import Lasso
罗斯回归与岭回归的区别是罗斯回归采用L1正则:惩罚系数的绝对值
来源:CSDN
作者:XDD的小迷妹~
链接:https://blog.csdn.net/Yakultvivid/article/details/104855891