随机森林

Posted Speak Softly Love

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了随机森林相关的知识,希望对你有一定的参考价值。

http://www.cnblogs.com/wentingtu/archive/2011/12/13/2286212.html

随机森林,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
 
随机森林的采样分为行采样和列采样
行采样使用使用bagging中的Bootstrap aggregating方法。采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那 么采样的样本也为N个。
列采样从M个feature中,选择m个(m << M)。之后就是对采样之后的数据使用完全分裂的方式建立出决策树。
特点
•随机选取训练样本集
•随机选取分裂属性集
•每棵树任其生长,不进行剪枝
 
影响性能因素
•单棵树的分类强度:每棵树分类强度越大,随机森林分类性能越好
•森林中树之间的相关度:树之间的相关度越大,则随机森林的分类性能越差

随机森林的实际用例:

https://www.kaggle.com/c/digit-recognizer/forums/t/2299/getting-started-python-sample-code-random-forest

from sklearn.ensemble import RandomForestClassifier
import numpy as np
import pandas as pd

# create the training & test sets, skipping the header row with [1:]
dataset = pd.read_csv("/Users/ml_data/train.csv")
target = dataset[[0]].values.ravel()
train = dataset.iloc[:,1:].values
test = pd.read_csv("/Users/ml_data/test.csv").values

# create and train the random forest
# multi-core CPUs can use: rf = RandomForestClassifier(n_estimators=100, n_jobs=2)
rf = RandomForestClassifier(n_estimators=100)
rf.fit(train, target)
pred = rf.predict(test)

np.savetxt(\'submission_rand_forest.csv\', np.c_[range(1,len(test)+1),pred], delimiter=\',\', header = \'ImageId,Label\', comments = \'\', fmt=\'%d\')

 

 

 

以上是关于随机森林的主要内容,如果未能解决你的问题,请参考以下文章

随机森林算法

Spark MLlib速成宝典模型篇06随机森林Random Forests(Python版)

数据结构-集成算法-随机森林

spark 随机森林 源码解析

spark 随机森林 源码解析

数据结构-集成算法-随机森林