监督学习工作流和算法
什么是监督学习?
有监督的机器学习的目的是建立一个模型,在不确定性存在的情况下,根据证据做出预测。当自适应算法识别数据中的模式时,计算机从观察结果中“学习”。当接触到更多的观察时,计算机提高了它的预测性能。
具体来说,有监督学习算法采用一组已知的输入数据和对数据(输出)的已知响应,并且火车为对新数据的响应产生合理预测的模型。
例如,假设您想预测某人是否会在一年内心脏病发作。你有以前病人的一组数据,包括年龄、体重、身高、血压等。你知道之前的病人在测量一年内是否有心脏病发作。所以,问题是将所有现有的数据组合成一个模型,可以预测一个新人是否会在一年内心脏病发作。
您可以将整个输入数据集看作一个异构矩阵。矩阵的行被称为观察,例子,或实例,每个都包含一个受试者(示例中的患者)的一组测量值。矩阵的列称为预测,属性,或特性,每一个变量都表示对每个主题的测量结果(在示例中,年龄、体重、身高等)。您可以将响应数据看作一个列向量,其中每一行都包含输入数据中相应观察结果的输出(患者是否有心脏病发作)。来适合或火车一个有监督学习模型,选择一个合适的算法,然后将输入和响应数据传递给它。
监督学习分为两大类:分类和回归。
在分类,目标是分配一个类(或标签)从一个有限的类集合到一个观察。也就是说,响应是分类变量。应用包括垃圾邮件过滤器,广告推荐系统,以及图像和语音识别。预测一个病人是否会在一年内心脏病发作是一个分类问题,可能的分类是
真正的
而且假
.分类算法通常适用于标称响应值。然而,有些算法可以容纳序数类(参见fitcecoc
).在回归,目标是预测一个观测的连续测量值。也就是说,响应变量是实数。应用包括预测股票价格、能源消耗或疾病发病率。
统计和机器学习工具箱™监督学习功能包含一个流线化的对象框架。您可以有效地训练各种算法,将模型组合成一个集成,评估模型性能,交叉验证,并预测新数据的响应。
监督学习的步骤
虽然有许多用于监督学习的统计和机器学习工具箱算法,但大多数都使用相同的基本工作流来获得预测器模型。(关于整体学习步骤的详细说明在里面集成学习框架)。监督学习的步骤如下:
准备数据
所有的监督学习方法都从一个输入数据矩阵开始,通常称为X
在这里。每一行的X
代表一个观察。每一列的X
表示一个变量或预测器。用南
值X
.统计和机器学习工具箱中的监督学习算法可以处理南
值,可以忽略它们,也可以忽略带有南
价值。
您可以为响应数据使用各种数据类型Y
.中的每个元素Y
的对应行的响应X
.观察与缺失Y
数据将被忽略。
对于回归,
Y
必须是一个具有与的行数相同的元素数的数字向量X
.的分类,
Y
可以是这些数据类型中的任何一种。该表还包含了包含缺失条目的方法。数据类型 失踪的条目 数值向量 南
分类向量 <定义>
字符数组 排空间 字符串数组 < >失踪
或""
字符向量的单元格数组 ”
逻辑向量 (不能代表)
选择一种算法
算法的几个特征之间存在权衡,例如:
速度的训练
内存使用情况
对新数据的预测准确性
透明性或可解释性,指的是你能多容易地理解算法做出预测的原因
算法的细节见分类算法的特点.关于集成算法的更多细节见选择一种适用的集成聚合方法.
适合一个模型
你使用的拟合函数取决于你选择的算法。
算法 | 分类拟合函数 | 回归拟合函数 |
---|---|---|
决策树 | fitctree |
fitrtree |
判别分析 | fitcdiscr |
不适用 |
集合(例如,随机森林)[1]) | fitcensemble ,TreeBagger |
fitrensemble ,TreeBagger |
高斯核函数模型 | fitckernel (支持向量机和逻辑回归学习者) |
fitrkernel (支持向量机和最小二乘回归学习器) |
高斯过程回归 | 不适用 | fitrgp |
广义相加模型(GAM) | fitcgam |
fitrgam |
k最近的邻居 | fitcknn |
不适用 |
线性模型 | fitclinear (支持向量机和逻辑回归) |
fitrlinear (支持向量机和最小二乘回归) |
支持向量机或其他分类器的多类、纠错输出码(ECOC)模型 | fitcecoc |
不适用 |
朴素贝叶斯模型 | fitcnb |
不适用 |
神经网络模型 | fitcnet |
fitrnet |
支持向量机(SVM) | fitcsvm |
fitrsvm |
有关这些算法的比较,请参见分类算法的特点.
选择验证方法
检验所得拟合模型准确性的三种主要方法是:
检查替换误差。有关示例,请参见:
检查交叉验证错误。有关示例,请参见:
检查袋装决策树的袋外错误。有关示例,请参见:
检查适合度并更新直到满意为止
在验证模型之后,您可能希望更改它以获得更好的精度、更快的速度或使用更少的内存。
改变拟合参数以获得更精确的模型。有关示例,请参见:
改变拟合参数,尝试得到一个更小的模型。这有时会给出一个更准确的模型。有关示例,请参见:
尝试不同的算法。有关适用的选择,请参阅:
当对某些类型的模型感到满意时,您可以使用适当的工具对其进行修剪紧凑的
函数(紧凑的
分类树,紧凑的
回归树,紧凑的
判别分析,紧凑的
朴素贝叶斯、紧凑的
支持向量机,紧凑的
对于ECOC模型,紧凑的
对于分类集合,和紧凑的
回归集合体)。紧凑的
从模型中删除训练数据和其他预测不需要的属性,例如,修剪决策树的信息,以减少内存消耗。因为k神经网络分类模型需要所有的训练数据来预测标签,你不能减少一个的大小ClassificationKNN
模型。
使用拟合模型进行预测
要预测大多数拟合模型的分类或回归响应,请使用预测
方法:
Ypredicted =预测(obj Xnew)
obj
是装配型还是装配型紧凑型。Xnew
是新的输入数据。Ypredicted
是预测的响应,分类或回归。
分类算法的特点
下表显示了各种监督学习算法的典型特征。任何特定情况下的特征都可能与所列的不同。使用该表作为您最初选择算法的指南。在速度、内存使用、灵活性和可解释性方面权衡利弊。
提示
首先尝试决策树或鉴别器,因为这些分类器快速且容易解释。如果模型预测响应不够准确,那么可以尝试其他具有更高灵活性的分类器。
要控制灵活性,请参阅每个分类器类型的详细信息。为了避免过拟合,要寻找具有较低灵活性但提供足够精度的模型。
分类器 | 多级支持 | 分类预测的支持 | 预测的速度 | 内存使用情况 | 可解释性 |
---|---|---|---|---|---|
决策树- - - - - -fitctree |
是的 | 是的 | 快 | 小 | 容易 |
判别分析- - - - - -fitcdiscr |
是的 | 没有 | 快 | 线性小,二次元大 | 容易 |
支持向量机- - - - - -fitcsvm |
不。 组合多个二进制支持向量机分类器使用 fitcecoc . |
是的 | 介质为线性的。 为别人慢。 |
介质为线性的。 所有其他类型:中号表示多类,大号表示二进制。 |
易于线性支持向量机。 对于所有其他内核类型来说都很难。 |
朴素贝叶斯- - - - - -fitcnb |
是的 | 是的 | 简单发行版的中等。 对于内核分发版或高维数据,速度较慢 |
对于简单的分布来说是小的。 Medium用于内核分布或高维数据 |
容易 |
最近的邻居- - - - - -fitcknn |
是的 | 是的 | 缓慢的立方。 中为他人。 |
媒介 | 硬 |
乐团- - - - - -fitcensemble 而且fitrensemble |
是的 | 是的 | 快速到中等取决于算法的选择 | 由低到高取决于算法的选择。 | 硬 |
该表中的结果是基于对许多数据集的分析。研究中的数据集有多达7000个观察值,80个预测因子和50个类。这个列表定义了表中的术语。
速度:
快- 0.01秒
中- 1秒
慢- 100秒
内存
小- 1 mb
中期4 mb
大- 100 mb
请注意
下表提供了一个总体指南。结果取决于数据和机器的速度。
分类预测的支持
该表描述每种分类器的预测器的数据类型支持。
分类器 | 所有的预测数字 | 所有预测分类 | 有些是绝对的,有些是数字的 |
---|---|---|---|
决策树 | 是的 | 是的 | 是的 |
判别分析 | 是的 | 没有 | 没有 |
支持向量机 | 是的 | 是的 | 是的 |
朴素贝叶斯 | 是的 | 是的 | 是的 |
最近的邻居 | 欧氏距离只有 | 汉明距离只有 | 没有 |
乐团 | 是的 | 是的,除了判别分析分类器的子空间集合 | 是的,除了子空间集合 |
错误分类成本矩阵,先验概率和观察权重
训练分类模型时,可以指定错误分类代价矩阵、先验概率和观察权重成本
,之前
,权重
名称-值参数,分别。分类学习算法使用指定的值进行代价敏感的学习和评估。
指定成本
,之前
,权重
名称-值参数
假设你指定成本
作为C,之前
作为p,权重
作为w.的值C,p,w的形式
C是一个K——- - - - - -K数字矩阵,K是类的数量。cij=C(我,j)将观察结果分类的成本是多少j当它真正的阶级是我.
wj观察权重是否为观察j,n是观察数。
p是一个
1
——- - - - - -K数字矢量,pk类的先验概率是多少k.如果您指定之前
作为“经验”
,然后软件设置pk到班级观察的观察权重之和k:
成本
,之前
,W
分类模型的性质
该软件储存用户指定的成本矩阵(C)成本
属性,并将先验概率和观察权重存储在之前
而且W
属性,分别归一化后。
训练的分类模型fitcdiscr
,fitcgam
,fitcknn
,或fitcnb
函数使用成本
属性进行预测,但函数不使用成本
进行训练。因此,成本
属性不是只读的;您可以在创建训练过的模型后使用点表示法更改属性值。对于使用成本
对于训练,该属性是只读的。
该软件将先验概率归一化,使其之和为1,并将观察权重归一化,使其之和为各自类中的先验概率值。
降低成本的学习方案
这些分类模型支持成本敏感学习:
分类决策树,由
fitctree
分类集合,由
fitcensemble
或TreeBagger
高斯核分类支持向量机和逻辑回归学习者,训练
fitckernel
多类,纠错输出码(ECOC)模型,训练
fitcecoc
线性分类的支持向量机和逻辑回归,训练
fitclinear
支持向量机分类,训练
fitcsvm
函数所指定的错误分类代价矩阵成本
模型训练的名称-值参数。成本敏感学习的方法因分类器的不同而不同。
fitcecoc
将指定的用于多类分类的代价矩阵和先验概率值转换为用于每个二元学习者的二元分类值。有关更多信息,请参见先验概率与错误分类代价.fitctree
应用种植一棵树的平均成本修正。fitcensemble
,TreeBagger
,fitckernel
,fitclinear
,fitcsvm
调整指定成本矩阵的先验概率和观测权重。fitcensemble
而且TreeBagger
通过过采样类产生大的误分类成本和过采样类产生小的误分类成本生成袋中样本。因此,袋外样本的错误分类代价大的类的观察值更少,错误分类代价小的类的观察值更多。如果使用小数据集和高度倾斜的成本矩阵训练分类集合,那么每个类的外袋观察数可能非常低。因此,估计的外袋误差可能有很大的方差,可能很难解释。同样的现象也会发生在具有较大先验概率的类中。
调整错误分类代价矩阵的先验概率和观测权重。对于模型训练,fitcensemble
,TreeBagger
,fitckernel
,fitclinear
,fitcsvm
函数更新类的先验概率p来p*观察权重w来w*将成本矩阵中所描述的处罚纳入其中C.
对于二元分类模型,软件完成以下步骤:
更新p合并成本矩阵C.
正常化 所以更新后的先验概率和为1。
从先验概率为零的类对应的训练数据中去除观察值。
将观察权重归一化wj总结为观察结果所属类的更新先验概率。也就是观察的归一化权值j在课堂上k是
删除权值为零的观察值。
如果集成模型有三个或更多的类,则由fitcensemble
或TreeBagger
,该软件还调整错误分类代价矩阵的先验概率。这种转换更加复杂。首先,该软件试图求解Zhou和Liu所描述的矩阵方程[2].如果软件不能找到解决方案,它就应用Breiman等人描述的“平均成本”调整。[3].欲了解更多信息,请参见Zadrozny等人。[4].
降低成本的评估方案
你可以通过对成本敏感的分析来解释分类模型和数据集的成本不平衡:
方法执行对成本敏感的测试
compareHoldout
或testcholdout
函数。通过在分析中包含成本矩阵,这两个函数在统计上比较两种分类模型的预测性能。有关详细信息,请参见降低成本的测试方案.比较观察到的错误分类代价,由目标函数返回
损失
,resubLoss
,kfoldLoss
分类模型。指定LossFun
名称-值参数为“classifcost”
.这些函数分别返回输入数据、训练数据和交叉验证数据的加权平均错误分类代价。有关详细信息,请参见任何分类模型对象的对象函数参考页。例如,请参见分类损失.
有关成本敏感型评估的示例,请参见对两种分类模型进行成本敏感比较.
参考文献
[1] Breiman, L。“随机森林。”机器学习45, 2001,第5-32页。