决策树

有监督学习 无监督学习

风流意气都作罢 提交于 2020-01-22 21:16:19
原文作者:aihorizon.com 原文链接: Machine Learning, Part I: Supervised and Unsupervised Learning 译者: commondata 监督学习是指我们来教计算机如何“学习”,非监督学习是指让计算机自己学习。监督学习又有两个大的分支,一个是 regression,另一个是 classification。 既然是我们来教计算机如何学习,那就必定有一个“标准答案”。regression 是说,这个标准答案是连续的。 比如说,对三个月销售量的估计。classification 是说,这个标准答案是离散的。比如说,对是否患有cancer的判断。非监督学习就没有标准答案了。比如说,给你一堆数据,让你来分析这堆数据的结构。 上次我们讨论了基于结果的两类学习。这篇文章我们将关注一些其他方面的学习:监督还是无监督。当训练用例被标记了正确结果的时候,监督学习方式为怎样改进学习给出一个反馈。这类似于教官教导某个Agent,它的行为是否正确。对无监督学习来说这个目标很难实现,因为缺乏事先确定的分类。 ·监督学习 监督学习是最常见的分类问题,因为目标往往是让计算机去学习我们已经创建好的分类系统。数字识别再一次成为分类学习的常见样本。更一般地说,对于那些有用的分类系统,和容易判断的分类系统,分类学习都适用。在某些情况下

鸢尾花决策树分类及可视化

拥有回忆 提交于 2020-01-21 09:47:16
鸢尾花数据集简介 Iris数据集作为入门经典数据集。Iris数据集是常用的分类实验数据集,早在1936年,模式识别的先驱Fisher就在论文The use of multiple measurements in taxonomic problems中使用了它 (直至今日该论文仍然被频繁引用)。 Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性:花萼长度(sepal length),花萼宽度(sepal width),花瓣长度(petal length),花瓣宽度(petal width),可通过4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类。在三个类别中,其中有一个类别和其他两个类别是线性可分的。 在sklearn中已内置了此数据集。 代码 import pandas as pd import pydotplus import numpy as np from IPython.display import Image, display from sklearn import preprocessing from sklearn import tree from sklearn.datasets import load_iris import

决策树的生成与剪枝

℡╲_俬逩灬. 提交于 2020-01-20 19:38:24
从根节点开始,使用某种特征选取准则,如信息增益,选取剩余特征作为节点,树不一定是二叉树,每一层的节点为某个特征,每一层的节点个数为父节点特征的distinct数,每个节点对应的样本数小于父节点对应的样本数,当节点特征对应的信息增益小于某个值时,选择该节点对应样本中最大的类别作为叶节点,停止这个分支的构建。 例题:参考《统计学习方法》李航 例5.3 来源: CSDN 作者: 厉害了我的汤 链接: https://blog.csdn.net/YD_2016/article/details/104055032

python CART决策树API简介与示例

时光毁灭记忆、已成空白 提交于 2020-01-20 02:46:53
Cart(Classification And Regression Tree)决策树作为决策树算法分支的一条,是一类可用于分类与回归的非线性模型。其在python中的接口为from sklearn.tree import DecisionTreeClassifier 首先查看DecisionTreeClassifier都有哪些参数 DecisionTreeClassifier? Init signature : DecisionTreeClassifier ( criterion = 'gini' , splitter = 'best' , max_depth = None , min_samples_split = 2 , min_samples_leaf = 1 , min_weight_fraction_leaf = 0.0 , max_features = None , random_state = None , max_leaf_nodes = None , min_impurity_decrease = 0.0 , min_impurity_split = None , class_weight = None , presort = 'deprecated' , ccp_alpha = 0.0 ) 重要参数: criterion 为CART节点分割函数,默认为gini

决策树

