机器学习流程

语言: CN / TW / HK

人工智能的浪潮正在席卷全球,诸多词汇时刻萦绕在我们耳边:人工智能(Artificial Intelligence)、机器学习(Machine Learning)、深度学习(Deep Learning)。人工智能是我们想要达成的目标,而机器学习是想要达成目标的手段,希望机器通过学习方式,他跟人一样聪明。深度学习则是是机器学习的其中一种方法。简而言之就是:机器学习是一种实现人工智能的方法,深度学习是一种实现机器学习的技术。

机器学习可以更快且自动的产生模型,以分析更大,更复杂的数据,而且传输更加迅速,结果更加精准——甚至是在非常大的规模中。在现实中无人类干涉时,高价值的预测可以产生更好的决定,和更明智的行为。本文主要对传统机器学习进行简单的介绍,对机器学习的基本流程进行简单的梳理。

一、机器学习

机器学习最基本的做法,是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。

这里有三个重要的信息:

  1. 机器学习是模拟、延伸和扩展人的智能的一条路径,所以是人工智能的一个子集;
  2. “机器学习”是要基于大量数据的,也就是说它的“智能”是用大量数据喂出来的;
  3. 正是因为要处理海量数据,所以大数据技术尤为重要;“机器学习”只是大数据技术上的一个应用。 常用的10大机器学习算法有:决策树、随机森林、逻辑回归、SVM、朴素贝叶斯、K最近邻算法、K均值算法、Adaboost算法、神经网络、马尔科夫。

二、机器学习相关技术

机器学习可以主要分为:

  • 监督学习
  • 半监督学习
  • 无监督学习
  • 强化学习

2.1、监督学习

定义:根据已有的数据集,知道输入和输出结果之间的关系。根据这种已知的关系,训练得到一个最优的模型。 也就是说,在监督学习中训练数据既有特征(feature)有标签(label),通过训练,让机器可以自己找到特征和标签之间的联系,在面对只有特征没有标签的数据时,可以判断出标签。 通俗一点,可以把机器学习理解为我们教机器如何做事情。

监督学习分为:

  • 回归问题(Regression)
  • 分类问题(classification)

经典的算法:支持向量机、线性判别、决策树、朴素贝叶斯

2.1.1、回归问题

回归问题是针对于连续型变量的。 回归通俗一点就是,对已经存在的点(训练数据)进行分析,拟合出适当的函数模型$y=f(x)$,这里y就是数据的标签,而对于一个新的自变量x,通过这个函数模型得到标签y。

2.1.2、分类问题

回归问题Regression和分类问题Classification的差别就是我们要机器输出的东西的类型是不一样。在回归问题中机器输出的是一个数值,在分类问题里面机器输出的是类别,和回归最大的区别在于,分类是针对离散型的,输出的结果是有限的

其中分类问题分为两种:

  • 二分类,输出是或否。例如判断肿瘤为良性还是恶性
  • 多分类,在多个选项中选择正确的类别。例如输入一张图片判读是猫是狗还是猪 简单来说分类就是,要通过分析输入的特征向量,对于一个新的向量得到其标签。

2.2、半监督学习

传统的机器学习技术分为两类,一类是无监督学习,一类是监督学习。

无监督学习只利用未标记的样本集,而监督学习则只利用标记的样本集进行学习。

但在很多实际问题中,只有少量的带有标记的数据,因为对数据进行标记的代价有时很高,比如在生物学中,对某种蛋白质的结构分析或者功能鉴定,可能会花上生物学家很多年的工作,而大量的未标记的数据却很容易得到。这就促使能同时利用标记样本和未标记样本的半监督学习技术迅速发展起来。简而言之,半监督学习就是去减少标签(label) 的用量。

半监督学习是归纳式的,生成的模型可用做更广泛的样本

2.3、无监督学习

定义: 我们不知道数据集中数据、特征之间的关系,而是要根据聚类或一定的模型得到数据之间的关系。 可以这么说,比起监督学习,无监督学习更像是自学,让机器学会自己做事情,是没有标签(label)的。

无监督学习使我们能够在几乎不知道或根本不知道结果应该是什么样子的情况下解决问题。我们可以从不需要知道变量影响的数据中得到结构。我们可以根据数据中变量之间的关系对数据进行聚类,从而得到这种结构。在无监督学习中,没有基于预测结果的反馈。

经典算法:聚类K-means算法(K均值算法),主成分分析

2.4、强化学习

定义: 强化学习是机器学习的一个重要分支,是多学科多领域交叉的一个产物,它的本质是解决 decision making 问题,即自动进行决策,并且可以做连续决策。

它主要包含四个元素:agent,环境状态,行动,奖励

强化学习的目标就是获得最多的累计奖励。

