线性回归

概述

线性回归:用回归方程来描述 多个/1个 自变量与因变量之间关系 的一种思路

一元线性回归:y = wx+b

多元线性回归: y = T(w) * x + b

w: weight, 权重 (矩阵)/ 斜率

b:bias,偏置 / 截距

损失函数: 就是让模型效果好

误差 = 真实值 - 预测值

最小二乘:误差平方和

MAE(平均绝对误差):绝对误差的平均值,稳健。

MSE(均方误差):平方误差的平均值,放大大误差。

RMSE(均方根误差):MSE的平方根,与目标变量单位一致。

代码示例

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
import pandas as pd

def wang_Linear_train_model():
    df = pd.read_csv('data/波士顿房价xy.csv')
    x = df.iloc[:,:13]
    y = df.iloc[:,13]
    x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=22)
    scaler = StandardScaler()
    x_train = scaler.fit_transform(x_train)
    x_test = scaler.transform(x_test)
    model = LinearRegression()
    model.fit(x_train, y_train)
    y_predict = model.predict(x_test)
    print(r2_score(y_test, y_predict))
if __name__ == '__main__':
    wang_Linear_train_model()

正则方程法

直接求解 线性回归参数 的解析方法,不迭代

梯度下降算法

梯度就是导数

沿梯度反方向迭代优化参数的方法

1.全梯度下降(FGD):使用全部样本的梯度值

2.随机梯度下降(SGD):随机选择一个样本的梯度值更新权重

3.小批量梯度下降(Mini-Batch):随机选择小部分样本的梯度值更新权重

4.随机平均梯度下降(SAG):使用以前产生的梯度值来指导当前的梯度计算

L1 正则化-Lasso

用于让数据稀疏 ,让模型变得简单

原因: 把多个列 变为了 0----让特征失效

Lasso(apha = 0.1)#正则化参数(惩罚力度,默认是1,值越大,权重调整就越大)

L2正则化-Ridge(常用)

也叫 岭回归

防止过拟合

让权重趋向于0 不会变为0

L2正则化:能够让模型产生一些平滑的权重系数

Early stopping 是当模型训练到某个固定的验证错误率阈值时,及时停止模型训练

L1 与 L2 正则化

相同点: 都是通过惩罚系数,调整权重的

不同点:

L1 :将权重变为0,促稀疏

L2:一般只降低权重,而不会把权重调为0

---欠拟合可以通过增加特征来解决

---过拟合可以通过正则化、异常值检测、特征降维等方法来解决

扩展:

SGDRegressorpenalty='l2'loss='squared_loss',其效果与岭回归相同,但仅支持随机梯度下降优化,而 Ridge 支持更多优化算法。 但 岭回归更丰富