1 L- N9 V" q" ^7 P- C9 f Python机器学习-多元分类的5种模型 ' ~9 e; B1 n; {5 j8 R9 X- Y5 i' C 8 V# V; D' @; L& H2 S/ U0 t最近上了些机器学习的课程,于是想透过Kaggle资料集来练习整个资料科学专案的流程,在模型训练阶段,虽然听过许多分类模型,但不是很了解其各别的优缺点与适合的使用时机,所以想来整理一篇文章,统整上课学习与网路资料,作为后续专案的优化方向! / C% `4 I; G. u0 ^1 \: ?5 j9 I3 T& I
首先,机器学习主要分为「监督式学习」与「非监督式学习」,两者的差异在于资料是否有「标签」。 0 O. {) a/ A \: Z- t+ u8 c& S3 X% G+ D3 a8 P
监督式学习(Supervised Learning):给予「有标签」的资料,举例来说:给机器一堆苹果和橘子的照片,并说明哪些是苹果、哪些是橘子,再拿一张新的照片询问机器这是苹果还是橘子,而监督式学习又可分为回归(Regression)和分类(Classification)。9 D- v$ m( t) J$ a
C8 U: x* S( \: A( d. J- D非监督式学习(Unsupervised Learning):给予「无标签」的资料,让机器找出潜在的规则,举例来说:给予机器一堆苹果和橘子的照片,但没有告诉机器这些照片各别是哪种水果,让机器自行找到资料间的相似性,而非监督式学习又可分为分群(Clustering)和降维(Dimension Reduction)。 6 B, n! {+ I$ m1 u ) t. m2 l4 H1 t. h2 \这篇文章会以监督式学习中的分类模型为主。' a/ w8 f: n9 e
; I$ a# D7 w8 _ C' Q& Y0 z! _; N
一、逻辑回归(Logistic Regression) 5 A0 y# }+ S; x# |逻辑回归是个二元分类(Binary Classification)的模型,并有其对应的机率值,举例:明天会下雨的机率有90%。- x9 t2 k9 D1 c4 d7 |/ {
8 ~6 c6 O$ z6 I- S) @3 \! Q
基本概念是利用线性回归线(Linear Regression Line),将资料分为A/B两类,再透过Sigmoid Function (or Logistic Function) 输出A类别的机率值(0~1),若机率>0.5则判断为A类别,因为是二元分类,所以当机率<0.5则被归类为B类别。 9 N7 [: n) e5 j( U; F3 L/ y7 f$ R 5 |+ E* R4 h% O5 q. o$ P- @2 g若需处理多元分类问题,有两种方法: 8 g: q9 P" d" u, [: s/ ~7 s. ^1. One versus Rest (or One versus All):将每个分类与其他剩余的资料做比较,若有N个类别,就需要N个二元分类器。以下方图例来说明,若有类别1~3,每次各使用一个类别与剩余的两个类别作二元分类后,会得到三个分类器,预测时把资料放到三个分类器中,看哪个分类器的分数较高,就判断为该类别。3 {# b/ H! j J3 p4 i
9 }! ^' a9 a% N, N6 L; L8 L. iOne versus Rest Example (Source from Internet) 1 ~6 U2 `3 z$ r6 R* D# [+ \3 C1 h. q& w/ o* U- [% k8 s$ u/ Q- }
2. One versus One:每次选择两个类别做分类,若有N个类别,就会有N*(N-1)/2个分类器,将每次分类的结果做投票,最后判断为票数最高的那个类别。举下方图例来说,有三个类别,会有三组分类器,最后新资料会判断为票数较高的类别1。 3 V/ |. S1 Q, M2 J, @+ U! J " z- t8 X+ m: s K6 s1 _One versus One Example (Source from Internet)/ h! T) ?: R6 [, l" k% z% `/ c8 c: t
. v2 {/ f# e6 r" f/ uLogistic Regression的优点:6 d0 M* z8 D" f% o, l( P
◆ 资料线性可分(包含在高维度空间找到linear plane) $ M! p9 s! v5 I' e" F◆ 除了分类,也可以得到A/B两类的机率 . K5 b( o! g- ?% N6 x◆ 执行速度较快 2 D7 C) j& t" j! b" {# O. L2 z; I& }* b. @' x
Logistic Regression的缺点: 2 n, }3 d( b6 ]' S6 E( }9 I◆ 线性回归线的切法可能不够漂亮1 v" [! g& q, ^! ~+ l a/ C# ~) \% F
◆ 不能很好地处理大量、多类特征* S1 m7 A' M x( E% d
) A$ i0 z+ h( t6 q5 b$ L1 }4 N! o二、 支持向量机( 支持向量机,SVM)0 l! u: R/ @! X6 ]- e# v5 S5 v
支持向量机(Support Vector Machine)是在寻找一个超平面(Hyper-plane)来做分类,并使两个类别之间的边界距离最大化(会忽略异常点Outlier)。 ! _2 U; u. T2 t. M( o3 h ) r; |9 p3 J: PSVM也可使用于非线性分类(如下图B),透过Kernels functions将低维空间转换为高维空间,让资料可以在高维空间被线性分类。想像红色球的重量比蓝色球还重,在平面上一拍,让球往上弹,重量重的红色球会较快落下,在立体空间就可以找出个平面来切分红色和蓝色球。 3 t# D5 ]' W) E 9 D; [% |6 o0 ~, q: \4 [Support Vector Machine Example (Source from Internet) " w& }" b6 S( y/ \, r & ^6 \. ?7 j, N) sSVM的优点: x6 L+ T1 P0 t( ?( h; y◆ 切出来的线或平面很漂亮,拥有最大边界距离(margin) d2 w" {: P7 T! t2 {◆ 在高维空间可以使用(即使维度数大于样本数也有效) 9 B1 P; |: U6 j5 U8 I. L◆ 在资料量较小、非线性、高维度与局部最小点等情况下有相对的优势/ b2 M8 c. @- p3 s
2 i$ p' b5 x$ c) S
SVM的缺点:, A5 \6 z- F/ Y
◆ 当资料太多时,所需的训练时间太长,而使效果不佳 # d4 h, q9 S5 C. u. m6 g. l◆ 当资料集有太多noise时(如目标类别有重叠),预测的效果也会不好/ C/ W- |2 u0 F: F. m5 }
◆ SVM不会直接提供机率的估计值 ; V9 @4 u4 {, K$ M9 R8 K, k1 V }4 `7 o% A+ O
三、决策树(Decision Tree): Y1 ~- @9 }, f7 @; m6 O; K
透过模型预测可以得知某个方程式来做分类,但方程式可能很难懂或很难解释,这时需要决策树(Decision Tree),它的准确性可能没有很精准,但「解释性」高,所以决策树是一种条件式的分类器,以树状结构来处理分类问题。 * G h2 c+ V# f % C0 Z! z! ?8 E建构决策树的方式,是将整个资料集依据某个特征分为数个子资料集,再从子资料集依据某个特征,分为更小的资料集,直到子资料集都是同一个类别的资料,而该如何分类则是透过资讯熵(Entropy)和资讯增益(Information Gain)来决定。! T9 ^6 b0 l# J' T, x/ X7 b9 l. [0 N