关注公众号

关注公众号

手机扫码查看

手机查看

喜欢作者

打赏方式

微信支付微信支付
支付宝支付支付宝支付
×

常见机器学习算法优缺点比较(四)

2020.10.26

  缺点

  · 当观测样本很多时,效率并不是很高;

  · 对非线性问题没有通用解决方案,有时候很难找到一个合适的核函数;

  · 对缺失数据敏感;

  · 对于核的选择也是有技巧的(libsvm中自带了四种核函数:线性核、多项式核、RBF以及sigmoid核):

  · 第一,如果样本数量小于特征数,那么就没必要选择非线性核,简单的使用线性核就可以了;

  · 第二,如果样本数量大于特征数目,这时可以使用非线性核,将样本映射到更高维度,一般可以得到更好的结果;

  · 第三,如果样本数目和特征数目相等,该情况可以使用非线性核,原理和第二种一样。

  对于第一种情况,也可以先对数据进行降维,然后使用非线性核,这也是一种方法。

  7.人工神经网络的优缺点

  人工神经网络的优点:

  · 分类的准确度高;

  · 并行分布处理能力强,分布存储及学习能力强,

  · 对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系;

  · 具备联想记忆的功能。

  人工神经网络的缺点:

  · 神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;

  · 不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;

  · 学习时间过长,甚至可能达不到学习的目的。

  8、K-Means聚类

  之前写过一篇关于K-Means聚类的文章,博文链接:机器学习算法-K-means聚类。关于K-Means的推导,里面有着很强大的EM思想。

  优点

  · 算法简单,容易实现;

  · 对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法通常局部收敛。

  · 算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

  缺点

  · 对数据类型要求较高,适合数值型数据;

  · 可能收敛到局部最小值,在大规模数据上收敛较慢

  · K值比较难以选取;

  · 对初值的簇心值敏感,对于不同的初始值,可能会导致不同的聚类结果;

  · 不适合于发现非凸面形状的簇,或者大小差别很大的簇。

  · 对于”噪声”和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。

  算法选择参考

  之前翻译过一些国外的文章,有一篇文章中给出了一个简单的算法选择技巧:

  首当其冲应该选择的就是逻辑回归,如果它的效果不怎么样,那么可以将它的结果作为基准来参考,在基础上与其他算法进行比较;

  然后试试决策树(随机森林)看看是否可以大幅度提升你的模型性能。即便最后你并没有把它当做为最终模型,你也可以使用随机森林来移除噪声变量,做特征选择;

  如果特征的数量和观测样本特别多,那么当资源和时间充足时(这个前提很重要),使用SVM不失为一种选择。

  通常情况下:【GBDT>=SVM>=RF>=Adaboost>=Other…】,现在深度学习很热门,很多领域都用到,它是以神经网络为基础的,目前我自己也在学习,只是理论知识不是很厚实,理解的不够深,这里就不做介绍了。

  算法固然重要,但好的数据却要优于好的算法,设计优良特征是大有裨益的。假如你有一个超大数据集,那么无论你使用哪种算法可能对分类性能都没太大影响(此时就可以根据速度和易用性来进行抉择)。

  参考文献

  [1]https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff

  [2]http://blog.echen.me/2011/04/27/choosing-a-machine-learning-classifier/

  [3]http://www.csuldw.com/2016/02/26/2016-02-26-choosing-a-machine-learning-classifier/


推荐
热点排行
一周推荐
关闭