1.加载数据

星博讯 AI基础认知 1

群众的智慧

想象一下,你要做一个重要决定(比如买哪只股票),如果你只问一个人,他的建议可能带有偏见或错误,但如果你询问成百上千个来自不同背景的人,然后采纳大多数人的意见,这个最终决定通常会更稳定、更准确

1.加载数据-第1张图片-星博讯网络科技知识-SEO优化技巧|AI知识科普|互联网行业干货大全

随机森林就是将这个“群体的智慧”思想应用于机器学习。 它不是一个模型,而是由许多棵决策树组成的“森林”,每棵树单独进行预测,而随机森林的最终预测结果是所有树预测的“投票”结果(分类问题)或平均结果(回归问题)。


两大基石:决策树 + 随机性

决策树

决策树是随机森林的基本单位,它是一种非常直观的模型,通过一系列“是/否”问题对数据进行分割。

  • 例子:预测一个人是否会购买电脑,问题可能是:“年龄 > 30岁?” → “是” → “收入 > 5万?” → “否” → 预测“不购买”。
  • 优点:容易理解和解释。
  • 缺点:单棵树非常容易过拟合(在训练数据上表现完美,但在新数据上很差),而且不稳定(数据微小变动会导致树结构剧变)。

“随机”性

为了克服单棵树的缺点,随机森林在构建每一棵树时,引入了两种随机性:

  • 随机样本(行随机):每棵树不是用全部训练数据来构建,而是从原始数据中有放回地随机抽取一个子集(这个过程叫 Bootstrap Aggregating, 或 Bagging),这意味着有些样本可能被多次抽中,有些则从未被选中(称为袋外数据,可用于模型验证)。
  • 随机特征(列随机):在树的每个节点进行分裂时,不是考虑所有特征,而是从所有特征中随机选取一个子集,然后从这个子集中选择最佳分裂特征,这迫使每棵树关注数据的不同方面,增加了多样性。

正是这两种随机性,确保了森林中的每棵树都各不相同、各有侧重,从而集成了多样化的观点。


随机森林是如何工作的?

训练过程:

  1. 从原始数据集中,通过 Bootstrap 随机抽取 n 个样本子集(n 等于森林中树的数量)。
  2. 对于每个样本子集,构建一棵决策树,在树构建的每个节点:
    • 随机选择一部分特征(比如总特征数的平方根)。
    • 从这些随机特征中,找到最佳的分裂点(如基尼不纯度最小或信息增益最大)。
    • 分裂节点,直到达到停止条件(如树达到最大深度,或节点样本数过少)。
  3. 重复步骤1和2,直到生成预定数量的树,形成“森林”。

预测过程:

  • 分类问题:将新数据输入森林中的每一棵树,每棵树都会给出一个类别预测,随机森林的最终预测是 “多数投票” 的结果(得票最多的类别)。
  • 回归问题:每棵树给出一个数值预测,随机森林的最终预测是所有树预测结果的 平均值

为什么随机森林如此强大?(优点)

  1. 高精度:在众多数据集上,其表现通常优于单棵决策树,也常常优于许多其他线性模型。
  2. 抗过拟合:由于Bagging和随机特征选择,它不容易过拟合,树的数量越多,模型越稳定。
  3. 对数据要求友好
    • 能处理数值型和类别型特征。
    • 不需要对数据进行复杂的标准化/归一化
    • 能够评估特征重要性,告诉你哪些特征对预测贡献大。
  4. 稳健性:对缺失值、异常值有一定的容忍度。
  5. 并行化:每棵树的构建是独立的,可以并行训练,速度快。

它的缺点

  1. “黑箱”模型:虽然我们知道每棵树在做什么,但成千上万棵树组合在一起,其整体决策过程难以直观解释(相比逻辑回归或单棵树)。
  2. 训练和预测速度:当树的数量非常多时,训练和预测可能比线性模型,尤其是在大数据集上。
  3. 内存占用:需要存储大量的树结构,内存消耗较大。
  4. 外推能力弱:对于回归问题,其预测值无法超出训练数据中响应变量的范围。

关键的超参数(调参时主要关注的)

  • n_estimators:森林中树的数量,越多越好,但计算成本也越高,边际收益会递减,通常从100开始尝试。
  • max_depth:单棵树的最大深度,限制深度可以防止过拟合,但可能欠拟合,常用 None(不限制)或具体数值。
  • max_features:节点分裂时考虑的最大特征数,这是控制随机性的关键参数,常用值有 ‘sqrt’(特征数平方根)或 ‘log2’
  • min_samples_split:分裂一个内部节点所需的最小样本数,值越大,树越保守。
  • min_samples_leaf:一个叶节点所需的最小样本数,可以平滑模型。

对于初学者,通常先调整 n_estimatorsmax_depth 就能获得不错的效果。


一个简单的类比总结

随机森林就像一个专家委员会:

  • 每位专家(决策树):都只基于部分信息(随机样本和特征)做出自己的判断。
  • 委员会主席(随机森林算法):收集所有专家的独立意见,然后通过投票或取平均的方式做出最终决策。
  • 结果:这个集体决策比任何单个专家的决策都更全面、更可靠、更不容易犯大的错误。

入门第一步

你可以使用 Python 的 scikit-learn 库快速上手:

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3)
# 2. 创建模型(使用默认参数)
model = RandomForestClassifier(n_estimators=100, random_state=42)
# 3. 训练模型
model.fit(X_train, y_train)
# 4. 评估模型
accuracy = model.score(X_test, y_test)
print(f"模型准确率: {accuracy:.2f}")
# 5. 查看特征重要性
for name, importance in zip(data.feature_names, model.feature_importances_):
    print(f"{name}: {importance:.3f}")

希望这份入门指南能帮助你建立起对随机森林清晰直观的理解!它是你进入机器学习世界一个非常强大且实用的工具。

标签: 数据加载 数据处理

抱歉,评论功能暂时关闭!

微信咨询Xboxun188
QQ:1320815949
在线时间
10:00 ~ 2:00