多元线性回归
多元线性回归是最常用的预测数值型目标的建模方法,也常用于数据分析中的多因素分析。
后面几种回归都是在它基础上稍做修改。当特征数多于实例数,某些数据有问题,或者某些特征相关性高时,线性回归得到的参数常常数值很大,常用Lasso回归和Ridge回归解决这一问题,防止模型过拟合。
lasso回归(套索回归)
lasso回归倾向于减少有效参数,使模型更加简单。具体方法是修改损失函数,将L1范数加入惩罚项,它可生成稀疏的模型参数。常用于特征存在共线性的情况,实现模型特征选择。
Ridge回归(岭回归)
和Lasso回归类似,将L2范数加入惩罚项。常用于数据个数小于数据维度的情况,它限制参数大小,使之逼近0。
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))