前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习之预测分析模型

机器学习之预测分析模型

作者头像
用户1263954
发布2018-01-30 15:12:32
8.1K0
发布2018-01-30 15:12:32
举报
文章被收录于专栏:IT技术精选文摘IT技术精选文摘

介绍

预测分析是基于以前收集的数据来预测未来的结果。它包括两个阶段:

训练阶段:从训练数据中学习一个模型。

预测阶段:使用模型预测未知或未来的结果。

预测模型

我们可以选择许多模型,每个模型都基于一些与数据底层分布有关的不同假设。因此,我们对所要讨论中的两个一般问题感兴趣:1.分类 - 关于预测类别(一个离散的值,有限的,没有排序的),以及2.回归-关于预测一些数值的量(一个连续且有序的无限值)。

对于分类问题,我们使用“虹膜”数据集,并从其萼片和花瓣的“宽度”和“长度”测量中预测其“物种”。以下是我们如何设置我们的训练和测试数据:

为了说明一个回归问题(我们预测的输出是数值),我们将使用从“car”包导入的“prestige”数据集来创建我们的训练和测试数据。

线性回归

线性回归在统计学中历史最悠久,也是最著名和最受欢迎的机器学习模型。它是基于输入和输出变量之间存在线性关系的假设,如下所示:

...其中y是输出数值,xi是输入数值。

学习算法将学习一组参数,使得平方差(yactual-yestimate)的和最小。以下是使用R语言从一组输入变量中预测输出“prestige”的示例代码:

系数列给出了Өi的评估,相关联的p值给出了每个评估Өi的置信度。例如,没有标记至少一个*的功能可以被安全地忽略。

在上述模式中,education和income对prestige的影响很大。

最小平方差的目标是使线性回归对输出中极大偏差的异常值非常敏感。识别这些异常值,删除它们,然后重新运行训练是一种常见的做法。

其中,支持列的值表示是否可以使用引擎。

逻辑回归

在分类问题中,输出的是二进制而不是数字。我们可以想象线性回归,然后使用logit函数1 /(1 + e-t)将数字输出压缩为0..1范围,如下所示:

..其中y是0 .. 1值,xi是输入数值。

学习算法将学习一组参数,使成本(yactual * log yestimate +(1 - yactual)* log(1 - yestimate))最小化。

以下是使用R语言执行使用虹膜数据的二进制分类的示例代码。

正则回归

为了避免过度拟合的问题(训练模型与训练数据配合得太好,并不足够),正则技术被用来缩小Ɵi的大小。这是通过在成本函数中加入惩罚(Ɵi的总和的函数)来完成的。

在L2正则化(也称为Ridge回归)中,Ɵi2将被添加到成本函数中。在L1正则化(也称为Lasso回归)中,||Ɵi||将被添加到成本函数中。 L1,L2都会缩小Ɵi的大小。对于相互依赖的变量,L2倾向于扩展收缩,使得所有相互依赖的变量具有同等的影响力。另一方面,L1倾向于保留一个变量,并将所有其他因变量收缩到非常接近零的值。换句话说,L1以不均匀的方式缩小变量,以便它也可以用于选择输入变量。

结合L1和L2,成本函数的一般形式如下:

成本==非正则化成本+

注意2个可调参数,λ,λ和α,α。 Lambda控制正则化程度(0表示无正则化,无穷大意味着忽略所有输入变量,因为它们的所有系数都将为零)。 Alpha控制L1和L2之间的混合程度(0表示纯L2,1表示纯L1)。 Glmnet是一个受欢迎的正则化包。需要根据应用的需要提供α参数,即需要选择一组减少的变量。 α= 1。该库提供交叉验证测试,以自动选择更好的lambda值。我们重复上面的线性回归实例,并且这次使用正则。我们选择alpha = 0.7以有助于L1正则化。

这是交叉验证图。它显示最小的lambda,最小根和均方误差。

神经网络

神经网络将人脑的结构模拟为彼此互连的神经元网络。每个神经元在技术上等同于逻辑回归单元。

