手撸决策树代码——原理详解(1)(python3)
前提 了解信息熵 简单提一下,学过物理化学的小伙伴都明白: 熵是无序分子运动紊乱程度的一种度量 ,熵值越大,内部的混乱程度越大。 因此,信息熵是 对某个事件里面所包含的信息的混乱程度 在数学上: 当一件事是不太可能发生的时候,我们获取的信息量较大 当一件事是极有可能发生的时候,我们获取的信息量较小 例如: 1.特朗普其实是中国的卧底 2.特朗普是zz。 结论: 信息的量度应该依赖于概率分布, 所以说熵h(X)应该是概率P(X)的单调函数。 推导过程: 当x事件与y事件不相关时:(x事件与y事件独立) 我们获取x事件和y事件的信息量总和=x事件信息量+y事件信息量 即:h(X,Y) = h(X) + h(Y)————————————(1) 同理:由于x,y事件独立 x,y事件同时发生的概率 = x事件概率*y事件概率 即:P(XY) = P(X) * P(Y) 对其两边取对数 lgP(XY)=lg(P(X)*P(Y)) = lgP(X) + lgP(Y)——————(2) 由(1),(2)式得出结论 h(X)应该是概率P(X)的log函数 P(X)概率在0到1内log后为负数,(常理信息熵h(X)应为正数) 所以我们需要将在公式前添负号。 至于log以谁为底,计算机中一般以2(bit)为底,机器学习中一般以e为底。 所以:事件X单个随机变量xi的信息熵为