作者:禅与计算机程序设计艺术
1.简介
一、定义
“机器学习”(Machine Learning)是一个基于数据构建模型、优化参数、求解目标函数的迭代过程,通过训练集对模型参数进行估计,从而对新数据预测或分类。由于其自然的解释性强,运用范围广泛,已成为当今人工智能领域最热门、最重要的研究方向之一。
二、概述
机器学习的任务是从给定数据中学习到某种模型,这个模型能够在未知的数据上做出很好的预测或者分类。对于某个任务来说,通常需要面临着如下三个主要困难:
(1)数据量太小:如传统的统计方法所需要的数据量过于庞大,无法有效处理大规模的问题。
(2)复杂的非线性关系:许多现实世界的问题存在着复杂的非线性关系,使得使用传统的统计方法进行建模变得十分困难。
(3)缺乏足够的信息:很多情况下,即便有充足的数据,仍然不可能获得足够的信息进行建模。例如,在一个健康诊断系统里,病人的各种症状特征与最终诊断结果之间并没有明显的联系,因此即使有病例的记录,也无法将病人的症状及时关联起来,形成有效的模型。
为了解决以上三个问题,机器学习提出了一种新的框架——结构化数据的假设,借助这种假设建立基于规则和抽象的模型,逐步地拟合这些数据,使得模型具备高效、精确的预测能力,并进一步推广到新的、没有见过的样本。
三、基本概念
在开始讨论具体的数学模型之前,首先要了解一些重要的概念。
(1)监督学习
在监督学习过程中,系统由输入和输出组成,其中输入称为特征向量或样本向量,输出为相应的标签值或类别标记。通过监督学习,系统可以学习到特征之间的相互作用,从而对未知数据进行分类、预测等。 监督学习分为两个子类:
1.分类问题:输入变量X的取值只能是有限个离散的值,输出变量Y的取值只能是有限个离散的值。常用的分类算法包括决策树、贝叶斯法、神经网络、支持向量机、K-近邻、提升方法等。
2.回归问题:输入变量X的取值可以是连续值,输出变量Y的取值也可以是连续值。常用的回归算法包括简单回归、岭回归、局部加权回归、套索回归等。
(2)无监督学习
无监督学习不需要输出信息,系统自身对数据进行分析、聚类、降维、建模等。常用的无监督学习算法包括聚类、密度聚类、异常检测、主成分分析、关联规则、因子分析等。
(3)样本和特征
机器学习模型通过对输入数据进行学习,得到一个函数或映射关系g(x),用来进行预测或分类。其中,输入数据包含多个样本,每个样本包含多个特征。特征代表了样本在某些方面的特点,比如图像中的像素值,文本中的单词、短语等;而样本则代表了一个实际的实体或事物,比如图像中的一个对象、文本中的一个句子、一组购买行为。
(4)目标函数
目标函数就是学习系统希望达到的效果,它刻画了损失函数与模型输出的误差大小之间的关系,使系统能够根据错误率最小化或最大化目标函数。常见的目标函数包括交叉熵、0/1损失、均方误差、L2正则项损失等。
(5)超参数
超参数是指机器学习模型的参数,是机器学习算法内部的参数,与模型的性能直接相关。它们是模型设计者通过人为设定的参数,如惩罚项系数λ,学习速率α,树节点数量m等。超参数影响模型的训练速度、准确度和泛化能力。
四、决策树算法
决策树(Decision Tree)是一种常用的机器学习算法,它是一种贪心算法,递归地划分空间,选择最优的切分方式,直至所有样本被完全分类。
(1)基本流程
决策树算法的基本流程如下:
- 收集数据:对数据进行清洗、准备,并将数据按样本与特征划分成不同的集合。
- 构建决策树:构造一棵树,其中每个结点表示一个条件判断,根据决策树算法的原则,在该结点处选取最佳的测试属性,然后再分别处理子结点的两个子集。
- 剪枝:当树的深度过大时,可以通过剪枝的方式对树进行压缩,以减少过拟合。
- 模型评估:通过衡量标准,比如熵、Gini指数等,评估决策树的好坏。
(2)决策树术语
(a)根节点
根节点是决策树的起始节点,表示整个决策树的决策起点。(b)终止节点
终止节点是指决策树的所有子节点都不能再分割的节点。对于分类问题,表示叶子结点对应的类别。对于回归问题,表示叶子结点对应的值。(c)内部节点
内部节点表示一个条件判断,是可以继续进行划分的节点。(d)父亲节点
父亲节点是指在当前节点的上一级。(e)孩子节点
孩子节点是指在当前节点的下一级。(f)属性
属性是指一个事物的特征,它可以是连续值或离散值。(g)结点的度
结点的度表示一个结点拥有的子结点的个数。(h)划分点
划分点是指两个子结点的分界值,用于对样本进行分割。(i)样本
样本是指数据集中的一条记录,它由若干个特征值组成。(j)样本的类别
样本的类别是指样本的输出值,也就是决策树算法所预测的结果。(k)叶结点
叶结点是指划分完成的结点。(l)父结点
父结点是指某个结点的直接前驱,它的上一级是其祖先结点。(m)子结点
子结点是指某个结点的直接后继,它的下一级是其后裔结点。(n)路径长度
路径长度是指从根结点到某一叶子结点的边的条数。(o)深度
深度是指从根结点到叶子结点的最长路径上的边的条数。(p)平衡划分
平衡划分是指每一个内部结点要么有两个孩子结点,要么有左右孩子结点,且两边子结点的大小要相近。(3)算法详解
(a)构建树
构建树的过程可以描述为:从根结点开始,对每个结点计算所有可能的划分点,根据选取的划分点,将输入空间划分成两个子空间,使得各个子空间内的样本尽量分得开,并且这些子空间是完备的(即包含了所有样本)。然后对两个子空间递归地调用同样的方法,直到所有的子空间只包含一个样本。此时,将生成这样的一颗满二叉树,这棵树就构成了决策树。(b)选择最优的划分点
对于内部结点,如果所有样本属于同一类,则停止继续划分,因为没有任何划分可以让信息增益最大化。对于内部结点,遍历所有可能的划分点,计算以该划分点作为分界值的两个子空间的信息增益。选择信息增益最大的划分点作为该结点的划分点。(c)计算信息增益
信息增益是指对于某个特征,它提供多少信息,使得数据按照特征分类的好坏更容易预测出来。它是熵的倒数。假设特征A有V个可能的取值,那么计算特征A的信息熵H(A)为: $$ H(A)=\sum_{v=1}^V-\frac{|C_v|}{|D|}log_2\frac{|C_v|}{|D|} $$ 其中,$|C_v|$是特征A取值为v的样本数目,$|D|$是样本总数目,$-log_2 \frac{|C_v|}{|D|}$表示特征A取值为v的样本占比。信息增益表示的是特征A的信息不确定性减少量,即使特征A发生变化,带来的信息量的下降。 信息增益越大,表示该特征对样本的分类效果越好。信息增益越小,表示该特征对样�的分类效果越差。所以,信息增益大的特征往往应该优先被选择。(d)构建叶结点
构建叶结点的过程类似于建立决策树的过程。如果划分完成后,子结点只包含一类样本,则停止划分。否则,继续递归地对子结点进行划分,直至所有子结点只包含一类样本。(e)剪枝
剪枝(pruning)是指修剪决策树的过程。它通过一定的策略,对树进行合并或删除,以减少树的复杂度或提升树的预测性能。通过剪枝,可以避免过拟合,提高决策树的预测能力。常见的剪枝策略包括:(i)预剪枝
在生成决策树的过程中,对已经纯净(即没有任何错误记录的样本)的叶结点进行合并,从而缩小决策树的规模。(ii)后剪枝
在生成完整的决策树之后,对较浅的叶结点进行合并,使得决策树的宽度不超过某个阈值,从而减少决策树的复杂度。(f)决策树的生成
决策树的生成是指基于数据样本递归地构建树的过程,直到所有叶结点都只包含相同的类别或数值。决策树的生成一般分为如下几个步骤: - 根据输入的训练集数据生成初始结点;
- 对初始结点进行测试,决定是否将其拆分为两个子结点;
- 如果满足停止条件,则将当前结点标记为叶结点,并将其类别标记为测试结果;
- 如果当前结点不是叶结点,则依次对两个子结点重复步骤2~3,直到所有叶结点都只包含相同的类别或数值。
(g)决策树算法的优缺点
决策树算法具有以下优点: - 直观可理解:决策树很容易理解和解释,它非常直观地表示出数据的内部模式,并且它易于实现和操作。
- 可处理多维数据:决策树算法可以轻松应对多维数据,并且在保留输入数据特征之间的相关性的同时,对数据进行降维,使得决策树更容易处理。
- 不受约束:决策树算法对数据的分布和特征无任何要求,它可以处理任意类型的输入数据,并且它不受输入数据的大小、取值分布等约束。
- 稳定性:决策Tree算法使用了“贪心算法”的思想,每次只从当前最优选择中选择一个切分变量和切分点,使得整体的损失函数减小。
- 适合处理标称型数据:决策树算法只适合处理标称型数据,对于有序、离散或密度分布的数据,决策树算法可能会欠拟合。
- 在树生成阶段容易处理缺失值:决策树算法可以使用多数投票法处理缺失值,而且在树生成阶段,它可以有效地进行特征选择。 但决策树算法也有以下缺点:
- 决策树算法对于小数据集(如百万级别数据)可能过拟合。
- 决策树算法不利于数据特征的选择。
- 决策树算法对异常值不敏感。