首页 > 代码库 > MachineLearning:一、什么是机器学习

MachineLearning:一、什么是机器学习

简介

  在介绍机器学习之前,我想先列几个关于机器学习的例子:

  • 垃圾邮件检测:根据邮箱中的邮件,识别哪些是垃圾邮件,哪些不是。这样的模型,可以程序帮助归类垃圾邮件和非垃圾邮件。这个例子,我们应该都不陌生。
  • 信用卡欺诈检测:根据用户一个月内的信用卡交易,识别哪些交易是该用户操作的,哪些不是。这样的决策模型,可以帮助程序退还那些欺诈交易。
  • 数字识别:根据信封上手写的邮编,识别出每一个手写字符所代表的数字。这样的模型,可以帮助程序阅读和理解手写邮编,并根据地利位置分类信件。
  • 语音识别:从一个用户的话语,确定用户提出的具体要求。这样的模型,可以帮助程序能够并尝试自动填充用户需求。带有Siri系统的iPhone就有这种功能。
  • 人脸识别:根据相册中的众多数码照片,识别出那些包含某一个人的照片。这样的决策模型,可以帮助程序根据人脸管理照片。某些相机或软件,如iPhoto,就有这种功能。
    技术分享
  • 产品推荐:根据一个用户的购物记录和冗长的收藏清单,识别出这其中哪些是该用户真正感兴趣,并且愿意购买的产品。这样的决策模型,可以帮助程序为客户提供建议并鼓励产品消费。登录Facebook或GooglePlus,它们就会推荐可能有关联的用户给你。
  • 医学分析:根据病人的症状和一个匿名的病人资料数据库,预测该病人可能患了什么病。这样的决策模型,可以程序为专业医疗人士提供支持。
  • 股票交易:根据一支股票现有的和以往的价格波动,判断这支股票是该建仓、持仓还是减仓。这样的决策模型,可以帮助程序为金融分析提供支持。
  • 客户细分:根据用户在试用期的的行为模式和所有用户过去的行为,识别出哪些用户会转变成该产品的付款用户,哪些不会。这样的决策模型,可以帮助程序进行用户干预,以说服用户早些付款使用或更好的参与产品试用。
  • 形状鉴定:根据用户在触摸屏幕上的手绘和一个已知的形状资料库,判断用户想描绘的形状。这样的决策模型,可以帮助程序显示该形状的理想版本,以绘制清晰的图像。iPhone应用Instaviz就能做到这样。[1]

机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,主要使用归纳、综合而不是演绎[2]

关于机器学习的定义有很多,一种经常被引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.[3]

上面的这个定义如何理解呢?想象一下有一个邮箱过滤程序接受到一封邮件,该程序如何判断这封邮件是不是垃圾邮件呢?首先这封邮件先观察你之前标记过是不是垃圾邮件的邮件,基于这个学习到的经验,该过滤程序为你过滤掉垃圾邮件了。在这个任务中:

  • 判断邮件是不是垃圾邮件,这个任务T
  • 观察到你之前标记过是不是垃圾邮件的邮件,这个是经验E
  • 正确分类垃圾邮件与非垃圾邮件的数量,这个是性能P

技术分享

机器学习分类

从最广义的讲,任何涉及机器学习所用的方法,只要它利用了训练样本的信息,都可以认为运用了学习。实践中和有意义的机器学习都是如此困难,以至于根本无法实现猜测出一个最佳的分类判决。因此大部分的时间都运用与研究学习问题。实现一个机器学习算法设计:给定一般的模型或分类器的形式,利用训练样本去学习或评估模型的未知参数。这里的学习指用某种算法来降低训练样本的分类误差。一大类基于梯度下降的算法,能够调节分类器的参数,使它朝着能够降低误差的方向前进,目前已成为机器学习领域的主流学习算法。[4]
在一个机器学习的应用中,根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域,有几种主要的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果。[5]


监督式学习

技术分享

在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,对手写数字识别中的“1“,”2“,”3“,”4“等。在建立预测模型的时候,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。监督式学习的常见应用场景如分类问题和回归问题。常见的算法有:逻辑回归,感知机,SVM支持向量机。

非监督学习

技术分享

在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括:Apriori算法以及k-Means算法。

半监督学习

技术分享

在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。

强化学习

技术分享

在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning以及时间差学习(Temporal difference learning)

机器学习框架

在机器学习领域有很多的框架、库以及软件。比较出名的有:C++的opencv, shark等,java中weka、hadoop的mahout、spark的mllib,matlab中的LibSVM、caffe,python的scikit-learn、NLTK、theano、brain、caffe等。机器学习框架、库与软件列表


目录(持续更新)


  • 基础知识
  • 概率分布
  • 回归

    • CART:分类和回归树算法
    • SVR支持向量回归

  • 分类

    • 感知机
    • 逻辑回归

      • 逻辑回归
      • 逻辑回归实现
      • scikit-learn中的逻辑回归

    • 分类决策数算法C4.5
    • 最近邻分类
    • 朴素贝叶斯算法
    • CART:分类和回归树算法
    • Ada Boost迭代算法
    • 支持向量机
    • 图模型

  • 聚类

    • k均值聚类

  • 时间序列

    • 时间序列完全教程(R)
    • HMM隐马尔科夫模型

  • 降维

    • LDA浅显理解

  • 其他算法

    • 最大期望(EM)算法
    • Apriori算法

  • 最优化算法

    • 梯度下降法

#参考资料
[1] 机器学习十个实例
[2] 百度百科
[3] 机器学习
[4] 模式分类
[5] 机器学习常见分类

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    MachineLearning:一、什么是机器学习