风流意气都作罢 提交于 2020-01-19 20:34:56
树模型: 决策树 :从根节点开始一步步走到叶子节点(决策)。 所有的数据最终都会落到叶子节点,既可以做分类也可以做回归。 树的组成: 根节点:第一个选择点 非叶子节点与分支:中间过程 叶子节点:最终的决策树结果 决策树的训练与测试: 训练阶段:从给定的训练集构造出来一棵树(从根节点开始选择特征,如何进行特征切分) 测试阶段:根据构造出来的树模型从上到下走一遍就好了。 问题 :根节点的选择该用哪个特征?接下来,如果切分呢?(如何切分特征) 目标:通过一种衡量标准,来计算通过不同的特征进行分支选择后的分类情况,找出最好的那个当成根节点,以此类推。 衡量标准-熵 熵 :熵是表示随机变量不确定性的度量(越乱的结构说明熵值越高)。不确定性越大,得到的熵值也越大。 (解释:说白了就是物体内部的混乱程度,比如杂货市场里面什么都有,那肯定混乱,专卖店里面只卖一个牌子的那就稳定多了) 当 p=0或p=1的时候,H(p)=0,随机变量完全没有不确定性。当p=0.5的时候,H(p)=1,此时随机变量的不确定性越大。 信息增益 :表示特征X使得类Y不确定性减少的程度。(分类后的专一性,希望分类后的结果是同类在一起)。也可以说表示的是你的熵值下降了多少。 比如原来熵值是10,后来熵值是8,那么就说明信息增益为2. 问答: 1.如何决策一个节点的选择? 通常来说大当家根节点去信息增益里面找最大的那个

Spark.ml - -随机森林RandomForest

点点圈 提交于 2020-01-19 19:17:54
前言 随机森林是决策树的集成算法。随机森林包含多个决策树来降低过拟合的风险。随机森林同样具有易解释性、可处理类别特征、易扩展到多分类问题、不需特征缩放等性质。同单一的决策树分类不同的是,随机森林通过多个决策树投票结果进行分类,算法不容易出现过度拟合问题。 随机森林分别训练一系列的决策树,所以训练过程是并行的。因算法中加入随机过程,所以每个决策树又有少量区别。通过合并每个树的预测结果来减少预测的方差,提高在测试集上的性能表现。 Spark.ml支持二分类、多分类以及回归的随机森林算法,适用于连续特征以及类别特征。对于分类问题,按照多棵树分类器投票决定最终分类结果;对于回归问题,由多颗树预测值的均值决定最终预测结果 特点 缺点 当随机森林中的决策树个数很多时,训练时需要的空间和时间会比较大 随机森林中还有许多不好解释的地方,有点算是黑盒模型 在某些噪音比较大的样本集上,RF的模型容易陷入过拟合 原理 由多个决策树构成的森林,算法分类结果由这些决策树投票得到,决策树在生成的过程当中分别在行方向和列方向上添加随机过程,行方向上构建决策树时采用放回抽样(bootstraping)得到训练数据,列方向上采用无放回随机抽样得到特征子集,并据此得到其最优切分点,这便是随机森林算法的基本原理。 其实从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本

决策树+Graphviz

江枫思渺然 提交于 2020-01-19 08:22:31
pydotplus.graphviz.InvocationException: GraphViz’s executables not found 在使用pycharm导出 决策树 的时候出现了以上错误,下载安装== graphviz-2.38 ==解决 下载后安装到Python安装目录下的Lib/site-packages中,重启IDE即可。 #-- coding:utf-8 -- #From: 仿写 bilibili 菜菜的sklearn课堂代码 #Date: 2020/1/15 16:09 import pydotplus from sklearn import tree from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split import pandas as pd wine = load_wine() print(wine) print(wine.data) print(wine.target) pd.concat([pd.DataFrame(wine.data), pd.DataFrame(wine.target)], axis=1) print(wine) print(wine.feature_names) print(wine.target

机器学习(4)之决策树

