数学建模社区-数学中国
标题:
各类机器学习算法的优缺点和适用场景汇总
[打印本页]
作者:
杨利霞
时间:
2021-4-10 11:24
标题:
各类机器学习算法的优缺点和适用场景汇总
! O( U4 e% M/ r$ ~
各类机器学习算法的优缺点和适用场景汇总
3 i' k2 k& p. T# |+ t4 J/ ]
目录
, z( f; @, q3 ?
朴素贝叶斯分类器(NB:naive Bayes classifiers)
4 s) Y% D* _0 ~$ A @ V
半朴素贝叶斯分类器(SNB:semi-naive Bayes classifiers)
% p `# b- { @+ r" T( D! N
贝叶斯网(信念网)
* T. ` @ A( _) C, h+ m. j
决策树(decision tree)
5 S7 S) }& g" O0 Y" }8 n
支持向量机(SVM)
9 `4 g3 \9 n0 h: m0 H
神经网络
6 u$ m* L" f9 i" T6 U, y: c/ ?
词向量(word2vec)
" D" S& C7 w1 F9 b
k近邻分类(kNN)
/ | R9 L9 {& _# d5 |
线性模型
6 E# p" ~9 n1 z" ?
高斯混合聚类与k均值(k-means)及其变种(k-means++、ISODATA、Kernel K-means)的对比
( \* e7 Y2 u1 n4 i* Q O
关于学习算法的性能实验结果
: f4 S# j" b0 Y9 r& }! R* n
朴素贝叶斯分类器(NB:naive Bayes classifiers)
2 d4 c0 o% L6 u. g% T5 d
顾名思义,其适用于分类任务、并且假设每个属性独立地对分类结果发生影响,然而现实中各个因素往往并不独立,那是否就无法解决问题呢?
$ Y& A& n4 I6 l# _* i, P5 y2 y, M/ f. e3 T
事实上并非如此,相反,朴素贝叶斯分类器在很多情况下都能获得相当好的性能,一种解释是:无需精准概率值即可导致正确分类结果;另一种解释是:若属性间依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算开销的同时,不会对性能产生负面影响。
2 ?5 A' W( b1 ]% i( F! M2 _# z \. ~. v
! G [8 _# @; c% o+ U" S
优点:
( u8 g) W% M6 Y5 V+ q2 |- Z4 s, f
1、计算量较小
0 M t3 S3 r: [# d
2、支持懒惰学习、增量学习
6 |5 V4 o) R" [9 N- J: m
3、对缺失数据不太敏感
7 E( k6 I+ v" C% b+ E% t
4、推断即查表,速度极快。
& ~; W ]. @( C1 P: r( Z. \
缺点:
1 W- D" F/ I: S
1、没有考虑属性间依赖
1 E! N* ?( i" L5 M
2、通过类先验概率产生模型
4 X+ ?. @9 v0 O
1 N' E. t7 S/ ^, S& V; o
半朴素贝叶斯分类器(SNB:semi-naive Bayes classifiers)
- {: r* y6 c+ p8 i
相比NB的不考虑依赖,SNB则是考虑了一个(独依赖估计策略:ODE)或多个(多依赖估计策略:kDE)属性依赖
* G7 L: G: C0 J, z7 y5 \, J' D9 m
优点:
3 P+ \" R0 A; c! F- e
1、考虑了一个或多个比较强的属性依赖关系,泛化性能可能得到提升
& P2 l; q5 m1 [/ v- U6 _
2、计算开销不大
3 B0 X$ a6 U! |
3、同样支持懒惰学习、增量学习
9 E0 A" O% f; K4 i6 b0 ^
缺点:
& j% h4 P' B! }, D: I
1、通过类先验概率产生模型
J+ b5 k# ^" Y9 z. b; X
3 W4 z! c2 v- ~. v9 p ~* [
贝叶斯网(信念网)
% m7 ?4 b6 y% i9 l6 @3 H
贝叶斯网借助有向无环图刻画属性之间的依赖关系,通过吉布斯采样或者变分推断等方式来近似推断后验概率。
5 L- u' P3 O4 ], v! g; y, g
优点:
0 D# B" ~4 k/ b' ?7 R$ G, ^( t% H1 q
1、更加完整地考虑了属性间依赖关系,泛化性能将进一步提升
1 }$ @! y: l; q6 l) c9 \
2、近似估算后验概率
' d# I/ [% t1 J" n$ Q
3、可用于推测属性缺失的样本
, T2 R1 k5 U; p) [& } Q$ R
4、良好的可解释性
: M. L& @9 p3 V+ p+ S
5、常用于语音识别、机器翻译等
1 S2 W& `0 N8 _' {0 \, d1 W4 n5 ?6 }
缺点:
5 z( }3 b" g2 w) l4 @4 n' W6 B
1、结构学习NP难,通过评分搜索方法缓解
5 X( T: O% E+ x# N# i
2、推断算法的收敛速度较慢
6 K4 R3 _$ a1 H
5 j$ K2 x) _' S7 p% [: P
决策树(decision tree)
9 e) l. T$ A l' k) P1 ?
决策树通过信息纯度(信息增益、增益率、基尼指数等)来决定结点的生成,通过剪枝来缩小决策树的尺寸以及缓解过拟合。是一种非参数学习算法。
% B/ m& P( D6 x: d3 l3 V
优点:
8 M* ?& A- d' H# h
1、计算量较小
1 W- \. h$ B' z0 k$ `6 w
2、清晰表达属性的重要程度
$ ^& ]- L$ H+ J t2 |( s
3、可增量学习对模型进行部分重构
- A V/ O" M- V5 @7 v* I
4、不需要任何领域知识和参数假设
' c% G/ m4 h7 l2 g
5、适合高维数据
1 t/ V/ r: K& {: `; @
6、随机森林是基于决策树的集成学习策略,随机森林鲜有短板
, V3 _1 {! Q+ M) a
缺点:
2 Y3 ^1 A' F& G" G. c; R
1、没有考虑属性间依赖
* V# n) _0 \$ W9 m
2、容易过拟合,通过剪枝缓解
- x2 J, I* [6 H; _/ V2 M- H
3、不可用于推测属性缺失的样本
3 L- H* ]# H; B6 @) ~; I# o' r
0 C) a6 G9 n# @3 n
支持向量机(SVM)
' F4 l. ^* I3 Q5 V
基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开,是一种针对二分类设计的算法,但稍加改造为支持向量回归即可用于回归学习。
: [9 I A! b) ^% U/ t6 y( P2 q
优点:
. f$ n3 Z3 X4 z6 g7 }( `; u7 I
1、可解决小样本的机器学习任务
) I# q: q( A, H8 m, q
2、可解决高维问题
* M+ S# I5 o" D# V4 K
3、可通过核方法解决非线性问题
" H8 p o4 {( F4 [+ K
缺点:
6 x$ O& l. D! a ]5 ]) M* b
1、对缺失数据敏感
* D1 J: k. m- ~5 @3 b z1 G& q& N
2、对于非线性问题,核函数方法选择一直是个未决问题
3 j* R5 V7 c5 N" G- z1 K
9 v; }" x9 D; C. p* E
神经网络
" s$ d( P6 F0 y q" J w* u7 k
优点:
' P, K5 u$ H0 F$ C! `: h7 ?2 z" {
1、分类的准确度极高
4 w3 G. t" R3 `0 U& q: J3 f
2、可解决复杂的非线性问题
# x7 Q: M7 d! Q$ q, Z/ _4 M7 r0 ^; g& E
3、对噪声神经有较强的鲁棒性和容错能力
( C' U1 t( M- U
4、并行分布处理能力强,分布存储及学习能力强
, a2 X( |: x" o- H! b
5、常用于图像识别
. E, w) ]3 h7 u
6、数据量越大,表现越好
/ U* V+ I3 d+ ?9 M& R! d
缺点:
4 x% j5 K' Z q& N) \' g S
1、黑箱模型,难以解释
8 a. n' O2 f: q+ T: {" l( d
2、需要初始化以及训练大量参数,如网络结构、权值、阈值,计算复杂
3 |! q [( Z/ V7 U3 Y% K
3、误差逆传播的损失
, r1 e1 n- s& w9 q0 [0 o$ h
4、容易陷入局部最小
0 @" e' q P9 ?( R
1 P; F9 Q9 i1 C3 T% F
词向量(word2vec)
! x9 I5 E" @( q R$ Z$ L2 |
将文章的每句话当成一行,将每个词用符号隔开(如使用中文分词工具jieba),根据上下文,可以找出相似词义的词。
( _( ?# n( _- R6 m S. ?5 V
比如:我 喜欢 你,我 爱 你,我 讨厌 你。根据上下文我和你,可以找到喜欢的相似词,有爱和讨厌。
8 l2 m" O/ h' y* r) y/ I ~
再一般地如:1 2 3 X 4 5 6,1 2 3 Y 4 5 6。根据上下文1 2 3和4 5 6,可以找到X和Y相似。
/ d" m5 U$ Y1 u) c5 L
gensim是一个很好用的Python NLP的包,不光可以用于使用word2vec,还有很多其他的API可以用。它封装了google的C语言版的word2vec。
9 d3 X c$ A, O! f: g( H
) [/ l2 y* L4 M P
k近邻分类(kNN)
$ h, h8 \* K+ k5 o. \. x# g
基于某种距离度量找出训练集中与其最靠近的k个训练样本,或者指定距离e之内的训练样本,分类任务中通过投票法(以及加权投票等)将出现最多的类别标记作为预测结果,回归任务中则使用平均法(以及加权平均等)
* J T7 P4 o) _( i) U+ E) m) v
优点:
3 ^1 ?7 _! C: s9 S( ^
1、思想简单,易于理解,易于实现,无需估计参数,无需训练;
6 w" n2 p) H' B) L
2、适合对稀有事件进行分类;
: Q8 M- u# Z. f+ ]+ |
3、特别适用于多分类问题
9 [8 `2 C# q8 m' ?- X( E1 d; L
缺点:
$ ?. b( M$ J. f1 ^7 D- P
1、需要计算出待测样本与所有样本的距离,计算量大
: p& j- x4 ^. H# H
2、样本不平衡时影响大
' l G- C4 v; N, p: _, ?3 `
3、适用的特征维度低
! {( ~7 V' R8 ~' H2 J9 F/ {
, V- |8 c* n' \7 I6 ?* x l
线性模型
! ]) ~# L$ o+ d0 ~3 }
优点:
8 N5 |- H9 T& ~8 @9 z9 ^3 {- @ H8 l! M
1、算法简单,编程方便
$ l$ A; b( H/ }/ w
2、计算简单,决策速度快
: F- o3 ?: Y" F. w
缺点:
! ^9 x" j3 T7 A7 y+ T* N& o
1、拟合效果较差
9 ?3 _& v3 M2 C+ Z; h" V) f
' S. ?* c: ]$ f$ N4 o3 |- q& a
高斯混合聚类与k均值(k-means)及其变种(k-means++、ISODATA、Kernel K-means)的对比
/ t5 w# E- M% ?8 M ?: E+ D; O; H
k-means是高斯混合聚类在混合成分方差相等、且每个样本仅指派给一个混合成分时的特例,因此k-means计算简单,但效果不如高斯混合聚类
5 K- [$ ]2 R& f# E4 C
由于计算太过复杂,高斯混合聚类并不常用,推荐使用k-means++(与k-means随机选定不同,k-means++初始选定的几个样本距离尽量远,这样能更快得出分簇结果)等k-means变种。
/ }% ~' H3 ^7 S& N+ @! l
: x- r4 E- t: n9 o) i# |
关于学习算法的性能实验结果
4 ?$ o, T) q: d J+ ^) n- _
点击查看原文
6 f) o6 G4 l" }$ I. @; U) u
( R& y! d7 [7 N! u6 q" Y* G' }
14年的时候有人做过一个实验[1],比较在不同数据集上(121个),不同的分类器(179个)的实际效果。
5 U. U+ f$ ~. U& }+ v
论文题为:Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
$ P1 W& Y5 W6 _8 `0 U
没有最好的分类器,只有最合适的分类器。
$ I" z H2 |, k# }. r8 h
1、随机森林平均来说最强,但也只在9.9%的数据集上拿到了第一,优点是鲜有短板。
: ~! {9 z- N1 j5 a W$ |
2、SVM的平均水平紧随其后,在10.7%的数据集上拿到第一。
# T9 T+ p2 {+ s+ z; Z
3、神经网络(13.2%)和boosting(~9%)表现不错。
a7 Y w) Q. \% X3 S2 U6 Z1 s
4、数据维度越高,随机森林就比AdaBoost强越多,但是整体不及SVM[2]。
# q' w$ V$ t6 |- M& u; s, W
5、数据量越大,神经网络就越强。
5 O0 j! ]. S2 I
————————————————
" r$ Y! ?/ | X* _
版权声明:本文为CSDN博主「路飞的纯白世界」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
' A$ o) B3 ~& C) a8 _* d5 x$ u
原文链接:https://blog.csdn.net/u010921136/article/details/90668382
0 y3 c# T6 d5 y
3 K' x* ~. ]/ g* P' j, y" }/ K
- b% m. x1 }3 K- U
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5