常用线性回归模型

2022-09-25  本文已影响0人  xieyan0811

多元线性回归

多元线性回归是最常用的预测数值型目标的建模方法,也常用于数据分析中的多因素分析。
\min_w||Xw-y||_2^2
后面几种回归都是在它基础上稍做修改。当特征数多于实例数,某些数据有问题,或者某些特征相关性高时,线性回归得到的参数常常数值很大,常用Lasso回归和Ridge回归解决这一问题,防止模型过拟合。

lasso回归(套索回归)

lasso回归倾向于减少有效参数,使模型更加简单。具体方法是修改损失函数,将L1范数加入惩罚项,它可生成稀疏的模型参数。常用于特征存在共线性的情况,实现模型特征选择。
\min_w\frac{1}{2n_{samples}}||Xw-y||_2^2+\alpha||w||_1

Ridge回归(岭回归)

和Lasso回归类似,将L2范数加入惩罚项。常用于数据个数小于数据维度的情况,它限制参数大小,使之逼近0。
\min_w||Xw-y||_2^2+\alpha||w||_2^2

Huber回归

Huber的损失函数结合了mse和mae,当模型的预测结果和真实值的差异较小时使用mse,较大时则使用mae,具体阈值通过人工设定。

示例

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split 
from sklearn.linear_model import LinearRegression as LR,Ridge,HuberRegressor,LassoCV
from sklearn.metrics import mean_squared_error

lb = load_boston()
x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.25,  random_state=666)

#model = HuberRegressor().fit(x_train, y_train)
#model = Ridge().fit(x_train, y_train)
#model = LR().fit(x_train, y_train)
model = LassoCV().fit(x_train, y_train)
preds = model.predict(x_test)

print(model.coef_) # 打印回归参数
print(mean_squared_error(y_test, preds))
上一篇下一篇

猜你喜欢

热点阅读