机器学习基础

机器学习基础

学习目标

  • 掌握机器学习相关概念
  • 掌握机器学习如何构建机器学习模型过程

1. 为什么学习机器学习?

随着技术的不断发展, 我们使用的分析方式也在不断发展和变化。过去,企业专注于收集有关其客户和产品的数据进行描述性、诊断性分析。但越来越多地,我们希望从收集的数据中进行预测性和规范性分析

1.1 什么是预测分析?

数据分析四个层次: 描述性分析、诊断性分析、预测性分析、规范性分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0JB21uXJ-1630935405795)(images/wps4aD33z.png)]

接下来我们通过案例对数据分析4个层次简单了解。

1.2 数据分析4个层次

1.2.1描述性(Descriptive)分析

当前的业务现状如何?

案例:我们之前做过的女鞋业务的零售会员分析,您会看到每个月会员的增量、存量,不同地区的会员运营情况以及百分比。

总结:

  • 描述性分析关注过去
    • 利用历史数据,通过报表,可视化仪表板等形式描述当前业务状况,发现当前的业务问题
    • Excel, SQL,Pandas, BI工具可以帮助我们完成描述性分析

1.2.2 诊断性(Diagnostic)分析

某些问题为什么会发生?

案例:诊断分析举例:

  • 流量波动分析 或者 活动专题分析

分析:回到我们之前的案例,现在我们知道上个月会员增量下降,找到会员增量下降的原因就属于诊断性分析, 是客流量下降导致、还是营销活动不给力、还是热门产品库存出现了问题?

总结:与描述性分析一样,诊断分析也关注过去。但诊断性分析寻找因果关系来说明事情发生的原因。 目的是比较过去发生的事件以确定原因。

我们之前课程学到的内容,如Excel,Tableau,SQL,Pandas等工具就可以帮助我们进行诊断性分析。

1.2.3 预测性(Predictive)分析

我们的业务未来会咋样?

案例:哪些用户会购买我们的商品感兴趣?哪种营销方式会对业务带来最有益的影响?

通过预测分析,我们会知道可能会发生什么。预测分析会用到机器学习算法,帮助预测产品的销量如何?

  • 总结:预测性,规范性分析关注未来
    • 利用历史数据发现规律,创建数据模型,预测业务走向,基于预测结果确定未来运营方案
    • 除了Excel, SQL,Pandas, BI工具之外还需要用到机器学习算法

1.2.4 规范性(Prescriptive)分析

我们要采取何种对策?

在预测性分析的基础上更进一步,需要得出我们要怎么做才能驱动我们的业务快速增长,并明确具体落地步骤(1,2,3……)

使用算法预测不同的方案效果,选择最佳方案

机器学习算法可以帮助我们进行预测/规范性分析。

1.3 为什么学习机器学习?

  • 通过机器学习获取更有价值的信息
    • 预测用户是否会流失,针对可能流失用户做一系列运营策略
    • 预测用户是否存在违约风险,针对可能违约用户拒绝放贷或者提供较高利率

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VfUcKP1c-1630935405797)(images/image-20210702180831950.png)]

1.4 机器学习有哪些应用场景?

  • 机器学习算法在数据分析领域具体应用举例
  • 本阶段我们的学习重点是机器学习算法的使用
    • 利用已有机器学习算法解决业务问题, 而不是去创造新算法
    • 相关三方库都有算法相关实现
    • 着重学习三类算法:聚类分析,回归分析,分类分析

2. 什么是机器学习

2.1 机器学习基础定义

在开始讲解术语概念之前我们首先梳理下之前讲到的一些概念。

(基本认识)机器学习专门研究计算机怎样模拟或实现人类的学习行为,使之不断改善自身性能。是一门能够发掘数据价值的算法和应用,它是计算机科学中最激动人心的领域。我们生活在一个数据资源非常丰富的年代,通过机器学习中的自学习算法,可以将这些数据转换为知识。

(机器学习库)借助于近些年发展起来的诸多强大的开源库,我们现在是进入机器学习领域的最佳时机。

