1. Ridge回归和Lasso回归简单对比
Ridge回归(岭回归)和Lasso回归(套索回归)都是在OLS的基础上,对最小化的目标函数加入了正则化技术,以实现在增加先验信息约束的情况下实现参数估计。
其中,在OLS最小化目标函数的基础上,Ridge回归执行L2正则化,增加相当于系数幅度的平方的惩罚;Lasso回归执行L1正则化,增加相当于系数幅度绝对值的惩罚。关于这两个回归中的惩罚系数的大小、两种回归的统计学原理,可以参见Python 中 Ridge 和 Lasso 回归的教程,写得很是详细。偷懒如我,暂时不进行统计学细究了,先学会Python的简单应用。
2. Python sklearn实现Ridge回归和输出p-values
本想用statsmodels模块进行实现,发现这个封装的并不是很好,需要自定义statsmodels.regression.linear_model.OLS.fit_regularized
里面的正则项参数。退而用sklearn包,毕竟用起来更简单。其中关于在sklearn包中想要输出ridge regression的 p-values的方法参见p-values from ridge regression in python。
下面是具体代码。
from sklearn.linear_model import Ridge
import pandas as pd
import regressors.stats
df = pd.read_csv('data.csv', header=0, encoding='gbk')
X = df['x1', 'x2', 'x3']]
y = df['y']
clf = Ridge(alpha=1.0)
clf.fit(X, y)
print(clf.score(X, y)) # 输出R2
print(clf.coef_) # 回归系数
print(clf.get_params()) # 输出参数设置
# 输出总的统计检验表格
print(regressors.stats.summary(clf, x, y))
函数形式和参数解释参见官网: sklearn.linear_model: Linear Models