Random forest,随机森林。

1. 决策树

一种树形结构,通过学习数据中的特征,逐层对数据进行划分。每一个节点代表一个特征的决策条件,叶子节点代表最终的分类结果或回归值。

1.1 构建步骤

  1. 从特征中选择最优特征作为节点进行数据集划分(如基尼指数或信息增益)。
  2. 对每个子数据集递归地构建决策树,直到满足终止条件(如树的深度、叶子节点数等)。
  3. 决策树会根据训练样本中学到的规则,给出分类或回归的结果。

1.2 信息增益(Information Gain)

信息增益衡量的是某个特征对样本的分类效果,特征对数据集进行划分后,信息的不确定性减少的程度。

计算公式:

\[ Gain(D, A) = Entropy(D) - \sum_{v=1}^{V} \frac{|D_v|}{|D|} Entropy(D_v) \]

其中: \(Gain(D, A)\)是特征\(A\)对数据集\(D\)的信息增益, \(Entropy(D)\)是数据集\(D\)的熵,计算公式为:

\[ Entropy(D) = - \sum_{i=1}^{k} p_i \log_2 p_i \]

其中: \(p_i\)是第\(i\)类的样本在数据集\(D\)中的比例, \(k\)是类别的数量。

信息增益的目标是通过最大化 信息增益 来选择用于分裂的特征。

1.3 基尼指数(Gini Impurity)

基尼指数用于衡量一个节点的不纯度程度,数值越高表示样本的不纯度越高。其计算公式如下:

\[ G(p) = 1 - \sum_{i=1}^{k} p_i^2 \]

其中: \(p_i\)是属于第\(i\)类的样本所占的比例。 \(k\)是类别的总数。

对于某个特征\(A\)的基尼指数计算公式为:

\[ Gini(D, A) = \sum_{v=1}^{V} \frac{|D_v|}{|D|} G(D_v) \]

其中: \(D\)是数据集, \(D_v\)是特征\(A\)取值为\(v\)的子数据集, \(V\)是特征\(A\)的取值个数, \(G(D_v)\)是子集\(D_v\)的基尼指数。

2. 核心思想

随机森林通过多棵决策树的集成来提升模型的性能。每棵树是在随机子集上构建的,这里的随机性包括以下两点:

  1. 数据采样:使用有放回的随机抽样(即 Bootstrap)从训练数据集中采样,生成多个不同的子数据集。每棵决策树在不同的数据子集上进行训练。
  2. 特征选择:每个节点进行决策时,从所有特征中随机选择一部分特征,然后在这些特征中选择最佳的分裂点。这一随机性避免了所有决策树过于依赖某些特定的强特征。

3. 算法步骤

  1. 数据随机采样:从训练集中通过Bootstrap方法随机采样,生成若干个包含放回采样的数据子集。
  2. 训练决策树:在每个数据子集上训练一棵决策树,每次节点分裂时,随机选择部分特征进行决策。
  3. 集成决策树:将所有训练得到的决策树组成森林,作为最终的模型。
  4. 投票或平均:对新样本输入森林时,所有树各自给出预测结果,分类问题通过投票法确定最终类别,回归问题通过平均法确定最终值。

4. 损失函数

随机森林的损失函数依赖于具体任务:

  • *分类问题:随机森林通常最小化基尼不纯度信息增益,即在构建决策树时,选择能够最大化类别纯度的特征进行划分: \[ G(p) = 1 - \sum_{i=1}^{k} p_i^2 \] 其中,\(p_i\)是当前节点中属于第\(i\)类的样本比例,\(k\)是类别数量。

  • 回归问题:随机森林最小化的是均方误差(MSE),用来衡量预测值与真实值的差距: \[ MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 \] 其中,\(y_i\)是真实值,\(\hat{y}_i\)是预测值,\(n\)是样本数量。

优势

  1. 高准确率:通过集成多棵决策树,随机森林显著提高了模型的准确性,特别是在分类和回归任务中。
  2. 抗过拟合:决策树易过拟合,但随机森林通过对多个树的集成以及引入随机性,减少了过拟合的风险。
  3. 处理高维数据:随机森林能够很好地处理高维数据,并且在特征选择中具有较好的表现。
  4. 处理缺失值:它可以自动处理缺失数据,并能够通过投票或平均来进行处理。
  5. 可并行化:由于每棵树是独立训练的,因此随机森林易于并行化,训练速度快。

缺点

  1. 模型复杂度高:随机森林由许多决策树组成,模型的复杂度较高,训练和预测的时间成本较大。
  2. 解释性差:随机森林虽然性能优异,但由于其集成了大量决策树,整体模型较为复杂,难以解释各个特征的重要性和决策路径。
  3. 计算开销大:训练大量的决策树需要较高的计算资源,尤其是在处理大规模数据时,训练时间较长,内存开销大。
  4. 对高噪声数据敏感:随机森林对噪声数据的鲁棒性不足,可能导致过多无效的树,影响整体预测效果。