(机器学习目的)从20世纪后半段,机器学习已经逐渐演化成为人工智能的一个分支,其目的是通过自学习算法从数据中获取知识,进而对未来进行预测。与以往通过大量数据分析而人工推导出规则并构造模型不同,机器学习提供了一种从数据中获取知识的方法,同时能够逐步提高预测模型的性能,并将模型应用于基于数据驱动的决策中去。

(应用)机器学习技术的存在,使得人们可以享受强大的垃圾邮件过滤带来的便利,拥有方便的文字和语音识别软件,能够使用可靠的网络搜索引擎,同时在象棋的网络游戏对阵中棋逢对手,而且Google已经将机器学习技术应用到了无人驾驶汽车中。

机器学习模型=数据+机器学习算法

2.2 确定是否为机器学习问题

机器学习:从已有的经验中学习经验,从经验中去分析

接下来的若干问题请大家思考哪些问题可以用机器学习方式处理?

(1)计算每种颜色箱子的个数?----确定的问题

(2)计算一组数据平均值大小?----数值计算问题

机器学习目的是建立预测模型–看是否有预测的过程

(1)确定收到的邮件是否为垃圾邮件?

(2)获取2014年世界杯冠军的名字?2018年?

(3)自动标记你在Facebook中的照片

(4)选择统计课程中成绩最高的学生(不是)

(5)考虑购物习惯,推荐相关商品?

(6)根据病人状况确定属于什么疾病?

(7)预测2022年人民币汇率涨or不涨?

(8)计算公司员工的平均工资?

3. 基于规则学习和基于模型的学习

没有机器学习出来之前,我们需要进行判断预测,就需要采用基于规则的学习方式,如下案例:

3.1 基于规则学习

大家思考,上述的基于规则的学习有什么问题?我们有什么方法可以改进?

3.2 基于模型学习

基于模型学习就是在基于规则学习之上,避免因为专家带来主观因素的影响。

3.3 房价预测问题

接下来在通过房价预测问题看一下如何理解基于模型的预测:

机器学习学习的是什么?

构建机器学习模型,如:y=kx+b,k和b是参数,x和y是特征和类别标签列。机器学习学习的是k和b的参数,如果k和b知道了,直接利用y=kx+b进行预测分析。

4. 机器学习数据的基本概念

房价预测需要有房价的数据集,作为数据分析师,数据对于我们重要性不言而喻,接下来就开始学习数据集部分:

4.1 数据分析师利器—数据集基本概念

4.1.1 电商案例引入

首先,通过电商购买数据集了解机器学习数据集的构成:其中每一个用户都由age年龄、income收入、student是否为学生、credit_rating信用级别和buy_computer是否购买电脑组成。

如果通过机器识别用户是否购买电脑,需要将数据集中各字段进行数字化:

数据集的描述:

4.1.2 数据处理细节

上述案例包括了数据基本处理及特征工程:

  • 数据基本处理:即对数据进行缺失值、去除异常值等处理
  • 特征工程:使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好作用过程。意义:会直接影响机器学习的效果

特征工程包括:

1)特征提取

  • 将任意数据(如文本或图像)转换为可用于机器学习的数字特征

(2)特征转换(预处理)

  • 通过一些**转换函数(方法)**将特征数据转换成更加适合算法模型的特征数据过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-obNIF8hD-1630935405799)(images/wpsSqVZVW.png)]

如上述的电商案例中我们可以将Labelencoder(将类别数据数字化)作为特征转换操作。

(3)特征降维

  • 指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程
  • 减少特征属性的个数,确保特征属性之间的相互独立性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CO3bFyWA-1630935405801)(images/wpsUjlPCf.png)]

如何验证我们掌握了对数据集概念理解,接下来我们有鸢尾花和电商数据集一起巩固。

4.2 机器学习数据集基本概念强化实践(一)

