随机森林

随机森林(Random Forest, RF)

匿名 (未验证) 提交于 2019-12-02 23:57:01
秉承bagging; 构造多颗相互独立CART决策树,形成一个森林,共同决策输出; 两个随机: 1)输入数据随机:从全体数据中又放回的选取部分数据; 2)每颗决策树构建的特征是从全体特征中随机选取;(从M个特征中选m个,再从这m个选取最优特征作为节点) 优点: 1)不易过拟合,抗噪能力强; 2)高度并行,运算快; 3)无偏估计; 4)对部分特征缺失不敏感; 随机森林调参 1、算法类型:ID3,C4.5,CART 2、树的数目(n_estimator)   (0,100]   较多的子树,提高模型的性能,降低速度; 3、随机属性个数(max_features)   logN、N/3、sqrt(N)、N   增加随机属性个数,提高模型性能,降低单个树的多样性,降低速度; 4、树的最大深度   $[1,\infty )$   -1表示树的完全生长; 5、叶子节点最少记录数(min_sample_leaf):   叶节点数据的最小个数,最小为2,一般50左右   较小的叶子是模型更容易捕捉训练数据的噪声,训练数据效果更好,模型越复杂; 6、叶子节点最少记录百分比   叶节点数据个数占父节点的最小比例; 来源:博客园 作者: DanniX 链接:https://www.cnblogs.com/danniX/p/10719752.html

用随机森林分类

匿名 (未验证) 提交于 2019-12-02 23:53:01
分类方法有很多种,什么多分类逻辑回归,KNN,决策树,SVM,随机森林等, 比较好用的且比较好理解的还是随机森林,现在比较常见的有python和R的实现。原理就不解释了,废话不多说,show me the code import csv import numpy as np from sklearn.ensemble import RandomForestRegressor from sklearn import preprocessing from sklearn.utils import shuffle from sklearn.metrics import mean_squared_error, explained_variance_score def load_dataset(filename): file_reader = csv.reader(open(filename,'rt'), delimiter=',') X, y = [], [] for row in file_reader: X.append(row[0:4]) y.append(row[-1]) # Extract feature names feature_names = np.array(X[0]) return np.array(X[1:]).astype(np.float32),np.array

sklearn 随机森林分类iris花

匿名 (未验证) 提交于 2019-12-02 23:41:02
#!/usr/bin/env python # coding: utf-8 # ### 导入随面森林的相关库文件. from sklearn.ensemble import RandomForestClassifier # 导入随机森林的包 # from sklearn.model_selection import train_test_split # 这个用于后台数据的分割 from sklearn.preprocessing import StandardScaler # 数据的标准化 import numpy as np #导入iris数据 # * Sepal.Length(花萼长度),单位是cm; # * Sepal.Width(花萼宽度),单位是cm; # * Petal.Length(花瓣长度),单位是cm; # * Petal.Width(花瓣宽度),单位是cm; # * 种类:Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),以及Iris Virginica(维吉尼亚鸢尾) 共三种 from sklearn import datasets # 导入iris自带数据库文件 iris_data = datasets.load_iris() iris_feature = iris_data.data[:151:2] iris_target =

集成学习---(Bagging) RandomForest

匿名 (未验证) 提交于 2019-12-02 23:40:02
版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/m0_37263345/article/details/91418554 一、简介 https://www.cnblogs.com/maybe2030/p/4585705.html 鉴于决策树容易过拟合的缺点,随机森林采用多个决策树的投票机制来改善决策树,我们假设随机森林使用了m棵决策树,那么就需要产生m个一定数量的样本集来训练每一棵树,如果用全样本去训练m棵决策树显然是不可取的,全样本训练忽视了局部样本的规律,对于模型的泛化能力是有害的 产生n个样本的方法采用Bootstraping法,这是一种有放回的抽样方法,产生n个样本 而最终结果采用Bagging的策略来获得,即多数投票机制 随机森林的生成方法: 1.从样本集中通过重采样的方式产生n个样本 2.假设样本特征数目为a,对n个样本选择a中的k个特征,用建立决策树的方式获得最佳分割点 3.重复m次,产生m棵决策树 4.多数投票机制来进行预测 (需要注意的一点是,这里m是指循环的次数,n是指样本的数目,n个样本构成训练的样本集,而m次循环中又会产生m个这样的样本集) 二、细节 1、随机森林的随机 有两个方面:数据的随机性选取,以及待选特征的随机选取 (1)、数据的随机选取: 首先,从原始的数据集中采取有放回的抽样,构造子数据集

随机森林RF

拜拜、爱过 提交于 2019-11-30 03:33:18
随机森林的一般步骤: 对原始数据集进行可放回随机抽样成K组子数据集 从样本的N个特征随机抽样m个特征 对每个子数据集构建最优学习模型 对于新的输入数据,根据K个最优学习模型,得到最终结果 采用bagging的方法可以降低方差,但不能降低偏差 公式法分析bagging法模型的方差问题: 假设子数据集变量的方差为,两两变量之间的相关性为 所以,bagging法的方差: 由(4)式可得,bagging法的方差减小了 结论:bagging法的模型偏差与子模型的偏差接近,方差较子模型的方差减小。所以,随机森林的主要作用是降低模型的复杂度,解决模型的过拟合问题。 随机森林是指利用多棵决策树对样本进行训练并预测的一种算法。也就是说随机森林算法是一个包含多个决策树的算法,其输出的类别是由个别决策树输出的类别的众树来决定的。在Sklearn模块库中,与随机森林算法相关的函数都位于集成算法模块ensemble中,相关的算法函数包括随机森林算法(RandomForestClassifier)、袋装算法(BaggingClassifier)、完全随机树算法(ExtraTreesClassifier)、迭代算法(Adaboost)、GBT梯度Boosting树算法(GradientBoostingClassifier)、梯度回归算法(GradientBoostingRegressor)、投票算法

