测量模型的准确性以及SVM中特征的重要性

时间:2011-09-16 20:29:28

标签: machine-learning regression libsvm

我开始使用LIBSVM进行回归分析。我的世界有大约20个特征和数千到数百万的训练样本。

我很好奇两件事:

  1. 是否有指示模型准确性或置信度的指标,可能在.model文件或其他地方?

  2. 如何确定某项功能是否重要?例如,如果我试图预测体重是身高,肩宽,性别和头发颜色的函数,我可能会发现头发颜色不是预测体重的重要特征。这是否反映在.model文件中,或者是否有某种方法可以找到?

2 个答案:

答案 0 :(得分:2)

libSVM根据分类器的确定性计算测试点的 p - 值(即,距离决策边界的测试点有多远以及边距有多宽)。

我认为您应该考虑将特征重要性的确定作为训练SVM的单独问题。 “功能选择”的方法有(只需打开任何教科书),但一个易于理解,直截了当的方法是简单的交叉验证,如下所示:

  1. 将数据集划分为 k 折叠(例如, k = 10是常见的)
  2. 对于每个 k 折叠:
    1. 将您的数据分成火车/测试集(当前折叠是测试集,其余是训练集)
    2. 仅使用 n 功能的 n -1训练您的SVM分类器
    3. 衡量预测绩效
  3. 所有 k 测试折叠的 n -1要素分类器的平均效果
  4. 对所有剩余功能重复1-3
  5. 您也可以单独测试每个 n 功能,但您可能会错过功能之间重要的二阶和更高阶互动。

    然而,一般情况下,SVM擅长忽略不相关的特征。

    您可能还想尝试使用主成分分析来可视化您的数据,以了解数据的分布方式。

答案 1 :(得分:1)

F-score 是机器学习中常用于功能选择的指标。

从3.0版开始,LIBSVM库包含一个名为 tools 的目录。在该目录中是一个名为 fselect.py 的python脚本,它计算F-score。要使用它,只需从命令行执行并传入由训练数据(以及可选的测试数据文件)组成的文件。

python fselect.py data_training data_testing

输出由 fscore 组成,用于数据集中的每个功能,这些功能对应于该功能对模型结果(回归分数)的重要性。