数学建模社区-数学中国
标题:
各类机器学习算法的优缺点和适用场景汇总
[打印本页]
作者:
杨利霞
时间:
2021-4-10 11:24
标题:
各类机器学习算法的优缺点和适用场景汇总
' D1 E' ?0 Z7 P- R& @- Y9 G
各类机器学习算法的优缺点和适用场景汇总
0 Z! q1 Z- w5 ?2 U8 t! }
目录
6 c2 _$ w3 e3 [5 m6 R
朴素贝叶斯分类器(NB:naive Bayes classifiers)
; ~% G# h1 K1 `5 l$ l
半朴素贝叶斯分类器(SNB:semi-naive Bayes classifiers)
0 h+ u, g1 V4 @9 Q# F5 |
贝叶斯网(信念网)
; \7 Q& B( C" o' E$ U+ R$ j
决策树(decision tree)
# f# ^- u/ p9 e# h2 L f& j
支持向量机(SVM)
" N3 k( r# Y' U; p
神经网络
( p) G' c" N% A' K
词向量(word2vec)
x9 a @ ~) T1 ~
k近邻分类(kNN)
$ e) R# o; r6 b* L" M% N5 j
线性模型
" ~% K& v* S" |% u( S
高斯混合聚类与k均值(k-means)及其变种(k-means++、ISODATA、Kernel K-means)的对比
, ?/ G* H7 r3 Y/ O. k3 A# m
关于学习算法的性能实验结果
. J* z* V2 t( c. Q. c
朴素贝叶斯分类器(NB:naive Bayes classifiers)
4 Y7 l$ h8 [3 }2 t
顾名思义,其适用于分类任务、并且假设每个属性独立地对分类结果发生影响,然而现实中各个因素往往并不独立,那是否就无法解决问题呢?
% c0 j) W7 _, o5 V4 h: O
事实上并非如此,相反,朴素贝叶斯分类器在很多情况下都能获得相当好的性能,一种解释是:无需精准概率值即可导致正确分类结果;另一种解释是:若属性间依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算开销的同时,不会对性能产生负面影响。
: c4 [7 f6 M1 R5 Z' e% j7 f
9 Q/ p3 Y x! C' a8 h$ y$ c
优点:
) w% Y4 r0 L. }7 W, d0 j
1、计算量较小
1 z4 j$ E5 ?( k8 L9 A7 W
2、支持懒惰学习、增量学习
) U, L3 T! A' P+ q0 |
3、对缺失数据不太敏感
; k; S0 @1 w! E, i# S7 {
4、推断即查表,速度极快。
: I) F0 n7 P; Z8 S. ~, ]
缺点:
8 }3 ?6 ]" }$ K$ {8 B- ~: l# h
1、没有考虑属性间依赖
2 B# R" }! E% \2 [- w
2、通过类先验概率产生模型
0 b' E; H9 Q) i3 B) o3 R
1 c3 A" r3 j' v
半朴素贝叶斯分类器(SNB:semi-naive Bayes classifiers)
7 M' a! S. X: H) }6 T6 i- E
相比NB的不考虑依赖,SNB则是考虑了一个(独依赖估计策略:ODE)或多个(多依赖估计策略:kDE)属性依赖
1 \; R0 M1 z! i9 d- J' `& K
优点:
: g) K; F& J2 t9 t" ~9 N
1、考虑了一个或多个比较强的属性依赖关系,泛化性能可能得到提升
# ^; p" x* D, [( |
2、计算开销不大
+ ~& I E, T9 ^, O0 C0 N0 ]
3、同样支持懒惰学习、增量学习
2 D/ ]! ^6 s8 }5 I& k
缺点:
' |+ w' `! D# I6 U+ i
1、通过类先验概率产生模型
) W) [/ y1 e% W, ~
4 Z4 u& {, p2 {
贝叶斯网(信念网)
0 {+ l e/ h9 m7 `; ?) V
贝叶斯网借助有向无环图刻画属性之间的依赖关系,通过吉布斯采样或者变分推断等方式来近似推断后验概率。
9 }2 {0 { n9 }) M7 Q* k, k0 a
优点:
X: Q+ Y% Y! ?" Y: z" P
1、更加完整地考虑了属性间依赖关系,泛化性能将进一步提升
9 X$ P& w4 ]9 H2 c
2、近似估算后验概率
3 K$ Y# o: A- C; Z$ r
3、可用于推测属性缺失的样本
8 W3 @7 o/ t8 I* G, K+ ?
4、良好的可解释性
2 ]2 q6 A c% D- }% a d
5、常用于语音识别、机器翻译等
" q, A8 u. W0 l% Q) Y
缺点:
; ~! T s, X% e% Z+ h+ k. c
1、结构学习NP难,通过评分搜索方法缓解
; h" _5 E- j4 |4 @
2、推断算法的收敛速度较慢
6 K2 d& E' @' u+ X" ]6 m6 p1 f2 |! i
# ]2 v$ g c+ H T5 M8 p7 k
决策树(decision tree)
) o/ e; [9 M2 G$ z& u
决策树通过信息纯度(信息增益、增益率、基尼指数等)来决定结点的生成,通过剪枝来缩小决策树的尺寸以及缓解过拟合。是一种非参数学习算法。
* _# C. O3 j3 z3 J; d0 G( c
优点:
# P- V, T- v& f
1、计算量较小
- K X$ v% V" j6 h/ J' i( L% z
2、清晰表达属性的重要程度
7 A& Y3 f' ]" I4 \" Z
3、可增量学习对模型进行部分重构
! i0 S( x& n; M+ q8 g5 m
4、不需要任何领域知识和参数假设
+ V% n6 n. o6 v( a; v) Q3 d
5、适合高维数据
; l8 ^6 v( V. k x, K# b o6 b' [
6、随机森林是基于决策树的集成学习策略,随机森林鲜有短板
% w0 z) d5 ]2 @2 [! B1 ~5 e% b
缺点:
, B a+ A$ N+ V- @
1、没有考虑属性间依赖
$ f( S2 ^) E( t, _
2、容易过拟合,通过剪枝缓解
9 h9 R1 f$ L6 M6 L7 k+ R" t
3、不可用于推测属性缺失的样本
0 y+ h" f* Y$ e& {" [
$ j) X9 M1 P7 l: S! B6 G8 [
支持向量机(SVM)
# i0 ~$ Z. T F
基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开,是一种针对二分类设计的算法,但稍加改造为支持向量回归即可用于回归学习。
8 H# F- g' O$ ~1 M0 W! D
优点:
y: R, k' M; s5 |( v2 _' k1 G j0 `
1、可解决小样本的机器学习任务
5 N/ {/ Z& M; F. Q' y
2、可解决高维问题
* P# `: Q6 h$ s U4 m
3、可通过核方法解决非线性问题
) |- p# A" \) P/ }/ |& n( G
缺点:
$ w) Q" G \ s4 v
1、对缺失数据敏感
3 R: ^4 ?1 k% y! t# U% i
2、对于非线性问题,核函数方法选择一直是个未决问题
! P5 w- h/ R, [1 m+ J
4 l! a- t, S+ k& z
神经网络
, n: c3 r8 Y- T: [
优点:
8 Q9 c* V) C8 ]4 J6 R/ ?
1、分类的准确度极高
* J- z1 h7 u( @5 u8 q# y
2、可解决复杂的非线性问题
; Q, e/ ^- P& [. }& Q/ y1 L
3、对噪声神经有较强的鲁棒性和容错能力
+ F4 y H* l2 x7 L0 J9 \
4、并行分布处理能力强,分布存储及学习能力强
6 n2 m. l8 P1 W6 K
5、常用于图像识别
# L" g8 F) s' j8 @
6、数据量越大,表现越好
' S* @+ t/ E) Y1 _6 u
缺点:
4 X8 j+ r: {2 }: Y
1、黑箱模型,难以解释
" |, x5 c" u2 T/ g: A" x7 e
2、需要初始化以及训练大量参数,如网络结构、权值、阈值,计算复杂
+ t5 j( T; A- J% A
3、误差逆传播的损失
/ b( b: C* X& j: u7 P6 `
4、容易陷入局部最小
+ c- Q- i, ?& Y7 f/ t& m9 Q' F
2 `$ g' @: i1 O
词向量(word2vec)
# p9 B1 [7 w3 K. w. t/ W6 z
将文章的每句话当成一行,将每个词用符号隔开(如使用中文分词工具jieba),根据上下文,可以找出相似词义的词。
3 K. q4 l% R3 p, w
比如:我 喜欢 你,我 爱 你,我 讨厌 你。根据上下文我和你,可以找到喜欢的相似词,有爱和讨厌。
" u5 ?9 c0 c& L( s! u+ p4 J( h
再一般地如:1 2 3 X 4 5 6,1 2 3 Y 4 5 6。根据上下文1 2 3和4 5 6,可以找到X和Y相似。
7 {7 a" ]) ]8 v0 a* |! ~
gensim是一个很好用的Python NLP的包,不光可以用于使用word2vec,还有很多其他的API可以用。它封装了google的C语言版的word2vec。
8 G4 K! G( z" J, L$ O3 f
% Q4 _' v) b4 `& a
k近邻分类(kNN)
; s5 b4 a2 d; Z& _' }8 A$ c. Q
基于某种距离度量找出训练集中与其最靠近的k个训练样本,或者指定距离e之内的训练样本,分类任务中通过投票法(以及加权投票等)将出现最多的类别标记作为预测结果,回归任务中则使用平均法(以及加权平均等)
0 V4 S9 ]: M% c/ e
优点:
* u' L! Y* ^+ \8 J* }" P7 N
1、思想简单,易于理解,易于实现,无需估计参数,无需训练;
# q% n% m+ I. k- k! _; `
2、适合对稀有事件进行分类;
7 h3 W m4 n, b, Z+ Y6 M
3、特别适用于多分类问题
, W0 ]0 g& _5 y. M. E; g" S
缺点:
8 t' I; {4 T- f
1、需要计算出待测样本与所有样本的距离,计算量大
+ \+ Z, U5 o4 ^4 Y0 G
2、样本不平衡时影响大
8 x. _. h8 N6 t F9 n- l
3、适用的特征维度低
9 Y1 F, m9 ]$ L6 X
5 i5 M, L9 C" a3 P3 _4 t/ m
线性模型
7 N1 h/ _ z' A, K$ m v
优点:
) u0 y% Q' P1 G2 B1 V6 ]! C- d
1、算法简单,编程方便
8 x. z3 m8 T; Z P$ @
2、计算简单,决策速度快
# D5 c! e% G5 I* c8 }, e" W
缺点:
; w2 p7 U- s! k8 J7 c
1、拟合效果较差
1 C" H, r6 _- p: ^2 h; D. F* ?5 d9 u
; x; S- b+ K3 @0 G5 A; F
高斯混合聚类与k均值(k-means)及其变种(k-means++、ISODATA、Kernel K-means)的对比
3 W6 |* L: w; d" `$ q# X# h& K
k-means是高斯混合聚类在混合成分方差相等、且每个样本仅指派给一个混合成分时的特例,因此k-means计算简单,但效果不如高斯混合聚类
# \- U1 A( L% h$ ~, v8 [
由于计算太过复杂,高斯混合聚类并不常用,推荐使用k-means++(与k-means随机选定不同,k-means++初始选定的几个样本距离尽量远,这样能更快得出分簇结果)等k-means变种。
. X0 U1 n; ?7 v1 D
* ^- S" A% T+ l
关于学习算法的性能实验结果
X1 A" a! W0 a0 ]# [* C1 Y$ ?
点击查看原文
' B' F; ` f6 [9 [/ w
' ]. H# G# i% S5 |
14年的时候有人做过一个实验[1],比较在不同数据集上(121个),不同的分类器(179个)的实际效果。
% d4 I6 D U, e% x- T
论文题为:Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
6 [3 R) i) z! H- t8 u- j8 {" x
没有最好的分类器,只有最合适的分类器。
# S( k/ b; o& \% A. c
1、随机森林平均来说最强,但也只在9.9%的数据集上拿到了第一,优点是鲜有短板。
! E- k" v$ L* @
2、SVM的平均水平紧随其后,在10.7%的数据集上拿到第一。
8 R/ q! A3 K+ S: B2 B; f$ C* r; ?. l- ^
3、神经网络(13.2%)和boosting(~9%)表现不错。
' p O# Y# R3 W& x' x7 F+ z, b- c
4、数据维度越高,随机森林就比AdaBoost强越多,但是整体不及SVM[2]。
& s$ A* Z- a- G! m- R
5、数据量越大,神经网络就越强。
8 Y% W e: l! S+ `9 j
————————————————
% i t6 W4 J2 E- u
版权声明:本文为CSDN博主「路飞的纯白世界」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
) _) _( r7 M" n
原文链接:https://blog.csdn.net/u010921136/article/details/90668382
) U% c* W7 F( m: l$ _/ J5 v$ F
X5 [- Q& H7 m& c' ?( M# ~1 f2 n( ]
3 Y( ^9 y* x4 c
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5