机器学习之决策树、随机森林

一、决策树

决策树是常见的机器学习中监督学习的方法,可以用来分类和回归。对于数据集,沿着决策树的分支,根据属性值判断属于决策树的哪一枝,最终到达叶节点,得到结果。一棵典型的决策树如下,

图1. 决策树

一棵决策树包括以下部分:

(1)树根:包含全部数据集

(2)树枝:划分标准

(3)中间节点:按照一定标准划分的子集

(4)叶子:最终的结果(包含的子集)

1.1 决策树分类

决策树分类中,最终的叶子为最终划分的分类结果,如根据当天的温度、湿度、风力、大气污染程度等,判断最终是天气好、一般还是差。决策树分支的标准是信息熵的增益最大,信息熵的定义如下:

Ent(D) = -\sum_{k=1}^{y} p_{k}log(p_{k})(1)

其中,p_{k}为集合D中第k类样本所占的比例,Ent(D)表示划分前根据数据标签的原始数据集的信息熵,信息熵越大,表示结构越活越;信息熵越小,结构越稳定。假设某一离散属性值X包含V个离散取值,那么根据属性X,可以将D划分为V个不同的子集,每一个子集都可以计算Ent(D^{v}), \ v=1,2,\cdots,V.

那么根据属性X进行划分(分枝)的信息增益(信息熵的下降量)为:

Gain(D, X)= Ent(D)-\sum_{v}^{V} \frac{D^{v}}{D} Ent(D^{v})(2)

挑选使得信息增益最大的属性X_{max},对决策树进一步分枝。该背后原理如下,根据决策树,使得整棵树的信息熵最低,得到的决策树不确定性最小,最稳定。

参见https://zhuanlan.zhihu.com/p/89607509

1.2 决策树回归

决策树用于回归时,其分枝的标准为最小均方误差。根据数据集的第j个特征,设置阈值为s,划分为c_{1}c_{2}两个区域,如下:

\mathop{\min}\limits_{j,s} \{ \mathop{\min}\limits_{c_{1}} \sum_{x_{i} \in R_{1 }(j,s) } (y_{i}-c_{1})^2 + \mathop{\min}\limits_{c_{2}} \sum_{x_{i} \in R_{2} (j,s)} (y_{i}-c_{2})^2 \}(3)

使得一个子集内均方误差最小的c_{k} =\hat{y}_{k}= \frac{1}{N_{k}} \sum_{x_{i}\in R_{k}} y_{i},那么上式为,

\mathop{\min}\limits_{j,s} \{ \sum_{x_{i} \in R_{1} (j,s) } (y_{i}-\hat{y}_{1})^2 + \sum_{x_{i} \in R_{2 }(j,s)} (y_{i}-\hat{y}_{2})^2 \}(4)

参见,https://blog.csdn.net/Albert201605/article/details/81865261

二、随机森林

随机森林,顾名思义,是很多树的集合。随机森林的基本单位是决策树,其示意图如下,

图2. 随机森林

随机森林的步骤如下:

(1)从数据集中有放回的随机抽样 ;

(2)随机抽取特征构建决策树;

(3)将决策树的结果取平均,得到最终结果。

参加,机器学习常用算法——随机森林 - 云+社区 - 腾讯云

三、代码实现

随机森林

利用第三方库,随机森林分类和回归如下,

分类,

from sklearn.ensemble import RandomForestClassifier

# x. y为训练数据
model_RF_class = RandomForestClassifier(n_estimators = 100, random_state = 0)
model_RF_class.fit(x, y)
# x_test, y_test为测试数据
y_test = model_RF_class.predict(x_test)

回归,

# x. y为训练数据
from sklearn.ensemble import RandomForestRegressor

# 随机森林回归器
model_RF_regr = RandomForestRegressor(n_estimators = 100, random_state = 0)
# 拟合数据集
model_RF_regr = model_RF_regr.fit(X, y)
# x_test, y_test为测试数据
y_test = model_RF_regr.predict(x_test)

参见,机器学习算法系列(十八)-随机森林算法(Random Forest Algorithm)_sai_simon的博客-CSDN博客_随机森林算法​​​​​​​j

具体参数的含义,见官网,sklearn.ensemble.RandomForestClassifier — scikit-learn 1.1.0 documentation

决策树

from sklearn.tree import DecisionTreeClassifier

# x. y为训练数据
model_DT_class = DecisionTreeClassifier()
model_DT_class.fit(x, y)
# x_test, y_test为测试数据
y_test = model_DT_class.predict(x_test)
from sklearn.tree import DecisionTreeRegressor

# x. y为训练数据
model_DT_regr = DecisionTreeRegressor(max_depth=1)
model_DT_regr.fit(x, y)
# x_test, y_test为测试数据
y_test = model_DT_regr.predict(x_test)

参见,python代码实现决策树分类_林下月光的博客-CSDN博客_python决策树分类

 参见,决策树—回归_禺垣的博客-CSDN博客_决策树回归

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
决策树随机森林机器学习中常用的分类算法。决策树是一种基于树结构的分类模型,通过根据特征的取值将数据集划分为不同的子集,然后根据子集中的目标变量值进行分类预测。而随机森林是一种集成学习方法,它由多个决策树组成,并通过对多个决策树的预测结果进行投票或平均来得到最终的分类结果。 PyTorch是一个深度学习框架,主要用于构建神经网络模型。与决策树随机森林不同,PyTorch主要关注神经网络的训练和优化。然而,你可以使用PyTorch来实现决策树随机森林算法。 决策树的实现在PyTorch中可能相对简单,你可以使用PyTorch的张量和条件语句来实现决策树的分裂和预测过程。然而,相对于PyTorch,其他专门用于机器学习和数据分析的库,如scikit-learn等,提供了更完善和高效的决策树随机森林实现。 对于随机森林,你可以使用scikit-learn库中的RandomForestClassifier类来实现。在使用scikit-learn创建随机森林分类器时,你需要导入RandomForestClassifier类并设置一些参数,例如决策树的数量(n_estimators)。然后,你可以使用fit方法对模型进行训练,使用predict方法进行预测。 总结来说,如果你想在PyTorch中实现决策树随机森林算法,你需要使用PyTorch的张量和条件语句来构建和训练决策树,并实现集成多个决策树的投票或平均来构建随机森林。然而,如果你只是想使用决策树随机森林算法,推荐使用scikit-learn等专门的机器学习库,它们提供了更完善和高效的实现方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值