1.机器学习,从入门到放弃入门

1.引入

  假设有一天你去购买芒果,但是你不知道怎么去挑选哪些芒果更甜一点,那么你该怎样购买呢?你想起来妈妈曾教过你,金黄色的芒果比浅黄色的芒果更甜一些,所以你有了一个简单的规则:只挑选亮黄色的芒果。But,生活往往并非那么容易。你回家吃了这些芒果之后,也许会觉得有的芒果味道并不好......很显然,妈妈教给你的方法很片面,只根据颜色挑选芒果并不是十分可靠。

  在经过大量思考(并且试吃了很多不同类型的芒果)之后,你又得出一个结论:相对更大的金黄色芒果肯定是甜的,相反,相对较小的金黄色芒果并不都是甜的。你会很开心自己得出的结论,然后下次去买芒果的时候就根据这个结论去买芒果。

  但是下次又去买芒果的时候,你常买的那家店倒闭了......

  所以你只能买别家的芒果,不过别家的芒果和之前你常去的那家的芒果不是一个产地的。然后你发现你之前得出的结论不适用了。于是你只能从头再开始尝试,你发现这里小的,浅黄色的是最甜的!

  这时候,你有几个朋友来家里了,你摆了一些芒果给他们吃,但是你朋友说他并不是很在意芒果甜不甜,他更加喜欢多汁的芒果。你虽然嘴上嫌弃他事儿多,但是你只能再去给他买。

  又一次,你根据你的经验,又尝了所有类型的芒果,然后发现: 软一点的芒果比较多汁。

  后来你又因为工作或其他原因搬家了,在新的地方你发现这里的芒果和家乡的芒果又不一样,这里的芒果绿色的实际上会比黄色的更甜一点...... 

  后来你有了个漂亮的女朋友,你把你喜欢吃的芒果分给她吃,结果发现女朋友竟然不喜欢吃芒果,而喜欢吃苹果。所以你只得去买苹果,你之前所有实践得出的芒果的知识都没用了。你需要根据之前挑芒果的经验,用相同的办法重新研究一遍哪些苹果的口感最好。

  作为一名程序猿,你突发奇想,想写一个程序帮助你挑选芒果(或者苹果),你会写到类似如下的规则:

  if ( ‘颜色’==‘金黄色’ and ‘大小’==‘大’  ): return 甜;

  if ( ‘颜色’==‘金黄色’ and ‘大小’==‘大’  and 感觉==‘软’) return 多汁;

  etc.

  这就是你挑芒果时用到的规则了。把这些规则发给你的女朋友,那么她也能帮你买到对你口味的芒果了(如果她看得懂的话)。

  但问题在于,每回你在试验之后得出了观察结果,你都得把规则做一番修正。你还得明察秋毫地了解清楚都有那些因素在影响芒果的品质。如果问题复杂起来的话,你在上面耗费的心血甚至都有可能为你拿个 “芒果科学” 的PhD下来。

  能不能找到一个更加智能的挑选芒果的算法呢?有,那就是机器学习 !其实,机器学习算法就是普通算法的进化版,它们让你的程序变得 “更聪明”,能从你提供的数据里自动学到东西。
 
2.机器学习的定义
  (摘自百度百科)机器学习是一门多领域交叉学科,涉及概率论、统计学等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径。
  相关概念:
  以芒果的甜度为例,我们选择不同的芒果样本,就叫训练样本;每个芒果的特征信息(颜色、大小等)叫做特征变量;每个芒果亲自尝过之后的甜度叫做目标变量;标记为甜与不甜的过程叫做数据标记。你把这些数据输入到一个机器学习算法中去,然后这个算法就会自动的帮你找到什么特征的芒果会比较甜,这就得到了机器学习模型
  等你下一次到市场买芒果的时候,你只需要把摊位上的芒果特征信息(特征变量)收集一下,然后输入到你的机器学习模型中,它就会自动预测哪些芒果是甜的。这个机器学习模型可能比之前经验的规则要更加复杂,挑选甜芒果的准确度要更高。
  例如之前挑选100个芒果,可能只有70个是甜的(70%的准确率,这就是模型的评估指标 precision),而现在用机器学习模型可能有90个是甜的,准确率达到了 90%。更加重要的是,你以后每吃一个芒果,都可以把它的数据添加到模型中进行训练,不断迭代升级你的模型,准确率也会越来越高。算法还可以在每次预测错误之后进行自我修正(这就是 增强学习),更妙的是,你还能用同一个算法来训练不同的模型,例如预测苹果、橙子、香蕉、葡萄、樱桃、西瓜等等(这就是迁移学习)。
 
3.机器学习的分类

(1)监督学习

  监督学习要先有对应的目标值,通过对训练样本和已知的结果建立联系,提取特征值和映射关系,通过已知的结果,已知数据样本不断的学习和训练,对新的数据进行结果的预测。

  比方说我们吃芒果,训练样本中的芒果甜与不甜就是我们能够已知的目标值。根据训练样本中的芒果和已知的结果(甜与不甜)建立联系,提取特征变量与结果的关系,建立模型,以便对新的数据进行结果的预测。

  监督学习通常用在分类和回归。比如手机识别垃圾短信,电子邮箱识别垃圾邮件,都是通过对一些历史短信、历史邮件做垃圾分类的标记,对这些带有标记的数据进行模型训练,然后获取到新的短信或是新的邮件时,进行模型匹配,来识别此邮件是或是不是垃圾邮件,这就是监督学习下分类的预测。

  再比如我们要预测公司净利润的数据,可以通过历史上公司利润(可以理解为目标值),以及跟利润相关的指标,比如营业收入、资产负债情况、管理费用等数据,得到一个回归方程,建立公司利润与相关因子的方程式,通过输入因子数据,来预测公司利润。这就是监督学习下回归的预测。

(2)无监督学习

  无监督学习是选取的样本数据无需有目标值,我们无需分析这些数据对某些结果的影响,只是分析这些数据内在的规律。无监督学习常用在聚类分析上面。聚类的目的是把相似的数据聚在一起。

(3)强化学习

  强化学习是一种比较复杂的机器学习方法,强调系统与外界不断的交互反馈,它主要是针对流程中不断需要推理的场景,比如无人汽车驾驶,它更多关注性能。它是机器学习中的热点学习方法。

4.机器学习的应用——大数据

  什么是大数据?通俗的说,大数据指的就是瞬时就能产生的海量的数据。早在N多年前,百度首页导航每天需要提供的数据超过1.5PB(1PB=1024TB,1TB=1024GB),这些数据如果打印出来,将超过5千亿张A4纸。

  所谓大数据,麦肯锡全球研究所给出的定义是:—种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低四大特征。大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。

  大数据的核心是利用数据的价值,机器学习是利用数据价值的关键技术,对于大数据而言,机器学习是不可或缺的。相反,对于机器学习而言,越多的数据会越可能提升模型的精确性,同时,复杂的机器学习算法的计算时间也迫切需要分布式计算与内存计算这样的关键技术。因此,机器学习的兴盛也离不开大数据的帮助。大数据与机器学习两者是互相促进,相依相存的关系。

5.机器学习的父类——人工智能

  人工智能是机器学习的父类。深度学习则是机器学习的子类。人工智能的发展经历了如下若干阶段,从早期的逻辑推理,到中期的专家系统,这些科研进步确实使我们离机器的智能有点接近了,但还有一大段距离。直到机器学习诞生以后,基于机器学习的图像识别和语音识别在某些垂直领域达到了跟人相媲美的程度。机器学习使人类第一次如此接近人工智能的梦想。