随机森林和机器学习

 

http://blog.sina.com.cn/s/blog_cfa68e330102zelx.html

 

随机森林算法是当今最有用的机器学习算法之一。该算法被认为是机器学习世界的主力。本文目的是描述随机森林算法如何对数据集进行操作。我将描述随机森林算法的构建块,包括决策树,bootstrapping,bagging,并将它们放在一起以实际构建随机森林算法。另外,我将向您介绍我所遵循的示例,该示例将直观地向您展示算法的功能。

随机森林算法:它是如何工作的

决策树:

随机森林算法通过将几个二元决策树聚合在一起来工作。决策树是一种特殊的树结构,其中每个节点代表一个决策,并通过从上到下的流结构连接到该决策的所有选项。随机森林算法使用二元决策树,这实质上意味着每个节点分成两条路径,代表决策的结果。树是回归和分类问题的有用结构。如您所见,每个节点分成两个路径。在这种情况下,我们的二元决策树中的每个节点都代表我们数据集的一个特征。

Bootstrapping

bootstrap方法建立在以下思想的基础上:通过使用数据的子样本而不是计算整个数据集的平均值,可以获得更好的数据平均值。在bootstrap方法中,您将采用替换的数据子样本,然后计算每个子样本的平均值。一旦你对合适数量的子样本重复了这个过程,你就可以取所有计算出来的平均值,并返回数据集的平均值。Bootstrapping类似于hive mind原则,如果你给一个大群的人一个问题,问群体中如何解决它,通常这些答案可以组合成一个可行的解决方案。类似地,当使用树作为模型时,bootstrap方法给出了更准确的数据平均值。

Bagging(Bootstrap Aggregation):

Bagging是一种集成技术,代表bootstrap聚合。集成技术是一种将多个机器学习算法的预测组合在一起的方法,它比任何给定模型都能做出更准确的预测。Bagging基于bootstrap聚合的思想,最适用于分类和回归树(CART)。具体来说,Bagging过程就是对数据创建许多随机的子样本,然后在每个子样本上训练一个CART模型。在每个子样本上运行模型将返回一个预测。然后从每个子样本中进行预测以获得最准确的预测,然后可以将该预测应用到新的机器学习数据集。Bagging法最适用于显示高度差异的机器学习算法。在决策树上训练的模型可以显示高水平的方差,因为它们是在不同的数据子样本上训练的,所以这些模型通常会根据子样本中的数据返回截然不同的预测。通过聚合所有这些预测,可以减少模型中的误差,并返回更准确的预测。

随机森林:

随机森林建立在前述概念的基础上,通过将随机性引入拆分二元决策树中的每个节点的参数。决策树是贪婪的,这意味着它们使用贪婪算法来确定要拆分的参数的最佳值,以便最小化误差。为了使我们的随机森林能够工作,所有树都需要尽可能不相关。因此,随机森林对CART模型进行了调整,并将其拆分为数据的不同子样本中的大量随机值。随机森林的美妙之处在于,当我们在数据的子样本上随机拆分运行我们的模型时,我们为每个预测得到的误差是随机的。这些误差可以通过随机分布建模。随机分布的均值为0.因此,当我们运行我们的随机森林并取所有预测的平均值时,我们会得到一个在理想条件下最小化误差的模型。

关于噪声的说明:

噪声本质上是不相关的数据或数据中的错误,它们混淆了我们试图在数据集中发现的潜在趋势/模式。噪声可以包括具有大量离群值的数据、具有与我们的模型无关的特性的数据集,以及数据中不遵循模式的记录/关系。大多数数据集包含有噪声的元素,这对我们的模型有误差。

一个指导性的例子:

简介:该教程指导我建立一个关于预测推土机销售价格的老式竞赛模型。数据集是用于推土机的Kelly Blue Book,它具有各种功能。

EDA(探索性数据分析):

我们首先阅读CSV文件并执行EDA。EDA是机器学习过程的重要组成部分。在EDA期间,您将查看所有特征,并尝试选择与预测目标最相关的特征。在我们的例子中,目标是销售价格。

此数据集中最重要的特征是SalesID,SalePrice,MachineID和SaleDate。下一步是解析SaleDate上的数据,以便我们可以获得每个特定销售日期的所有数据。

确定哪些特征最有效后,下一步是清理和预处理数据。Fastai库附带了一些有用的功能,用于处理包含NA值的特征以及将分类变量转换为数值变量。train_cats函数将分类变量转换为数值变量。例如,UsageBand特征中的“High”,“Low”和“Medium”将以数字形式变为3,1和2。此外,proc_df函数将任何特征中的NA值替换为该特征的中值。

 

在完成EDA并清理数据框后,我们准备执行我们的初始随机森林回归。

但是当你运行RandomForestRegressor时,究竟发生了什么?

让我们简化回归量并绘制一棵树

正如您所看到的,机器学习模型是一个二元决策树,它在不同的特征上进行分割。在sklearn中,RandomForestRegressor实际上会自动遍历子样本中可用的所有特征组合,并选择要拆分的值以减少MSE。第一个节点表示如果我们仅将10.189预测为log of sale price的平均值,将会发生什么呢。第一个节点的MSE是0.495,如果我们只使用这个节点并预测 log of price 为10.189,这将是我们的MSE。。随着树的加深,我们的MSE被最小化,因为它将各种决策聚合在一起,变得更加精确。

现在想象一下,在数百个数据子样本上运行这个过程并返回这些预测。当您使用的树的数量增加时,机器学习模型的性能就会提高,直到达到瓶颈。把这些树整合在一起你就可以建造你的随机森林并返回最准确的预测。

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