" E. s) D! p- J6 | Python机器学习-多元分类的5种模型 3 T; f2 K4 h) q! Y" s |" `' |, s& K7 H3 U* t' R
最近上了些机器学习的课程,于是想透过Kaggle资料集来练习整个资料科学专案的流程,在模型训练阶段,虽然听过许多分类模型,但不是很了解其各别的优缺点与适合的使用时机,所以想来整理一篇文章,统整上课学习与网路资料,作为后续专案的优化方向! 1 Q) v" p B$ P- g y% g4 g* B; A7 f& a0 S
首先,机器学习主要分为「监督式学习」与「非监督式学习」,两者的差异在于资料是否有「标签」。 ; V5 c; Y9 h; ~% F, p0 c0 b " X- u: ~! p1 t) c; I5 }9 W5 f8 _监督式学习(Supervised Learning):给予「有标签」的资料,举例来说:给机器一堆苹果和橘子的照片,并说明哪些是苹果、哪些是橘子,再拿一张新的照片询问机器这是苹果还是橘子,而监督式学习又可分为回归(Regression)和分类(Classification)。 2 F) p( e3 y z: c0 g& c, e$ |7 g+ g
非监督式学习(Unsupervised Learning):给予「无标签」的资料,让机器找出潜在的规则,举例来说:给予机器一堆苹果和橘子的照片,但没有告诉机器这些照片各别是哪种水果,让机器自行找到资料间的相似性,而非监督式学习又可分为分群(Clustering)和降维(Dimension Reduction)。0 S& t. I& A; ~, b
( \. g/ W E# W- c9 a; o, `
这篇文章会以监督式学习中的分类模型为主。) h& Z9 x& q: e6 M/ Q8 N+ M
- }5 u' ^/ U" y9 n一、逻辑回归(Logistic Regression), o; s, R; }9 ~. ^) T4 z, f) B; Q
逻辑回归是个二元分类(Binary Classification)的模型,并有其对应的机率值,举例:明天会下雨的机率有90%。 ) b3 r1 q5 c) |2 N9 w L8 \7 l3 G/ Q 9 X* V1 }" m% D& a0 D基本概念是利用线性回归线(Linear Regression Line),将资料分为A/B两类,再透过Sigmoid Function (or Logistic Function) 输出A类别的机率值(0~1),若机率>0.5则判断为A类别,因为是二元分类,所以当机率<0.5则被归类为B类别。& ~3 F7 c1 M! F0 `; _
; e3 a% i) [+ p# U& f0 S
若需处理多元分类问题,有两种方法: ! h: g( ~; u! T1. One versus Rest (or One versus All):将每个分类与其他剩余的资料做比较,若有N个类别,就需要N个二元分类器。以下方图例来说明,若有类别1~3,每次各使用一个类别与剩余的两个类别作二元分类后,会得到三个分类器,预测时把资料放到三个分类器中,看哪个分类器的分数较高,就判断为该类别。: J h$ }/ [* o: p- V
( {$ y0 z) ?& K4 T$ oOne versus Rest Example (Source from Internet): q8 T, O+ u1 r3 [4 Y! X
# w- [! f4 G: X7 S! }3 d, Z( \( K
2. One versus One:每次选择两个类别做分类,若有N个类别,就会有N*(N-1)/2个分类器,将每次分类的结果做投票,最后判断为票数最高的那个类别。举下方图例来说,有三个类别,会有三组分类器,最后新资料会判断为票数较高的类别1。 . y( {% q: u( H# R, Y ' @: P& K( v$ S2 |) MOne versus One Example (Source from Internet)# c4 l. Z! @( I R$ S9 g: f
) U) F. f1 E8 A0 u* `Logistic Regression的优点:7 c4 |7 c# A* Q* U x) |4 R r6 t
◆ 资料线性可分(包含在高维度空间找到linear plane) + @% H8 W% y5 X' D3 I/ A◆ 除了分类,也可以得到A/B两类的机率 6 o. P1 E5 p+ N, b9 j, i3 \◆ 执行速度较快8 g1 N$ r6 _) L5 R
% q# k" U* @9 v8 c$ K m' F
Logistic Regression的缺点:: q3 b/ ?0 r' n/ D
◆ 线性回归线的切法可能不够漂亮 6 {1 m! Y" q* V, J4 \! k, c◆ 不能很好地处理大量、多类特征8 D" y5 r+ l8 j( ^5 R$ X
/ d. l& w9 j& F4 O$ x
二、 支持向量机( 支持向量机,SVM)/ ?# ~6 q1 z+ O: s1 X
支持向量机(Support Vector Machine)是在寻找一个超平面(Hyper-plane)来做分类,并使两个类别之间的边界距离最大化(会忽略异常点Outlier)。 . {5 ~7 b; D9 v. Z( X ' q% |4 D2 ]- `. SSVM也可使用于非线性分类(如下图B),透过Kernels functions将低维空间转换为高维空间,让资料可以在高维空间被线性分类。想像红色球的重量比蓝色球还重,在平面上一拍,让球往上弹,重量重的红色球会较快落下,在立体空间就可以找出个平面来切分红色和蓝色球。 4 ^# e) I0 P; M3 n: [ f 2 \. O' f% k/ R2 C1 G3 `/ k: E" ]Support Vector Machine Example (Source from Internet)4 S/ i2 X7 _' Y% @7 e
* z" E9 E: V0 n4 ^SVM的优点: ; [6 J j6 e3 P. m7 o# |" j◆ 切出来的线或平面很漂亮,拥有最大边界距离(margin)0 Y: Q, \4 V/ M' ]
◆ 在高维空间可以使用(即使维度数大于样本数也有效) % h d3 C+ A' P◆ 在资料量较小、非线性、高维度与局部最小点等情况下有相对的优势9 I! F9 Y( v( }
) N- _! e$ t* F3 d/ E' `. j- [7 PSVM的缺点: 1 d7 ]* g0 R* r4 D1 N◆ 当资料太多时,所需的训练时间太长,而使效果不佳2 K) W+ ?/ g, a2 @* x9 A3 d
◆ 当资料集有太多noise时(如目标类别有重叠),预测的效果也会不好 - j/ U* F5 U- m$ k4 Z◆ SVM不会直接提供机率的估计值 / {7 C/ ~# q2 [# s! V6 G, G9 P& k; E7 ? H) U8 g) t! R
三、决策树(Decision Tree)( [; l0 l d. c0 x
透过模型预测可以得知某个方程式来做分类,但方程式可能很难懂或很难解释,这时需要决策树(Decision Tree),它的准确性可能没有很精准,但「解释性」高,所以决策树是一种条件式的分类器,以树状结构来处理分类问题。; u) f0 \+ s O