社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

R语言数据实战 | 机器学习-模型训练与集成

狗熊会 • 5 年前 • 828 次点击  
点击上方蓝字关注我们

之前分别介绍了机器学习概要、数据预处理以及模型调参。本次重点介绍模型训练与集成。

继续回到之前提到的相亲的数据,在实际业务开展时,发现相亲失败时不仅客户会心情低落,对于组织相亲的人来说,也会很难过。那么是否可以提升模型预测的精确度,增加相亲成功率呢?

逻辑回归

逻辑回归可以说是最基础的分类模型,它度量的是Y=1的可能性。对于逻辑回归的原理和实现,本书第三章已经有所介绍。图1为经典逻辑回归的一个例子,自变量包括5个,因变量为“是否女神”。逻辑回归模型利用训练集对不同的自变量赋予不同的权重,这些自变量线性组合得到z。z通过logit函数转换,就得到了“女神的概率”。

图1 逻辑回归

那么,在caret包中如何实现逻辑回归呢?代码只要3行即可,如下所示:

决策树

决策树是机器学习中常用的基础树模型。前面介绍了一个如何判断是否为女神的例子,下面就利用决策树来介绍一个男生追女神的故事(见图2)。首先判断女生是不是女神,如果是,则看女神是否单身。对于单身女神,又可以分为喜欢我的和不喜欢我的。对于喜欢我的单身女神,果断选择追,其他情况下都选择不追。这就是决策树模型的最终输出呈现。

图2 决策树示例

那么,在caret包中如何实现决策树呢?在method中设置参数为”rpart”即可。

随机森林

随机森林是通过将多棵决策树集成的一种算法,它的基本单元为决策树。图3为随机森林建模的步骤,这里依然沿用男生追女神的例子。

图3 随机森林

首先,从训练样本中重抽样m组样本,每组样本都是一个子训练集;然后,对每个子训练集样本都构造出一棵决策树,每棵树都有一个决策结果。最后,使用投票法决定最终输出结果。N棵树会有N个分类结果,根据“少数服从多数”原则,投票次数最多的类别为最终的输出。

比如现在有3棵决策树:一棵树认为追女神A,两棵树认为不追女神A,那么根据投票法,到底追不追女神A呢?

那么,在caret包中如何实现随机森林呢?只需要在method中设置为”rf”(random forest的缩写),就可以了。

模型集成

一个分类器学习可能会犯错,但是多个分类器一起学习可能会取长补短,这是模型集成的思想,一句话概括就是“三个臭皮匠顶个诸葛亮”。

常用的模型集成方法分为投票法、平均法和堆叠集成。其中投票法适用于分类问题,平均法适用于回归问题。其中,平均法的结果由几个分类器的结果平均而得,可以采用简单平均和加权平均。

1.投票法

投票法的思想是“少数服从多数”,“群众的眼光是雪亮的”。和随机森林的思路很像,只是这里的分类器可以是不同的分类器,不仅仅是决策树(见图4)。假设分类器1认为杨幂是女神,分类器2认为杨幂是女神,分类器3认为杨幂不是女神。那么最后这3个分类器经过开会投票表决,决定最终结果为杨幂是女神。这就是投票法的思想。

图4 投票法


那么在R中如何实现呢?


首先将几个分类器得到的结果整合在一个数据框中,然后对每行样本都进行投票表决,得到最终结果。但问题是,投票法得到的预测精度还不如随机森林,为什么呢?

这里预测精度降低的原因很简单,就是有个别分类器在拉后腿。所以需要更有效的方式来进行模型集成,即堆叠集成法。

2.堆叠法

堆叠集成思路是,首先利用机器学习的不同模型得到不同预测结果,不同模型得到的预测结果就像组装前的零部件。然后将预测结果作为自变量输入模型进行拟合,也就是将这些零部件组装在一起,而如何组装就取决于不同的模型了(见图5)。


图5 堆叠法

那么在R中如何实现呢?首先将各个模型得到的分类结果及真实的分类组合成一个数据框;然后将各个模型的分类结果作为自变量,真实的分类作为因变量,利用模型进行拟合预测。这里,在组装这个阶段利用随机森林模型。

3.AdaBoost

AdaBoost算法的核心思想是:区别对待不同训练样本。首先,秉承“人人平等”的原则,对所有训练样本都赋予相等的权重。然后,对每个训练样本都进行训练,得到训练精度。秉承“帮助弱者”的原则,对训练精度低的样本赋予更大的权重,让模型能更注意提高这部分样本的训练精度。最后,将各个样本训练出来的结果进行加权投票或加权平均。

最后,用表1来总结一下本节用到的模型及模型集成的预测精度。可以看出,堆叠集成法是提高预测精度的利器。

表1 不同算法的预测精度对比


本章从实例分析的角度介绍了简单机器学习方法的概述和实现,对于原理等本章并没有过多涉及,感兴趣的朋友可以阅读机器学习相关的经典教材。机器学习是一件“利器”,往往能够在预测问题中出奇制胜。希望读者能够在实践环境中多多练手,积累实战经验




购买指南


请扫描以下二维码/点击链接购买

R语言:从数据思维到数据实战》


1
京东


2
当当网



3
天猫

https://detail.tmall.com/item.htm?spm=a220z.1000880.0.0.0A6pvS&id=581845865737





点击"阅读原文"下载数据、代码!



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52855
 
828 次点击