机器学习入门(一):机器学习问题一览


在我大二的时候,我接触到了自然语言处理(NLP),并写了一些粗浅的项目,不过这个Android APP的bug总是比功能还多_(:з」∠),于是除了拿奖也没有做些其他的长久打算,不过这个经历的好处是,让我初窥机器学习的大门,知道机器学习可以做什么和可以做的多么好,我的本科毕设,就参考了IBM关于Watson的研究,实现了一个简单的问答系统,当其他人舒舒服服的两个月做完的时候,我整整做了七个月,要知道,我们学院十一月初就早早开题了。这段经历也让我对ML有了更深刻的认识和更深的入坑的念头。

两年后,我成为研究生。实验室是一个屌实验室,屌的意思就是项目很多:-(

项目有喜欢做的也有不喜欢做的,有Unity也有云计算,有桌面客户端也有网站,可喜的是还有推荐系统和问答系统(这些东西在一个大项目里面,真是一个日了狗的项目啊),加之研究生开了相关课程,于是我得以能够有机会更深入地学习下这方面的东西,并且有冲动想把自己的一些心得写出来分享,于是有了这个开坑的系列:轻松入门机器学习。

我本来想叫它“21天入门机器学习”,想到学习这门课程的的人多是一点幽默感和反讽意识都没有的书呆子,起这么个诙谐的名字不仅不能得到理解,反而可能碰一鼻子灰,顿时没了兴致。

这个系列文章希望能够涉及到:

  • 不同的学习类别,包括监督式学习和非监督式学习
  • 不同的学习算法,包括感知机PLA,朴素贝叶斯,SVM,决策树和神经网络初探
  • 一些涉及的其他内容,包括梯度下降/上升,随机梯度下降/上升,kernel function等等
  • 其他ML相关内容

希望能够摆脱掉其他教程系列的高大上,以一个脸皮贴地屁股朝天的接地气方式,用最通俗的语言讲解看似高深的算法,一起学习,一起成长

最后一句话,诸君共勉,

把一个Machine Learning问题优化到93%可能很难,但是用现有的模型优化到90%,却是每个人都能轻松做到的。


第一篇我们来谈谈机器学习的问题都有哪些类别,难度为0,五分钟可以看完。

按数据类别分类

二分类问题

数据的类别只有两种,形式上可以转化成0/1或者是否问题

典型的二分类问题有:

  • 垃圾邮件判别
  • 疾病判断
  • 判断答案正误
  • 决定是否投放广告

如图所示,是抽象化的二分类问题的示例:

二分类问题

多分类问题

数据的类别可能有有限多种

典型的多分类问题有:

  • 手写数字识别
  • 图片分类
  • 邮件类型识别(新版gmail)

如图所示,是一个判断硬币面值的多分类问题模型:

一个判断硬币面值的多分类问题模型

回归问题

回归问题指数据的取值可能是连续的或者有无数个可能值,比如气温,价格,时间

典型的回归问题有:

  • 预测病人出院时间
  • 预测股票走势
  • 预测天气和气温

回归问题在机器学习出现之前就被大量研究,是传统统计学的一个重要的研究方向,所以当前的机器学习经常借鉴统计学的回归分析方式方法和工具。

如图,是一个线性回归模型的示意图,当有新的测试数据输入,根据回归方程可以得到该数据的预测值:

一个线性回归模型的示意图

结构化学习

结构化学习不是以数据预测数据的形式,而是从数据中抽取结构,结构可能有多种,每种结构有其物理或者数学意义或者其他意义(如语义学含义),每种结构也可能由更小的粒度组成(如主语、谓语、宾语),这些细粒度的内容组成更粗粒度的结构之后便具有了更实际的含义。
如果把每种结构看做一个分类,那么结构化学习问题也可以看做一种多分类问题。

如图,是从文本中抽取语义结构的示意图(P-主语、V-谓语,N-宾语):

从文本中抽取语义结构的示意图

按数据标注分类

监督式学习 Supervised learning

  • 有标注集
  • 数据类别已知

我们到现在遇见的问题都是监督式学习问题。

如图,是监督式学习的一个示意,每种颜色是一个类别,可以看到,所有的数据都已经标注完毕,算法就根据标注数据进行训练。

该问题仍然是上例中的硬币分类问题。

硬币分类问题的监督学习描述

非监督式学习 Unsupervised learning

  • 无标注数据
  • 数据类别可能不可知

数据类别不可知的非监督学习问题也称聚类问题(clustering problem)

典型的非监督式学习问题有:

  • 密度估计
    • 通过不同地点事故记录密度寻找危险地点
  • 离群点检测
    • 识别出网络流量中的异常流量以识别出坏机器或者攻击行为

仍以硬币分类问题举例,如图是当没有标注数据的时候硬币分类的问题:
没有标注数据的时候硬币分类的问题

如果类别未知,那么该问题也是一个聚类问题。可以看到,当成为聚类问题的时候,从该数据集中很难清晰地判断数据有两类还是三类还是四类。所以通常该类非监督式学习被广泛使用在离群点检测中,相对而言,离群点通常更容易被甄别出来。

半监督式学习 Semi-supervised learning

仅标注少数的有特性的数据,配合多数无标注数据进行学习,常用于标注数据集的成本较大而且数据集很大的情况。

如图,是一个半监督式学习的例子,仍取硬币分类问题为例,从数据集中摘取少部分有鲜明特征的数据进行标注,其他事情就全数交给分类器进行训练了。
一个半监督式学习的例子

半监督式学习通常要靠大量的未标注数据来提升算法的性能。

增强学习 Reinforce learning

对于数据的预测和分析,对预测正确的case进行奖励,对预测错误的case进行惩罚,算法在预测中成长的一类问题

常见的增强学习问题有:

  • 根据输入客户预测广告投放,根据用户的点击行为对广告投放进行调整

按数据规模分类

批次学习 Batch learning

每次将一批数据放入感知机,对感知机进行训练,其目标函数g随着数据的成批填入变动

在线学习 Online learning

每当新的数据进入,就自动放入感知机训练,其目标函数随着数据变化一直在变动,类似流式处理,目标函数是不断改进的

eg. spam mail filter,垃圾邮件分类

通常增强学习用在Online learning中。

按算法特性分类

主动学习 Active learning

算法甄选出特征后,主动构造数据-分类,主动寻求反馈,根据反馈调整特征和参数,进而改进感知机/分类器性能。
通常主动学习用于data labeling 代价高昂以至于不能拥有很多标注数据的情况中。

s