数学建模社区-数学中国
标题:
各类机器学习算法的优缺点和适用场景汇总
[打印本页]
作者:
杨利霞
时间:
2021-4-10 11:24
标题:
各类机器学习算法的优缺点和适用场景汇总
/ V* M3 }2 |+ U# p
各类机器学习算法的优缺点和适用场景汇总
# r8 J3 e8 L) ?: W% H U2 C
目录
- J& P3 h, S! W V! L' ]' _
朴素贝叶斯分类器(NB:naive Bayes classifiers)
8 h( B# N) |$ y5 o9 h3 e2 v7 ^
半朴素贝叶斯分类器(SNB:semi-naive Bayes classifiers)
$ r% X! H( N9 f0 j9 C
贝叶斯网(信念网)
0 u) b7 m+ s8 S& K; b
决策树(decision tree)
+ ?0 Q# L/ F$ p8 U
支持向量机(SVM)
5 K" S0 i4 g) i8 Z& W4 M8 J
神经网络
M, f( I% I9 ~2 h7 I3 l. E
词向量(word2vec)
; }0 l7 x6 [, { J% T1 ~6 y, Q
k近邻分类(kNN)
f2 r. e9 O; ?) a) C6 v* r* C( I
线性模型
3 k; X" |5 ^7 x8 W) M
高斯混合聚类与k均值(k-means)及其变种(k-means++、ISODATA、Kernel K-means)的对比
" B. F2 v2 \( x! [; _7 \5 @: e
关于学习算法的性能实验结果
0 ^& [5 B) w. F2 j
朴素贝叶斯分类器(NB:naive Bayes classifiers)
' d2 |2 y5 f6 A2 k
顾名思义,其适用于分类任务、并且假设每个属性独立地对分类结果发生影响,然而现实中各个因素往往并不独立,那是否就无法解决问题呢?
1 X/ r& R/ n# W/ z! f$ t* @% u
事实上并非如此,相反,朴素贝叶斯分类器在很多情况下都能获得相当好的性能,一种解释是:无需精准概率值即可导致正确分类结果;另一种解释是:若属性间依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算开销的同时,不会对性能产生负面影响。
# i ?+ M2 X$ T1 Z* ]) J3 u. k2 t" u: K
; I, o5 A8 b e1 R( U& g
优点:
8 X7 m5 D, a" G3 y: @1 W
1、计算量较小
5 P5 ?$ G" e$ b( m$ ^+ ~7 N
2、支持懒惰学习、增量学习
# R1 o( @5 k8 o3 m9 T
3、对缺失数据不太敏感
" P- o& ~0 l& t4 X& o! L
4、推断即查表,速度极快。
; u1 Q! b0 Q, A: ^- R
缺点:
6 F2 a# N( o1 K0 @2 O. p
1、没有考虑属性间依赖
: G# e! Z8 j% w% O* v
2、通过类先验概率产生模型
5 F, i! i1 C& g/ S/ e$ _6 f2 @
; a& Y( e" u8 H& n5 ]/ l
半朴素贝叶斯分类器(SNB:semi-naive Bayes classifiers)
@# d! g$ O" q( T) S( V2 D( ?6 S
相比NB的不考虑依赖,SNB则是考虑了一个(独依赖估计策略:ODE)或多个(多依赖估计策略:kDE)属性依赖
5 g% E6 H- @! E6 ]: {- v
优点:
4 G6 F$ n% |( o+ l" r( }
1、考虑了一个或多个比较强的属性依赖关系,泛化性能可能得到提升
( W5 I% E# }3 C: q( R5 L, [# C
2、计算开销不大
* ?' D9 [0 h: t& ]* G& H; U
3、同样支持懒惰学习、增量学习
5 X1 M) E. v7 w5 @& {0 n' N+ Y, b; E
缺点:
) K/ P5 D- M0 S' C" }$ E4 X8 G3 P
1、通过类先验概率产生模型
) F0 c; y& b0 l
, w. l; P' a" e+ W9 r
贝叶斯网(信念网)
# P* r8 Y* B8 K! P4 K8 J
贝叶斯网借助有向无环图刻画属性之间的依赖关系,通过吉布斯采样或者变分推断等方式来近似推断后验概率。
- `9 \: _! k i* t& {+ s
优点:
' v& ~* Q3 [0 ~, t( L4 U
1、更加完整地考虑了属性间依赖关系,泛化性能将进一步提升
6 Z5 b1 z# M/ K1 ]& y8 ^
2、近似估算后验概率
; B7 e( p3 S- u2 [
3、可用于推测属性缺失的样本
* Z# K' F6 e) j; R+ U Y
4、良好的可解释性
+ o% q% w9 t7 u3 M9 ^. m* n
5、常用于语音识别、机器翻译等
5 d# m3 r/ S; I7 A4 |/ D3 _
缺点:
2 C7 p2 v/ X9 p" q
1、结构学习NP难,通过评分搜索方法缓解
/ @ o; A, V$ R, w; g- v
2、推断算法的收敛速度较慢
- U O, v3 K! N
6 K8 g* k6 ?8 z4 r4 \ B2 q: t* r
决策树(decision tree)
$ A! w8 P1 H0 O
决策树通过信息纯度(信息增益、增益率、基尼指数等)来决定结点的生成,通过剪枝来缩小决策树的尺寸以及缓解过拟合。是一种非参数学习算法。
( y6 }4 ?0 q: d( Y( z
优点:
7 j# A) B7 B& Z* N5 r+ I o
1、计算量较小
1 R% L/ {4 W4 F3 f; B. t5 F, y
2、清晰表达属性的重要程度
" m, i& ]% b, Q3 m
3、可增量学习对模型进行部分重构
" X; F1 `( L! b4 D& Z/ p3 m' w
4、不需要任何领域知识和参数假设
; o4 l. \! m4 Y
5、适合高维数据
. \5 q- G' N: o% p. v
6、随机森林是基于决策树的集成学习策略,随机森林鲜有短板
; l9 b/ e$ z6 x/ H
缺点:
, W; z% h2 {+ p4 Y: [6 b% Q, ~
1、没有考虑属性间依赖
9 i0 s9 a; V! }6 f J
2、容易过拟合,通过剪枝缓解
' W: q2 a- E# w* O! z' }
3、不可用于推测属性缺失的样本
; r9 v& u; Z5 y- @9 N% R
5 W; B& I2 U: | B1 h: M
支持向量机(SVM)
, ?7 q6 }+ l' |9 J) l; h! f
基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开,是一种针对二分类设计的算法,但稍加改造为支持向量回归即可用于回归学习。
0 a0 f( F/ G* t3 N
优点:
8 E; {2 H* K8 u7 P4 H
1、可解决小样本的机器学习任务
3 f( n: e# m* O' l& g
2、可解决高维问题
: m1 V1 t0 u) V+ ~0 \
3、可通过核方法解决非线性问题
- K- N }5 I* x* l& P
缺点:
4 B7 T% C7 X) { H; f' ?
1、对缺失数据敏感
+ C, a. c6 n7 ~6 o0 o7 t5 p
2、对于非线性问题,核函数方法选择一直是个未决问题
" M" S( a! x; d0 y( v: K( h" i
# G. l% P5 K6 }8 q9 ?, ~9 d% U( U# [' J
神经网络
( H7 Z& `2 @, f* e. `
优点:
; ]' b; I7 y% v& P5 f1 p
1、分类的准确度极高
9 c$ }1 x& T+ T3 J$ n0 J1 `
2、可解决复杂的非线性问题
& K0 P6 W* ~4 L( w) x; ]
3、对噪声神经有较强的鲁棒性和容错能力
9 d7 r, {# Y: S- F V/ c: o; z
4、并行分布处理能力强,分布存储及学习能力强
, b1 g! u& E4 Q
5、常用于图像识别
^4 A9 e A7 M6 P& k! o; }- J
6、数据量越大,表现越好
4 ~! [/ R' Y5 A9 s7 }* Z7 q8 j
缺点:
C: G# C0 N% T3 d, E: i, Y
1、黑箱模型,难以解释
1 f! ]2 k2 j+ c1 r! y4 o" E! L2 b5 D
2、需要初始化以及训练大量参数,如网络结构、权值、阈值,计算复杂
" C, J) {1 E' H' `9 c: b- B. c
3、误差逆传播的损失
6 [* t8 K: h/ [
4、容易陷入局部最小
4 _- x1 i. x' D1 r
$ d, j3 r: @/ I" ?- Y" k" z. \$ y! O
词向量(word2vec)
. I( k" D: W; V7 H
将文章的每句话当成一行,将每个词用符号隔开(如使用中文分词工具jieba),根据上下文,可以找出相似词义的词。
7 z, ^% \# A8 ~( \, o/ r6 |6 x
比如:我 喜欢 你,我 爱 你,我 讨厌 你。根据上下文我和你,可以找到喜欢的相似词,有爱和讨厌。
4 V0 L" O) H+ g+ _- a
再一般地如:1 2 3 X 4 5 6,1 2 3 Y 4 5 6。根据上下文1 2 3和4 5 6,可以找到X和Y相似。
7 c" ~$ L# A7 ]0 Y0 j
gensim是一个很好用的Python NLP的包,不光可以用于使用word2vec,还有很多其他的API可以用。它封装了google的C语言版的word2vec。
1 j* U5 S7 L8 Q1 s, _. L
5 |8 O! C$ n+ _, F
k近邻分类(kNN)
3 S, k* n6 z& f% o, g
基于某种距离度量找出训练集中与其最靠近的k个训练样本,或者指定距离e之内的训练样本,分类任务中通过投票法(以及加权投票等)将出现最多的类别标记作为预测结果,回归任务中则使用平均法(以及加权平均等)
e5 l% @4 S) m' [& H
优点:
$ j5 d. n& Q8 @% H% a9 v
1、思想简单,易于理解,易于实现,无需估计参数,无需训练;
# S% \, n0 _: F% g6 a: Y0 H
2、适合对稀有事件进行分类;
, \. h8 o/ O8 y6 k! `3 N6 e
3、特别适用于多分类问题
" a! n, U# [$ F$ Z% C2 A
缺点:
0 d; \1 Q/ s8 V- T, C& W6 v4 T
1、需要计算出待测样本与所有样本的距离,计算量大
2 _0 {2 P, d1 X# g! |2 a* r
2、样本不平衡时影响大
4 [6 l' ^7 W1 h2 t- p9 f" L
3、适用的特征维度低
2 E' [9 E) Y+ ^
2 j0 h0 ^, K) G, n& |
线性模型
$ ?9 x$ L! E+ @# t
优点:
6 J7 X ~8 M( w) o+ V* e% V+ ^
1、算法简单,编程方便
1 u7 _7 d/ ?! Y7 a% I' K
2、计算简单,决策速度快
( Q0 E; \2 C7 h# b( [" i: Q
缺点:
' R; Z" k9 N/ K7 V8 H# i
1、拟合效果较差
! _% Z2 L, {, H5 Z
- F: ?& u1 h q2 {, e
高斯混合聚类与k均值(k-means)及其变种(k-means++、ISODATA、Kernel K-means)的对比
9 u& @' H- Y4 X {5 H
k-means是高斯混合聚类在混合成分方差相等、且每个样本仅指派给一个混合成分时的特例,因此k-means计算简单,但效果不如高斯混合聚类
' s# p8 N7 \3 F# |' ]3 D
由于计算太过复杂,高斯混合聚类并不常用,推荐使用k-means++(与k-means随机选定不同,k-means++初始选定的几个样本距离尽量远,这样能更快得出分簇结果)等k-means变种。
! v9 c3 G; E8 I+ A
) z U- c$ W7 Z4 P) e
关于学习算法的性能实验结果
3 h+ p9 |* Z. |( Y1 r3 T
点击查看原文
, x$ j; q9 s2 E3 A: M9 H' I
" c6 C6 n. P, V% @7 K
14年的时候有人做过一个实验[1],比较在不同数据集上(121个),不同的分类器(179个)的实际效果。
5 x3 z! Z; I( ]1 ^5 ^5 I8 w
论文题为:Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
2 n- F7 h9 a/ C3 z
没有最好的分类器,只有最合适的分类器。
, }+ {% I" m2 L2 C0 Y
1、随机森林平均来说最强,但也只在9.9%的数据集上拿到了第一,优点是鲜有短板。
' w% `! A& n- H6 a3 \. W0 F+ U
2、SVM的平均水平紧随其后,在10.7%的数据集上拿到第一。
& `3 H- Q) q z9 c, l4 w
3、神经网络(13.2%)和boosting(~9%)表现不错。
; {- _- Q6 b9 A j" {0 @" k
4、数据维度越高,随机森林就比AdaBoost强越多,但是整体不及SVM[2]。
( ~' X0 W) ]& i; _! o: A3 s
5、数据量越大,神经网络就越强。
) }9 W' F% T8 [5 Z3 H' c, ~9 k
————————————————
3 y% p( P9 j z! ^) ^, i
版权声明:本文为CSDN博主「路飞的纯白世界」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
$ H h; s/ v: A) ^0 U$ W
原文链接:https://blog.csdn.net/u010921136/article/details/90668382
& M* m x h$ \% b3 p0 O
. p7 |5 U9 [7 m
& i/ x; A! t( `4 y/ t1 i6 m' f9 V, }
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5