机器学习常用算法总结

        本文主要归纳了一下最近看的关于机器学习的一些资料,算是一个survey,主要关注常用算法,不讲细节,就是一个概述。具体的算法描述我给了几个链接,大家可以参考里面的。

        首先,如果从训练方法(主要针对有无lable)上对机器学习算法进行分类,可以分成三大类:监督学习,无监督学习和半监督学习。本文就按照这个分类进行讲解。其实还有一种比较流行的划分方式:监督学习,无监督学习和增强学习(RL)。RL在这里面确实是足以开山立派了,本文暂时不做讨论,博主这几天正好在学习RL,等着后面会发一个小系列的。


监督学习:

        依赖于有标签的数据进行训练的算法,或者说,训练集采用有输入有输出的一组数据进行训练的算法。应用于分类和回归问题,常见算法有以下几种:

  • K临近算法(KNN)
  • 决策树(Decision Trees)
  • 朴素贝叶斯(Native Bayesian)
  • 逻辑回归(Logistic Regression)
  • 神经网络(NN)

        具体的细节介绍给大家一个链接,里面写的比较详细:http://m.blog.csdn.net/laobai1015/article/details/75006511

        当然,除此之外还有著名的Adaboost等算法。他们的优劣特性均不相同,下面这张表可以供大家参考:

                   机器学习常用算法总结


无监督学习:

        但在实际应用中,标签的获取常常需要极大的人工工作量,有时甚至非常困难。例如在自然语言处理中,Penn Chinese Treebank在2年里只完成了4000句话的标签。所以,无监督学习应运而生,它的训练集只需要有输入无输出的数据即可,常应用于聚类和降维的问题。常见算法有:

  • K-means
  • 稀疏自编码(Sparse Auto-encoder)
  • 高斯混合模型(Mixture ofGaussians)

        算法的详细介绍参考:

        http://www.cnblogs.com/xuesong/p/4179459.html

        http://www.cnblogs.com/cherler/p/3604720.html

        其中,K-means与KNN有很多相似之处,下表进行了详细对比:

                    机器学习常用算法总结

        可参考:http://www.cnblogs.com/nucdy/p/6349172.html

        当然,从目前的学术阶段来看,监督学习的结果都还不错,但无监督学习的准确率仍然有待提高。


半监督学习:

        这是一个跟无监督学习相比更新的方向,即采用了少量有有标签的数据作为辅助,同时还有大量无标签的数据一起训练。半监督学习现在主要的方法有三种:

  • Transductive SVM
  • 协同训练(Co-training)
  • 图的标签传播算法:(LabelPropagation)

        具体的算法描述可以参考:http://f.dataguru.cn/thread-847067-1-1.html

        半监督学习目前还没有像监督学习和无监督学习那样广泛使用,大多数文献资料都是各个研究员们在论文中提出的方法,认知度并不广。这方面的基本内容可以直接参考wiki:https://en.wikipedia.org/wiki/Semi-supervised_learning