机器学习基础(三)——信息、信息熵与信息增益
来源:互联网 发布:淘宝售后服务卡内容 编辑:程序博客网 时间:2024/06/18 12:30
信息:information,信息熵:information entropy,信息增益:information gain(IG)
划分数据集的大原则是:将无序的数据变得更加有序。组织杂乱无章数据的一种方法就是使用信息论度量信息,信息论是量化处理信息的分支科学。
在划分数据集之前之后信息发生的变化称为信息增益,知道如何计算信息增益,我们就可以计算每一个特征值划分数据集获得的信息增益,获得信息增益最高的特征就是最好的选择。
信息、信息熵的定义
如果待分类的数据集可能划分在多个分类之中,则类别
其中
为了计算熵,我们需要计算所有类别所有可能包含的信息期望值(由离散型随机变量的期望计算公式可知),
遍历相乘再相加,可以使用内积计算熵。
信息熵,被用来度量信息的无序程度(信息熵越大,越无序,等于 0 时,意味着全部类别都相同,完全有序)
熵的性质:
- (1)非负,
0<p(xi)≤1→log2p(xi)≤0 - (2)完全有序,也即
p(x)=1→H=0 - (3)香农熵越小越有序,越大越混乱。
计算数据集的香农熵和最佳划分特征
根据数据集的类别,计算数据集的香农熵:
from collections import Counterfrom math import logdef calcShannonEnt(dataset): classCnt = [sample[-1] for sample in dataset] n = len(dataset) classCnt = Counter(classCnt) ent = 0. for times in classCnt.values(): ent -= times/n*log(times/n, 2) return ent
按照给定特征(属性列)划分数据集:
# 第三个参数 val 不是手动指定的,# 该函数也不是直接交由外部调,而是被其他函数调用# 在函数内部,也即遍历属性列不重复的属性值时,传递进来val值def splitDataset(dataset, axis, val): splitedDataset = [] for sample in dataset: if sample[axis] == val: splitedDataset.append(sample[:axis]+sample[axis+1:]) return splitedDataset
选择最好的数据集划分方式,也即找到最好的属性列,显然需要遍历属性列,找到最大的信息增益:
def chooseBestFeatToSplit(dataset): baseEnt = calcShannonEnt(dataset) bestInfoGain, bestFeat = 0., -1 for j in range(len(dataset[0])-1): featCol = [sample[j] for sample in dataset] uniqFeat = set(featCol) newEnt = 0. for val in uniFeat: subDataset = splitDataset(dataset, j, val) newEnt = len(subDataset)/len(dataset)*calcShannonEnt(subDataset) infoGain = baseEnt - newEnt if bestInfo < infoGain: bestInfo = infoGain bestFeast = j return bestFeat
0 0
- 机器学习基础(三)——信息、信息熵与信息增益
- 【机器学习】信息、熵和信息增益
- [机器学习]信息&熵&信息增益
- 信息熵与信息增益
- 熵与信息增益
- [机器学习]信息熵、信息增益的概念
- 《机器学习实战》读书笔记3:信息熵和信息增益
- 机器学习-信息增益和信息增益比-笔记
- 信息熵、信息增益与信息增益率
- 信息熵、信息增益与信息增益率
- 【机器学习-西瓜书】四、决策树:信息熵;信息增益;增益率;ID3;C4.5
- 【机器学习】信息量,信息熵,交叉熵,KL散度和互信息(信息增益)
- 信息熵与信息熵增益
- 信息熵与信息增益的概念
- 信息熵与信息增益的理解
- 熵与信息增益随记
- 信息增益与信息增益率详解
- 机器学习_决策树_香农熵和信息增益
- 搭建好solr,启动tomcat,报错Error loading class "solr.VelocityResponseWriter"
- C++第一次上机实验报告-2
- 【项目 3-随机数函数应用于游戏】
- HDU 5606 tree 并查集
- VMWare克隆linux系统之后,网卡问题
- 机器学习基础(三)——信息、信息熵与信息增益
- 欢迎使用CSDN-markdown编辑器
- 第四周像项目四 程序分析(问题2)
- opengl下png图片的加载与显示
- 百钱买百鸡
- 第四周【递归函数求出n的阶乘】
- nginx+tomcat+memcached搭建服务器集群及负载均衡
- Liunx系统定时任务时间设置Crontab的格式
- 最大公约数计算