1

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

我很好奇两件事:

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

  2. 如何确定一个特征是否重要?例如,如果我试图将体重预测为身高、肩宽、性别和头发颜色的函数,我可能会发现头发颜色在预测体重时并不是一个重要特征。这是否反映在 .model 文件中,或者有什么方法可以找出答案?

4

2 回答 2

2

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

我认为您应该将确定特征重要性视为与训练 SVM 不同的问题。“特征选择”有很多方法(只需打开任何教科书),但一种易于理解、直接的方法是简单的交叉验证,如下所示:

  1. 将您的数据集分成k折(例如,k = 10 很常见)
  2. 对于k个折叠中的每一个:
    1. 将您的数据分成训练/测试集(当前折叠是测试集,其余的是训练集)
    2. 仅使用 n个特征中的n -1 个来训练您的 SVM 分类器
    3. 测量预测性能
  3. 平均所有k测试折叠的n -1 特征分类器的性能
  4. 对所有剩余特征重复 1-3

您也可以反过来测试n 个特征中的每一个,但您可能会错过特征之间重要的二阶和更高阶交互。

然而,总的来说,SVM 擅长忽略不相关的特征。

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

于 2011-09-16T20:49:09.160 回答
1

F-score是机器学习中常用的特征选择指标。

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

python fselect.py data_training data_testing

输出包含数据集中每个特征的fscore,对应于该特征对模型结果的重要性(回归分数)。

于 2011-09-16T21:11:01.190 回答