栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

随机森林(Random Forest)进行特征筛选并可视化(随机森林是属于有监督还是无监督)

随机森林(Random Forest)进行特征筛选并可视化(随机森林是属于有监督还是无监督)

1.随机森林基本思想

Bagging+决策树作为base model + 每个决策树权重为1 + Boostrap有放回的采样

2.决策树采用投票的方式。

假如训练了5颗树,其中4颗树是True,1颗树是False

那么结果就是True

3.单颗决策树建立的过程

(1)随即在N个样本中选择一个样本,重复N次(样本有可能重复)。

(2)随机在M个特征中选出m(m<=M)个特征。

那么建立多颗决策树,样本,特征大多不一样。

随机森林要求每颗决策树的正确率一定要大于50%,如果正确率小于50%,那么随机森林整体正确率也会远远低于单颗决策树。所以使用随机森林之前一定要检查,用来组成随机森林的分类树是否都至少有50%的正确率,如果没有,那就不要使用随机森林。

sklearn中的应用

4.随机森林分类器参数介绍

(1)criterion:不纯度的衡量指标(不纯度越低代表分类效果越好):gini,信息熵。

(2)max_depth:树的最大深度。

(3)min_samples_leaf=5:节点至少包含5个训练样本,如果少于5个,那么就不会再分支

(4)min_sample_split=5:节点必须包含5个样本,这个节点才被允许分支。

(5)max_features:限制分支时考虑的特征个数,超过限制个数都会被舍弃(有点类似于降维),默认值为总特征个数开平方取证。

(6)min_impurity_decrease:限制信息增益的大小,信息增益小于设置的数值,分支就不会发生。

注:随机森林的这些参数和决策树的参数一模一样

新的参数:

(1)n_estimators:使用决策树的个数,决策树的个数在增长到决策边界后,随机森林的准确率就不会增长。所以并不是决策树的数量越多越好。n_estimators的数量越大,消耗的时间和内存也越多。一般来说0-200之间是效果比较好的。

# 查看随机森林中每一棵树的属性参数
rfc.estimators_

(2)随机森林的random_state和决策树有区别,决策树是生成了一个随机数,随机森林是对每一棵树随机设置随机数,即每一棵树的随机数是不一样的。

(3)boostarp=True 开启有放回的随机抽样技术。

(3)oob_score:True    sklearn开启袋外数据验证,oob数据开启后,随机森林就不用切分训练集和测试集了。(当然随机森林可以用交叉验证也可以用袋外数据做验证)

# 查看袋外数据测试分数
rfc.oob_score_
# 返回每一个样本对应的每一类标签的概率
rfc.predict_proba(X_test)

[[0.925 0.07  0.005]
 [0.725 0.26  0.015]
 [0.    1.    0.   ]
 [0.27  0.59  0.14 ]
 [0.015 0.965 0.02 ]
 [0.98  0.01  0.01 ]
 [0.335 0.625 0.04 ]
 [0.005 0.055 0.94 ]
 [0.92  0.06  0.02 ]
 [0.    0.995 0.005]
 [0.02  0.085 0.895]
 [0.    0.    1.   ]
 [0.    0.995 0.005]
 [0.215 0.645 0.14 ]
 [0.01  0.13  0.86 ]
 [0.095 0.28  0.625]
 [0.    0.06  0.94 ]
 [0.06  0.25  0.69 ]
 [0.985 0.015 0.   ]
 [0.    0.995 0.005]
 [0.62  0.375 0.005]
 [0.99  0.01  0.   ]
 [1.    0.    0.   ]
 [0.91  0.08  0.01 ]
 [0.    0.01  0.99 ]
 [0.005 0.915 0.08 ]
 [0.04  0.15  0.81 ]
 [1.    0.    0.   ]
 [0.03  0.97  0.   ]
 [0.03  0.965 0.005]
 [0.    0.98  0.02 ]
 [0.01  0.98  0.01 ]
 [0.18  0.15  0.67 ]
 [0.94  0.03  0.03 ]
 [0.995 0.005 0.   ]
 [0.915 0.07  0.015]
 [0.    0.    1.   ]
 [0.995 0.005 0.   ]
 [0.    1.    0.   ]
 [0.015 0.94  0.045]
 [0.09  0.91  0.   ]
 [1.    0.    0.   ]
 [0.185 0.765 0.05 ]
 [0.085 0.235 0.68 ]
 [0.96  0.04  0.   ]]
 5.随机森林分类代码实现:
    from sklearn.ensemble import RandomForestClassifier    

    # 随机森林进行预测
    rf = RandomForestClassifier()

    # 网格搜索与交叉验证
    param = {"n_estimators": [120, 200, 300, 500, 800, 1200], "max_depth": [5, 8, 15, 25, 30]}
    gs = GridSearchCV(rf, param_grid=param, cv=5)
    gs.fit(X_train, y_train)
    gs.predict(X_test)
    print("准确率是:",gs.score(X_test, y_test))
    print("选择的参数模型:", gs.best_params_)

6.随机森林做回归

sklearn机会所有的参数都和随机森林做回归一样。

不同点:

criterion的参数,分类树用的gini系数,信息增益。回归树用mse均方误差。

随机森林做回归没有predict_proba接口。

代码:

    regress = RandomForestRegressor(n_estimators=100, random_state=0)
    print(cross_val_score(regress, X, y, cv=10, scoring="neg_mean_squared_error"))

    # 返回的这些数是mse,mse越小,代表这个模型拟合的越好。

    # [-0.0146 - 0.04884444 - 0.05197222 - 0.07756111 - 0.09371111 - 0.01176111
    #  - 0.0136 - 0.20569444 - 0.17169412 - 0.01501765]
    print(sklearn.metrics.SCORERS.keys())

5.随机森林的优点:

(1)具有良好的准确率。

(2)得益于bagging,能够并行训练,能够运行在大数据集上面。

(3)能够处理高纬度特征输入样本,而且不需要降维。

(4)能够评估各个特征在分类问题上的重要性。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772351.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号