• 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']))

     

  • 相关阅读:
    mysql 按某属性分组,再统计不同状态 COUNT(IF(FIELD(column_name,str1,str2,str3,...) >= 0, any_value, null)) ... GROUP BY group_column_name
    linux shell相关 & 定时清除日志脚本
    Linux exec source
    mybatis关联查询xml文件简写,复用BaseResultMap和sql
    mysql 组内排序(分组之前排序,如分组取最新时间的数据)
    Spring 拦截器postHandle无法修改Response响应头跨域
    产业数据三级联动,直接通过sql查询,开启二级缓存
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk
    jd-gui反编译报错 INTERNAL ERROR
    javax.websocket.server.ServerContainer not available
  • 原文地址:https://www.cnblogs.com/xmeo/p/6491471.html
Copyright © 2020-2023  润新知