可生成图片类型(推荐)
可生成数据表类型(推荐)
Zeroclanzhang(讨论 | 贡献) 无编辑摘要 |
Zeroclanzhang(讨论 | 贡献) 无编辑摘要 |
||
(未显示2个用户的16个中间版本) | |||
第1行: | 第1行: | ||
{{Infobox nodebasic|nodename=随机森林|nodeimage=Random Forest.png|developer=Dev.Team-DPS|productionstate= | {{Infobox nodebasic | ||
|nodename=随机森林 | |||
|nodeimage=Random Forest.png | |||
|icon=Random Forest.svg | |||
|simpleicon=Random Forest_Pure.svg | |||
|developer=Dev.Team-DPS | |||
|productionstate={{图标文件|Win}} / {{图标文件|W10}} Win10及以上可用 | |||
|productionstatedesc=在[[Update:DecisionLinnc 1.0.0.8|V1.0]]部署 | |||
|nodeenglishname=Random Forest | |||
|abbreviation=RF | |||
|funcmaincategory=机器学习 | |||
|funcsubcategory=[[DataML Lv1 Cat::分类训练器]] | |||
|nodecategory=数据挖掘 | |||
|nodeinterpretor=Python | |||
|nodeshortdescription=<p>随机森林(Random Forest)是一种基于集成学习的机器学习算法,由多个决策树组成。它通过对训练数据集进行有放回的随机抽样(bootstrap采样),并在每个决策树上进行随机特征选择,来构建多个决策树模型。最终的预测结果是基于所有决策树的投票或平均结果。</p> | |||
|nodeinputnumber=2 | |||
|nodeoutputnumber=3 | |||
|nodeloopsupport=否 | |||
|nodeifswitchsupport=否 | |||
|nodeavailableplotlist=nodenoplotoutput | |||
|nodeavailabletablelist=Table_For_Downstream | |||
|nodeconfiguration=VariableList;DropMenu;Text | |||
|nodeinputports=WorkFlow-Control ➤;Transfer-Table ■ | |||
|nodeoutputports=WorkFlow-Control ➤;Transfer-Model ▶;Transfer-Table ■ | |||
|statsapewikiurl=https://wiki.statsape.com/随机森林 | |||
|previousnode=[[LightGBM]] | |||
|nextnode=[[朴素贝叶斯]] | |||
}} | |||
==算法概述== | |||
随机森林是一种用于分类、回归和其他任务的集成学习方法。它通过对训练数据集进行有放回的随机抽样(bootstrap采样),并在每个[[决策树]]上进行随机特征选择,来构建多个[[决策树]]模型。最终的预测结果是基于所有决策树的投票或平均结果。对于分类任务,随机森林的输出是大多数树选择的类别。对于回归任务,返回各个树的均值或平均预测。随机森林可以纠正[[决策树]]过度拟合训练集的缺点。 | |||
===历史=== | |||
随机森林的一般方法最初由Ho在1995年提出<ref>{{cite journal |last1=Ho |first1=Tin Kam |title=Random decision forests |journal=Proceedings of the 3rd International Conference on Document Analysis and Recognition |volume=1 |pages=278–282 |year=1995 |publisher=IEEE}}</ref>。 Ho证明了使用倾斜超平面进行树的分割的森林可以在增长过程中提高准确性,同时不会遭受过度训练的问题,只要森林在随机选择的特征维度上进行限制。随后的一项研究<ref>{{cite journal |last1=Breiman |first1=Leo |title=Random forests |journal=Machine Learning |volume=45 |issue=1 |pages=5–32 |year=2001}}</ref>得出了类似的结论,即只要其他分割方法在随机选择的特征维度上被强制不敏感,它们的行为也是类似的。需要注意的是,这种更复杂分类器(更大的森林)几乎单调地变得更准确的观察结果,与常见的观念相反,即分类器的复杂性在达到一定准确性水平后会受到过拟合的影响。随机决策森林对过度训练的抵抗力的解释可以在Kleinberg的随机判别理论中找到<ref>{{Cite web |url=https://en.wikipedia.org/wiki/Random_forest |title=Random forest |website=Wikipedia |access-date=2024-01-17}}</ref>。 | |||
==示例代码-随机森林分类节点== | |||
该节点使用Python编写,调用scikit-learn包<ref>{{cite journal |author=Kramer, Oliver |title=Scikit-learn |journal=Machine learning for evolution strategies |pages=45--53 |year=2016 |publisher=Springer }}</ref>。以下为示例代码: | |||
<syntaxhighlight lang="Python"> | |||
from sklearn.ensemble import RandomForestClassifier | |||
from sklearn.datasets import make_classification | |||
X, y = make_classification(n_samples=1000, n_features=4, | |||
n_informative=2, n_redundant=0, | |||
random_state=0, shuffle=False) | |||
clf = RandomForestClassifier(max_depth=2, random_state=0) | |||
clf.fit(X, y) | |||
print(clf.predict([[0, 0, 0, 0]])) | |||
</syntaxhighlight> | |||
拟合后,模型可以用于预测样本的类别,可以在[[通用预测模块]]实现内外部测试集的预测。 | |||
=='''节点使用指南'''== | |||
* 最适用的场景:随机森林可用于解决分类问题,其中目标是将数据分为不同的类别或预测数据的类别。 | |||
* 处理的数据类型:结局变量为二分类,特征变量大多数为连续型的变量。 | |||
===变量配置=== | |||
* 选择特征变量:作为特征进行学习的变量(X),多选。 | |||
* 选择目标变量:作为结局的二分类变量(y),单选。 | |||
===参数配置=== | |||
* 设置随机数:控制模型的随机性。 | |||
* 拆分策略:用于在每个节点选择分裂的策略,包含最佳分割和随机分割。 | |||
* 损失函数算法选择:衡量分割质量的函数。支持的标准为 | |||
** 'gini':基尼纯度(Gini impurity), | |||
** 'log_loss', | |||
** 'entropy':信息熵。 | |||
* 最大深度:树的最大深度。如果没有,则扩展节点,直到所有叶子都是纯的或直到所有叶子包含少于"最小拆分样本数"的样本。 | |||
* 最小拆分样本数:分裂内部节点所需的最小样本数。 | |||
* 叶节点最小样本数:叶节点所需的最小样本数。该参数仅当任何深度的分割点在左右分支中至少留下训练样本时,才会被考虑。这可能具有使模型平滑的效果,尤其是在回归中。 | |||
* 最大特征数:寻找最佳分割时要考虑的特征数量。 | |||
* 最大叶节点数:以最佳优先的方式种植一棵树。最佳节点定义为杂质的相对减少。如果没有,则叶节点数量不受限制。 | |||
* 最小不纯度衰减阈值:如果分裂导致杂质减少大于或等于该值,则节点将被分裂。 | |||
===注意事项=== | |||
* 不支持带空值运算,用[[多重插补]]或[[插补空值]]进行插补, | |||
* 节点不出图, | |||
* 导入该节点的数据端口为训练数据集,导入前注意转换。 | |||
== 参考文献 == | |||
{{reflist}} | |||
{{Navplate AlgorithmNodeList}} | |||
[[Category:分类训练器]] |
节点状态 | / Win10及以上可用
在V1.0部署
|
---|---|
随机森林 | |
节点开发者 | 决策链算法研发部 (Dev.Team-DPS) |
节点英文名 | Random Forest |
功能主类别 | 机器学习 |
英文缩写 | RF |
功能亚类别 | 分类训练器 |
节点类型 | 数据挖掘 |
开发语言 | Python |
节点简介 | |
随机森林(Random Forest)是一种基于集成学习的机器学习算法,由多个决策树组成。它通过对训练数据集进行有放回的随机抽样(bootstrap采样),并在每个决策树上进行随机特征选择,来构建多个决策树模型。最终的预测结果是基于所有决策树的投票或平均结果。 | |
端口数量与逻辑控制(PC) | |
Input-入口 | 2个 |
Output-出口 | 3个 |
Loop-支持循环 | 否 |
If/Switch-支持逻辑判断 | 否 |
输入输出 | |
相关节点 | |
上一节点 | LightGBM |
下一节点 | 朴素贝叶斯 |
相关网站 |
随机森林是一种用于分类、回归和其他任务的集成学习方法。它通过对训练数据集进行有放回的随机抽样(bootstrap采样),并在每个决策树上进行随机特征选择,来构建多个决策树模型。最终的预测结果是基于所有决策树的投票或平均结果。对于分类任务,随机森林的输出是大多数树选择的类别。对于回归任务,返回各个树的均值或平均预测。随机森林可以纠正决策树过度拟合训练集的缺点。
随机森林的一般方法最初由Ho在1995年提出[1]。 Ho证明了使用倾斜超平面进行树的分割的森林可以在增长过程中提高准确性,同时不会遭受过度训练的问题,只要森林在随机选择的特征维度上进行限制。随后的一项研究[2]得出了类似的结论,即只要其他分割方法在随机选择的特征维度上被强制不敏感,它们的行为也是类似的。需要注意的是,这种更复杂分类器(更大的森林)几乎单调地变得更准确的观察结果,与常见的观念相反,即分类器的复杂性在达到一定准确性水平后会受到过拟合的影响。随机决策森林对过度训练的抵抗力的解释可以在Kleinberg的随机判别理论中找到[3]。
该节点使用Python编写,调用scikit-learn包[4]。以下为示例代码:
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=1000, n_features=4,
n_informative=2, n_redundant=0,
random_state=0, shuffle=False)
clf = RandomForestClassifier(max_depth=2, random_state=0)
clf.fit(X, y)
print(clf.predict([[0, 0, 0, 0]]))
拟合后,模型可以用于预测样本的类别,可以在通用预测模块实现内外部测试集的预测。
查找其他类别的节点,请参考以下列表