在这种设置中,神经元被组织在多层中,其中层i的每个神经元连接到第i + 1层的每个神经元,而没有别的。神经网络中的调谐参数包括隐藏层数(通常设置为1),每个层中的神经元数量(对于所有隐藏层而言通常为1到3倍的输入变量),和学习率。另一方面,输出层的神经元数取决于需要学习多少个二进制输出。在分类问题中,这通常是输出类别中可能的值的数量。

学习通过迭代反馈机制进行,其中训练数据输出的误差用于调整相应的输入权重。这种调整传播到以前的层次,学习算法被称为“反向传播”。这是一个例子:

神经网络非常适合学习非线性函数。他们甚至可以同时学习多个输出,尽管训练时间相对较长,这使得网络容易受到局部最小陷阱的影响。这可以通过进行多轮和挑选最佳学习模型来缓解。

支撑向量机

支撑向量机提供了一种基于在+ ve和-ve输出的一组样本之间找到超平面的二进制分类机制。它假设数据是线性可分的。

该问题可以被构造为二次规划优化问题,使其经受一组线性约束的边界最大化(即,线的一侧的数据输出必须为+ ve,而另一侧必须为-ve)。这可以用二次规划技术来解决。

如果数据由于噪声而不能线性分离(大多数仍然是线性分离的),则会添加一个错误项来惩罚优化。

如果数据分布从根本上是非线性的,那么诀窍就是将数据转换为较高的维数,使数据线性可分。优化项目被证明是高维空间中转换点的点积,这被认为等同于在原始(在变换之前)空间中执行核函数。

内核函数提供了一种便宜的方法来将原始点等效地转换为高维度(因为我们不实际转换它),并在该高维空间中执行二次优化。

有一些调整参数(例如惩罚和成本),因此通常以2个步骤进行转换 - 找到最佳参数,然后使用该参数训练SVM模型。以下是R中的一些示例代码:

具有内核功能的SVM是一种非常有效的模型,可以在各种各样的问题集中运行。虽然它是一个二进制分类器,它可以通过训练一组二进制分类器并使用“一对一”或“一对一”作为预测变量,容易地扩展到多类分类。

SVM根据到分割超平面的距离来预测输出。这不直接估计预测的概率。因此,我们使用校准技术来找到超平面距离和二进制输出之间的逻辑回归模型。使用该回归模型,我们得到我们的评估。

贝叶斯网络和朴素贝叶斯

从概率角度来看,预测问题可以视为条件概率估算;试图找到最大化P(Y | X)的Y。

从贝叶斯规则,P(Y | X)== P(X | Y)* P(Y)/ P(X)

这相当于找到其中P(X | Y)* P(Y)最大化的Y。

假设输入X包含3个分类特征 - X1,X2,X3。在一般情况下,我们假设每个变量可能会影响任何其他变量。因此,联合分配成为:

P(X | Y)= P(X1 | Y)* P(X2 | X1,Y)* P(X3 | X1,X2,Y)

P(X | Y)== P(X1 | Y)* P(X2 | Y)* P(X3 | Y)

我们需要找到使P(X1 | Y)* P(X2 | Y) * P(X3 | Y)* P(Y) 可以通过对训练数据进行计数来学习右侧的每个术语。因此,我们可以估计P(Y | X)并选择Y来最大化它的值。

但有可能某些模式不会出现在训练数据中,例如,P(X1 = a | Y = y)为0。为了处理这种情况,我们假装已经看到每个可能值的数据多于我们实际上有的。

P(X1 = a | Y = y)==(count(a,y)+ 1)/(count(y)+ m)

...其中m是X1中可能的值的数量。

当输入特征是数字时,如a = 2.75,我们可以假设X1是正态分布。找出X1的平均值和标准偏差,然后使用正态分布函数估算P(X1 = a)。

请注意,在大多数情况下,独立性假设是不正确的。然而,系统仍然表现非常好。朴素贝叶斯的强度是高度可扩展的,可以逐步学习,我们所要做的就是计算观察到的变量并更新概率分布。

最近邻居法(KNN算法)

与基于模型的学习相比的是KNN算法。这也被称为基于实例的学习,因为它甚至不学习一个单一的模型。训练过程涉及到记录所有的训练数据。为了预测一个新的数据点,我们发现训练集中最接近K(一个可调参数)的邻居,并让他们投票选出最终的预测。

