我开始使用LIBSVM
回归分析。我的世界有大约 20 个特征和数千到数百万个训练样本。
我很好奇两件事:
是否有一个指标表明模型的准确性或置信度,可能在 .model 文件或其他地方?
如何确定一个特征是否重要?例如,如果我试图将体重预测为身高、肩宽、性别和头发颜色的函数,我可能会发现头发颜色在预测体重时并不是一个重要特征。这是否反映在 .model 文件中,或者有什么方法可以找出答案?
我开始使用LIBSVM
回归分析。我的世界有大约 20 个特征和数千到数百万个训练样本。
我很好奇两件事:
是否有一个指标表明模型的准确性或置信度,可能在 .model 文件或其他地方?
如何确定一个特征是否重要?例如,如果我试图将体重预测为身高、肩宽、性别和头发颜色的函数,我可能会发现头发颜色在预测体重时并不是一个重要特征。这是否反映在 .model 文件中,或者有什么方法可以找出答案?
libSVM 根据分类器的确定性计算测试点的p值(即,测试点离决策边界有多远以及边缘有多宽)。
我认为您应该将确定特征重要性视为与训练 SVM 不同的问题。“特征选择”有很多方法(只需打开任何教科书),但一种易于理解、直接的方法是简单的交叉验证,如下所示:
您也可以反过来测试n 个特征中的每一个,但您可能会错过特征之间重要的二阶和更高阶交互。
然而,总的来说,SVM 擅长忽略不相关的特征。
您可能还想尝试使用主成分分析来可视化您的数据,以了解数据的分布方式。
F-score是机器学习中常用的特征选择指标。
从 3.0 版开始,LIBSVM 库包含一个名为tools的目录。在该目录中有一个名为fselect.py的 python 脚本,用于计算 F 分数。要使用它,只需从命令行执行并传入包含训练数据的文件(以及可选的测试数据文件)。
python fselect.py data_training data_testing
输出包含数据集中每个特征的fscore,对应于该特征对模型结果的重要性(回归分数)。