! @/ G( X! C/ d8 @% B Python机器学习-多元分类的5种模型% W6 d8 f% N8 _" k% J( s1 B4 |
- O3 d" Y- d7 t
最近上了些机器学习的课程,于是想透过Kaggle资料集来练习整个资料科学专案的流程,在模型训练阶段,虽然听过许多分类模型,但不是很了解其各别的优缺点与适合的使用时机,所以想来整理一篇文章,统整上课学习与网路资料,作为后续专案的优化方向! 7 N6 H1 F- Q1 V: Z( v. E' |5 e& p2 L+ O
首先,机器学习主要分为「监督式学习」与「非监督式学习」,两者的差异在于资料是否有「标签」。 # T- b; G/ B: H8 v ' Z2 j0 h! N0 a- {9 P7 H监督式学习(Supervised Learning):给予「有标签」的资料,举例来说:给机器一堆苹果和橘子的照片,并说明哪些是苹果、哪些是橘子,再拿一张新的照片询问机器这是苹果还是橘子,而监督式学习又可分为回归(Regression)和分类(Classification)。* T$ t' ~8 B& {2 ~1 V
+ R& d# |0 R6 y, I- t9 K非监督式学习(Unsupervised Learning):给予「无标签」的资料,让机器找出潜在的规则,举例来说:给予机器一堆苹果和橘子的照片,但没有告诉机器这些照片各别是哪种水果,让机器自行找到资料间的相似性,而非监督式学习又可分为分群(Clustering)和降维(Dimension Reduction)。8 H6 _0 e. |8 c( e" n
: v4 }; x, @. D2 _这篇文章会以监督式学习中的分类模型为主。6 {+ h$ {, ?# z5 n L& l7 b8 Y
2 b- e( T5 Z9 C% t w
一、逻辑回归(Logistic Regression)( K# y" q& _/ P; Z
逻辑回归是个二元分类(Binary Classification)的模型,并有其对应的机率值,举例:明天会下雨的机率有90%。 + `+ y) E! c7 p" }& k; y& M" v6 p* [: M
基本概念是利用线性回归线(Linear Regression Line),将资料分为A/B两类,再透过Sigmoid Function (or Logistic Function) 输出A类别的机率值(0~1),若机率>0.5则判断为A类别,因为是二元分类,所以当机率<0.5则被归类为B类别。 " o" t) m$ C6 Z4 R4 ]! P6 K9 F* t4 p- w
若需处理多元分类问题,有两种方法: 0 f2 L4 H- Y- R1. One versus Rest (or One versus All):将每个分类与其他剩余的资料做比较,若有N个类别,就需要N个二元分类器。以下方图例来说明,若有类别1~3,每次各使用一个类别与剩余的两个类别作二元分类后,会得到三个分类器,预测时把资料放到三个分类器中,看哪个分类器的分数较高,就判断为该类别。" H, J4 |( ^( V$ |3 k7 ?. V5 T
5 X8 l7 ?; x' QOne versus Rest Example (Source from Internet)4 v2 k1 h) R6 L p
$ j1 O' Y7 Y; X/ O7 T* V
2. One versus One:每次选择两个类别做分类,若有N个类别,就会有N*(N-1)/2个分类器,将每次分类的结果做投票,最后判断为票数最高的那个类别。举下方图例来说,有三个类别,会有三组分类器,最后新资料会判断为票数较高的类别1。, ~% e i& `/ X* ]. o+ P; t
" p+ T# J4 ]& b
One versus One Example (Source from Internet)$ ~) t/ ?3 _5 R* B. e w/ N2 y {" s