我有大约8000个测量二级响应变量的特征,即输出可以属于1类或0类。 8000个特征包括大约3000个具有0-1值的特征和大约5000个特征(基本上是来自文本数据及其tfidf得分的单词。
我正在此基础上构建线性svm模型来预测我的输出变量,并获得不错的结果/准确性,召回率和准确性,大约60-70%
我正在寻找以下方面的帮助:
标准化:是否需要对0-1值进行标准化?即使我使用亚线性tdf=true
,tfidf分数也需要标准化吗?
降维:到目前为止,我已经尝试使用sklearn的f_classif
函数来SelectPercentile
。还有其他建议的降维技术吗?我浏览了sklearn降维url,它也谈到了chi2 dim降低,但这并不能给我带来很好的效果。如果数据是0-1列和tfidf得分列的混合,是否可以应用pca?
删除共线性:如何删除高度相关的自变量。
我对python和机器学习还很陌生,因此将不胜感激。
答案 0 :(得分:1)
(已编辑,以包括其他问题)
1-我将对线性模型的变量进行居中和缩放。我不知道对于SVM是否绝对必要,但是如果我没记错的话,如果变量在相同范围内,则基于空间的模型会更好。无论如何,我认为这样做没有任何危害(相对于未缩放/未缩放)。有人可能会纠正我-通过文本分析,我做得并不多。
2-(原始答案)=您可以尝试应用randomForest模型,然后检查重要性得分(丢弃那些重要性不高的得分)。具有这么多功能,我担心内存问题,但是您的机器是否可以处理...?
这里的另一个好的方法是使用ridge / lasso logistic回归。就其本质而言,这擅长于识别(并丢弃)冗余变量,并且可以帮助您解决问题3(相关变量)。
感谢您是新手,但是以上两种模型都擅长解决相关性/非重要变量,因此您可能要在完成SVM的过程中使用它们。
3-我知道没有魔术子弹。以上可能会有所帮助。我主要使用R,并且其中包含一个名为Boruta的软件包,该软件包非常适合此步骤。可能有等效的Python吗?