数学建模社区-数学中国
标题:
各类机器学习算法的优缺点和适用场景汇总
[打印本页]
作者:
杨利霞
时间:
2021-4-10 11:24
标题:
各类机器学习算法的优缺点和适用场景汇总
+ h# Z' Y- k9 s3 e- j
各类机器学习算法的优缺点和适用场景汇总
% y. {- ?% ^8 n( m, W1 I
目录
! Q% D6 C: ?' n, B4 y/ {
朴素贝叶斯分类器(NB:naive Bayes classifiers)
( B$ b; U. W8 I
半朴素贝叶斯分类器(SNB:semi-naive Bayes classifiers)
' q) n) H; x0 ^9 Y- `* U3 ?
贝叶斯网(信念网)
0 u5 y3 n; g9 G( k* K0 ~
决策树(decision tree)
! |3 P3 f5 K. j" O8 s
支持向量机(SVM)
# r$ P. H% ?& M# r# x4 k
神经网络
" k3 Q/ T) W) Z; R
词向量(word2vec)
0 B- `$ M$ ~9 H
k近邻分类(kNN)
. K* X; p- E2 ^' A. I* e! g
线性模型
- ^& `1 r( U( P$ A! j! F
高斯混合聚类与k均值(k-means)及其变种(k-means++、ISODATA、Kernel K-means)的对比
. ]# B( G( u- I z- U
关于学习算法的性能实验结果
+ {& ~! P1 y0 }1 N1 T
朴素贝叶斯分类器(NB:naive Bayes classifiers)
( Y2 T2 ?+ r0 D Z) h, R6 w
顾名思义,其适用于分类任务、并且假设每个属性独立地对分类结果发生影响,然而现实中各个因素往往并不独立,那是否就无法解决问题呢?
# J- M$ ~% l. `! Y0 X, ^' I; v
事实上并非如此,相反,朴素贝叶斯分类器在很多情况下都能获得相当好的性能,一种解释是:无需精准概率值即可导致正确分类结果;另一种解释是:若属性间依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算开销的同时,不会对性能产生负面影响。
% \, w1 ^, }6 A: a% }9 w
* d) a" t: N9 H. ~6 y8 [. Y, |
优点:
( J/ T: r* t1 ]1 B6 I6 [! c) _
1、计算量较小
& o* d- Y7 H, ~7 m7 h
2、支持懒惰学习、增量学习
( a4 w7 p [- \. p) W, D
3、对缺失数据不太敏感
8 q# _3 w( ]2 D& P0 b* X2 c
4、推断即查表,速度极快。
2 }" X1 h+ S6 R: A- B
缺点:
( U5 x1 }0 M( ^2 ^* r+ o
1、没有考虑属性间依赖
# W$ r1 ^, s: g! b* t7 b
2、通过类先验概率产生模型
y. Z7 u/ f6 c. T: H
c! j' V4 K x6 J$ J+ F
半朴素贝叶斯分类器(SNB:semi-naive Bayes classifiers)
) s6 n$ l+ t4 ]* ]0 Y' C$ M
相比NB的不考虑依赖,SNB则是考虑了一个(独依赖估计策略:ODE)或多个(多依赖估计策略:kDE)属性依赖
9 J& c6 M8 M/ |6 R8 G0 h
优点:
. V3 K: U! ` S; E* j
1、考虑了一个或多个比较强的属性依赖关系,泛化性能可能得到提升
; B- |1 S$ s/ ?# t4 H2 \
2、计算开销不大
* _1 @# e: y; h
3、同样支持懒惰学习、增量学习
* }+ x3 B3 I, C& Q
缺点:
+ z" D+ R6 y3 U" g" `0 b
1、通过类先验概率产生模型
* {0 r# y1 [) E1 A
0 {- I, B+ o4 D+ [6 }6 ?
贝叶斯网(信念网)
) G$ r4 _0 Z% Z
贝叶斯网借助有向无环图刻画属性之间的依赖关系,通过吉布斯采样或者变分推断等方式来近似推断后验概率。
. r) `( ^& C. V; K1 u
优点:
. l; t, B; G% p
1、更加完整地考虑了属性间依赖关系,泛化性能将进一步提升
9 n) U! c5 P* G
2、近似估算后验概率
4 l4 G4 e* N7 l. d1 }+ ?
3、可用于推测属性缺失的样本
. ^8 y2 C+ E2 |8 K- O
4、良好的可解释性
4 t8 p: g7 }% C
5、常用于语音识别、机器翻译等
) m4 u4 |: f+ n) U2 {- F
缺点:
/ U. o7 W9 ~6 R5 W0 s6 f" X
1、结构学习NP难,通过评分搜索方法缓解
\4 f! O. T5 Z5 B. A
2、推断算法的收敛速度较慢
& F$ N7 A9 n- ~4 G: F8 a x* N
6 R+ i t; g {& S9 A; X
决策树(decision tree)
v" q! V2 [0 B- p
决策树通过信息纯度(信息增益、增益率、基尼指数等)来决定结点的生成,通过剪枝来缩小决策树的尺寸以及缓解过拟合。是一种非参数学习算法。
% m A y0 H0 S. f) D
优点:
! f! Z2 F: c9 E+ [% q5 O( V
1、计算量较小
# v- x& `0 |; ]% F7 }
2、清晰表达属性的重要程度
8 P4 Y. ]( p0 M' f7 {
3、可增量学习对模型进行部分重构
* K1 N. s8 u) `9 d5 t
4、不需要任何领域知识和参数假设
! ?2 i/ L# i1 Y
5、适合高维数据
; Q* c( I* Z7 t c
6、随机森林是基于决策树的集成学习策略,随机森林鲜有短板
1 ^+ B) Y5 b3 d$ p# d1 [
缺点:
! n+ f$ a) C& b& X6 ]: p
1、没有考虑属性间依赖
# j; S3 U7 L$ Q. h
2、容易过拟合,通过剪枝缓解
, J2 z- f# ^$ {
3、不可用于推测属性缺失的样本
$ O; z1 I. J: j( w
/ z% W4 v+ h" {: c0 W1 U
支持向量机(SVM)
* _2 y5 g2 y. @; z
基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开,是一种针对二分类设计的算法,但稍加改造为支持向量回归即可用于回归学习。
9 w$ i4 [) g" R3 P c6 j
优点:
' `+ C( _2 y6 F. S6 I% I! e' e$ X
1、可解决小样本的机器学习任务
. U: D4 J+ P4 }/ R9 ?, R. S
2、可解决高维问题
0 W) d" W5 F3 @* i
3、可通过核方法解决非线性问题
9 B: r* a: y. d3 U+ o" C/ m' S% K
缺点:
5 Z) ~0 E1 G& A! w
1、对缺失数据敏感
, S7 H& N& G" g0 ^; [7 _& F
2、对于非线性问题,核函数方法选择一直是个未决问题
- k& ^0 W$ W, d4 I: q
/ P4 x/ ~) }( w% C% V9 E5 ]
神经网络
" H6 j- J5 Z) D' z
优点:
* U/ e; x, V! \* ]3 x2 B/ f0 N
1、分类的准确度极高
2 h2 ^ |- l) C! y! p( Z
2、可解决复杂的非线性问题
; k1 K& R! E% m
3、对噪声神经有较强的鲁棒性和容错能力
# a. c6 i& ?* }% U% p" G& t: _0 |5 s# f
4、并行分布处理能力强,分布存储及学习能力强
: W( L o' D# ^' S2 l& u
5、常用于图像识别
, ?6 N9 F; [% E( Y8 h0 B
6、数据量越大,表现越好
% M( T V% {) k
缺点:
. ~% _# ?+ \; D; d4 [7 Z1 @
1、黑箱模型,难以解释
: p# c4 W) H( T
2、需要初始化以及训练大量参数,如网络结构、权值、阈值,计算复杂
. F- p# k" E8 X& i
3、误差逆传播的损失
; c9 x/ u7 h! B( f( c ^
4、容易陷入局部最小
: S ?2 O: _6 f7 e* p: ~) K
. C* ?; Y3 m* T! V# @
词向量(word2vec)
2 r6 P8 ~8 F0 C
将文章的每句话当成一行,将每个词用符号隔开(如使用中文分词工具jieba),根据上下文,可以找出相似词义的词。
( W: h1 _( q, c3 P% I
比如:我 喜欢 你,我 爱 你,我 讨厌 你。根据上下文我和你,可以找到喜欢的相似词,有爱和讨厌。
; Y7 T) q0 G$ i* q% Q8 d; [0 r
再一般地如:1 2 3 X 4 5 6,1 2 3 Y 4 5 6。根据上下文1 2 3和4 5 6,可以找到X和Y相似。
) Q; S, h4 i+ s' D9 o; b1 {# r
gensim是一个很好用的Python NLP的包,不光可以用于使用word2vec,还有很多其他的API可以用。它封装了google的C语言版的word2vec。
l% Q: h M# A% f, T4 Q
p* w0 T, M x- h) w1 z
k近邻分类(kNN)
6 A, e3 n8 ]! V- ~' m4 g& Q
基于某种距离度量找出训练集中与其最靠近的k个训练样本,或者指定距离e之内的训练样本,分类任务中通过投票法(以及加权投票等)将出现最多的类别标记作为预测结果,回归任务中则使用平均法(以及加权平均等)
2 E5 k: r9 p) N* I2 n- m
优点:
; l7 A# }2 c; U* `2 a7 R* p
1、思想简单,易于理解,易于实现,无需估计参数,无需训练;
, |6 P; n @- K
2、适合对稀有事件进行分类;
* `* }; k7 l8 y- f! t i' R
3、特别适用于多分类问题
* E0 A$ b Z0 K; W8 M& L
缺点:
7 h( ]& p8 T. e$ g3 K( Q! m
1、需要计算出待测样本与所有样本的距离,计算量大
2 N. U0 x+ q, a
2、样本不平衡时影响大
- D9 P3 r4 a A' S" u8 m" o5 Q# K
3、适用的特征维度低
% G- R9 b+ |1 e7 [2 b/ `* g
3 z$ J6 E2 n0 C# m6 p' s- J; E
线性模型
; q$ c3 e( y+ B- |4 v
优点:
7 Y# p9 l, @' B
1、算法简单,编程方便
4 A: {2 }: {. o- E
2、计算简单,决策速度快
( h& m4 t3 L0 f. k" p
缺点:
* ~! F t. T4 L6 J2 ^( O
1、拟合效果较差
% m0 A z4 G1 j. g1 b
, W3 [; d( v1 x# c5 @
高斯混合聚类与k均值(k-means)及其变种(k-means++、ISODATA、Kernel K-means)的对比
" o/ ^( `1 s7 |3 ~0 S, Q
k-means是高斯混合聚类在混合成分方差相等、且每个样本仅指派给一个混合成分时的特例,因此k-means计算简单,但效果不如高斯混合聚类
, c+ V5 i" y, c4 ?* ?; u* Y; H
由于计算太过复杂,高斯混合聚类并不常用,推荐使用k-means++(与k-means随机选定不同,k-means++初始选定的几个样本距离尽量远,这样能更快得出分簇结果)等k-means变种。
4 l& L6 ?; E6 \
- K" [7 y, {! W5 s% I8 Q& k
关于学习算法的性能实验结果
6 g3 {$ C- d) M% G! {
点击查看原文
8 L& I8 f4 K/ C- t( s5 ?
5 W4 I* n1 B' p7 _4 T0 j* Q
14年的时候有人做过一个实验[1],比较在不同数据集上(121个),不同的分类器(179个)的实际效果。
4 c# x3 l' {. ]' A
论文题为:Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
4 g) w% R; n! \7 {
没有最好的分类器,只有最合适的分类器。
3 k5 K9 t6 T* ^# P1 a6 w9 X
1、随机森林平均来说最强,但也只在9.9%的数据集上拿到了第一,优点是鲜有短板。
v9 D" g. {( P0 k' r: g
2、SVM的平均水平紧随其后,在10.7%的数据集上拿到第一。
+ i# L0 @* j4 a5 F1 g
3、神经网络(13.2%)和boosting(~9%)表现不错。
! D M2 g( T& |$ x
4、数据维度越高,随机森林就比AdaBoost强越多,但是整体不及SVM[2]。
0 C: [5 {" ?9 a
5、数据量越大,神经网络就越强。
5 @; u2 H- ~, [
————————————————
( s6 g1 d! w' M3 H
版权声明:本文为CSDN博主「路飞的纯白世界」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
( n5 C' g4 V# T% h4 [$ K
原文链接:https://blog.csdn.net/u010921136/article/details/90668382
5 {$ }$ k" Z5 D7 z5 X4 z% q& Q
4 k* M& O" t* y- w/ z( A* {9 \
' r. t& C; T9 U& {
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5