0 Q) I% d) T: \1 h) e9 U' N Python机器学习-多元分类的5种模型* Q: r: n$ j- z, Q: C3 r0 Z3 y
0 t2 U. c* r/ G/ @' k
最近上了些机器学习的课程,于是想透过Kaggle资料集来练习整个资料科学专案的流程,在模型训练阶段,虽然听过许多分类模型,但不是很了解其各别的优缺点与适合的使用时机,所以想来整理一篇文章,统整上课学习与网路资料,作为后续专案的优化方向! 3 `7 N4 I, I1 c( ^, L; h& y % v" t6 o* ?, s. H6 U首先,机器学习主要分为「监督式学习」与「非监督式学习」,两者的差异在于资料是否有「标签」。2 l1 e! X+ X2 N0 |
! j! V. ]" M7 J) G% c5 m
监督式学习(Supervised Learning):给予「有标签」的资料,举例来说:给机器一堆苹果和橘子的照片,并说明哪些是苹果、哪些是橘子,再拿一张新的照片询问机器这是苹果还是橘子,而监督式学习又可分为回归(Regression)和分类(Classification)。0 o+ R1 a* |$ j# R* S; L
) u4 u8 u, C2 x9 M! Q- n非监督式学习(Unsupervised Learning):给予「无标签」的资料,让机器找出潜在的规则,举例来说:给予机器一堆苹果和橘子的照片,但没有告诉机器这些照片各别是哪种水果,让机器自行找到资料间的相似性,而非监督式学习又可分为分群(Clustering)和降维(Dimension Reduction)。7 n* E3 M% {( b
4 e m* e9 H0 u% v/ @# Q$ o5 S这篇文章会以监督式学习中的分类模型为主。: `# Q8 f: w; F d+ X+ l
$ p+ z" a5 D E( J一、逻辑回归(Logistic Regression)& z, D0 p0 L- H" m
逻辑回归是个二元分类(Binary Classification)的模型,并有其对应的机率值,举例:明天会下雨的机率有90%。3 h) m0 h, K* f; {: d {
4 O. T, k( Q. }# R3 Y: t( M基本概念是利用线性回归线(Linear Regression Line),将资料分为A/B两类,再透过Sigmoid Function (or Logistic Function) 输出A类别的机率值(0~1),若机率>0.5则判断为A类别,因为是二元分类,所以当机率<0.5则被归类为B类别。 * u6 n5 Y x8 \" F6 W4 W4 w& ^ D$ k+ w3 [- h
若需处理多元分类问题,有两种方法:: D, X! K" M9 d3 }; O$ I. H) y- Y
1. One versus Rest (or One versus All):将每个分类与其他剩余的资料做比较,若有N个类别,就需要N个二元分类器。以下方图例来说明,若有类别1~3,每次各使用一个类别与剩余的两个类别作二元分类后,会得到三个分类器,预测时把资料放到三个分类器中,看哪个分类器的分数较高,就判断为该类别。 % }+ f ]; l( B0 P. Q- p R* ^" _# Y: E( z. n9 R
One versus Rest Example (Source from Internet) 6 o, P9 l/ G. F# G, }, k0 b9 p' ^; l , J$ E* }2 o1 W* s; A8 f% h2. One versus One:每次选择两个类别做分类,若有N个类别,就会有N*(N-1)/2个分类器,将每次分类的结果做投票,最后判断为票数最高的那个类别。举下方图例来说,有三个类别,会有三组分类器,最后新资料会判断为票数较高的类别1。 |) H! N( ~6 e4 ? ; Y/ k! o- n: j9 a' e. G( E+ XOne versus One Example (Source from Internet) 8 _1 n* x8 W, z# J' G) | % ^+ d. c' N, g* J0 VLogistic Regression的优点:. r2 b' a9 E: P5 M
◆ 资料线性可分(包含在高维度空间找到linear plane) $ p g4 N5 c4 q2 A; ^% |3 j◆ 除了分类,也可以得到A/B两类的机率 ( o$ S- d8 C1 q! \- W4 j) q3 Y◆ 执行速度较快6 I4 Q5 H" |# d, A