机器学习随机森林算法
熵
熵用来测量不纯度的
下面例子是一个有猫和狗的集合,p1用来表示集合中猫的个数,从左侧图像中可以得到熵的大小,如果这个集合中猫越多或者狗越多,熵就会越小
计算公式
代码
import torch
import matplotlib.pyplot as plt
x = torch.arange(0, 1.1, 0.01)
def Entropy(x):
# 避免log(0),通过将x的值限制在一个小范围内
epsilon = 1e-10
x = torch.clamp(x, min=epsilon, max=1 - epsilon)
return -x * torch.log2(x) - (1 - x) * torch.log2(1 - x)
# 绘制熵值
plt.plot(x, Entropy(x), 'x', label="Entropy")
plt.xlabel('x')
plt.ylabel('Entropy(x)')
plt.title('Binary Entropy Function')
plt.show()
拆分信息增益
信息增益公式
示例
整合
决策树学习的步骤:
-
从根节点开始:所有的样本数据从根节点开始。
-
计算信息增益(Information Gain):对于所有可能的特征,计算每个特征的信息增益,信息增益越大,表示这个特征能提供更多关于数据集的有用信息。选择信息增益最高的特征作为当前节点的划分特征。
-
分裂数据集:根据选择的特征对数据集进行划分,创建左右分支(或更多分支,取决于特征的取值)。
-
递归分裂过程:继续对每个分支进行划分,直到满足停止条件为止。停止条件通常包括以下几种情况:
-
节点纯度为100%:即当前节点的所有样本属于同一类别,此时不需要再进行分裂,直接作为叶子节点。
-
达到最大树深度:如果树的深度超过预设的最大深度,则停止进一步分裂。
-
信息增益小于某个阈值:如果某个特征的信息增益较低,意味着进一步分裂不会带来太多信息,此时可以停止分裂。
-
节点中的样本数小于阈值:当一个节点中的样本数少于某个设定的最小样本数时,停止分裂。
-
one hot 编码
使用多个决策树&随机森林
为什么要使用多个决策树
数据集中的单一改变(将一只猫替换成另一只具有相反特征的猫)导致了决策树结构的剧烈变化,这就表明该模型可能过于依赖于数据集中的特定实例,缺乏健壮性。
这种敏感性可能导致模型的泛化能力差,即对训练数据以外的数据表现不稳定。为了应对这种问题,决策树模型可以通过集成学习来增强其稳定性和鲁棒性。你提到的“构建多棵决策树”的方法,就是通过随机森林(Random Forest)或梯度提升树(Gradient Boosting Machines, GBM)等集成方法来应对这一问题。
多个决策树
在随机森林中,多个决策树会被训练,每棵树在训练时都会使用数据集的不同随机子集(包括特征和样本的随机选择)。由于每棵树的训练数据有所不同,所以它们会在不同的子集上学习到不同的规律。当所有树的预测结果进行投票时,错误的预测会被大多数树所“抵消”,因此能够有效减少单棵树的过拟合问题,提高整体模型的稳定性和准确性。
袋装决策树(Bagging):
- 随机抽样(Bootstrap Sampling):在袋装法中,我们从训练集(样本集)中进行 随机放回抽样(即一个样本可以被重复抽取)。通过这种方式,我们会得到不同的训练子集,每个子集的样本数和原始训练集相同。
- 构建多棵树:基于不同的训练子集,我们会构建多棵决策树。这些树可以通过并行方式独立训练,因此可以加速训练过程。
- 集成学习:每棵树单独做预测,最终的预测结果通过 投票(对于分类问题)或者 平均(对于回归问题)来得到最终结果。
关键点:
- 随着树的数量增加,效果会逐渐提升,但当树的数量超过某个临界值后,提升效果会趋于平稳,即 收益递减。
- 通过集成多个弱分类器(决策树),提高模型的稳定性和泛化能力。
随机森林(Random Forest):
随机森林是在袋装决策树的基础上进行的改进,增强了决策树的多样性,进而提升了模型的准确性。
主要改进:
- 特征随机选择:在构建每棵树时,随机森林不仅通过随机抽样样本来构建子集,还在每个节点的划分时随机选择特征子集(而非在所有特征中选择最佳划分)。具体来说,每次分裂时,算法会随机选择 k个特征,然后从这 k个特征 中选择一个最佳的特征来进行划分。
这种方法的好处是:
- 增加了树之间的多样性,避免了所有树都过于相似(如选择相同的根节点或相似的划分)。
- 由于每棵树的划分依据有所不同,因此决策树的集合能够覆盖更多不同的情况,从而提高模型的表现。
3. 为什么有效?
- 多样性:传统的单棵决策树容易过拟合数据,但随机森林通过引入特征随机性,增加了每棵树的多样性。不同的树会基于不同的特征子集进行学习,减少了模型的偏差并提高了泛化能力。
- 减少过拟合:通过多棵树的投票机制,随机森林能够有效降低过拟合的风险。
总结:
- 袋装决策树:通过对样本的随机放回抽样,构建多个决策树,最后通过投票或平均来得到最终结果。
- 随机森林:在袋装决策树的基础上进一步增加了特征选择的随机性,使得每棵树的训练过程更加多样化,从而提升了模型的性能。
原文地址:https://blog.csdn.net/m0_64254014/article/details/144311485
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!