鸢尾花Iris Dataset数据集是机器学习领域经典数据集,该数据集可以从加州大学欧文分校(UCI)的机器学习库中得到。鸢尾花数据集包含了150条鸢尾花信息,每50条取自三个鸢尾花中之一:Setosa、Versicolour和Virginica,每个花的特征用下面5种属性描述。

(1)萼片长度(厘米)

(2)萼片宽度(厘米)

(3)花瓣长度(厘米)

(4)花瓣宽度(厘米)

(5)类别(Setosa、Versicolour、Virginica)

花的萼片是花的外部结构,保护花的更脆弱的部分(如花瓣)。在许多花中,萼片是绿的,只有花瓣是鲜艳多彩的,然而对与鸢尾花,萼片也是鲜艳多彩的。下图中的Virginica鸢尾花的图片,鸢尾花的萼片比花瓣大并且下垂,而花瓣向上。如下图:

在鸢尾花中花数据集中,包含150个样本和4个特征,因此将其记作150x4维的矩阵,,其中R表示向量空间,这里表示150行4维的向量,记作:

我们一般使用上标(i)来指代第i个训练样本,使用小标(j)来指代训练数据集中第j维特征。一般小写字母代表向量,大写字母代表矩阵。

表示第150个花样本的第2个特征萼片宽度。在上述X的特征矩阵中,每一行表代表一个花朵的样本,可以记为一个四维行向量

数据中的每一列代表样本的一种特征,可以用一个150维度的列向量表示:

类似地,可以用一个150维度的列向量存储目标变量(类标)

总结:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xruRjzq0-1630935405803)(./images/image-20210706151553991.png)]

4.3 机器学习数据集基本概念强化实践(二)

下面是西瓜数据集,可以通过西瓜的色泽、根蒂、敲声确定一个西瓜是好瓜或坏瓜 :

要进行机器学习,先要有数据。假定我们收集了一批关于西瓜的数据:

{颜色=乌黑,敲声=浊响}

{颜色=青绿,敲声=清脆}

基础概念1】将这组记录的集合称为一个“数据集”(data set),其中每条记录(一行)是关于一个事件或对象(这里说的是西瓜)的描述,也称为一个“样本”(sample)。

基础概念2】而我们所说的西瓜的色泽(一列),这种可以反应事件或对象在某方面的表现或性质的事项,称为“特征”(feature)或“属性”(attribute)”

属性上的取值,如色泽青绿等,这个取值称为属性值(attribute value)。

基础概念3】属性构成的空间称为“属性空间”或样本空间(sample space)或输入空间。比如将西瓜的颜色,敲声作为两个坐标轴,则它们可以张成一个用于描述西瓜的二维空间,每个西瓜都可以在这个空间中找到自己的坐标位置。由于空间中的每个点都对应一个坐标向量,因此我们也把一个样本称作一个“特征向量”(feature vector)。

假设是西瓜数据集的第i个样本,其中是在第j个属性上的取值,如第3个西瓜在第1个属性(颜色)上取值为"乌黑”。d称为样本的"维度数或维数"(dimensionality)。数据集D中的表示第i个样本或示例。

基础概念4】从数据中学得模型的过程称为“学习”(learning)或训练(training),这个过程是通过执行某个学习算法来完成的。训练过程中使用的数据称为“训练数据”(training set)。

**训练数据:**由输入X与输出Y对组成。训练集在数学上表示为:

基础概念5模型有时也称为“学习器”(learner),可以看作是学习算法在给定数据和参数空间上的实例化。

基础概念6】如果希望学得一个能帮助我们判断西瓜是不是“好瓜”的模型,仅仅有前面的样本数据是不够的,要建立这样的关于“预测(prediction)”的模型,我们需要获得训练样本的“结果”信息,如:{(颜色=青绿,敲声=浊响),好瓜}。这里的结果信息,称为样本的“标记(label)”;拥有了标记信息的样本,则称为“样例(example)”。用表示第i个样例,yi是样本x的标识,一般把标记的集合称为标记空间(label space)或输出空间。

