赞
踩
文/腾讯soso 林世飞
决策树方法最早产生于上世纪60年代,到70年代末。由J Ross Quinlan提出了ID3算法,此算法的目的在于减少树的深度。但是忽略了叶子数目的研究。C4.5算法在ID3算法的基础上进行了改进,对于预测变量的缺值处理、剪枝技术、派生规则等方面作了较大改进,既适合于分类问题,又适合于回归问题
这里 介绍其基本原理 和一个实验例子。
先介绍2个算法:
算法一:熵(entropy)
熵(entropy)指的是体系的混乱的程度,当我们尝试把混合集合A={B1,B2,C1,C2…..} (其中Bx表示一个类别的元素,Cx表示另外一个) 划分为2个集合 M、N(即决策树的2个分支时候),比较好的划分是 M 里面都是 Bx,N里面都是Cx,这时候我们需要一个函数对 划分以后 的 集合进行评估,看看是否纯度 够“纯”。如果很纯,很有序,熵就是0.
理解该公式: p(xi) 越平均,系统约混乱,如果系统只有2个元素x1、x2,x1出现概率是0.5,x2出现概率也是0.5,即p(x1) =0.5 p(x2) =0.5 ,这时公式计算结果为1; p(xi)如果比较不平均,比如p(x2) =1,那就是系统很确定,一点都不混乱,肯定是x2构成,这时熵计算结果就是0.
这个规律刚刚好是 log 函数特点 过(1,0)这个点(见下图),我想这个就是克劳德·艾尔伍德·香农设计这个公式选择log函数的道理。
用python 实现就是 :
def entropy(l):
from math import log
#函数编程语法,定义一个函数
log2=lambda x:log(x)/log(2)
total=len(l)
counts={}
#统计每个类型出现格式
for item in l:
counts.setdefault(item,0)
counts[item]+=1
ent=0
for i in counts:
p=float(counts[i])/total #计算概率
ent-=p*log2(p) #熵计算
return ent
算法二:除了 熵,还有一个衡量一个集合是否混乱的方法叫 Gini Impurity (基尼不纯度)方法。
公式如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。