`
backsnow
  • 浏览: 130999 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

随机森林

 
阅读更多

随机森林的基本过程是:(m*n,m为样本数,n为特征维)1,训练:随机选择若干特征r<<n(似乎一般去sqrt(n)),构造决策树;2,预测:通过所有决策树分类,然后以投票方式,得票数最多的分类即为分类值。

决策树构造过程如下,其中最大化Information gain来获得最有效的特征:

How to grow a Decision Tree

source : [3]

LearnUnprunedTree(X,Y)

Input: X a matrix of R rows and M columns where Xij = the value of the j'th attribute in the i'th input datapoint. Each column consists of either all real values or all categorical values.
Input: Y a vector of R elements, where Yi = the output class of the i'th datapoint. TheYi values are categorical.
Output: An Unpruned decision tree

If all records in X have identical values in all their attributes (this includes the case where R<2), return a Leaf Node predicting the majority output, breaking ties randomly. This case also includes
If all values in Y are the same, return a Leaf Node predicting this value as the output
Else
    select m variables at random out of the M variables
    For j = 1 .. m
        If j'th attribute is categorical
            IGj = IG(Y|Xj) (see Information Gain)            
        Else (j'th attribute is real-valued)
            IGj = IG*(Y|Xj) (see Information Gain)
    Let j* = argmaxj IGj (this is the splitting attribute we'll use)
    If j* is categorical then
        For each value v of the j'th attribute
            Let Xv = subset of rows of X in which Xij = v. Let Yv = corresponding subset of Y
            Let Childv = LearnUnprunedTree(Xv,Yv)
        Return a decision tree node, splitting on j'th attribute. The number of children equals the number of values of the j'th attribute, and the v'th child is Childv
    Else j* is real-valued and let t be the best split threshold
        Let XLO = subset of rows of X in which Xij <= t. Let YLO = corresponding subset of Y
        Let ChildLO = LearnUnprunedTree(XLO,YLO)
        Let XHI = subset of rows of X in which Xij > t. Let YHI = corresponding subset of Y
        Let ChildHI = LearnUnprunedTree(XHI,YHI)
        Return a decision tree node, splitting on j'th attribute. It has two children corresponding to whether the j'th attribute is above or below the given threshold.

Note: There are alternatives to Information Gain for splitting nodes

注意,分类和实值求最大information gain是不同的,这里只说明实值的情形,IG*(Y|Xj)=max_t IG(Y|X_j:t),这样同时确定了best split的值t。

 

entropy=-sum p_ilog(p_i),(entropy即为H函数) high entropy意味着变量为boring distribution,即变量取各个值的概率差距不大; low entropy意味着变量为varied(peaks and valley)distribution,即变量取某一个或两个值的概率特别高。我们的目的就是要找到Low entropy的特征,因为 information gain= H(Y)-H(Y|X),在H(Y)固定时,找到的H(Y|X)越低,则该特征去某一个值或两个值的概率越高,能够分类清楚的样本数越多,这样就越该被先选中作为分支节点。

 

Information gain

source : [3]

  1. nominal attributes

suppose X can have one of m values V1,V2,...,Vm
P(X=V1)=p1, P(X=V2)=p2,...,P(X=Vm)=pm
 
H(X)= -sumj=1m pj log2 pj (The entropy of X)
H(Y|X=v) = the entropy of Y among only those records in which X has value v
H(Y|X) = sumj pj H(Y|X=vj)
IG(Y|X) = H(Y) - H(Y|X)

  1. real-valued attributes

suppose X is real valued
define IG(Y|X:t) as H(Y) - H(Y|X:t)
define H(Y|X:t) = H(Y|X<t) P(X<t) + H(Y|X>=t) P(X>=t)
define IG*(Y|X) = maxt IG(Y|X:t)

How to grow a Random Forest

source : [1]

Each tree is grown as follows:

  1. if the number of cases in the training set is N, sample N cases at random -but with replacement, from the original data. This sample will be the training set for the growing tree.
  2. if there are M input variables, a number m << M is specified such that at each node, m variables are selected at random out of the M and the best split on these m is used to split the node. The value of m is held constant during the forest growing.
  3. each tree is grown to its large extent possible. There is no pruning.

Random Forest parameters

source : [2]
Random Forests are easy to use, the only 2 parameters a user of the technique has to determine are the number of trees to be used and the number of variables (m) to be randomly selected from the available set of variables.
Breinman's recommendations are to pick a large number of trees, as well as the square root of the number of variables for m.

分享到:
评论

相关推荐

    随机森林_随机森林matlab_随机森林_随机森林matlab_随机森林工具箱_随机森林回归

    随机森林是一种集成学习方法,由Leo Breiman在2001年提出,它结合了决策树的优势并引入了随机化机制以提高模型的多样性和泛化能力。在MATLAB环境中,随机森林工具箱允许用户利用这种强大的算法进行分类和回归任务。 ...

    代码 随机森林应用于分类问题代码

    代码 随机森林应用于分类问题代码代码 随机森林应用于分类问题代码代码 随机森林应用于分类问题代码代码 随机森林应用于分类问题代码代码 随机森林应用于分类问题代码代码 随机森林应用于分类问题代码代码 随机森林...

    随机森林,随机森林算法,matlab

    随机森林是一种集成学习方法,由Leo Breiman在2001年提出,它结合了多个决策树模型以提高预测性能和防止过拟合。在MATLAB中,随机森林被广泛应用于分类和回归任务,尤其在大数据集上的预测分析。下面我们将深入探讨...

    RF_随机森林回归_随机森林_

    随机森林回归是一种集成学习方法,主要用于解决回归问题。在机器学习领域,集成学习通过结合多个弱预测器构建一个强预测模型。随机森林是这类方法的一个典型代表,由Leo Breiman在2001年提出。它结合了决策树的灵活...

    随机森林C++实现

    随机森林是一种集成学习方法,由多个决策树组成,用于分类和回归任务。在这个"随机森林C++实现"项目中,开发者使用C++编程语言构建了一个随机森林模型,以解决实际的机器学习问题。C++是一种高效且灵活的编程语言,...

    Java实现随机森林算法

    在Java中实现随机森林算法通常需要使用机器学习库,比如Weka或者Apache Spark的MLlib。下面我将展示一个使用Weka库的简单示例,来说明如何使用随机森林算法对数据进行分类。 首先,你需要在项目中引入Weka库。如果...

    随机森林matlab代码

    随机森林是一种集成学习方法,由Leo Breiman在2001年提出,广泛应用于机器学习领域,包括分类和回归任务。这个压缩包包含了在MATLAB环境中实现随机森林算法的代码和相关资源,允许用户在自己的数据集上进行训练和...

    MATLAB 随机森林模型

    在MATLAB中,随机森林(Random Forest)是一种强大的机器学习算法,常用于分类和回归任务。这个模型通过构建大量的决策树并结合它们的预测结果来提高整体预测的准确性和稳定性。"MATLAB 随机森林模型"可能涉及到以下...

    随机森林(C语言)

    随机森林是一种集成学习方法,由Leo Breiman在2001年提出,它结合了决策树的优势并引入了随机化机制以提高模型的预测能力和泛化能力。在C语言实现的背景下,我们可以深入理解随机森林的基本原理以及如何在实际项目中...

    生存分析随机森林实验与代码_python_生存分析_随机森林_

    在生存分析中,我们可以使用Cox随机森林或者加权随机森林,这两种方法都是基于Cox比例风险模型的随机森林变种。它们通过构建多个决策树来预测生存时间和风险评分。 在Python中,我们可以使用`lifelines`库进行生存...

    ENVI随机森林分类插件

    **ENVI随机森林分类插件**是基于ENVI(Environment for Visualizing Images)遥感图像处理软件的一个扩展工具,主要用于遥感数据的监督分类。ENVI是一款强大的遥感图像处理和分析平台,广泛应用于地球科学、环境监测...

    07 决策树与随机森林,随机森林和决策树相比有什么优点,matlab

    决策树和随机森林是两种广泛应用于机器学习领域的监督学习算法,尤其在分类和回归问题上表现出色。本文将深入探讨这两种算法的原理、优缺点以及它们在MATLAB环境中的实现。 首先,我们来理解决策树(Decision Tree...

    随机森林算法java数据挖掘算法源码.rar

    随机森林算法是一种集成学习方法,它通过构建多个决策树并取其平均结果来提高预测准确性。在Java中实现随机森林算法,需要理解以下几个关键概念和技术: 1. **决策树**:决策树是一种基本的分类与回归方法,通过一...

    随机森林代码-matlab

    随机森林是一种集成学习方法,由Leo Breiman在2001年提出,广泛应用于分类和回归任务中。在MATLAB环境中实现随机森林,可以利用其强大的统计和机器学习工具箱。这个压缩包“randomforest-matlab”包含了实现随机森林...

    随机森林汇报代码实验报告大全

    **随机森林算法详解** 随机森林是一种基于集成学习的机器学习方法,它结合了多个决策树的预测结果,以提高整体的预测准确性和鲁棒性。本实验报告将深入探讨随机森林的基本原理、构建过程以及使用Python实现的过程。...

    随机森林 C++ 算法实现

    随机森林是一种集成学习方法,由Leo Breiman于2001年提出,它结合了多个决策树模型以提高预测性能并减少过拟合的风险。在C++中实现随机森林算法,需要理解以下几个核心概念和步骤: 1. **决策树**:随机森林的基础...

    随机森林用于分类matlab代码

    随机森林是一种集成学习方法,由Leo Breiman在2001年提出,广泛应用于分类和回归任务。在MATLAB环境中,实现随机森林算法可以帮助我们理解其工作原理,并将其应用于实际问题。下面,我们将深入探讨随机森林及其在...

    随机森林的MATLAB实现

    随机森林是一种集成学习方法,由多个决策树组成,用于分类和回归任务。在这个MATLAB实现中,我们将探讨如何使用MATLAB构建随机森林模型,并利用提供的训练数据集`train.data`和测试数据集`test.data`进行训练和评估...

    随机森林_随机森林算法_随机森林回归算法_随机森林_

    随机森林是一种集成学习方法,由Leo Breiman在2001年提出,它结合了决策树的优势并引入了随机化机制以提高模型的多样性和泛化能力。随机森林主要用于分类和回归任务,其核心思想是构建多棵决策树并集成它们的预测...

Global site tag (gtag.js) - Google Analytics