学习完模型后,就需要进行预测,预测的过程称为“测试”(testing),被预测的样本称为“测试样本”(testing sample)。

**测试数据:**也是由输入X与输出Y组成,是用于测试训练好的模型对于新数据的预测能力。例如在中学阶段的函数可表示为y=f(x),这里的f指的是通过学习得到的模型,对于测试x,可得到其预测标记y=f(x)。

4.4 总结

数据简介

在数据集中一般:【知道】

  • 一行数据我们称为一个样本,有多少行数据就有多少条样本
  • 一列数据我们称为一个特征(x)
  • 有些数据集有目标值(标签值或者y),有些数据集没有目标值(如上述房价预测案例,房价就是这个数据集的目标值)

数据集的数据构成:【知道】

  • 数据类型一:特征值(x)+目标值(y)(目标值是连续的和离散的)
  • 数据类型二:只有特征值(x),没有目标值(y)

数据分割:【重点】

  • 机器学习一般的数据集会划分为两个部分:
  • 训练数据:用于训练,构建模型
  • 测试数据:在模型检验时使用,用于评估模型是否有效

划分比例:【重点】

  • 训练集:70% 80% 75%
  • 测试集:30% 20% 25%

5. 机器学习分类及场景应用

5.1 监督学习

监督学习(supervised learning)从训练数据(training data)集合中学习模型,对测试数据(test data)进行预测。

通俗易懂地讲:监督学习指的是人们给机器一大堆标记好的数据(有目标值y),比如一大堆照片,标记出哪些是猫的照片,哪些是狗的照片,然后让机器自己学习归纳出算法或模型,然后所使用该算法或模型判断出其他照片是否是猫或狗。代表的算法或模型有Linear regression(线性回归)、Logistic regression(逻辑回归)、SVM(支持向量机)等。如下图流程所示:

5.1.1 利用分类对类标进行预测

分类是监督学习的一个核心问题。在监督学习中,当输出变量Y取有限个离散值时,预测问题便成了分类问题。监督学习从数据中学习一个分类模型或分类决策函数,称为分类器(classifer),分类器对新的输入(新的数据)进行输出的预测(prediction),称为分类(classification)。

分类的类别是两个时,称为二分类问题。

分类的类别是多个时,称为多分类问题。

分类问题包括学习分类的两个过程。在学习过程中,根据已知的训练数据集利用有效的学习方法(算法)学习一个分类器;在分类的过程中,利用学习的分类器对新的输入(新的数据)实例进行分类。

如上述的垃圾邮件就是一个二分类问题,使用相应的机器学习算法判定邮件属于垃圾邮件还是非垃圾邮件。如下图给出了30个训练样本集实例:15个样本被标记为负类别(negative class)(图中圆圈表示);15个样本被标记为正类别(positive class)(图中用加号表示)。由于我们的数据集是二维的,这意味着每个样本都有两个与其相关的值:X1和X2,现在我们可以通过监督学习算法获得一条规则,并将其表示为图中的一条黑色的虚线将两类样本分开,并且可以根据X1和X2值将新样本划分到某个类别中(看位于直线的那一侧)。

例如:根据肿瘤特征判断良性还是恶性,得到的是结果是“良性”或者“恶性”,是离散的。

总结:

输出变量为有限个离散值的情况称为分类问题(classification)

如果类别为正类或负类的时候,这个是一个二分类问题

如果类别是一个多类别的时候,这就是一个多分类问题

分类问题包括了学习和分类两个过程:

(1)学习:根据已知的训练数据集利用有效的学习方法学习一个分类器。

(2)分类:利用学习到的算法判定新输入的实例对其进行分类。

5.1.2 利用回归预测连续输出值

另一类监督学习方法针对连续型输出变量进行预测,也就是所谓的回归分析(regression analysis)。回归分析中,数据中会给出大量的自变量(x)和相应的连续因变量(对应输出结果y),通过尝试寻找自变量和因变量的关系,就能够预测输出变量。

