标签:机器学习 scikit-learn support vector machi svm 工程应用
参考:http://scikit-learn.org/stable/modules/svm.html
在实际项目中,我们真的很少用到那些简单的模型,比如LR、kNN、NB等,虽然经典,但在工程中确实不实用。
今天我们关注在工程中用的相对较多的SVM。
SVM功能不少:Support vector machines (SVMs) are a set of supervised learning methods used for classification, regression and outliers detection.
好处多多:高维空间的高效率;维度大于样本数的有效性;仅使用训练点的子集(称作支持向量),空间占用少;有不同的kernel functions供选择。
也有坏处:维度大于样本数的有效性----但维度如果相对样本数过高,则效果会非常差;不能直接提供概率估计,需要通过an expensive five-fold cross-validation (see Scores and probabilities, below).才能实现。
(SVM支持dense和sparse sample vectors,但是如果预测使用的sparse data,那训练也要使用稀疏数据。为了发挥SVM效用,请use C-ordered numpy.ndarray (dense) or scipy.sparse.csr_matrix (sparse) with dtype=float64.)
1、分类
SVC, NuSVC and LinearSVC 是三个可以进行multi-class分类的模型。三者的本质区别就是 have
different mathematical formulations,具体参考本文最后的公式。
SVC, NuSVC and LinearSVC 和其他分类器一样,使用fit、predict方法:
After being fitted, the model can then be used to predict new values:
对于multi-class分类:
SVC and NuSVC 的机制是“one-against-one”(training n_class * (n_class - 1) / 2个 models),而 LinearSVC 的策略是“one-vs-the-rest”(training n_class个 models) 。而实践中,one-vs-rest是常用和较好的,因为结果其实差不多,但时间省好多。。。
在每个class或者sample的权重不同的情况下,可以设置keywords class_weight andsample_weight :
类别权重:SVC (but not NuSVC) implement a keyword class_weight in the fit method. It’s a dictionary of the form {class_label : value}, where value is a floating point number > 0 that sets the parameter C of class class_label to C * value.
样本权重:SVC, NuSVC, SVR, NuSVR and OneClassSVM implement also weights for individual samples in method fit through keyword sample_weight. Similar to class_weight, these set the parameter C for the i-th example to C * sample_weight[i].
最后给几个例子:
2、回归
Support Vector Regression.
看能明白这句话不能:Analogously(to SVClassfication), the model produced by Support Vector Regression depends only on a subset of the training data, because the cost function for building the model ignores any training data close to the model prediction.
同样也是三个模型: SVR, NuSVR and LinearSVR。
给个例子:
未完待续。。。
版权声明:本文为博主原创文章,未经博主允许不得转载。
scikit-learn(工程中用的相对较多的模型介绍):1.4. Support Vector Machines
标签:机器学习 scikit-learn support vector machi svm 工程应用
原文地址:http://blog.csdn.net/mmc2015/article/details/47271039