为岭回归训练 alpha 值
Posted
技术标签:
【中文标题】为岭回归训练 alpha 值【英文标题】:training an alpha value for ridge regression 【发布时间】:2018-09-29 03:17:06 【问题描述】:我有以下代码运行一个简单的岭回归:
for col in cols: #zscore normalization
df[col] = (df[col] - df[col].mean())/df[col].std(ddof=0)
y = df['SPXR_D'.format(horizon)] #my dependent variable (future market returns)
x = df[cols] #a bunch of variables that predict market returns
model = linear_model.Ridge(alpha=0.5) #ridge regression, guess & check based alpha
res = model.fit(x, y)
我已经读过,使用前半部分数据来查找 alpha 是最简单的方法,但这怎么可能呢?
【问题讨论】:
是的,找到一个好的 alpha 的一般方法是 cross-validation,其中对于 每个 alpha,您重复分区数据,在第一个分区上训练,在另一个分区上测试分区,并找到平均测试误差。因此,k-fold 或 leave-one-out 交叉验证的结果是平均测试误差与 alpha 的关系图,您可以选择交叉验证误差最低的 alpha。那有意义吗? (我会仔细检查,我确信 scikit-learn 有一种方法可以自动进行交叉验证并为您找到最佳 alpha。) 见scikit-learn.org/stable/modules/cross_validation.html ? 【参考方案1】:让我指出两个可能的方向。
1) 交叉验证:
RidgeCV - 只是一个结合 GridSearchCV 和 Ridge 的便捷包装器。拟合模型并检查属性 _alpha。2) 贝叶斯方法:
Bayesian Ridge Regression - 拟合模型并计算 _lambda / _alpha。【讨论】:
以上是关于为岭回归训练 alpha 值的主要内容,如果未能解决你的问题,请参考以下文章
岭回归:Scikit-learn 与直接计算不匹配 alpha > 0