如下图中,给定了一个自变量x和因变量y,拟合一条直线使得样例数据点与拟合直线之间的距离最短,最常采用的是平均平方距离来计算。如此,我们可以通过样本数据的训练来拟合直线的截距和斜率,从而对新的输入变量值所对应的输出变量进行预测。

比如生活中常见的房价问题,横轴代表房屋面积,纵轴代表房屋的售价,我们可以画出图示中的数据点,再根据使得各点到直线的距离的平均平方距离的最小,从而绘制出下图的拟合直线。根据生活常识随着房屋面积的增加,房价也会增长。

回归问题的分类有:根据输入变量的个数分为一元回归多元回归;按照输入变量和输出变量之间的关系分为线性回归非线性回归(模型的分类)。

预测房价,根据样本集拟合出一条连续曲线。

5.2 无监督学习

通俗地讲:无监督学习(unsupervised learning)指的是人们给机器一大堆没有分类标记的数据(无目标值y),让机器可以对数据分类、检测异常等。

5.2.1 通过聚类发现数据的子群

聚类是一种探索性数据分析技术,在没有任何相关先验信息的情况下(相当于不清楚数据的信息),它可以帮助我们将数据划分为有意义的小的组别(也叫簇cluster)。其中每个簇内部成员之间有一定的相似度,簇之间有较大的不同。这也正是聚类作为无监督学习的原因。

下图中通过聚类方法根据数据的X1和X2两个特征值之间的相似性将无类标的数据划分到三个不同的组中。

【例子】我们可以用下图表示西瓜的色泽和敲声两个特征,分别为X1和X2,我们可以将训练集中的西瓜分成若干组,每一组称为一个“簇”,这些自动形成的簇可能对应一些潜在的概念划分,如“浅色瓜”、“深色瓜”、“本地瓜”或“外地瓜”。通过这样的学习我们可以了解到数据的内在规律,能为更深入地分析数据建立基础。

需要注意的是我们事先并不知道西瓜是本地瓜、浅色瓜,而且在学习过程中使用的训练样本通常不拥有标记(label)信息。

5.2.2 数据压缩中的降维

数据降维(dimensionality reduction)是无监督学习的另一个子领域。通常,面对的数据都是高维的,这就对有限的数据存储空间以及机器学习算法性能提出了挑战。无监督降维是数据特征预处理时常用的技术,用于清除数据中的噪声,能够在最大程度保留相关信息的情况下将数据压缩到额维度较小的子空间,但是同时也可能会降低某些算法准确性方面的性能。

如下图一个三维空间的数据映射到二维空间的实例。

5.3 总结

除了上述学习方式,还有半监督学习,深度学习、迁移学习等学习方式,大数据分析领域用到的不多,不在我们课程讨论范围内。

In Out 目的 案例
监督学习 (supervised learning) 有标签 有反馈 预测结果 猫狗分类 房价预测
无监督学习 (unsupervised learning) 无标签 无反馈 发现潜在结构 “物以类聚,人以群分”

6. 如何构建机器学习模型

机器学习工作流程总结:

1.获取数据

2.数据基本处理

3.特征工程

4.机器学习(模型训练)

5.模型评估

结果达到要求,上线服务

没有达到要求,重新上面步骤

我们使用机器学习监督学习分类预测模型的工作流程讲解机器学习系统整套处理过程,如下图。

整个过程包括了数据预处理、模型学习、模型验证及模型预测。其中数据预处理包含了对数据的基本处理,包括特征抽取及缩放、特征选择、特征降维和特征抽样;我们将带有类标的原始数据划按照82原则分为训练数据集和测试集。使用训练数据集用于模型学习算法中学习出适合数据集的模型,再用测试数据集用于验证最终得到的模型,将模型得到的类标签和原始数据的类标签进行对比,得到分类的错误率或正确率。

当有新数据来的时候,我们可以代入模型进行预测分类。

注:特征缩放、降维等步骤中所需的参数,只可以从训练数据中获取,并能够应用于测试数据集及新的样本,但仅仅在测试集上对模型进行性能评估或许无法监测模型是否被过度优化(后面模型选择中会提到这个概念)。

