一只菜鸡的决策树入门(一)

对于一个python入门级,统计概率学一般并且还要上班搬砖的人来说,机器学习是真痛苦啊。

1、对于决策树的理解,书上有一个简明的例子,二十个问题游戏,参与者脑子里有一个事物,其他人提问20次用来缩小事物所在范围,最终给出答案,因此决策树更像是根据已知条件从而预测结果的一种模型。树上的每一个分叉路径代表某个特征,每个叶子节点对应从根节点到叶子节点所经历的特征的值。

2、ID3算法,基于奥卡姆剃刀原理,即在得到相同结果的算法中,选简单的那一个。在决策树里,小树优于大树,个人理解是不是因为树越大,特征越多,混乱性越高,划分过程较复杂,结果的可释性下降?

3、信息增益和熵,信息论中:期望信息越小,信息增益越大,信息纯度越高。熵则定义为信息的期望值。熵描述的是混乱程度,起初用于物理中,计算公式是由求期望E(x) = xp 的公式演变而来:H = -\sum _{i=1}^{n}p(x_{i})log_{2} p(x_{i}), 计算方式如下:

# 计算数据集当前的熵

from math import log

def calcShang(dataSet):
    num = len(dataSet) #待分类特种总体数量,计算概率公式中的分母
    labels = {} #存储各种分类的字典
    for lists in dataSet:
        sublabels = list[-1]
        if sublabels not in labels.keys():
            labels[sublabels] = 0
        labels[sublabels] += 1
    Shang = 0.0
    for key in labels:
        p = float(labels[key]) / num
        Shang -= p * log(p,2)
    return Shang
        

此外,所谓的信息增益即用初始的熵减去根据特征划分后计算的熵,即H_{gain} = H_{base} - H_{sub},感觉就是比较数据划分前后的混乱程度,大于0则混乱程度降低,即有序性较高,分类效果越好。在使用公式之前,先按给定的特征划分数据集:

# 按给定的特征划分数据集

def splitdataset(dataSet,mark,value):
    newSet = []
    for vecList in dataSet:
        if vecList[mark] == value:
            subList = vecList[:mark]
            subList.extend(vecList[mark+1:])
            newSet.append(subList)
    return newSet
    

    接着,找出信息增益最大的特征:

# 划分数据集的最优特征

def findbestfeature(dataSet):
    numOffeature = len(dataSet) - 1 #最后一列为类别标签,计算用于分类的特征数量
    baseShang = calcShang(dataSet) #学习目标当前信息的熵
    gainShang = 0.0; bestFeature = 1 #初始化信息增益和最优特征
    for i in range(numOFfeature):
        mark = [example[i] for example in dataSet] #属性列表
        uniqMark = set(mark) #属性去重,生成列表
        newShang = 0.0 
        for value in uniqMark:
            subDataSet = splitdataset(dataSet,i,value) #返回根据属性划分后的数据列表
            p = len(subDataSet) / float(len(dataSet)) #计算属性概率
            newShang += p * calcShang(subDataSet) #计算属性信息熵并求和
        plusShang= baseShang - newShang
        if plusShang > gainShang:
            gainShang = plusShang #取信息增益最大特征
            bestFeature = i #i对应最优特征位置
    return bestFeature
        

        
    
    

   对于学习目标来说,特征有多个,每个特征的分类效果不同,特征与学习目标映射,真是日了狗了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值