. s8 ?! |. t( c3 l' J7 O% NPython机器学习-多元分类的5种模型 5 b* I5 K# i' S2 O' a+ O1 G) O/ s. q* b" \) b* }5 c" G" S
最近上了些机器学习的课程,于是想透过Kaggle资料集来练习整个资料科学专案的流程,在模型训练阶段,虽然听过许多分类模型,但不是很了解其各别的优缺点与适合的使用时机,所以想来整理一篇文章,统整上课学习与网路资料,作为后续专案的优化方向!* R: T+ Z% A) f# f
- P% e: W. t, Z4 P; R
首先,机器学习主要分为「监督式学习」与「非监督式学习」,两者的差异在于资料是否有「标签」。% C% Z$ c, L7 m* y. y$ \
/ Z$ y- `* Z+ H0 r4 F9 d" u$ D
监督式学习(Supervised Learning):给予「有标签」的资料,举例来说:给机器一堆苹果和橘子的照片,并说明哪些是苹果、哪些是橘子,再拿一张新的照片询问机器这是苹果还是橘子,而监督式学习又可分为回归(Regression)和分类(Classification)。 9 h ^& r _: c- P+ n + w/ k* R; O# a' r" H7 A# D2 S非监督式学习(Unsupervised Learning):给予「无标签」的资料,让机器找出潜在的规则,举例来说:给予机器一堆苹果和橘子的照片,但没有告诉机器这些照片各别是哪种水果,让机器自行找到资料间的相似性,而非监督式学习又可分为分群(Clustering)和降维(Dimension Reduction)。( @5 o: u& ?! ]$ F+ N# u
2 [3 c' P, x6 e+ Y3 K这篇文章会以监督式学习中的分类模型为主。/ I: L) W% A& h" Y& _( y
( ]. a1 W5 V o) D+ S/ o- X F一、逻辑回归(Logistic Regression)9 `( z& h, N9 ]9 O; y
逻辑回归是个二元分类(Binary Classification)的模型,并有其对应的机率值,举例:明天会下雨的机率有90%。: l* y7 M$ ^+ f. x% A6 n( E( e B
- p1 C8 S6 P% @. r: k S: m基本概念是利用线性回归线(Linear Regression Line),将资料分为A/B两类,再透过Sigmoid Function (or Logistic Function) 输出A类别的机率值(0~1),若机率>0.5则判断为A类别,因为是二元分类,所以当机率<0.5则被归类为B类别。4 K8 |" P( x3 Z* R! s2 {4 {
{* s0 Y2 R6 p1 Q* l
若需处理多元分类问题,有两种方法:' ^4 \: R7 {% e
1. One versus Rest (or One versus All):将每个分类与其他剩余的资料做比较,若有N个类别,就需要N个二元分类器。以下方图例来说明,若有类别1~3,每次各使用一个类别与剩余的两个类别作二元分类后,会得到三个分类器,预测时把资料放到三个分类器中,看哪个分类器的分数较高,就判断为该类别。/ p0 |# p% U' e$ }
: u1 s, K6 z7 Y5 t9 @/ i& I& X( tOne versus Rest Example (Source from Internet)* j S# U6 k# G' w! Q8 P. _/ Q9 @- i
t q) ]: Z. ?( h2. One versus One:每次选择两个类别做分类,若有N个类别,就会有N*(N-1)/2个分类器,将每次分类的结果做投票,最后判断为票数最高的那个类别。举下方图例来说,有三个类别,会有三组分类器,最后新资料会判断为票数较高的类别1。1 Y- M& Y0 g% v& i
3 Z3 _7 v: {3 [0 SOne versus One Example (Source from Internet) 5 M3 Q* }" H1 @% p! A * z L7 B7 g" Q' Y; X' JLogistic Regression的优点: , S+ M& K* P2 I+ \* g, b◆ 资料线性可分(包含在高维度空间找到linear plane)2 P, g/ E# ?, a, b
◆ 除了分类,也可以得到A/B两类的机率 ! v8 }- `/ c9 m9 N2 k( Y◆ 执行速度较快 , \8 }, d$ }% Q# @; W$ u $ O, e7 M$ v# D9 f1 V. P8 ]Logistic Regression的缺点:# a: f; J: h; [! t6 m
◆ 线性回归线的切法可能不够漂亮- k4 W2 r$ e5 T) N
◆ 不能很好地处理大量、多类特征9 x( P) u7 h' V
3 P, O3 M7 E6 G0 l5 Q0 W" P二、 支持向量机( 支持向量机,SVM) 0 f! ~# \9 U; D6 [! @4 P% o支持向量机(Support Vector Machine)是在寻找一个超平面(Hyper-plane)来做分类,并使两个类别之间的边界距离最大化(会忽略异常点Outlier)。 ! K4 [2 [4 b; T2 z' g i5 J. v$ a 4 Q: W2 H/ b8 Y1 aSVM也可使用于非线性分类(如下图B),透过Kernels functions将低维空间转换为高维空间,让资料可以在高维空间被线性分类。想像红色球的重量比蓝色球还重,在平面上一拍,让球往上弹,重量重的红色球会较快落下,在立体空间就可以找出个平面来切分红色和蓝色球。 . J j% `$ y8 [+ g6 N4 `0 N3 S! r) S- O) c0 p9 b
Support Vector Machine Example (Source from Internet)% |8 F. b# _5 a& B$ e1 r! P
/ C/ V/ \7 O3 i3 A! ~: t! V$ \) }SVM的优点:: T" v, b- c- c9 k
◆ 切出来的线或平面很漂亮,拥有最大边界距离(margin) & t: o5 o; b+ d% x$ \◆ 在高维空间可以使用(即使维度数大于样本数也有效) 8 h6 C! }8 g* R2 c8 n! K◆ 在资料量较小、非线性、高维度与局部最小点等情况下有相对的优势 4 ~# t, p5 d' m) P9 [5 `$ \, h " ?$ Y& ?# M) Q1 W" |' U; p; PSVM的缺点:) d7 @9 J* T& o* W1 I3 G& g
◆ 当资料太多时,所需的训练时间太长,而使效果不佳5 U+ I$ C7 F" v7 [2 P
◆ 当资料集有太多noise时(如目标类别有重叠),预测的效果也会不好+ ~+ r" W7 m1 e9 C. \4 X- f
◆ SVM不会直接提供机率的估计值 $ G: V: k( y) p4 n& F7 q, p6 @$ _% V r5 s1 r4 N5 O( w
三、决策树(Decision Tree) 7 k8 D4 J+ Z; d6 i7 p8 \8 ~透过模型预测可以得知某个方程式来做分类,但方程式可能很难懂或很难解释,这时需要决策树(Decision Tree),它的准确性可能没有很精准,但「解释性」高,所以决策树是一种条件式的分类器,以树状结构来处理分类问题。 1 L" h T2 ~6 t$ V F: v8 s2 o) Y0 F; n
建构决策树的方式,是将整个资料集依据某个特征分为数个子资料集,再从子资料集依据某个特征,分为更小的资料集,直到子资料集都是同一个类别的资料,而该如何分类则是透过资讯熵(Entropy)和资讯增益(Information Gain)来决定。 6 N, A6 w6 O9 i5 q8 o6 m7 A& J3 {. x* d6 x: d g
1. 资讯熵(Entropy):用来衡量资料的不纯度,若资料为同一类Entropy=0,若资料「等分」成不同类别Entropy=1。5 l4 X, T2 d4 p- v( F. H+ k. `