【发布时间】: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。)
标签: python pandas scipy scikit-learn regression