# y" f6 v3 x4 a I4 M, C6 a6 r( IPython机器学习-多元分类的5种模型 ! M' W2 m+ \" D, _8 F' v) o: Q# N6 s0 U O0 }+ a C, e
最近上了些机器学习的课程,于是想透过Kaggle资料集来练习整个资料科学专案的流程,在模型训练阶段,虽然听过许多分类模型,但不是很了解其各别的优缺点与适合的使用时机,所以想来整理一篇文章,统整上课学习与网路资料,作为后续专案的优化方向!" j5 ]! {# i2 p
$ p6 j4 P/ d3 R1 f; f, N- a
首先,机器学习主要分为「监督式学习」与「非监督式学习」,两者的差异在于资料是否有「标签」。 ! g4 n& S) @& \" b- l' i# c ; Q; d/ H+ W0 H: z# |5 Y+ A监督式学习(Supervised Learning):给予「有标签」的资料,举例来说:给机器一堆苹果和橘子的照片,并说明哪些是苹果、哪些是橘子,再拿一张新的照片询问机器这是苹果还是橘子,而监督式学习又可分为回归(Regression)和分类(Classification)。 7 {. o# S( A" [: ]8 E - _1 ^7 I& C; a$ n非监督式学习(Unsupervised Learning):给予「无标签」的资料,让机器找出潜在的规则,举例来说:给予机器一堆苹果和橘子的照片,但没有告诉机器这些照片各别是哪种水果,让机器自行找到资料间的相似性,而非监督式学习又可分为分群(Clustering)和降维(Dimension Reduction)。 ( B* _: s) N4 I! C' B- y2 s$ ^! _0 D p6 b. Q
这篇文章会以监督式学习中的分类模型为主。& T$ o7 T7 Z1 n% A; k% Q E
K8 u9 [* F4 z0 M; L$ {+ V一、逻辑回归(Logistic Regression)* t2 }+ E# V1 A2 l! M7 L: } m& B
逻辑回归是个二元分类(Binary Classification)的模型,并有其对应的机率值,举例:明天会下雨的机率有90%。 $ P7 c' i) ^3 ^7 n' [ $ J9 G# W: Q" W- M6 K g# `基本概念是利用线性回归线(Linear Regression Line),将资料分为A/B两类,再透过Sigmoid Function (or Logistic Function) 输出A类别的机率值(0~1),若机率>0.5则判断为A类别,因为是二元分类,所以当机率<0.5则被归类为B类别。 - E4 u; @' y- `# g- P4 }# l% F 9 u5 e3 Z$ S4 s$ ?1 c6 U2 d& N若需处理多元分类问题,有两种方法: ; |+ g, S" M0 Y$ t. F1. One versus Rest (or One versus All):将每个分类与其他剩余的资料做比较,若有N个类别,就需要N个二元分类器。以下方图例来说明,若有类别1~3,每次各使用一个类别与剩余的两个类别作二元分类后,会得到三个分类器,预测时把资料放到三个分类器中,看哪个分类器的分数较高,就判断为该类别。! Y! ]: g; W! I8 T3 }& K3 Y
2 { u, G7 S/ G1 k( M; r) QOne versus Rest Example (Source from Internet), J8 j& Q8 @; g# n/ |. m% [/ }) Y8 Z
; y. [$ q, k) M' s2. One versus One:每次选择两个类别做分类,若有N个类别,就会有N*(N-1)/2个分类器,将每次分类的结果做投票,最后判断为票数最高的那个类别。举下方图例来说,有三个类别,会有三组分类器,最后新资料会判断为票数较高的类别1。% C% n8 i7 w& U% v! K5 m- v/ r# A
9 Z% u0 R5 S7 s7 K, {, a E" a
One versus One Example (Source from Internet), e" N% v8 z9 |+ p4 K# A
( a* b; b0 v# G( ^) w# i- v5 LLogistic Regression的优点:% y0 n0 z- S5 F6 Y. s0 l* l
◆ 资料线性可分(包含在高维度空间找到linear plane)) F4 _; h, }& L0 t
◆ 除了分类,也可以得到A/B两类的机率 ; T* Z2 C9 X6 |# r) }% a◆ 执行速度较快! r, p; v% o! j* f) E
# H8 j$ c0 V) U: |. f
Logistic Regression的缺点:* E H7 U7 }0 m7 o' g
◆ 线性回归线的切法可能不够漂亮" v3 U5 l) S! @( x! _' Y" Z
◆ 不能很好地处理大量、多类特征 0 s! Q- @% o8 v p) K7 y$ W % r+ H8 ]* L6 s) x: z% A二、 支持向量机( 支持向量机,SVM) 6 q! i) ~1 i' e" k: K" ~! X# F支持向量机(Support Vector Machine)是在寻找一个超平面(Hyper-plane)来做分类,并使两个类别之间的边界距离最大化(会忽略异常点Outlier)。 2 G& K; L/ O# l" V1 e5 p. f/ x( U 2 D/ T1 ?4 ~6 P9 c* J1 b5 ISVM也可使用于非线性分类(如下图B),透过Kernels functions将低维空间转换为高维空间,让资料可以在高维空间被线性分类。想像红色球的重量比蓝色球还重,在平面上一拍,让球往上弹,重量重的红色球会较快落下,在立体空间就可以找出个平面来切分红色和蓝色球。 1 |& g: B" }- b1 u* B + t* O6 I# W/ @) NSupport Vector Machine Example (Source from Internet) " s) h8 t8 b0 T9 q' J8 |. Q1 C/ V' l1 K
SVM的优点: % u2 w8 r+ n8 z ?3 y◆ 切出来的线或平面很漂亮,拥有最大边界距离(margin)6 l( h) j1 H- s; I1 v& ]# O
◆ 在高维空间可以使用(即使维度数大于样本数也有效)) c4 }( A& ~& T7 W. p0 d. A1 y P
◆ 在资料量较小、非线性、高维度与局部最小点等情况下有相对的优势2 J6 U" `6 \( v! m7 q
9 t; M3 y [) G" U M6 \: ?SVM的缺点: $ p' |% ?) n' Y( `& u$ K p◆ 当资料太多时,所需的训练时间太长,而使效果不佳) I9 G' u: U3 K P# B1 L
◆ 当资料集有太多noise时(如目标类别有重叠),预测的效果也会不好 1 d' i5 Y; u$ o! C( u1 m+ ~8 v' c v◆ SVM不会直接提供机率的估计值 7 Z; p% X' |1 Y0 M$ M& m6 z. m' e
三、决策树(Decision Tree)4 h* A6 w R* g9 n# M$ n
透过模型预测可以得知某个方程式来做分类,但方程式可能很难懂或很难解释,这时需要决策树(Decision Tree),它的准确性可能没有很精准,但「解释性」高,所以决策树是一种条件式的分类器,以树状结构来处理分类问题。 " \8 ~- U/ J! r" _2 k( P/ ?3 b F5 [. L. S A$ U
建构决策树的方式,是将整个资料集依据某个特征分为数个子资料集,再从子资料集依据某个特征,分为更小的资料集,直到子资料集都是同一个类别的资料,而该如何分类则是透过资讯熵(Entropy)和资讯增益(Information Gain)来决定。; F5 U8 P/ Q) I0 Y! S Q