[解决]SVM使用权重进行特征选择…

kasper2304kasper2304 成员职位:28因素二世
2019年12月编辑 帮助
大家好。

我正在优化一个应该解决二进制文本分类问题的模型。我的数据非常不平衡,只有4%的阳性病例。我使用线性支持向量机与“优化参数”节点和“x验证”。我用优化节点优化“C”参数。我使用n-grams、停词去除和波特词干提取了大约150-220个特征,我的术语权重是“二进制”。

直到昨天,我没有做任何降低维数/特征的事情,因为我读了一些地方,这对支持向量机来说并不是必要的。然而,我之前确实通过PCA和ICA提高了性能,这让我认为我至少应该尝试减少特征的数量。当然,我删除了名称和特定于域的术语,因为在我的情况下,这些没有任何意义。

我真的不知道如何让PCA和ICA在rapidminer中正常工作,然后我偶然发现了“权重支持向量机”,我自己认为剔除低权重的特征是很有意义的。这至少会让我的算法更快,也有希望提高我的模型性能。因此,我将“权重支持向量机”节点附加到我的“选择属性”节点(踢出名称和域特定术语的节点),然后我附加了一个“权重选择”节点并进行了几次运行。一开始,我过滤掉了50%的最低权重特征,立即得到了比以往任何时候都好的结果,当我调整过滤器,剔除了80%的最低权重属性时,我得到了比我曾经敢于梦想的更好的结果。

准确地说,我让我的模型执行75%的类召回率(1),98.96%的类召回率(0),75%的类精度(1),98.96%的类精度(0)和98%的总体准确率。我认为这些结果对我的训练集来说相当不错…?

由于我有相对较少的正面案例,我的模型很有可能会将权重分配给特定领域的术语,使我的模型无法很好地泛化,因此我已经开始剔除那些我认为不是我问题的良好泛化器的变量,这当然会降低我模型的性能。然而,我愿意接受这一点,而且我最终可能会被证明是最好的解决方案

我的问题是……(按优先顺序排列)

1)使用SVM权重进行特征选择是否有问题?
2)在运行实际的支持向量机算法之前使用支持向量机权重有什么意义?

最好的
卡斯帕

答案

  • kasper2304kasper2304 成员职位:28因素二世
    (回答我自己的问题)

    起初我找不到任何关于这种方法的文献,这让我觉得我忽视了一些东西。因为我确实找到了这样做的文献,结果相当不错。我用信息增益和信息增益比做了一个快速的特征选择,线性支持向量机的特征选择仍然是目前为止最好的,无论是在分类精度还是鲁棒性方面。在35%到50%的最高加权特征范围内,我让它表现得同样好。我通过SOM直观地评估了它,这让我对它的作用有了很好的直觉。
登录注册置评。