6.1 数据预处理(特征工程)

数据预处理是机器学习应用的必不可少的重要步骤之一,以提到的Iris Dataset为例,将花朵的图像看做原始数据,从中提取有用的特征,其中根据常识我们可以知道这些特征可以是花的颜色、饱和度、色彩、花朵整体长度以及花冠的长度和宽度等。首先了解一下几个数据预处理方法:

(数据归一化与标准化,缺失值处理)大部分机器学习算法为达到性能最优的目的,将属性映射到[0,1]区间(归一化),或者使其满足方差为1、均值为0的标准正态分布(标准化),从而提取出的特征具有相同的度量标准。

**(数据降维)**当源数据的某些属性间可能存在较高的关联,存在一定的数据冗余。此时,我们使用机器学习算法中的降维技术将数据压缩到相对低纬度的子空间中是非常有用的。数据降维算法不仅可以能够使得所需的存储空间更小,而且还能够使得学习算法运行的更快。

(数据集划分)为了保证算法不仅在训练集上有效,同时还能很好地应用于新数据,我们通常会随机地将数据集划分为训练数据集测试数据集,使用训练数据集来训练及优化我们的机器学习模型,完成后使用测试数据集对最终模型进行评估。

数据预处理也称作特征工程,所谓的特征工程就是为机器学习算法选择更为合适的特征。当然,数据预处理不仅仅还有上述的三种。

6.2 选择预测模型进行模型训练

任何分类算法都有其内在的局限性,如果不对分类任务预先做一些设定,没有任何一个分类模型会比其他模型更有优势。因此在实际的工作处理问题过程中,必不可少的一个环节就是选择不同的几种算法来训练模型,并比较它们的性能,从中选择最优的一个。

(1)如何选择最优的模型呢?我们可以借助一些指标,如分类准确率(测量值和真实值之间的接近程度)、错误率等指标衡量算法性能。

(2)疑问:选择训练模型的时候没有使用测试数据集,却将这些数据应用于最终的模型评估,那么判断究竟哪一个模型会在测试数据集有更好的表现?

针对该问题,我们采用了交叉验证技术,如10折交叉验证,将训练数据集进一步分为了训练子集和测试子集,从而对模型的泛化能力进行评估。

(3)不同机器学习算法的默认参数对于特定类型的任务来说,一般都不是最优的,所以我们在模型训练的过程中会涉及到参数和超参数的调整。

什么是超参数呢?超参数是在模型训练之前已经设定的参数,一般是由人工设定的。

什么是参数呢?参数一般是在模型训练过程中训练得出的参数。

6.3 模型验证与使用未知数据进行预测

使用训练数据集构建一个模型之后可以采用测试数据集对模型进行测试,预测该模型在未知数据上的表现并对模型的泛化误差进行评估。如果对模型的评估结果表示满意,就可以使用此模型对以后新的未知数据进行预测。(模型评估部分会专门在下节讲解~)

但什么是泛化误差呢?我们带着这个问题分别对模型验证这块涉及到的基础概念做一个深入理解:

基础概念】通常我们把分类错误的样本数占样本总数的比例称为“错误率(error rate)”,如果在m个样本中有a个样本分类错误,则错误率为E=a/m;从另一个角度,1-a/m则称为“分类精度(accurary)”,也就是“精度+错误率=1”。

我们将模型(或学习器)的实际输出与样本的真实值之间的差异称为**“误差(error)”**,学习器在训练集上的误差称为“训练误差(training error)”或经验误差(empirical error),在新的样本上的误差称为“泛化误差(generalization error)”。

我们在模型验证的时候期望得到泛化误差小的学习器

6.4 交叉验证

在机器学习中常用的精度测试方法,叫做交叉验证。它的目的得到可靠稳定的模型,具体的做法是拿出大部分数据进行建模,留小部分样本用刚刚建立的模型进行预测,并求出这小部分样本预测的误差,交叉验证在克服过拟合问题上非常有效。接下来分别阐述:

