• 机器学习-决策树算法+代码实现(基于R语言)


    分类树(决策树)是一种十分常用的分类方法。核心任务是把数据分类到可能的对应类别。

    他是一种监管学习,所谓监管学习就是给定一堆样本,每个样本都有一组属性和一个类别,这些类别是事先确定的,通过学习得到一个分类器,这个分类器能够对新出现的对象给出正确的分类。

    决策树的理解

    熵的概念对理解决策树很重要

    决策树做判断不是百分之百正确,它只是基于不确定性做最优判断。

    熵就是用来描述不确定性的。

     案例:找出共享单车用户中的推荐者

    解析:求出哪一类人群更可能成为共享单车的推荐者。换句话说是推荐者与其他变量之间不寻常的关系。

    步骤1

    测量节点对应的人群的熵

    对于是否推荐这样两分的结果,推荐者比例趋近于0或者1时,熵都为0,推荐者比例趋近于50%时,熵趋近1。

    分析师需要根据用户特征,区分出推荐者。通过决策树可以尽可能降低节点人群熵的值(通过决策树不断的分叉)。

    步骤2

    节点的分叉

    不同的分叉方式会得到不同的增益值,计算机会选择最大的增益值,即最优的分叉方式。

    详情见后文信息增益相关内容。

    步骤3

    在特定情况下停止分叉。

    注意:分支节点太多会把情况搞复杂,反而不利于决策,需要在适当时候停止分叉。

    信息增益(IG)的概念

    表示经过决策树一次决策后,整个分类数据信息熵下降的大小。

    上面求得的IG是母节点的熵减去子节点熵的加权和,得到的结果,是经过一次分叉后所降低的熵的值。

    不同的分叉方式会得到不同的增益值,计算机会选择最大的增益值,即最优的分叉方式。

    R语言实现


    > bike.data <- read.csv(Shared Bike Sample Data - ML.csv)

    > library(rpart)

    > library(rpart.plot)

    > library(rpart.plot)
    > bike.data$推荐者 <- bike.data$分数>=9
    > rtree_fit <- rpart(推荐者 ~城区+年龄+组别,data=bike.data)
    > rpart.plot(rtree_fit)

    决策树小结

    本质是一种映射关系,将对象的一组属性和对象的值映射到一起,决策树可以和概率完美结合。

    优点是:适合处理多类变量,对异常值不敏感,准确度高。

    缺点是:

    作为一种典型的监督学习算法,在训练时需要大规模数据和计算空间。为了得到最好的决策变量排列顺序,决策树需要反复计算变量的熵信息增益,很耗时间。

    决策树是一种贪心算法,每一次决策都谋求最优,追求局部最优的结果是决策树达不到全局最优(与遗传算法比,这是难以回避的缺点)。

    决策树剪枝叶技术帮助决策树使用最少的节点完成分类任务,但错误剪枝会使得决策树结果准确性大幅降低,同时剪枝过程也需要大量计算。

    决策树不擅长处理连续型变量。当树中连续变量过多时候,决策树犯错误的可能就会增大

  • 相关阅读:
    杭电2059
    杭电2058
    php错误大集合
    显示IP地址
    超简单好用的屏幕录像工具
    jquery“不再提醒"功能
    KindEditor编辑器中的class自动过滤了
    实用案例:切换面板同时切换内容
    仿51返利用户图解教程
    JavaScript调用dataTable并获取其值(ASP.Net,VS2005)
  • 原文地址:https://www.cnblogs.com/Grayling/p/10987517.html
Copyright © 2020-2023  润新知