Scikit-learn - Multiclass 和 Multilabel 算法
针对多分类和多标签问题,虽然深度学习具有较好的表现,但采用传统机器学习方法可以作为对问题深入理解的尝试.
sklearn.multiclass
提供了很多机器学习算法,处理 multiclass
和 multilabel
分类问题,主要是将问题转化为二值分类(binary classification) 问题. 同时也支持 multitarget
回归问题.
Multiclass 分类:
多类别分类问题,类别classes数大于 2,如,对水果fruit数据集分类,类别有 oranges, apples, pears.
Multiclass 分类问题,假设每个样本仅对应一个标签 label,如一张 fruit 图片可能是 apple 或 pear,而不能同时是 apple 和 pear.
Mulitlabel 分类:
多标签分类问题,每个样本对应着一组标签 labels.
可以看作是,对一个样本数据点的属性预测,属性间不是互斥关系(mutually exclusive),如文档document中的相关主题topics. 一篇文章可以是 religion, politics, finance, education 中的任意一个,也可以同时是几种,也可以是都不是.
Multioutput 回归:
多输出回归问题,每个样本对应一组目标值target values.
可以看作是,对每个样本数据点预测几个属性,如某个地点的风向和地震震级预测.
Multioutput-multiclass 分类和 Multi-task 分类:
单个估计器estimator 需要处理几个联合分类任务.
可以看作是,Multi-label 分类问题和 Multi-class 分类问题的泛化.
输出是 2d numpy array 或稀疏矩阵 sparse matrix.
标签 labels 集对于每个输出可以是不同的,例如,一个样本的类别标签可能来自 fruit 标签集(oranges, apples, pears);而其颜色color 标签可能来自 color 标签集(red, green, blue, yellow).
分类器集:
- **Inherently multiclass:
sklearn.naive_bayes.BernoulliNB
sklearn.tree.DecisionTreeClassifier
sklearn.tree.ExtraTreeClassifier
sklearn.ensemble.ExtraTreesClassifier
sklearn.naive_bayes.GaussianNB
sklearn.neighbors.KNeighborsClassifier
sklearn.semi_supervised.LabelPropagation
sklearn.semi_supervised.LabelSpreading
sklearn.discriminant_analysis.LinearDiscriminantAnalysis
sklearn.svm.LinearSVC
(setting multi_class=”crammer_singer”)sklearn.linear_model.LogisticRegression
(setting multi_class=”multinomial”)sklearn.linear_model.LogisticRegressionCV
(setting multi_class=”multinomial”)sklearn.neural_network.MLPClassifier
sklearn.neighbors.NearestCentroid
sklearn.discriminant_analysis.QuadraticDiscriminantAnalysis
sklearn.neighbors.RadiusNeighborsClassifier
sklearn.ensemble.RandomForestClassifier
sklearn.linear_model.RidgeClassifier
sklearn.linear_model.RidgeClassifierCV
- Multiclass as One-Vs-One:
sklearn.svm.NuSVC
sklearn.svm.SVC
sklearn.gaussian_process.GaussianProcessClassifier
(setting multi_class = “one_vs_one”)
- Multiclass as One-Vs-All:
sklearn.ensemble.GradientBoostingClassifier
sklearn.gaussian_process.GaussianProcessClassifier
(setting multi_class = “one_vs_rest”)sklearn.svm.LinearSVC
(setting multi_class=”ovr”)sklearn.linear_model.LogisticRegression
(setting multi_class=”ovr”)sklearn.linear_model.LogisticRegressionCV
(setting multi_class=”ovr”)sklearn.linear_model.SGDClassifier
sklearn.linear_model.Perceptron
sklearn.linear_model.PassiveAggressiveClassifier
- Support multilabel: