【吴恩达机器学习笔记】Part2-Week4(上) 决策树(Decision Trees)

目录

1.1 决策树模型

案例:修猫分类器;有一组包含猫和狗的图片数据集,根据耳朵形状(ear shape),脸的形状(face shape),胡子(whiskers)的特征判断图片上的是不是猫。
在这里插入图片描述
如果耳朵形状是尖尖的,脸的形状是圆的,那么判断为猫;
如果耳朵形状是尖尖的,脸的形状是不圆,那么判断为非猫;
如果耳朵形状是松软的,有胡子,那么判断为猫;
如果耳朵形状是松软的,无胡子,那么判断为非猫。
决策树如下图:
在这里插入图片描述
术语
根节点(root node):最顶端的节点;
决策节点(decision nodes):所有决定下一步走向的节点,包括根节点;图中所有椭圆节点;
叶子结点(leaf nodes):树最底端的节点,给出预测结果的节点;图中所有矩形节点。

1.2 学习过程

决策1:如何在每个节点处选择合适的特征/属性(How to choose what feature to split on at each node)?
纯度最大化/最小化(Maximize or minimize purity):比如第一个节点,有三种可能的特征,但只有选择耳朵形状时,节点所分出的两个分类中,猫的占比分别最大和最小;因此选耳朵形状作为该节点的特征。
决策2:什么时候停止划分(When do you stop splitting)?

  1. 当节点获得了100%的分类结果(When a node is 100% one class);
  2. 当划分节点会导致超过树的最大深度(When splitting a node will result in the tree exceeding a maximum depth);
  3. 当纯度值的增长低于一定阈值(When improvements in purity score are below a threshold);
  4. 当节点中案例数量低于一定阈值(When number of examples in a node is below a threshold)。
2.1 纯度(Measuring purity)

——衡量纯度的概念(Entropy as a measure of impurity)
在这里插入图片描述
如图,p1指代一组分类结果中猫的占比(剩下的是狗);H(p1)是熵;图中为熵与p1的关系;可见熵随着纯度的增大呈现先增大后减小的趋势;在p1=0.5时(如,3个猫3个狗)熵达到最大值1,在p1分别为0(6个狗)和1(6个猫)两个端点时,熵最小,值为0。
图中熵函数的公式:
首先定义集合中除了猫之外的小动物占比:
p 0 = 1 − p 1 {p_0} = 1 - {p_1} p0=1p1
熵函数:
H ( p 1 ) = − p 1 log ⁡ 2 ( p 1 ) − p 0 log ⁡ 2 ( p 0 ) H\left( {{p_1}} \right) = - {p_1}{\log _2}\left( {{p_1}} \right) - {p_0}{\log _2}\left( {{p_0}} \right) H(p1)=p1log2(p1)p0log2(p0)
也可记为:
H ( p 1 ) = − p 1 log ⁡ 2 ( p 1 ) − ( 1 − p 1 ) log ⁡ 2 ( 1 − p 1 ) H\left( {{p_1}} \right) = - {p_1}{\log _2}\left( {{p_1}} \right) - \left( {1 - {p_1}} \right){\log _2}\left( {1 - {p_1}} \right) H(p1)=p1log2(p1)(1p1)log2(1p1)

  1. 为了计算,这里设定:
    0 log ⁡ 2 ( 0 ) = 0 0{\log _2}\left( 0 \right) = 0 0log2(0)=0
  2. 选用2为底数而非e或者10,是为了让极大值为1,换成其它底数相当于现有函数图像上下等比例伸缩。
  3. Gini函数也可以用作熵函数,但本课简单起见使用这里介绍的entropy criteria函数。
2.2 如何在节点选择特征:信息增益(Choosing a split: information gain)

信息增益(information gain):衡量从上一节点分裂出两个节点后,这种分裂方法对应的熵的减少量(the reduction in entropy that you get in your tree resulting from making a split)。
在这里插入图片描述
在本例中,对三种可能的分类方式分别计算信息增益:将分成的两个类别的熵值通过公式整合成一个标准,并与分类前的熵值相减,获得该步分类使数据的熵降低的相对值(reduction in entropy);最终取降低熵最大的分类方法特征,即耳朵形状(分类后熵降低了0.28)。
计算信息增益的用处,除了判断该节点的特征如何选择;还可以用于判断是否终止继续分类(split),因为如果分类前后的信息增益过小,这意味着再分下去只是徒增决策树的规模,已经失去了分类的意义,既可以停止分类了。
在这里插入图片描述
信息增益的计算公式:
I n f o r m a t i o n G a i n = H ( p 1 r o o t ) − ( w l e f t H ( p 1 l e f t ) + w r i g h t H ( p 1 r i g h t ) ) InformationGain=H\left( {p_1^{root}} \right) - \left( {{w^{left}}H\left( {p_1^{left}} \right) + {w^{right}}H\left( {p_1^{right}} \right)} \right) InformationGain=H(p1root)(wleftH(p1left)+wrightH(p1right))

2.3 整合(putting it together)
  1. Start with all examples at the root node.
  2. Calculate information gain for all possible features, and pick the one with the highest information gain.
  3. Split dataset according to selected feature, and create left and right branches of the tree.
  4. Keep repeating splitting process until stopping criteria is met:
    1. When a node is 100% one class
    2. When splitting a node will result in the tree exceeding a maximum depth
    3. Information gain from additional splits is less than threshold
    4. When number of examples in a node is below a threshold

根据决策树的特征,其实现应该使用递归算法(recursive algorithms)。

2.4 独热编码(Using one-hot encoding of categorical features)

动机:上例中的特征均分为两个离散值(两种类别),如果某特征需要两个以上分类离散值怎么办?(What if you have features that can take on more than two discrete values)
案例:如果修猫分类器中,耳朵类型有三种:尖尖的(pointy ears)、松软的(floppy ears)和圆润的(oval ears);一种直接处理方法是,在一个节点类型耳朵形状下按照上述三个特征,分出三个节点的分支;另一种one-hot处理方法则是,将尖尖耳朵松软耳朵圆润耳朵分别作为单独的特征,其分类的结果为1(是尖尖耳朵)和0(非尖尖耳朵),将这三个特征与脸的形状胡子等特征并列放在一起进行分析。
在这里插入图片描述
观察上表发现,pointy earsfloppy earsoval ears对应的每行必有一个为1剩下几个为0,因此叫做one-hot encoding。
因为所有特征现在均可以获得二分的分类值,one-hot encoding也可以用于逻辑回归模型中。

2.5 连续值特征(Continuous valued features)

动机:如果特征中有一项不是二分类,而知连续数值,决策树如何处理?
在这里插入图片描述

How do you decide how to split on the weight feature?

首先根据重量(weight)获得分布图,选择一个重量阈值,比如8,以阈值为分隔获得左右两个类别,并计算该分类方式的信息增益。
在这里插入图片描述
接着根据案例的分布,对剩余8个阈值进行同样的处理,最终选择信息增益最高的一种分类方式。
分类结果
在这里插入图片描述

2.6 回归树(Regression Trees)

输出不是二分类的结果,而是连续值;通过计算方差。
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值