强化学习和监督式学习的区别

  1. 监督式学习就好比在学习的时候有老师在指导老师怎么是对的怎么是错的,但在很多实际问题中,例如:西洋棋、围棋有几千万种博弈方式的情况,不可能有一个老师知道所有可能的结果。然而强化学习会在没有任何标签的情况下,通过先尝试做出一些行为得到一个结果,通过这个结果是对还是错的反馈,调整之前的行为,就这样不断的调整,算法能够学习到在什么样的情况下选择什么样的行为可以得到最好的结果。
  2. 两种学习方式都会学习出输入到输出的一个映射,监督式学习出的是之间的关系,可以告诉算法什么样的输入对应着什么样的输出,强化学习出的是给机器的反馈,即用来判断这个行为是好是坏。
  3. 另外强化学习的结果反馈有延时,有时候可能需要走了很多步以后才知道以前的某一步的选择是好还是坏,而监督学习做了比较坏的选择会立刻反馈给算法。而且强化学习面对的输入总是在变化,每当算法做出一个行为,它影响下一次决策的输入,而监督学习的输入是独立同分布的。
  4. 通过强化学习,一个 agent 可以在探索和开发(exploration and exploitation)之间做权衡,并且选择一个最大的回报。exploration 会尝试很多不同的事情,看它们是否比以前尝试过的更好。exploitation 会尝试过去经验中最有效的行为。一般的监督学习算法不考虑这种平衡。 强化学习和非监督式学习的区别:

非监督式不是学习输入到输出的映射,而是模式。例如在向用户推荐新闻文章的任务中,非监督式会找到用户先前已经阅读过类似的文章并向他们推荐其一。而强化学习将通过向用户先推荐少量的新闻,并不断获得来自用户的反馈,最后构建用户可能会喜欢的文章的“知识图”。

主要算法和分类

从强化学习的几个元素的角度划分的话,方法主要有下面几类:

  • Policy based, 关注点是找到最优策略。
  • Value based, 关注点是找到最优奖励总和。
  • Action based, 关注点是每一步的最优行动。

三、机器学习的基本流程

3.1、基本流程的简单描述

一个基本的机器学习流程简单来说主要分为五大步骤:问题转化、数据的收集与处理、模型的训练与调整、上线模型、监控

未命名表单.png

  • 问题转化:将实际问题转化为机器学习问题

  • 数据的采集与处理:采集我们需要的数据,并对数据进行数据清洗等处理工作

  • 模型的训练与调整:选择合适的模型,使用处理好的数据进行模型训练

  • 上线模型:将训练好的的模型部署到线上

  • 监控:监控模型的性能,得到新的数据,然后重新进行数据收集与处理,对模型进行新的训练和调整,以应对新的用户行为变化

3.2、基本流程的复杂描述

QQ截图20211109161513.png

  1. 数据源:

机器学习的第一个步骤就是收集数据,这一步非常重要,因为收集到的数据的质量和数量将直接决定预测模型是否能够建好。我们可以将收集的数据去重复、标准化、错误修正等等,保存成数据库文件或者csv格式文件,为下一步数据的加载做准备。

  1. 分析:

这一步骤主要是数据发现,比如找出每列的最大、最小值、平均值、方差、中位数、三分位数、四分位数、某些特定值(比如零值)所占比例或者分布规律等等都要有一个大致的了解。了解这些最好的办法就是可视化,谷歌的开源项目facets可以很方便的实现。另一方面要确定自变量$(x_1...x_n)$和因变量$y$,找出因变量和自变量的相关性,确定相关系数。

  1. 特征选择:

特征的好坏很大程度上决定了分类器的效果。将上一步骤确定的自变量进行筛选,筛选可以手工选择或者模型选择,选择合适的特征,然后对变量进行命名以便更好的标记。命名文件要存下来,在预测阶段的时候会用到。

  1. 向量化:

向量化是对特征提取结果的再加工,目的是增强特征的表示能力,防止模型过于复杂和学习困难,比如对连续的特征值进行离散化,label值映射成枚举值,用数字进行标识。这一阶段将产生一个很重要的文件:label和枚举值对应关系,在预测阶段的同样会用到。

  1. 拆分数据集:

需要将数据分为两部分。用于训练模型的第一部分将是数据集的大部分。第二部分将用于评估我们训练有素的模型的表现。通常以8:2或者7:3进行数据划分。不能直接使用训练数据来进行评估,因为模型只能记住“问题”。

  1. 训练:

进行模型训练之前,要确定合适的算法,比如线性回归、决策树、随机森林、逻辑回归、梯度提升、SVM等等。选择算法的时候最佳方法是测试各种不同的算法,然后通过交叉验证选择最好的一个。但是,如果只是为问题寻找一个“足够好”的算法,或者一个起点,也是有一些还不错的一般准则的,比如如果训练集很小,那么高偏差/低方差分类器(如朴素贝叶斯分类器)要优于低偏差/高方差分类器(如k近邻分类器),因为后者容易过拟合。然而,随着训练集的增大,低偏差/高方差分类器将开始胜出(它们具有较低的渐近误差),因为高偏差分类器不足以提供准确的模型。

  1. 评估:

训练完成之后,通过拆分出来的训练的数据来对模型进行评估,通过真实数据和预测数据进行对比,来判定模型的好坏。不同任务模型下的评价指标如下:

QQ截图20211109165332.png

完成评估后,如果想进一步改善训练,我们可以通过调整模型的参数来实现,然后重复训练和评估的过程。

  1. 文件整理:

模型训练完之后,要整理出四类文件,确保模型能够正确运行,四类文件分别为:Model文件、Lable编码文件、元数据文件(算法,参数和结果)、变量文件(自变量名称列表、因变量名称列表)。

  1. 接口封装:

通过封装封装服务接口,实现对模型的调用,以便返回预测结果。

  1. 上线:

将训练好的的模型部署到线上。

参考链接:

  • http://blog.csdn.net/qq_27567859/article/details/79666969

  • http://zhuanlan.zhihu.com/p/117238854

  • http://www.jianshu.com/p/afa0facbe625