本小妞迷上赌 提交于 2020-01-19 03:08:06
文章目录 1 比特化(Bits) 2 信息熵 2.1 信息量 2.2 信息熵的意义 2.3 条件熵 3 决策树的概念 3.1 决策树的构建 3.2 决策树的特征属性 3.3 决策树分割属性 3.4 决策树量化纯度 3.5 决策树的停止条件 3.6 决策树算法效果的评估 4 ID3算法 5 C4.5算法 6 CART算法 7 分类树和回归树 8 决策树的优化策略 8.1 剪枝优化 9 总结 1 比特化(Bits) 假设现在随机变量X具有m个值,分别为: V 1 ,V 2 ,…,V m ;并且各个值出现的概率: P(X=V 1 )=p 1 ,P(X=V 2 )=p 2 , P(X=V 3 )=p 3 …P(X=V m )=p m 可以使用这些变量的期望来表示每个变量需要多少个比特位来描述信息: 2 信息熵 H(X)就叫做随机变量X的信息熵。 2.1 信息量 指的是一个样本/事件所蕴含的信息,如果一个事件的概率越大,那么就 可以认为该事件所蕴含的信息越少。极端情况下,比如:“太阳从东方升起”,因为是确定事件,所以不携带任何信息量。 2.2 信息熵的意义 信息熵就是用来描述系统信息量的不确定度。 一个系统越是有序,信息熵就越低,一个系统越是混乱,信息熵就越高,所以信息熵被认为是一个系统有序程度的度量。 High Entropy(高信息熵) :表示随机变量X是均匀分布的

集成学习

强颜欢笑 提交于 2020-01-18 19:34:30
Bagging,Boosting以及Stacking (1)Bagging + 决策树 = 随机森林 (2)AdaBoost + 决策树 = 提升树 (3)Gradient Boosting + 决策树 = GBDT 一、Boosting 1)Adaboost https://www.cnblogs.com/willnote/p/6801496.html 2)Gradient Boosting https://www.cnblogs.com/massquantity/p/9174746.html 二、Bagging (bootstrap aggregating) https://www.cnblogs.com/zongfa/p/9304353.html 相比与Adaboost,不考虑权重 三、Stacking https://blog.csdn.net/maqunfi/article/details/82220115 https://www.kaggle.com/arthurtok/introduction-to-ensembling-stacking-in-python (Introduction to Ensembling/Stacking in Python) 来源: CSDN 作者: huanglv997 链接: https://blog.csdn.net/weixin

决策树分类常见问题及评价指标

一世执手 提交于 2020-01-17 17:23:45
决策树分类常见问题及评价指标 1. 数据属性问题 常见离散属性: 二元属性,标称属性,适合决策树分类算法。 数值型等连续型属性: 如年龄,身高,血压,在进行分类时采用连续属性离散化,即分段分区间的形式,才能很好的适应决策树算法。 2. 过拟合问题 两种误差定义 训练误差:分类算法对于现有训练样本集的拟合程度。 泛化误差:代表此方法的泛化能力,即对于新的样本数据的分类能力如何。 两种误差比较 若模型的训练误差较大,则称此分类模型欠拟合。 若模型的训练误差低但是泛化误差比较高,称此分类模型过拟合。 解决方法 欠拟合:增加分类属性的数量,选取合适的分类方法,提高模型对于训练样本的拟合程度。 过拟合:把噪声学进模型了,通过划分样本集,70%样本训练决策树模型,30%样本检测模型,提高模型的泛化能力或者通过减少决策树的深度来减少过拟合的可能性。 3. 分类效果评价 指标:训练误差,泛化误差,准确率,错误率 对于一般二分类问题,分类情况有: 真正类 T P TP T P ,假反类 F N FN F N ,假正类 F P FP F P ,真反类 T N TN T N 3.1 评价决策树的好坏 准确率: a c c u r a c y = T P + T N T P + F N + F P + T N accuracy=\frac{TP+TN}{TP+FN+FP+TN} a c c u r a c