3 n# h3 k; b& r- C6 P# m Python机器学习-多元分类的5种模型 / C4 {1 g7 u( W+ Y" t2 e 6 x6 X* p( t8 ^( Z2 |& W( l5 H最近上了些机器学习的课程,于是想透过Kaggle资料集来练习整个资料科学专案的流程,在模型训练阶段,虽然听过许多分类模型,但不是很了解其各别的优缺点与适合的使用时机,所以想来整理一篇文章,统整上课学习与网路资料,作为后续专案的优化方向!" w; ?$ H% s* M y1 i
+ I* ^! R. V7 S' i2 r) C7 ?首先,机器学习主要分为「监督式学习」与「非监督式学习」,两者的差异在于资料是否有「标签」。! U1 Q2 A* h. I; m. Q
- [! r& J+ K; B' [# e
监督式学习(Supervised Learning):给予「有标签」的资料,举例来说:给机器一堆苹果和橘子的照片,并说明哪些是苹果、哪些是橘子,再拿一张新的照片询问机器这是苹果还是橘子,而监督式学习又可分为回归(Regression)和分类(Classification)。/ `1 g" l7 h1 h$ ?: T: D
+ w4 y( N' U \6 n/ i/ L$ g' b, r非监督式学习(Unsupervised Learning):给予「无标签」的资料,让机器找出潜在的规则,举例来说:给予机器一堆苹果和橘子的照片,但没有告诉机器这些照片各别是哪种水果,让机器自行找到资料间的相似性,而非监督式学习又可分为分群(Clustering)和降维(Dimension Reduction)。( q4 I; c! }7 R1 X1 h2 t
6 Q, |" c) r) ]/ d, R4 w这篇文章会以监督式学习中的分类模型为主。 : I; x; {4 J/ F3 F/ r+ t 3 A& M; i3 Y3 ^3 h- N一、逻辑回归(Logistic Regression)' ~+ D5 b9 C& K+ |9 G
逻辑回归是个二元分类(Binary Classification)的模型,并有其对应的机率值,举例:明天会下雨的机率有90%。* A$ ]' N+ {" q3 ]$ d" \
: `+ s' v1 c% K
基本概念是利用线性回归线(Linear Regression Line),将资料分为A/B两类,再透过Sigmoid Function (or Logistic Function) 输出A类别的机率值(0~1),若机率>0.5则判断为A类别,因为是二元分类,所以当机率<0.5则被归类为B类别。6 R# P7 r* C& g5 u7 r$ y
9 n3 j8 ?5 ]9 l8 O! U5 c @6 E
若需处理多元分类问题,有两种方法: : D5 `9 X) [. ]$ g3 h7 \1. One versus Rest (or One versus All):将每个分类与其他剩余的资料做比较,若有N个类别,就需要N个二元分类器。以下方图例来说明,若有类别1~3,每次各使用一个类别与剩余的两个类别作二元分类后,会得到三个分类器,预测时把资料放到三个分类器中,看哪个分类器的分数较高,就判断为该类别。- y3 _' s) f) b! v: y. E
! R- E; Y, ?$ u( k1 z4 q
One versus Rest Example (Source from Internet) 3 _5 Z% f) h2 e* V/ l * d# T8 Q1 g8 e4 ^" U2. One versus One:每次选择两个类别做分类,若有N个类别,就会有N*(N-1)/2个分类器,将每次分类的结果做投票,最后判断为票数最高的那个类别。举下方图例来说,有三个类别,会有三组分类器,最后新资料会判断为票数较高的类别1。 8 ~$ e k0 A( I, q0 K% R6 q6 i/ q' @- W9 b5 X) S: M
One versus One Example (Source from Internet) . Y; a: F# g$ c & Z3 E* K4 j. c4 E# wLogistic Regression的优点: & j% i& L& ]3 A, W* l0 x◆ 资料线性可分(包含在高维度空间找到linear plane)3 p7 G4 W& J, _$ U
◆ 除了分类,也可以得到A/B两类的机率* p* B0 P, U& x F3 j2 c+ D
◆ 执行速度较快 & a4 ]' O2 T; a+ C5 g5 S/ F& v- L4 X/ D
Logistic Regression的缺点:5 Y% ~2 W E% D! c8 {
◆ 线性回归线的切法可能不够漂亮( j' v" y0 Q7 g- k) O0 |# o
◆ 不能很好地处理大量、多类特征 % _1 s2 O9 D7 h* n( u1 ~. z; _" P: a( j: ^
二、 支持向量机( 支持向量机,SVM); H. b0 j& P2 a T5 t6 c" C
支持向量机(Support Vector Machine)是在寻找一个超平面(Hyper-plane)来做分类,并使两个类别之间的边界距离最大化(会忽略异常点Outlier)。1 _! Y* q; J4 L1 K: a8 ~& \, g, j
$ B/ D$ z2 d7 b) V+ T& a6 o9 Q
SVM也可使用于非线性分类(如下图B),透过Kernels functions将低维空间转换为高维空间,让资料可以在高维空间被线性分类。想像红色球的重量比蓝色球还重,在平面上一拍,让球往上弹,重量重的红色球会较快落下,在立体空间就可以找出个平面来切分红色和蓝色球。. K# d% c# v, P% y, n2 e
' Y' S( m6 Y! {9 E2 z ] |Support Vector Machine Example (Source from Internet) 6 u$ ?+ m! h3 `' h5 e, B8 l & }$ U; i$ n+ n, d2 w- u( hSVM的优点:: U6 m4 {% W9 _; R
◆ 切出来的线或平面很漂亮,拥有最大边界距离(margin)& L6 r6 m) [4 w
◆ 在高维空间可以使用(即使维度数大于样本数也有效) + I9 L" T9 g; a R' R+ e◆ 在资料量较小、非线性、高维度与局部最小点等情况下有相对的优势! g* A+ ~. x n S1 a9 @0 z
1 ~! q% P; x- C+ o, p |SVM的缺点:- A9 [/ I4 @4 l
◆ 当资料太多时,所需的训练时间太长,而使效果不佳 3 d: S; N1 H( T: {1 e◆ 当资料集有太多noise时(如目标类别有重叠),预测的效果也会不好+ i8 A3 B2 o6 C. z
◆ SVM不会直接提供机率的估计值 - V8 t* x+ |# H# s" [+ T& r9 s' H) Z0 u* Z* V# j
三、决策树(Decision Tree)2 v! j9 \% Q: @ f: A. S6 F
透过模型预测可以得知某个方程式来做分类,但方程式可能很难懂或很难解释,这时需要决策树(Decision Tree),它的准确性可能没有很精准,但「解释性」高,所以决策树是一种条件式的分类器,以树状结构来处理分类问题。8 I- C9 E; X$ t! \2 ^% }2 P% |
/ N# E2 e% C! N! V% A$ V1 [1 }$ {建构决策树的方式,是将整个资料集依据某个特征分为数个子资料集,再从子资料集依据某个特征,分为更小的资料集,直到子资料集都是同一个类别的资料,而该如何分类则是透过资讯熵(Entropy)和资讯增益(Information Gain)来决定。 1 `; I# O5 ?4 g X 9 Q4 [$ t, U2 `6 B1. 资讯熵(Entropy):用来衡量资料的不纯度,若资料为同一类Entropy=0,若资料「等分」成不同类别Entropy=1。 3 \. h5 I; [5 ~" f6 P) U+ j5 O ~, L! ?* ~8 k# J
2. 资讯增益(Information Gain):用来衡量某个特征对于资料分类的能力,而建构决策树就是要找到具有最高资讯增益的分类法(得到纯度最高的分支)。简单来说,原本的资料集(High Entropy=E1),经过分类,得到多个资料集(Low Entropy=E2),其中的E1-E2=Information Gain。# V c) r' z) O# T$ c% B% k) N8 U