👨💻个人主页:@开发者-曼亿点
👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 曼亿点 原创
👨💻 收录于专栏:机器学习
⭐🅰⭐
—
文章目录
⭐前言⭐
在开始机器学习的算法流程介绍之前,因为机器学习是一个多学科交叉的学科,有很多类似于统计学的概念,但是在叫法上与传统的统计学又有一定的区别,我们需要了解些机器学习相关的基木概念,因为如果不阴动这些概念的话,对于一些文献的阅读和理解会构成障碍。下面通过这一节的介绍帮助大家对于基础的机器学习名词和概念进行了解,首先介绍一下机器学习的基本流程,然后针对机器学习涉及的数据、算法和评估这3个方面用到的基础概念进行介绍
🎶 一、机器学习流程
机器学习的过程就是一个数据流转、分析以及得到结果的过程,在使用的过程中很多人花了很多时间在算法的选择或者调优上,但其实机器学习的每一个步骤都是至关重要的,介绍算法的具体实现的资料已经比较丰富了、笔者希望花更多的篇幅来介绍数据的处理和整个机器学习流程的串联。
机器学习的整个流程大致可以分为6个步骤,整个流程按照数据流自上而下的顺序扪列,分别是场景解析、数据预处理、特征工程、模型训练、模型评估、离线/在线服务(见图一),下面来逐一介绍下这些步骤的基本功能。
(1)场景解析。场景解析就是先把整个业务逻辑想清楚,把自己的业务场景进行一个抽象、例如我们做一个广告点击预测,其实是判断一个用户看到广告是点击还是不点击这就可以抽象成二分类问题。然后我们根据是不是监督学习以及二分类场景,就可以进行算法的选择。总的来说,场景抽象就是把业务逻辑和算法进行匹配。
(2)数据预处理。数据预处理主要进行数据的清洗工作,针对数据矩阵中的空值和乱码进行处理,同时也可以对整体数据进行拆分和采样等操作,也可以对单字段或者多字段进行归一化成者标准化的处理。数据预处理阶段的主要目标就是减少量纲和噪音数据对于
训练数据集的影响。
(3)特征工程。特征工程是机器学习中最重要的一个步骤,这句话一点都没有错。特别是目前随着开源算法库的普及以及算法的不断成熟,算法质量并不一定是决定结果的最关键因素,特征工程的效果从某种意义上决定了最终模型的优劣。通过一个例子说明一下特征工程的作用,2014年某互联网巨头举办了一场大数据竞赛,参赛队伍在1000个以上,到最后,这里面几乎所有的参赛队伍都用了相同的一套算法,因为算的优劣是比较容易评判的,不同算法的特性是不一样的,而且可供选择的算法种类是有限的。但是特征的选取和衍生却有极大的不定性,100个人眼中可能有 100种不同的特征,所以这种大赛到了后期,往往大家比拼的就是特征选取的好坏。在算法相对固定的情况下,可以说好特征决定了好结果。
(4)模型训练。如图二 所示的“逻辑回归二分类”组件表示的是算法训练过程,训练数据经过了数据预处理和特征工程之后进入算法训练模块,并且生成模型。在“预测”组件中,读取模型和预测集数据进行计算,生成预测结果。
(5)模型评估。机器学习算法的计算结果一般是一个模型,模型的质量直接影响接下来的数据业务。对于模型的成熟度的评估,其实就是对于整套机器学习流程的评估。
(6)离线/在线服务。在实际的业务运用过程中,机器学习通常需要配合调度系统来使用。具体的案例场景如下:每天用户将当日的增量数据流入数据库表里,通过调度系统启动机器学习的离线训练服务,生成最新的离线模型,然后通过在线预测服务(通常通Restf1 API,发送数据到服务器的算法模型进行计算,然后返回结果)进行实时的预测。具体架构如图 三所示。利用这种架构就实现了离线训练和在线预测的结合,串联了从离线到在线的整个业逻辑。
🎶二、数据源结果
前面已经介绍了机器学习的基本流程,下面将针对机器学习的数据结构进行介绍。如果把机器学习算法比作一个数据加工场,那么进入工厂的数据就是被算法用来加工的原材料,机器学习算法需要的数据是什么样结构的呢?如果经常关注大数据相关的文章,基本会听说过“结构化数据”和“非结构化数据”这两个词,当然这里面还能行生出“半结构化数据”,下面分别介绍一下这几种数据的结构。
(1)结构化数据。结构化数据是指我们在日常数据库处理中经常看到的日志类数据乡构,是以矩阵结构存储在数据库中的数据,可以通过二维表结构来显示,如图四。
结构化数据主要由两个部分组成,一个部分是每个字段的含义,也就是图五中的 agesex、cp 等字段头,另一个部分是每个字段的具体数值。通常来讲,机器学习算法处理的数据都是结构化的数据,因为机器学习需要把数据带入矩阵去做一些数学运算,结构化数据原生是以矩阵形态存储的,所以机器学习算法通常是只支持结构化数据的。
结构化数据中还有两个非常重要的概念需要介绍一下,即特征(Featare)和目标列(Label)。这是机器学习算法中最常出现的两个名词,其中特征表示的是数掘所描述对象的属性、如用一组数据来形容人,那么这个人的身高、休重、性别和年龄都是特征。在结构化数据的数据集中,每一列数据通常就对应一个特征。
目标列表示的是每一份数据的打标结果,因为前面也介绍过,机器学习的原理其实是从历史数据中来学习经验,目标列表示的是这一组数据的结果。例如,我们想通过一份体检数据来预测对象是否有心脏病,需要先通过成千上万份的训练数据来生成模型,这成上万份的训练数据需要打标,也就是说机器要事先知道什么样体检指标的人患病了,什么样的人没有患病,这样才能学习出预测模型。通过一个例子来说明,如图1-9所示为一心脏病预测需要的数据结果,其中框起来的字段表示的是对象是否患病,这一列是目标列其他3个字段 age、sex 和 cp描述的是对象的特征,是特征列。
(2)半结构化数据。半结构化数据是指按照一定的结构存储,但不是二维的数据库行存储形态的数据。比较典型的半结构化数据就是 XML扩展名的存储数据,如图六所示。
另一种半结构化数据就是在数据表中,某些字段是文本型的,某些字段是数值型的。见表七。
ID | Occupation | Income |
---|---|---|
小李 | 老师 | 241 |
小王 | 厨师 | 521 |
小刘 | 司机 | 421 |
小方 | 运动员 | 23636 |
半结构化数据常用于一些数据的传递,但是在机器学习算法相关的应用方面还有一定距离,需要做数据转换把半结构化数据转为结构化数据来进行操作。
(3)非结构化数据。非结构化数据的数据挖掘一直以来是机器学习领域的热点话题特别是随着深度学习的发展,目前对于非结构化数据的处理似乎找到了方向。典型的非构化数据就是图像、文本或者是语音文件。该些数据不能以矩阵的结构存储,目前的做法也是通过把非结构化数据转为二进制存储格式,然后通过算法来挖掘其中的信息。第6和第7章将详细介绍如何使用深度学习算法实现非结构化数据的处理。
以上就是对于真实业务场景下需要处理的3类数据结构的介绍。机器学习算法对于经构化数据的支持是比较好的,对于平结构化数据和非结构化数据,在真实的业务场景下,通常是先把这两类数据做转化,然后才通过算法来进行数据控掘。
iheait 是目标队列,age、sex和cp为特征队列,这就是一个典型的监督学习的训练数据集。因为监督学习依赖于每个样木的打标,可以得到每个特征序列映射到的确切的目标值是什么,所以常用于回归以及分类场景。
聚类算法 | K-Means、DBSCAN 等 |
---|---|
推荐算法 | 协同过滤等 |
相较于监督学习,无监督学习的一大好处就是不依赖于打标数据,在很多特定条件下特别是打标数据需要依靠大量人工来获得的情况下可以尝试使用无监督学习或者半监督
学习来解决问题。
(3)半监督学习。半监督学习(Semi-supervisedLearning),是最近几年逐渐开始流行的一种机器学习种类。上文中也提到,在一些场景下获得打标数据是很耗费资源的,但是无监督学习对于解决分类和回归这样场景的问题又有一些难度。所以人们开始尝试通过对样本的部分打标来进行机器学习算法的使用,这种部分打标样本的训练数据的算法应用,就是半监督学习。目前很多半监督学习算法都是监督学习算法的变形,本书将介绍一种半监督学习算法–标签传播算法。其实目前半监督算法已经有很多的应用了,推荐大家去深入了解。
🎶 三、算法分类
上面对于机器学习的流程和数据源结构都进行了介绍,下面对于算法的分类进行一个简单的说明。机器学习算法包含了聚类、回归、分类和文本分析等几十种场景的算法,常用的算法种类为 30种左右,而且还有很多的变形,我们将机器学习分为4种,分别是兴督学习、无监督学习、半监督学习和增强学习。
(1)监督学习。监督学习(supervised learning),是指每个进入算法的训练数据样本都有对应的期望值也就是目标值,进行机器学习的过程实际上就是特征值和目标队列映身的过程。例如,我们已知一只股票的历史走势以及它的一些公司盈利、公司人数等信息:想要预测这只股票未来的走势。那么在训练算法模型的过程中,就是希望通过计算得到一个公式,可以反映公司盈利、公司人数这些信息对于股票走势的影响。通过过往的一些据的特征以及最终结果来进行训练的方式就是监督学习法。监督学习算法的训练数据源需要由特征值以及目标队列两部分组成。
(4)强化学习。强化学习(ReinorcementLearning),是一种比较复杂的机器学习和强调的是系经与外界术既部交及。得外品的反债,然后决定自身的行为。强化学习是人工智能领域的一个热惠章法种类,费型的案例包括无人汽车驾驶和阿尔法狗下围木书介绍的分词算法隐马尔科夫就是一种强化学习的思想。
上面就是关于监督学习、无监督学习、半监督学习和强化学习的一些介绍。监督主要解决的是分类和回归的场最,无监督学习主要解决聚类场景,半监督学习解决的是些打标数据比较难获得的分类场景,强化学习主要是针对流程中不断需要推理的场景。
🎶 四、过拟合问题
机器学习模型训练的过程中会遇到非常多的问题,如参数或者梯度的设置不合理、据的清洗不够彻底,但是如果问一个数据挖掘工程师什么问题是数据挖掘领域中最常见的问题,他的答案八成是“过拟合”,这也是为什么我们要单独拿出一小节来讲一下数据挖掘过程中的过拟合问题。
过拟合(Over-Gtting),从字面的意义上理解的话就是过度拟合的意思,常发生在线性分类器或者线性模型的训练和预测当中。过拟合现象是在数据挖掘过程中经常会遇到的问题,如通过训练集训练了一个模型,这个模型对于训练集的预测准确率很高,可以达到95%,但是我们换一份数据集进行预测,发现准确率只有30%,出现这种情况的原因很有可能是训练的过拟合现象。
过拟合的原理就是机器学习算法过度学习了训练集数据,听上去有点难以理解,下面通过一个例子进行解释。假设我们有一组二维数据展示在坐标系当中,我们想对这个二维数据进行一个线性的回归训练。如果拟合出的曲线是如图 1-12所示的虚线,其实是一种欠拟合(underftting)的形式,曲线拟合的并不理想,因为并没有通过回归算法很好地拟合出一种符合数据分布的曲线。
如果最终拟合出来的是如图所示情况,就是一种比较理想的状况,我们看到最终的曲线走势已经几乎刻画了数据的分布,这种曲线是比较理想的。那么什么是过拟合呢?
所示这种情况是典型的过拟合,图中的曲线已经跟数据分布完全一致。那么有的人可能会问,做线性回归的目的不就是为了找到最符合数据走向的曲线么,为什么当我们拿到的结果跟数据走向完全匹配的时候反而不好呢?这是因为训练线性回归曲线或者线性分类器的目的是要对于其他数据集进行分类或者预测。
结束语🥇
以上就是机器学习
持续更新机器学习教程,欢迎大家订阅系列专栏🔥机器学习
你们的支持就是曼亿点创作的动力💖💖💖