用sklearn计算正则化参数和特征鲁棒性

时间:2016-01-02 13:44:00

标签: python parameters machine-learning scikit-learn feature-detection

我使用2级数据集的属性数量(10000~50000)远远超过实例(100~1000),所以我认为特征选择是一个重要的问题。

所以我尝试使用随机Logistic回归,这是减少功能的好方法。

然而,由于大量特征,正则化参数C的影响似乎非常大。我通常通过网格搜索使用如下所示的10倍交叉验证来计算最优C,但如this example中所述,它没有给出可靠的值。

clist = np.linspace(0.01, 10, 100)
params = {'C' : clist}
logi = LogisticRegression(class_weight="balanced", penalty='l1')
grid = GridSearchCV(logi, params, cv=10, scoring='roc_auc')

大多数情况下,选定的C太大或太小,因此使用所选功能进行分类(通过SVM)也没有比使用默认C 1.0更好的结果。

有没有更好的方法来选择正则化参数?

另一个问题是特征稳健性的计算。有一些流行的计算稳定性的方法,如Kuncheva的索引,但似乎没有在sklearn中实现。我能想象的只是一个简单的 - 制作n个重采样数据集,选择特征并计算重叠特征的数量。

是否有任何推荐的测试功能稳健性的方法?

0 个答案:

没有答案