6.4.1 简单交叉验证

简单交叉验证的方法是这样的,随机从最初的样本中选择部分,形成验证数据,而剩下的当作训练数据。一般来说,少于三分之一的数据被选作验证数据。

6.4.2 K-Fold评估模型性能

验证模型准确率是非常重要的内容,我们可以将数据手工切分成两份,一份做训练,一份做测试,这种方法也叫“留一法”交叉验证。这种方法很有局限,因为只对数据进行一次测试,并不一定能代表模型的真实准确率。因为模型的准确率和数据的切分是有关系的,在数据量不大的情况下,影响比较大。因此我们提出了K折交叉验证,K-Fold交叉验证。

K-Fold交叉验证,将数据随机且均匀地分成k分,常用的k为10,数据预先分好并保持不动。假设每份数据的标号为0-9,第一次使用标号为0-8的共9份数据来做训练,而使用标号为9的这一份数据来进行测试,得到一个准确率。第二次使用标记为1-9的共9份数据进行训练,而使用标号为0的这份数据进行测试,得到第二个准确率,以此类推,每次使用9份数据作为训练,而使用剩下的一份数据进行测试,这样共进行10次,最后模型的准确率为10次准确率的平均值。这样就避免了数据划分而造成的评估不准确的问题。

如下图:

7. 模型选择

这里以回归预测模型选择为例,当然一个模型可能有很多种情况出现,那么我们如何选择最优的模型呢?

7.1 哪条曲线拟合效果是最好的?

观察上述图示:

利用已知的样本点在图示的坐标轴上画出了绿色的曲线,表示源数据的大致分布状况。假设我们使用后面要学习的线性回归去解决样本点拟合问题, 比如用多项式表示线性回归模型:,当n=0时,y=k,就是图一的平行于x轴的直线,此时该直线不能很好的拟合样本数据;当n=1时,y=kx+B,得到图2的一次直线,我们可以注意到无论怎么调整该直线都不能很好的拟合样本数据;上述n=0或1时是模型的欠拟合情况。当n=3时,,得到图3的三次函数拟合曲线,这种情况是能够很好的拟合样本数据;但是,当n=9时,得到图4的拟合曲线。当n取值越高的时候,当前样本的数据能够很好的拟合,但是在新的数据上效果却很差,这时出现了过拟合情况。

通过上述图大家应该能看到,即便我们确定了使用线性回归模型去处理,我们在选择参数的时候也是有很多种情况。如,可以调整不同的k1、k2和k3的值,同时也对应了不同的拟合直线,我们希望可以从这些参数中找到拟合较好的直线,但不能过分的好,因为我们要考虑当新数据来了模型的分类情况。

由此我们引入了模型的“泛化”能力的概念。

7.2 泛化

机器学习的目标是使学得的模型能很好地适用于“新样本”,而不是仅仅在训练样本上工作的很好;即便对聚类这样的无监督学习任务,我们也希望学得的簇划分能适用于没在训练集中出现的样本。学得模型适用于新样本的能力,称为“泛化”(generalization)能力。具有强泛化能力的模型能很好地适用于整个样本空间。(现实任务中的样本空间的规模通常很大,如20 个属性,每个属性有10个可能取值,则样本空间的规模是10*20)。

还有一个泛化的概念:

基础概念】模型具有好的泛化能力指的是:模型不但在训练数据集上表现的效果很好,对于新数据的适应能力也有很好的效果。

当我们讨论一个机器学习模型学习能力和泛化能力的好坏时,我们通常使用过拟合和欠拟合的概念,过拟合和欠拟合也是机器学习算法表现差的两大原因。

基础概念过拟合overfitting:模型在训练数据上表现良好,在未知数据或者测试集上表现差。如下图:机器已经基本能区别天鹅和其他动物了。然后,很不巧已有的天鹅图片全是白天鹅的,于是机器经过学习后,会认为天鹅的羽毛都是白的,以后看到羽毛是黑的天鹅就会认为那不是天鹅。

