- 数据分析与挖掘算法:Python实战
- 张晓东
- 2723字
- 2022-05-06 13:10:45
1.3 数据挖掘与机器学习的关系
在前文中明确了什么是数据挖掘。为了厘清数据挖掘与机器学习的关系,这里有必要对机器学习进行介绍。
那么,什么是机器学习呢?机器学习专门用于研究计算机如何模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构并不断改善自身的性能。
通俗地讲,机器学习就是计算机模仿人类的思维和学习过程,实现自主学习,并做出判断与决策。机器学习要用有限的可观测样本训练分类器(虽然几乎所有文献都叫作分类器,但笔者认为叫作“学习器”更为妥当),使分类器自己理解、学习、归纳样本特征的分布规律,从而使其能够对随机输入的未知数据做出判断和决策。
机器学习与人脑思考的方式一样:通过对历史数据的训练进行学习,从而形成自己的思维模式(特征规律等),再对输入的数据进行分类识别与预测。机器学习与人脑思考的对比如图1-3所示。
图1-3
1.数据集
数据集包括训练集、验证集和测试集,这3个词在机器学习中经常被提到,但初学者非常容易弄混。下面简单介绍一下这3个词。
训练集(Training_Set)是机器学习的样本数据集,用于训练模型内参数的数据集。机器学习通过匹配一些参数来建立一种分类方式,也就是建立一个分类器。训练集主要用来训练模型。
验证集(Validation_Set)是调整分类器参数的数据集,用于在训练过程中检验模型的状态和收敛情况。验证集通常用于调整超参数[1],根据若干组模型在验证集上的表现决定哪组超参数拥有最好的性能。同时验证集在训练过程中还可以用来监控模型是否发生过拟合,一般来说,验证集表现稳定后,若继续训练,则训练集的表现还会继续上升,但是验证集的表现会出现不升反降的情况,这样一般就发生了过拟合。所以验证集也被用来判断何时停止训练。
测试集(Test_Set)是评估模型泛化能力的数据集。即之前模型使用验证集确定了超参数,使用训练集调整了参数,最后使用一个从没有见过的数据集来判断这个模型是否同样适用。
总结一下:训练集用于训练模型,验证集用于调整和选择模型,测试集用于评估最终的模型。当我们拿到数据之后,规范的方法是把数据分成这样的3份:训练集(60%)、验证集(20%)、测试集(20%)。形象地说,训练集就是学生在上课学习,验证集就是课后的作业,测试集就是期末的考试,最终我们根据以上数据评选出优秀的学生(模型)。
2.机器学习的类别
自20世纪90年代以来,从样本中学习被认为是最有前途的机器学习的途径,根据训练期间接受的监督数量和监督类型,可以将机器学习分为以下4类:无监督学习、监督学习、半监督学习和强化学习。
(1)无监督学习是一种自学习的学习方式,通过对没有标记的训练样本进行学习。也就是说,无监督学习没有将目标变量放入模型里,完全让模型自己去挖掘数据中的内在联系或挖掘未知数据间隐藏的结构关系。由于输入分类器的样本都是未经标注的,分类器在处理完这些数据后也就不会得到相应的反馈信息来评价学习结果。常用的无监督学习算法有关联规则和聚类分析。
(2)监督学习是一种借助人工参与的学习方式,用一定数量的有标记数据作为训练样本(通俗地讲,就是标记出分类的目标变量,以及影响目标变量变化的自变量)。监督学习通过对有标记的训练样本进行学习,尽可能正确地对训练样本之外的样本进行预测。在监督学习中,每个输入样本都包括样本的特征向量和样本标记。在训练过程中,训练算法通过分析样本的特征向量,将预测结果与训练样本的实际标记情况进行比较,然后不断调整模型,直到模型的准确率达到预期的准确率。监督学习常用于样本分类问题和回归问题,一般分为3步,分别是标记样本、训练模型和估计概率。常用的监督学习算法有逻辑回归、决策树和反向传递神经网络。
(3)半监督学习是一种根据已知的有限有标记数据和大量无标记数据,在分类过程中不断训练模型的学习方式。该模型也可被用来预测,但是在建立模型前首先要用已知的有标记数据训练模型,使模型学习数据的内在结构联系,以便合理地组织数据进行预测。半监督学习可以使分类的准确性得到很大的提高,并且这种模型更类似人的学习过程,能够像人一样触类旁通。在实际的使用过程中,有标记数据较难获得,因为标记一般要人去操作,而在实际中由人去标记海量的数据并不现实,人只能标记极少的数据,其他都要计算机通过算法实现标记。并且利用计算机标记数据再去训练模型,使模型不断学习和更新,这种方式具有较高的实用价值。常用的半监督学习算法有支持向量机。
(4)强化学习是一种通过与环境的试探性交互来估计和优化实际动作,最终实现序列决策的任务。在这种学习方式下,输入数据作为对模型的反馈,不像在监督学习中,输入数据仅仅作为一个检查模型对错的方式。在强化学习中,输入数据直接反馈到模型,模型对此立刻做出相应的调整。在这种学习方式中,学习机制根据试探性交互选择并执行动作,使系统状态发生变化,并根据系统状态变化获得某种强化信号,最终实现与环境的交互。如在机器人控制过程中,系统根据机器人在运动过程中的不同状态反馈随时纠正机器人的姿态,从而使其直立行走。常用的强化学习算法有时间差学习等。
下面举一个形象的例子——教小明画画来理解这4种机器学习方式。无监督学习是直接跟小明说,画一辆汽车吧,这时小明完全靠自己的理解画一辆汽车;半监督学习是告诉小明,这辆汽车有方向盘、轮胎、车灯等,此时你的描述不是很完善,比如没有描述方向盘的位置、轮胎是圆形的等,小明根据你的描述和自己的联想,画出了一辆汽车;有监督学习是把所有要画的东西(如汽车的形状、位置、颜色)都详细地告诉小明,小明完全依靠你的描述,画出了汽车;强化学习是当小明画完汽车后,你领着他去看实际的汽车是什么样子的,小明见到实物后,再在画上进行改动,形成最终的汽车。
3.数据挖掘与机器学习
数据挖掘是建立在庞大的知识体系之上的,从业务角度出发,使用一系列处理方法挖掘隐藏在数据背后的信息,在解决问题的同时使用了大量的机器学习算法。机器学习则是一门以统计学为支撑的偏理论的学科,它关注的是使计算机程序能够像人一样,根据经验的积累,自动提高处理问题的性能。
论述到此,这里有必要对模型与算法的关系做一下阐述。模型反映了特定问题或特定事物系统内的数学关系结构,也可以将其理解为一个系统中各变量间的关系的数学表达。算法是一个定义明确的计算过程,可以用一些值或一组值作为输入,并产生一些值或一组值作为输出。因此,算法就是将输入转换为输出的一系列计算步骤(通常用程序实现)。也就是说,模型是根据业务的诉求和目的,将具体的业务场景或业务逻辑映射为数学领域的关系表达。可以说,模型是具体的应用,而算法是解决问题(应用)的内在技术,即模型是算法(技术)与业务(商业经验)的结合。因此,在不涉及业务的时候,模型与算法的说法无异。