The sharing of resources about Statistical Learning Theory and Machine Learning(includeing SVM,Semi-Supervised Learning,Ensemble Learning,Clustering) ,welcome to contact and communicate with me: Email: xiankaichen@gmail.com,QQ:112035246,

Sunday, June 29, 2008

svm的训练预测过程(很有意义)

想了一段时间,现在終於理清svm算法评估和预测的头绪了。
可以归纳为以下几个过程(顺序的):
  1. 收集数据,相关性分析(p卡方检验),特征选择(主成份分析)。
  2. 归一化数据。就是根据实际要求,将数据的取值范围转化为统一的区间如[a,b],a,b为整数。方法参考:http://slt-ml.blogspot.com/2008/06/spss.html
  3. 利用抽样技术将数据集分为训练集和测试集。抽样技术有分层抽样,简单抽样(等概率抽样)
  4. 将数据转化为软件(接口)所支持的格式。就libsvm(c++,java)来说,我们可以使用FormatDataLibsvm.xls将数据转化为libsvmm所要求 的格式。参考:http://slt-ml.blogspot.com/2008/06/formatdatalibsvmxlslibsvm.html
  5. 选择核函数,可以优先考虑rbf。
  6. 训练集利 用交叉验证法选择最好的参数C和r(rbf核函数中的参数gama)。可以通过网格法寻找出最优的参数,注意一次交叉验证得到一个参数对所对应的模型精 度,网格法目的就是找到使得模型精度达到对高的参数对(这里的参数对可能不止两个,有可能也有其他的),可以使用一些启发式的搜索来降低复杂度,虽然这个 方法笨了点,但是它能得到很稳定的搜索结果。需要提到的这里在对训练集进行分割的时候涉及到抽样,一个较好的方法就是分层抽样。从这步可以看出其实 Cross-Validation是一种评估算法的方法。
  7. 用6中得到的参数对在整个训练集合上进行训练,从而得出模型。
  8. 利用测试集测试模型,得到精度。这个精度可以认为是模型最终的精度。当然有人会担心3步中抽样会有一定的误差,导致8得到的精度不一定是最好的,因此可以重复3-8得到多个模型的精度,然后选择最好的一个精度最为模型的精度(或者求所有精度的均值做为模型精度)。

No comments: