决策树

随机森林

北城余情 提交于 2020-02-27 02:27:00
1.什么是随机森林 1.1 Bagging思想 Bagging是bootstrap aggregating。思想就是从总体样本当中随机取一部分样本进行训练,通过多次这样的结果,进行投票获取平均值作为结果输出,这就极大可能的避免了不好的样本数据,从而提高准确度。因为有些是不好的样本,相当于噪声,模型学入噪声后会使准确度不高。 举个例子 : 假设有1000个样本,如果按照以前的思维,是直接把这1000个样本拿来训练,但现在不一样,先抽取800个样本来进行训练,假如噪声点是这800个样本以外的样本点,就很有效的避开了。重复以上操作,提高模型输出的平均值。 1.2 随机森林 Random Forest(随机森林)是一种基于树模型的Bagging的优化版本,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的特点。(可以理解成三个臭皮匠顶过诸葛亮) 而同一批数据,用同样的算法只能产生一棵树,这时Bagging策略可以帮助我们产生不同的数据集。Bagging策略来源于bootstrap aggregation:从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),在所有样本上,对这n个样本建立分类器(ID3\C4.5\CART\SVM\LOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果

决策树介绍

廉价感情. 提交于 2020-02-26 22:54:07
1.决策树介绍 决策树利用了树型结构进行决策,是经典的 if-then 结构。叶节点存储类别,内部节点代表特征或属性。 2.决策树使用示例 # -*- coding: utf-8 -*- #导入numpy import numpy as np #导入画图工具 import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap #导入tree模型和数据集加载工具 from sklearn import tree,datasets #导入数据集拆分工具 from sklearn.model_selection import train_test_split wine = datasets.load_wine() # 只选取数据集的前两个特征 X = wine.data[:,:2] y = wine.target X_train,X_test,y_train,y_test = train_test_split(X,y) #设定决策树分类器最大深度1 clf = tree.DecisionTreeClassifier(max_depth=5) clf.fit(X_train,y_train) #定义图像中分区的颜色和散点的颜色\n cmap_light = ListedColormap(['#FFAAAA

GBDT

*爱你&永不变心* 提交于 2020-02-26 19:14:55
1. 解释一下GBDT算法的过程 GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,使用的是Boosting的思想。 1.1 Boosting思想 Boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖。它的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类器分错的样本,给予更高的权重。测试时,根据各层分类器的结果的加权得到最终结果。 Bagging与Boosting的串行训练方式不同,Bagging方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练。 1.2 GBDT原来是这么回事 GBDT的原理很简单,就是所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合误差函数对预测值的残差(这个残差就是预测值与真实值之间的误差)。当然了,它里面的弱分类器的表现形式就是各棵树。 举一个非常简单的例子,比如我今年30岁了,但计算机或者模型GBDT并不知道我今年多少岁,那GBDT咋办呢? 它会在第一个弱分类器(或第一棵树中)随便用一个年龄比如20岁来拟合,然后发现误差有10岁; 接下来在第二棵树中,用6岁去拟合剩下的损失,发现差距还有4岁; 接着在第三棵树中用3岁拟合剩下的差距,发现差距只有1岁了; 最后在第四课树中用1岁拟合剩下的残差,完美。 最终,四棵树的结论加起来,就是真实年龄30岁(实际工程中

《数据挖掘(完整版)》笔记 - 决策树

夙愿已清 提交于 2020-02-25 01:50:26
决策树 1. 决策树归纳的特点 2. 模型的过分拟合 3. 估计泛化误差 3.1 再代入估计 3.2 结合模型复杂度 1. 决策树归纳的特点 决策树归纳是一种构建分类模型的非参数方法,换句话说,它不要求任何先验假设,不假定类和其他属性服从一定的概率分布 找到最佳的决策树是NP完全问题,许多决策树算法都采用启发式的方法指导对假设空间的搜索 已开发的构建决策树技术不需要昂贵的计算代价,即使训练集非常大,也可以快速建立模型。决策树一旦建立,未知样本样本分类非常快,最坏情况下的时间复杂度为 O ( w ) O(w) O ( w ) ,其中 w w w 是树的最大深度 决策树是学习力散值函数的典型代表。然而它不能很好地推广到某些特定的布尔问题。一个著名的例子是奇偶函数,当奇数(偶数)个布尔属性为真时其值为0(1),对这样的函数建模需要一棵具有 2 d 2^d 2 d 个节点的满决策树,其中 d d d 是布尔属性的个数 决策树算法对噪声的干扰具有相当好的鲁棒性 冗余属性不会对决策树的准确率造成不利的影响。一个属性如果在数据中与另一个属性是强关联的,那么它是冗余的。在两个冗余的属性中,如果已经选择其中一个作为用于划分的属性,另一个将被忽略 由于大多数的决策树算法都采用自顶向下的递归划分法,因此沿着树向下,记录会越来说越少。在叶节点,记录太少,对于叶节点代表的类,不能做出具有统计意义的判决

随机森林的训练过程

这一生的挚爱 提交于 2020-02-23 23:03:43
随机森林 顾名思义,是用随机的方式建立一个森林,森林里面有很多的 决策树 组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。 在建立每一棵决策树的过程中,有两点需要注意: ①采样;②完全分裂 。 首先 :是两个随机采样的过程,random forest对输入的数据要进行 行、列的采样 。对于行采样,采用 有放回 的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那么采样的样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,使得相对不容易出现over-fitting。然后进行列采样,从M 个feature中,选择m个(m << M)。 推荐m的值为M的平方根 。 之后 :对采样之后的数据使用 的方式建立出决策树,这样决策树的某一个叶子节点要么是无法继续分裂的,要么里面的所有样本的都是指向的同一个分类。一般很多的决策树算法都一个重要的步骤 - 剪枝 ,但是这里不这样干,由于之前的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现over-fitting。 随机森林的核心: 是随机选取样本特征和随机选取样本,每次在选取的训练集上训练决策树。 随机深林的优点:

机器学习之决策树

一曲冷凌霜 提交于 2020-02-23 18:00:24
机器学习中分类和预测算法的评估: 准确率 速度 强壮行 可规模性 可解释性 1)什么叫做决策树 判定树是一个类似于流程图的树结构:其中,每个内部结点表示在一个属性上的测试,每个分支代表一个属性输出,而每个树叶结点代表类或类分布。树的最顶层是根结点。 小明进行水上运动,是否享受运动取决于很多因素 样例 天气 温度 湿度 风力 水温 预报 享受运动 1 晴 暖 普通 强 暖 一样 是 2 晴 暖 大 强 暖 一样 是 3 雨 冷 大 强 暖 变化 否 4 晴 暖 大 强 冷 变化 是 天气:晴,阴,雨 温度:暖,冷 湿度:普通,大 风力:强,弱 水温:暖,冷 预报:一样,变化 享受运动:是,否 概念定义在实例(instance)集合之上,这个集合表示为X。(X:所有可能的日子,每个日子的值由 天气,温度,湿度,风力,水温,预 报6个属性表示。 待学习的概念或目标函数成为目标概念(target concept), 记做c。 c(x) = 1, 当享受运动时, c(x) = 0 当不享受运动时,c(x)也可叫做y x: 每一个实例 X: 样例, 所有实例的集合 学习目标:f: X -> Y   决策树学习的目的是为了产生一颗泛化能力强,即能够处理未见示例能力强的决策树。 3)决策树在机器学习的分类问题上是一个比较重要的算法 4)如何生成决策树 (1)决策树的生成是一个递归过程

sklearn之决策树

一曲冷凌霜 提交于 2020-02-23 16:35:48
分类树的八个参数,一个属性,四个接口。 八个参数: Criterion, 两个随机性相关的参数(random_state,splitter), 五个剪枝参数(max_depth,min_samples_split,min_samples_leaf,max_feature,min_impurity_decrease) 一个属性:feature_importances_ 四个接口:fit,score,apply,predict 1.criterion 不填默认基尼系数,填写gini使用基尼系数,填写entropy使用信息增益 2.random_state 输入任意整数,会一直长出同一棵树,让模型稳定下来,可防止过拟合 3.splitter 有两种输入值,输入”best",决策树在分枝时虽然随机,但是还是会优先选择更重要的特征进行分枝(重要性可以通过属性feature_importances_查看),输入“random",决策树在分枝时会更加随机,树会因为含有更多的不必要信息而更深更大,并因这些不必要信息而降低对训练集的拟合。 4.max_deep 限制树的最大深度,超过设定深度的树枝全部剪掉这是用得最广泛的剪枝参数,在高维度低样本量时非常有效。决策树多生长一层,对样本量的需求会增加一倍,所以限制树深度能够有效地限制过拟合。 5.min_samples_leaf

机器学习——由公式看透算法(1)___决策树

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-23 01:16:41
定义 : 决策树学习方法通常是一个递归地选择最优特征,并根据特征对训练数据进行分割,使得各个子集有一个最优的分类过程。决策树学习的实际问题:确定决策树增长的深度;处理连续值得属性;选择一个适当的属性筛选度量标准;处理属性值不完整的训练数据;处理不同代价的属性;提高计算效率。 内容: 决策树学习是应用很广泛的归纳推理算法,是一种逼近离散值函数的方法,对噪声具有很强的健壮性且能够学习析取表达式。初期的决策树学习从表面理解就是处理一些简单的实例分类,当然决策树本质上就是对训练样例进行分类。其中实例具有明确的属性,这样容易确定节点;实例具有离散的输出值,这样才可以进行分类;具有析取表达式,可以用明确的表达式进行表示。 决策树学习是从顶向下进行学习,基本算法是ID3,在进行构造决策树是关键问题是如何选择根节点,分类能力最好的属性被选择为树的根结点。所以如何确定分类能力就,进行判断是决策树构建的关键点。 公式: (1) (2) (3) 其中决策树的核心公式算法为三个,无论是ID3还是C5.4核心是计算这三个公式。 公式解释: 公式(1) :在决策树中是利用信息增益来决定根结点,用 其中P+表示在S中的正例的比例, P-为反例,举例说明14个样例的集合,其中9个正样例,5个反样例,则S相对于布尔分类的熵为: 在熵计算中可以根据比例大小可以估计熵大小,图形如下图: 公式(2)

决策树学习

梦想与她 提交于 2020-02-23 01:15:34
   参考:   1. 信息熵   2. 最大熵原理1   3. 最大熵原理2   4. 信息增益比率   5. A Mathematical Theory of Communication    内容:   1. 泛化能力是指机器学习算法对新鲜样本的适应能力。学习的目的是 学到隐含在数据对背后的规律 ,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,即泛化能力。   2. 决策树学习是一种逼近离散值目标函数的方法,且学习到的函数被表示为一棵决策树。该树的叶子结点即为所属的分类。通过if语句可翻译这棵树。通常决策树代表实例属性值约束的合取的析取式(只表示true的情况,其它的都是false)。它是一个分类问题。   3. 熵(entropy)是信息论中广泛使用的一个度量标准,它刻画了任意样例集的纯度( purity )或者说是均一性。给定包含关于某个目标概念的正反样例的样例集S,那么S相对这个布尔型分类的熵为: Entropy(S) ≡ -p ⊕ log 2 p ⊕ - p Θ log 2 p Θ 其中,p⊕是在S中正例的比例,pΘ是在S中反例的比例。信息论中熵的一种解释是,熵确定了要编码集合S中任意成员(即以均匀的概率随机抽出的一个成员)的分类所需要的最少二进制位数。如果目标属性具有c个不同的值,那么S相对于c个状态(c-wise)的分类的熵定义为: ,其中

机器学习笔记——决策树学习

假如想象 提交于 2020-02-23 01:14:39
决策树学习 是一种逼近离散值目标函数的方法,在这样的方法中学习到的函数被表示为一棵决策树。 表示法: 把实例从根节点排列到某个叶子节点来分类实例,叶子节点即为实例所属的分类。树上的每个节点指定了对实例的某个属性(attribute)的測试,而且该节点的每个后缀分支相应于该属性的一个可能值。分类实例的方法是从这棵树的根节点開始,測试这个节点指定的属性。然后依照给定实例的该属性值相应的树枝向下移动。 然后这个过程在以新节点为根的子树上反复。 上图是一棵学习到的决策树。依据天气情况分类“星期六上午是否适合打网球”。 决策树的适用问题: 实例是由“属性-值”对表示的 目标函数具有离散的输出值 可能须要析取的描写叙述 训练数据能够包括错误 训练数据能够包括缺少属性值的实例 核心问题是将例子分类到各可能的离散值相应的类别(category)中,因此常被称为分类问题(classification problem)。 主要的决策树学习算法: ID3算法 :採用自顶向下的贪婪搜索遍历可能的决策树空间。 训练过程 :通过自顶向下构造决策树来进行学习,构造过程是从“哪一个属性将在树的根节点被測试?”这个问题開始。 使用统计測试来确定每个实例属性单独分类训练例子的能力,分类最好的属性将被选作树的根节点,然后为根节点属性的每个值产生一个分支,反复整个过程。 算法概要 : A