1.决策树算法简介
决策树概念介绍
-
决策树算法是监督学习算法的其中一种,用于根据已有数据训练数据针对未知数据进行分类的一种算法,该算法的核心理念是通过不断的判断,递归,判断,来计算数据的分类。
举例说明
-
概念可能不大好理解,举例就会清楚直观了,相信大多数人都有过生病的体验,找医生看病的时候,医生就会让你伸出舌头看看,摸摸你的额头等,这就是根据症状来判断是什么病,如果你患了感冒,医生会首先问你是否有腹泻,然后让你伸出舌头,看看你的舌苔,之后会问你是否头痛,发冷,根据这一系列的数据,医生便可以推断你的感冒类型,对症下药。
发热 |
腹泻 |
舌苔黄 |
头痛 |
畏寒 |
感冒类型 |
是 |
否 |
轻微 |
是 |
轻微 |
风热型感冒 |
是 |
否 |
否 |
是 |
是 |
风寒型感冒 |
是 |
是 |
轻微 |
是 |
是 |
暑湿型感冒 |
是 |
否 |
是 |
是 |
是 |
时行感冒 |
2.决策树算法特点及应用
特点:
-
- 计算复杂度不高
- 输出结果便于理解
- 适用于分类,适合标称数值
应用:
-
之前在微信里,朋友发给我一个链接,点进去是一个机器人来根据你的问题答案猜测是哪位明星的问题,当时觉得非常的神奇,在学习了决策树之后,才明白了其中的道理,当然这也是我猜测,首先,这个网站会收藏很多的问题作为特征值,并收集很多明星的信息,把该信息录入本地数据集,例如上面的发热,腹泻等特征,然后抽取问题1,根据答案来选择下一个提出的问题(如果选择不知道则忽略该特征),直到指定特征被用完(答完10个问题),根据最后结果集中出现次数最多作为答案。
3.信息概念介绍
信息概念:
-
信息是反映一个事件出现概率的单位(曾经在大学学的通信原理已经忘得一干二净),首先列出公式,下面再分析。
-
信息 = log2(概率)
上述的发热症状,无论哪种感冒都存在发热现象,那么这个信息其实对我们分析病情是无关紧要,所以他的信息是0,也许大家不能理解这个公式的计算方式,但我们并不准确需要这个值,我们只需要信息与概率的对应关系,无论是log3或者log4,对数据分类不造成影响,如果出现概率不为1的话,概率越大,信息量也就越小。
信息熵概念:
-
信息熵是反映一组数据的不确定性,就好比掷骰子,扔12面的骰子比6面的骰子结果不确定性就会高很多,信息熵就是用来反映这个不确定性的单位,计算公式如下:
-
信息熵 = sum(-概率1*log2(概率1), -概率2*log2(概率2),……)
从公式可能不太容易看出什么,不如我们用数值代入,6面骰子,有6种情况,每一种都是1/6,那么结果就是log2(6)=0.778,12面骰子就是log2(12)=1.079,不确定性高了之后,信息熵也得到了上涨,下面列出计算信息熵的python代码。
from math import log
from collections import Counter
def calc_shannon_ent(data_set):
last_item_set = [item[-1] for item in data_set]
data_length = len(last_item_set)
counter_data = Counter(last_item_set)
shannon_ent = 0.0
for item_s in counter_data.iteritems():
probability = item_s[1] / float(data_length)
info = log(probability, 2)
shannon_ent -= info * probability
return shannon_ent