10.集成学习与随机森林

落花浮王杯 提交于 2019-11-29 17:35:27
1.什么是集成学习 什么是集成学习,以前我们都是使用一个算法来进行预测,难免会有"独断专行"的感觉。集成学习是将多个算法集成在一块,然后多个算法对同一个问题进行预测,然后少数服从多数,这便是集成学习。 我们生活中有很多集成学习的例子,比如买东西的时候看推荐,如果10个人推荐你买A产品,但是只有1个人推荐你买B产品,我们会更将倾向于买B产品。 我们看看sklearn是如何为我们提供集成学习的接口的。 from sklearn.datasets import make_moons from sklearn.model_selection import train_test_split from sklearn.ensemble import VotingClassifier # ensemble,与集成学习有关的模块 X, y = make_moons(n_samples=500, noise=0.3, random_state=666) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666) from sklearn.linear_model import LogisticRegression from sklearn.svm import SVC from sklearn.tree

第7章 集成学习和随机森林

主宰稳场 提交于 2019-11-28 17:26:19
第7章 集成学习和随机森林 写在前面 参考书 《机器学习实战——基于Scikit-Learn和TensorFlow》 工具 python3.5.1,Jupyter Notebook, Pycharm 投票分类器 使用不同的训练方法训练同样的数据集。 from sklearn.ensemble import VotingClassifier: voting_clf = VotingClassifier( estimators=[ ('lr', log_clf), ('rf', rnd_clf), ('svc', svm_clf) ], voting='hard' ) voting_clf.fit(X_train, y_train) bagging和pasting 每个预测器使用的算法相同,但是在不同的训练集随机子集上进行训练。 采样时样本放回:bagging(boostrap aggregating,自举汇聚法),统计学中,放回重新采样称为自助法(bootstrapping)。 采样时样本不放回:pasting。 from sklearn.ensemble import BaggingClassifier bag_clf = BaggingClassifier( DecisionTreeClassifier(), n_estimators=500, max_samples=100,

随机森林

喜你入骨 提交于 2019-11-28 03:14:02
from sklearn.ensemble import RandomForestRegressor #导入随机森林的包 import pandas as pd #加载入数据,这里用的是住房的数据 from sklearn.datasets.california_housing import fetch_california_housing housing = fetch_california_housing() #进行数据的分割, test_size表示分割的比例 from sklearn.model_selection import train_test_split data_train, data_test, target_train, target_test = \ train_test_split(housing.data, housing.target, test_size = 0.1, random_state = 42) #构建随机森林的树 rfr = RandomForestRegressor(random_state=42) #每次生成的数都是相同的 rfr.fit(data_train, target_train) #模型计算 rfr_predict = rfr.predict(data_test) #预测结果 rfr.score(data_train,

决策树 随机森林 adaboost

折月煮酒 提交于 2019-11-27 18:12:41
 熵、互信息  决策树学习算法    信息增益    ID3、C4.5、CART  Bagging与随机森林  提升    Adaboost/GDBT  熵、互信息   熵是对 平均不确定性 的度量。   平均互信息:得知特征Y的信息而使得对标签X的信息的不确定性减少的程度。描述 随机变量之间的相似程度 。(条件熵、相对熵:差异性)  决策树      决策树学习采用的是自顶向下的递归方法,有监督学习。   其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶子节点处的熵值为零,此时每个叶节点中的实例都属于同一类。       建立决策树的关键,即在当前状态下选择哪个属性作为分类依据。根据不同的目标函数 ,建立决策树主要有一下三种算法。     ID3   信息增益:g(D,A) = H(D) - H(D|A)  特征A对训练数据集D的信息增益,选择互信息最大的特征为当前的分类特征。    C4.5 信息增益率:gr(D,A) = g(D,A)/H(A)   增加惩罚,泛化能力    CART      分类回归树 算法 : CART(Classification And Regression Tree)算法 采用一种 二分递归分割 的技术,将当前的样本集分为两个子样本集,       使得生成的的每个非叶子节点都有两个分支。因此

决策树与随机森林

爷,独闯天下 提交于 2019-11-27 18:12:21
一、决策树 决策树(decision tree)是一种基本的分类与回归方法,本篇主要讨论用于分类的决策树。 1.决策树模型 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶节点(leaf node)。内部结点表示一个特征或属性,叶节点表示一个类。 下图为一个决策树的示意图,图中圆和方框分别表示内部结点和叶节点。 2.特征选择 如何选择特征?即需要确定选择特征的准则。如果一个特征具有更好的分类能力,或者说,按照这一特征将训练数据集分割成子集,使得各个子集在当前条件下有更好的分类,那么就更应该选择这个特征。 2.1 熵 在信息论与概率统计中,熵(entropy)是表示随机变量不确定性的度量。设X是一个有限的离散随机变量,其概率分布为 \begin{align}\notag P(X=x_{i})=p_{i}, i=1,2,...,n \end{align} 则随机变量X的熵定义为 \begin{align}\notag H(X)=-\sum_{i=1}^{n}p_{i}\textrm{log}p_{i} \end{align} 上式中,对数以2为底或以e为底。如有0概率,定义0log0=0。由定义可知,熵只依赖于X的分布,而与X的取值无关,所以也可将X的熵记作H