机器学习的那些事
2013-03-22 22:00 夜与周公 阅读(1642) 评论(1) 编辑 收藏 举报本系列是对机器学习常用的一些算法总结,本节主要概况后续的一些章节内容。
什么事机器学习?定义这个概念的自然是机器学习的大牛要做的事情。但机器学习的目的是,让我们的算法能够像人一样,通过学习以往的经验(数据),得到某种问题的解决方法(模型),并对新的问题(预测样本)做出自己的判断。对于某些问题来说,很难去编写一个算法完成任务。给出一些人脸图像,要求我们去编写一个程序,去识别这些人脸属于哪个人的。在计算机中,一幅人脸图像表示成一个矩阵,显然,很难通过传统的编程方法,去判断这幅图像到底是谁的人脸,机器学习在这个时候就发挥到她的作用了。
典型的机器学习任务可以几类呢?对于特定的任务,如何选择机器学习的一些算法呢?机器学习问题的算法框架如下图:
如图所示,机器学习可以大体分为四类任务:分类(classification)、回归(regression)、聚类(clustering)与维数约减(dimensionality reduction)。分类与回归问题属于监督性学习(supervise learning),两者不同在于:分类问题输出的是一些离散的值(类别标号,比如预测水果类别),而回归输出的则是联系的数值(比如预测温度)。聚类与维数约减属于无监督的学习算法(unsupervise learning)。监督学习(supervise learning)与非监督学习算法的区别是:对于给定的任务,是否有“标记”的数据(如某个文档所属的领域),监督机器学习算法需要人工标记样本,需要较大的人力成本,而无监督学习算法常用于一些数据的预处理任务。介于两者之间的是半监督学习算法(semi-supervise learning),随着互联网海量数据的涌入,半监督学习越来越程序机器学习研究的热点问题。本系列主要总结监督学习、无监督学习和半监督学习的常用的算法。
此外,需要重视的一个问题是,机器学习工具的使用。我们不可能对于每个机器学习的问题,都重新编写一个算法,网上也有需要知名的机器学习工具包。显然,掌握一些开源工具包的使用对我们学习和使用机器学习算法有着不可替代的作用。本文推荐一个基于python的机器学习算法工具包:scikit-learn,在基于python语言的机器学习工具包,目前应该是排名第一,简单易学,非常容易上手,而且自己也非常齐全。
监督学习算法,在机器学习研究的比较深入。而监督学习,依据建模优化目标的不同,又可以分为:生成式模型(generative learning algorithms)、判别式模型(discriminative lerarning algorithms)。判别式模型直接对p(y|x)进行进行优化(直接从样本特征映射到类别),而生成式模型则需要对(p(x|y)类概率分布进行建模。在刻画类概率分布p(x|y)、类先验概率分布p(y),生成式模型类别的后验概率分布,使用Bayes公式:
生成式难点则在于如何对类条件分布建模,实际上样本的分布是一件非常困难的事,因此会有一些假设帮助我们建模,比如Naive Bayes则是假设了类条件独立。
无监督的算法算法,一个显著的优势是,不需要标记数据(K-means, EM, PCA等),这些算法都有着广泛的运用。而随着互联网的不断的数量,网络上的数据浩如烟海,采用一些传统的监督算法,标记数据将会是很耗费人力物力资源的一件事,无监督的方法愈能体现出其优势(自动新闻聚类)。无监督的算法非常是非常有意思的算法,比如有人就将EM称为“上帝的算法”,足以体现出无监督算法的很fantasy。
半监督学习算法,综合了监督性学习与无监督学习算法特征,其特点是有少量的标记数据与大量的无标准数据。无监督的算法,尝试使用大量无标签的数据辅助完成我们分类回归任务。半监督学习算法越来越成为任务研究的重点。在早期的文献中有的将监督学习算法又被成为“有教师的学习算法”、无监督的算法又被称为“无教师的学习算法”。比之我们人类学习过程,“有教师学习”自然见效很快,效果很好,然而“无教师的学习”,对我们而言却是越用广泛,不用受到限制,终身受用。“半监督的学习”我们可一句话概况:师傅领进门,成功靠个人。
机器学习的有三个要素:Data, model, algorithm,这三者是机器学习的基石。机器学习的目的是发现数据的规律,因此数据是必要的条件,没有数据就没有后续的工作,机器学习现在发展非常热的一个原因,便是互联网有着海量的数据,有了数据,便有了机器学习可以发挥作用的地方。模型是机器学习算法的核心,对于一个问题,我们需要作出判断用什么模型去解释数据,发现数据的规律。最后是算法,是机器学习的关键,如何用数据去求解模型(最优化问题),变成可以运行的一段段代码。我们常常不会深入的接触到模型建立,如何优化,如何通过数据学习等问题中,很多模型已经被人们封装好,我们只需拿过来用就可以比如svm标准工具想svm-light就是对SVM的封装,关键是在于我们如何去理解这个机器学习算法的思想,可以工作的条件、优缺点等。