随机森林

1人阅读 评论(0) 收藏 举报
分类:

     随机森林指的是利用多棵树对样本进行训练并预测的一种分类器。该分类器最早由Leo Breiman和Adele Cutler提出,并被注册成了商标。

根据下列算法而建造每棵树
  1. N来表示训练用例(样本)的个数,M表示特征数目。
  2. 输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M
  3. N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。
  4. 对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。根据这m个特征,计算其最佳的分裂方式。
  5. 每棵树都会完整成长而不会剪枝,这有可能在建完一棵正常树状分类器后会被采用)。
随机森林的优点有:
1)对于很多种资料,它可以产生高准确度的分类器;
2)它可以处理大量的输入变数;
3)它可以在决定类别时,评估变数的重要性;
4)在建造森林时,它可以在内部对于一般化后的误差产生不偏差的估计;
5)它包含一个好方法可以估计遗失的资料,并且,如果有很大一部分的资料遗失,仍可以维持准确度;
6)它提供一个实验方法,可以去侦测variable interactions;
7)对于不平衡的分类资料集来说,它可以平衡误差;
8)它计算各例中的亲近度,对于数据挖掘、侦测离群点(outlier)和将资料视觉化非常有用;
9)使用上述。它可被延伸应用在未标记的资料上,这类资料通常是使用非监督式聚类。也可侦测偏离者和观看资料;
10)学习过程是很快速的。


首先加载iris数据集,并分为两部分:70%为训练集,30%为测试集

>  set.seed(1234)
>  ind <- sample(2, nrow(iris), replace = TRUE, prob = c(0.7, 0.3))
>  trainData <- iris[ind ==1,]
>  testData <- iris[ind==2,]

其次加载randomForest包,并训练一个随机森林.下面的方程式为“Species~.”,表示用数据集中的其他所有变量来预测Species的值。

> library(randomForest)
randomForest 4.6-12
Type rfNews() to see new features/changes/bug fixes.

载入程辑包:‘randomForest’

The following object is masked from ‘package:ggplot2’:

    margin

Warning message:
程辑包‘randomForest’是用R版本3.3.3 来建造的 
> rf <- randomForest(Species ~ ., data = trainData, ntree = 100, proximity = TRUE)
> table(predict(rf), trainData$Species)
            
             setosa versicolor virginica
  setosa         40          0         0
  versicolor      0         35         2
  virginica       0          3        32

然后,根据生成的随机森林中不同树来绘制误差率。

> plot(rf)

变量的重要性获得。

> importance(rf)
             MeanDecreaseGini
Sepal.Length         7.668898
Sepal.Width          1.537643
Petal.Length        29.480942
Petal.Width         35.022696
> varImpPlot(rf)

最后,使用测试集对已经构建好的随机森林进行测试并查看结果。

> irisPred <- predict(rf, newdata = testData)
> table(irisPred, testData$Species)
            
irisPred     setosa versicolor virginica
  setosa         10          0         0
  versicolor      0         12         2
  virginica       0          0        14
> plot(margin(rf, testData$Species))

数据的编剧为正确归类的比例减去被归到其他类的最大比例。一般来说,边距为正数说明该数据点划分正确。




查看评论

实现具有动态主机IP的域名解析

[ 作者: wenhuah   添加时间: 2001-5-2 12:24:33 ]来源:www.chinaaid.com.cn目的利用一台INTERNET DNS HOST 将域名定向到家中(个人)的...
  • ju_feng
  • ju_feng
  • 2002-03-27 08:51:00
  • 635

随机森林matlab代码

  • 2011年03月17日 12:47
  • 510KB
  • 下载

初始决策树与随机森林

  • 2018年04月02日 16:50
  • 26KB
  • 下载

classRF_train.m

  • 2013年04月25日 11:25
  • 14KB
  • 下载

机器学习十大算法---8. 随机森林算法

在学习随机森林之前我们想你学习以下集成学习(ensemble)的内容。--随机森林简介随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。...
  • Julialove102123
  • Julialove102123
  • 2017-10-31 16:51:20
  • 1091

随机森林简单例子

# -*- coding: utf-8 -*- import os import pandas as pd import numpy as np os.chdir('E:/MYPROJ...
  • u010035907
  • u010035907
  • 2016-08-10 18:50:48
  • 2462

机器学习——随机森林算法及原理

随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判...
  • NIeson2012
  • NIeson2012
  • 2016-04-29 09:30:03
  • 38928

Mahout---随机森林算法示例

Step 1: 准备样本集,由于数据太多了,所以只截取部分数据1,1.52101,13.64,4.49,1.10,71.78,0.06,8.75,0.00,0.00,1 2,1.51761,13.8...
  • ymf827311945
  • ymf827311945
  • 2017-07-06 15:57:23
  • 744

随机森林二分类建模

由于对r相对比较熟悉,先用的r处理数据,但是跑模型太慢,因此用py跑的模型。用了逻辑回归和随机森林,显然后者要好很多,因为维度一千多个,而且逻辑回归要涉及到更详细的特征处理,第一部分是r代码,第二部分...
  • Tanya_girl
  • Tanya_girl
  • 2015-12-15 15:13:56
  • 1848

随机森林参数理解与调优

随机森林模型中参数意义,初始值设定,调参方法。
  • u012559520
  • u012559520
  • 2017-08-17 17:02:03
  • 599
    个人资料
    等级:
    访问量: 0
    积分: 279
    排名: 0
    文章存档