我使用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个重采样数据集,选择特征并计算重叠特征的数量。
是否有任何推荐的测试功能稳健性的方法?