少女祈祷中...

定义与基本概念

  • 决策树: 树形结构的分类或回归模型,通过特征分割进行分类
  • 随机森林: 集成学习算法,由多个决策树组成

决策树(Decision Tree)

决策树是一种用于分类和回归问题的基本算法,可以对数据进行分类和预测,主要步骤包括特征选择,决策树生成,剪枝。

  1. 特征选择:决策树通过递归地选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类。

  2. 决策树生成:决策树从根节点开始,每个节点都是基于某个特征的分割条件,最终形成一棵树形结构。

  3. 剪枝:为了防止过拟合,通常会对生成的树进行剪枝,通过移除预测性能不佳的分支来简化模型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report

# 加载数据
iris = load_iris()
X = iris.data
y = iris.target

# 分割数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建决策树分类器
model = DecisionTreeClassifier(random_state=42)

# 训练模型
model.fit(X_train, y_train)

# 使用模型进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy * 100}%")

# 打印分类报告
print("分类报告:")
print(classification_report(y_test, y_pred))

随机森林(Random Forest)

随机森林是一种基于决策树的集成学习算法,由多个决策树构成。其核心思想是“集体智慧”,即多个决策树的平均预测结果通常比单个模型更准确。

随机森林是一种基于 Bagging 策略的集成学习模型,它能够有效地处理非线性问题,并且擅长处理大量样本和特征。此外,随机森林还注重降低方差。Bagging 方法在训练过程中,各基学习器之间无依赖,可实现并行训练。通过集成多个模型,它可以有效地处理过拟合问题,提高模型的预测准确性和泛化能力。随机森林可用于分类、回归和异常检测任务。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载数据
iris = load_iris()
X = iris.data # 特征数据
y = iris.target # 目标标签

# 分割数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建随机森林模型
model = RandomForestClassifier(n_estimators=100, random_state=42)

# 训练模型
model.fit(X_train, y_train)

# 获取特征重要性
importances = model.feature_importances_

# 打印特征重要性
for feature_name, importance in zip(iris.feature_names, importances):
print(f"{feature_name}: {importance}")

# 使用模型进行预测
predictions = model.predict(X_test)

# 打印预测结果
print("预测结果:", predictions)

# 打印真实结果
print("真实结果:", y_test)

# 计算准确率
accuracy = model.score(X_test, y_test)
print(f"准确率: {accuracy * 100}%")

Bootstrap Sampling

Bagging(Bootstrap Aggregating)是一种集成学习方法,用于提高机器学习算法的稳定性和准确性。Bagging的核心思想是通过构建多个模型,然后将这些模型的预测结果进行组合,以达到比单个模型更好的预测效果。(这就是随机森林的思想,对不对)

Bagging的步骤通常为:

  1. 自助采样(Bootstrap Sampling):从原始数据集中随机抽取多个样本,每个样本的大小与原始数据集相同,但允许重复抽取。这意味着每次抽样都会有一些数据点被多次选中,而另一些则可能不被选中。

  2. 训练模型:使用每个自助采样得到的数据集来训练一个单独的模型。这些模型可以是相同的算法,也可以是不同的算法。

  3. 预测:对新的数据点进行预测时,每个模型都会给出自己的预测结果。

  4. 组合预测:将所有模型的预测结果进行组合。对于分类问题,通常采用投票的方式来决定最终的分类结果;对于回归问题,则通常取所有模型预测结果的平均值作为最终的预测值。

Bagging的主要优点是能够减少模型的方差,提高模型的泛化能力。它特别适用于那些高方差的模型(如决策树)

所以比较著名的一个Bagging算法就是随机森林。

决策树与随机森林的区别

随机森林(Random Forest)和决策树(Decision Tree)都是流行的机器学习算法,它们在数据分析和预测建模中广泛使用。尽管它们都基于决策树的概念,但它们在结构和应用上有所不同。下面我们来看看随机森林和决策树之间的一些主要区别:

  1. 模型结构
    • 决策树:是一个单一的树结构,它通过一系列的决策节点(内部节点)和终端节点(叶子节点)来对数据进行分类或回归。
    • 随机森林:是一个集成学习方法,它由多个决策树组成。随机森林通过构建多个树并将它们的预测结果进行组合来提高模型的性能。
  2. 预测方式
    • 决策树:对新数据进行预测时,从根节点开始,根据特征值沿着树的路径向下移动,直到到达叶子节点,该节点的值即为预测结果。
    • 随机森林:对新数据进行预测时,每个决策树都会给出自己的预测结果,然后通过投票(分类问题)或平均(回归问题)的方式来确定最终的预测结果。
  3. 过拟合问题
    • 决策树:容易过拟合,特别是在树很深的情况下,因为它可以完美地拟合训练数据。
    • 随机森林:通过集成多个树,随机森林能够减少过拟合的风险,因为即使单个树可能过拟合,但多个树的组合通常会更加稳定。
  4. 特征选择
    • 决策树:在每个节点上,决策树会考虑所有可用的特征来选择最佳的分割方式。
    • 随机森林:在构建每棵树时,随机森林会在每个节点上随机选择一部分特征来考虑最佳的分割方式,这增加了模型的多样性。
  5. 训练时间
    • 决策树:通常训练时间较短,因为只需要训练一个模型。
    • 随机森林:训练时间较长,因为需要训练多个决策树。
  6. 特征重要性
    • 决策树:可以提供特征重要性的度量,但通常不如随机森林准确。
    • 随机森林:能够提供更准确的特征重要性度量,因为它基于多个树的平均结果。

总的来说,随机森林通过集成多个决策树来提高模型的准确性和鲁棒性,而决策树则是一个更简单、更快速的单模型方法。随机森林通常在处理复杂数据集时表现更好,而决策树则适用于快速原型设计和简单数据集。

本文作者:戴诺斯·拉姆 @ 拉姆的小树屋

本文链接:https://sherry14love.github.io/2024/05/20/learn/data2/

本文版权:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

留言