zoukankan      html  css  js  c++  java
  • bagging与随机森林

    Bagging(Bootstrap aggregating)

    让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练样本组成,某个初始训练样本在某轮训练集中可以出现多次或根本不出现,训练之后可得到一个预测函数序列h_1,⋯ ⋯h_n ,最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。训练R个分类器f_i,分类器之间其他相同就是参数不同。其中f_i是通过从训练集合中(N篇文档)随机取(取后放回)N次文档构成的训练集合训练得到的。对于新文档d,用这R个分类器去分类,得到的最多的那个类别作为d的最终类别。

    Bagging算法可与其他分类,回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。

    随机森林

    随机森林在bagging基础上做了修改。

    从样本集中用Bootstrap采样选出n个样本;

    从所有属性中随机选择k个属性,选择最佳分割属性作为节点建立CART决策树;

    重复以上两步m次,即建立了m棵CART决策树

    这m个CART形成随机森林,通过投票表决结果,决定数据属于哪一类

    可以使用决策树作为基本分类器

    但也可以使用SVM、 Logistic回归等其他分类器,习惯上,这些分类器组成的“总分类器”,仍然叫做随机森林

    投票机制:

    一票否决(一致表决)

    少数服从多数

    有效多数(加权)

    阈值表决

    根据投票机制得到分类结果

    评价:

    在随机森林中,无需交叉验证来评价其分类的准确性,随机森林自带OOB(out-of-bag)错误估计:  

    OOB:在构造单棵决策树时我们只是随机有放回的抽取了N个样例,所以可以用没有抽取到的样例来测试这棵决策树的分类准确性,这些样例大概占总样例数目的三分之一

    代码事例:

     1 from sklearn.datasets import load_iris
     2 from sklearn.ensemble import RandomForestClassifier
     3 import pandas as pd
     4 import numpy as np
     5 
     6 iris = load_iris()
     7 df = pd.DataFrame(iris.data, columns=iris.feature_names)
     8 df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75
     9 df['species'] = pd.Factor(iris.target, iris.target_names)
    10 #print(df.head())
    11 
    12 train, test = df[df['is_train']==True], df[df['is_train']==False]
    13 
    14 features = df.columns[:4]
    15 clf = RandomForestClassifier(n_jobs=2)
    16 y, _ = pd.factorize(train['species'])
    17 clf.fit(train[features], y)
    18 
    19 preds = iris.target_names[clf.predict(test[features])]
    20 print(pd.crosstab(test['species'], preds, rownames=['actual'], colnames=['preds']))

     

  • 相关阅读:
    C#
    C#
    ssh学习笔记
    (已解决)Could not open '/var/lib/nova/mnt/*/volume-*': Permission denied
    RPCVersionCapError: Requested message version, 4.17 is incompatible. It needs to be equal in major version and less than or equal in minor version as the specified version cap 4.11.
    如何在linux下安装idea
    The system has no LUN copy license
    调整mysql数据库最大连接数
    mysql数据库编码问题
    cinder支持nfs快照
  • 原文地址:https://www.cnblogs.com/xmeo/p/6491471.html
Copyright © 2011-2022 走看看