基础概念欠拟合underfitting:在训练数据和未知数据上表现都很差。因为机器学习到的天鹅特征太少了,导致区分标准太粗糙,不能准确识别出天鹅。

7.3 欠拟合

图1和图2都是模型欠拟合的情况:即模型在训练集上表现的效果差,没有充分利用数据,预测准确率很低,拟合结果严重不符合预期。

产生的原因:模型过于简单

出现的场景:欠拟合一般出现在机器学习模型刚刚训练的时候,也就是说一开始我们的模型往往是欠拟合也正是因为如此才有了优化的空间,我们通过不断优化调整算法来使得模型的表达能力更强。

解决办法:

(1)添加其他特征项:因为特征项不够而导致欠拟合,可以添加其他特征项来很好的解决。

(2)添加多项式特征,如图(3)我们可以在线性模型中通过添加二次或三次项使得模型的泛化能力更强。

(3)减少正则化参数,正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,需要减少正则化参数。

7.4 过拟合

上图是模型过拟合的情况:即模型在训练集上表现的很好,但是在测试集上效果却很差。也就是说,在已知的数据集合中非常好,再添加一些新数据进来效果就会差很多。

产生的原因:可能是模型太过于复杂数据不纯训练数据太少等造成。

出现的场景:当模型优化到一定程度,就会出现过拟合的情况。

解决办法:

(1)重新清洗数据:导致过拟合一个原因可能是数据不纯导致的,

(2)增大训练的数据量:导致过拟合的另一个原因是训练数据量太小,训练数据占总数据比例太低。

(3)采用正则化方法对参数施加惩罚:导致过拟合的原因可能是模型太过于复杂,我们可以对比较重要的特征增加其权重,而不重要的特征降低其权重的方法。常用的有L1正则L2正则,我们稍后会提到。

注意:模型的过拟合是无法彻底避免的,我们能做的只是缓解,或者说减小其风险,因为机器学习面临的是NP难问题(这列问题不存在有效精确解,必须寻求这类问题的有效近似算法求解),但是有效算法必然是在多项式时间内运行完成的,因此过拟合是不可避免的。在实际的任务中往往通过多种算法的选择,甚至对同一个算法,当使用不同参数配置时,也会产生不同的模型。那么,我们也就面临究竟选择哪一种算法,使用哪一种参数配置?这就是我们在机器学习中的“模型选择(model select)”问题,理想的解决方案当然是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型。我们更详细的模型选择会有专门的专题讲到,如具体的评估方法(交叉验证)、性能度量准则、偏差和方差折中等。

7.5 奥卡姆剃刀原则

奥卡姆剃刀原则是模型选择的基本而且重要的原则。

模型是越复杂,出现过拟合的几率就越高,因此,我们更喜欢采用较为简单的模型。这种策略与应用就是一直说的奥卡姆剃刀(Occam’s razor)或节俭原则(principe of parsimony)一致。

奥卡姆剃刀:给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取。

7.6 总结

  • 泛化能力:学得模型适用于新样本的能力。泛化能力越强,模型预测效果越好
  • 过拟合:模型在训练集上表现好,在测试集上表现差
  • 欠拟合:模型在训练集和测试集上效果都不好
  • 奥卡姆剃刀原则:同样的模型效果,选择简单的模型

8. 机器学习库基础

借助于近些年发展起来诸多强大的开源库,我们现在是进入机器学习领域的最佳时机。不用像前些年那样需要自己使用编程语言一步一步实现机器学习算法,而是使用成熟的机器学习库帮我完成做好的算法,我们只需要了解清楚各个模型的参数如何调整就能够将模型应用于实际的业务场景。

基于Python的scikit-learn库

  • 简单高效的数据挖掘和数据分析工具库
  • 可供大家使用,可在各种环境中重复使用
  • 建立在NumPy,SciPy和matplotlib上
  • 开源免费
  • scikit-learn官网

你可能感兴趣的:(机器学习,r语言,big,data,数据库,机器学习)