为了确定“最近邻”,需要定义距离函数(例如,欧几里德距离函数是数字输入变量的常用函数)。基于它们与新数据点的距离,也可以在K邻居中加权投票。

这里是使用K最近邻R进行分类的R代码。

K最近邻的实力就是简单。不需要训练模型。更多的数据到达时,增量学习是自动的(也可以删除旧的数据)。然而,KNN的弱点是它不能很好地处理大量的维度。

决策树

基于决策树的树,学习方法是通过最具歧视性的划分标准将训练数据递归地划分成均匀成员的桶。 “均匀性”的测量是基于输出标签;当它是一个数值时,测量将是桶的方差;当它是一个类别时,测量将是桶的熵或“gini指数”。

在训练过程中,将尝试基于输入的各种划分标准(以贪婪的方式使用);当输入是一个类别(星期一,星期二,星期三等)时,它将首先变成二进制(isMon,isTue,isWed等),然后将使用true / false作为决策边界来评估均匀性;当输入是数字或序数值时,每个训练数据输入值的lessThan / greaterThan将作为决策边界。

当进一步分裂树后,训练过程停止,同质性没有显着增加。在叶节点上代表的桶的成员将投票预测;当输出是一个类别时,大多数获胜。当输出是数字时,成员的平均值被取消。

这是R中的一个例子:

这是已经学到的树模型

在树的一部分,它可以采用不同的数据类型的输入和输出变量,可以是分类,二进制和数值。它可以很好地处理丢失的属性和异常值。决策树也很好地解释了其预测的推理,因此对底层数据提供了很好的了解。

决策树的局限性在于,每个分裂点的每个决策边界都是一个具体的二进制决策。此外,决策标准一次只考虑一个输入属性,而不是多个输入变量的组合。决策树的另一个弱点是,一旦知道它不能逐步更新。当新的培训数据到达时,您必须丢弃旧树并从头开始重新训练所有数据。在实践中,独立决策树很少使用,因为它们的准确性是预测性的并且相对较低。树组合(如下所述)是使用决策树的常用方式。

树集成

Ensemble方法不是选择单个模型,而是以某种方式组合多个模型以适应训练数据。这里有两个主要方式:“装袋”和“提升”。在“装袋”中,我们将训练数据的一部分(从N个训练数据中随机抽取,随机替换)训练每个模型。在对多个模型进行训练后,我们使用投票方案来预测未来的数据。

随机森林是最受欢迎的装袋模型之一;除了在树的每个决策节点从N中选择n个训练数据之外,它还从总M个输入特征(m〜M ^ 0.5)中随机选择m个输入特征。然后它从中学到一个决策树。最后,森林中的每棵树投票结果。这里是使用随机林的R代码:

> library(randomForest)

#Train 100棵树,随机选择的属性

> model < -

randomForest(Species〜。,data = iristrain,nTree = 500)

#Predict使用森林

>预测< - predict(model,newdata = iristest,type ='class’)

>表(预测,iristest $物种)

>重要性(模型)

MeanDecreaseGini

Sepal长度 7.807602

Sepal宽度 1.677239

Petal长度 31.145822

Peta宽度 38.617223

“Boosting”是Ensemble Method的另一种方法。而不是对输入特征进行采样,它会对训练数据记录进行采样。然而,它更多地强调了在以前的迭代中错误地预测的训练数据。最初,每个训练数据被同等地加权。在每次迭代中,错误分类的数据将增加其重量。

渐变增强方法是最受欢迎的增强方法之一。它基于逐步添加适合残余的函数。

在开始时设置i = 0,并重复直到收敛。

学习函数Fi(X)来预测Y.基本上,找到最小化预期的F(L(F(X)-Y)),

其中L是残余的丢失函数 学习另一个函数gi(X)来预测上述函数的梯度

更新Fi + 1 = Fi + a.gi(X),

其中a是学习率 以下是使用决策树作为学习模型F的渐变增强树。

这里是R中的示例代码:

GBM R包也给出了输入特征的相对重要性,如条形图所示。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT技术精选文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档