首先看类型 —— 是喜欢喜剧还是科幻?如果选喜剧,再看评分 —— 高于 8 分吗?如果评分够高,再看演员 —— 有没有你喜欢的明星?最后根据这些 “条件判断”,你终于定下了一部电影。
决策树算法做的事情,和这个过程几乎一模一样。它就像一个 “提问专家”,会根据数据里的特征(比如电影的类型、评分、演员)不断提出 “是 / 否” 或 “大于 / 小于” 的问题,把数据分到不同的小群体里,直到每个小群体的答案足够明确(比如 “这部电影值得看” 或 “不值得看”)。
比如用决策树预测 “一个人是否会购买某款手机”,它可能会先问 “月收入是否超过 1 万?”,收入高的群体再问 “年龄是否小于 30 岁?”,年轻群体再问 “是否用过该品牌?”…… 最后每个分支的终点,就是它给出的预测结果。
模拟人类的决策过程—— 通过一系列 “是 / 否” 的判断,逐步缩小范围,最终得到结论。
优点
- 理解简单
- 可视化
缺点
- 不能很好创建推广数据的过于复杂的树
- 过拟合
改进
- 剪枝cart算法
- 随机森林
原理#
要决定特征的先后顺序
信息论与信息熵
详见信息论相关知识:
香农定理:消除随机不确定的东西
信息的衡量➡️信息量➡️信息熵
信息熵定义#
- H的专业术语称之为信息熵,单位比特
log下的b定义如下:
对数底数 b 决定了信息熵的计量单位,不同取值对应不同 “信息度量体系”:
当 (b = 2) 时:信息熵的单位是 “比特(bit)” ,这是计算机科学、通信领域最常用的设定。 它的直观含义是:用二进制(0/1)编码随机事件所需的 “最小位数”。比如抛硬币(概率 (P=0.5) ),(_2 0.5 = -1),单个结果的信息量是 (0.5×1 = 0.5) 比特(两个结果总熵为 1 比特 ),对应 “用 1 位二进制就能编码硬币的正反”。
当 (b = e) 时:信息熵的单位是 “纳特(nat)” ,e 是自然对数的底(约 2.71828 )。 这一设定更贴近 “连续概率分布” 的数学分析(比如概率论中分析连续随机变量的熵 ),在理论推导(如信息论证明、熵的数学性质研究 )中常用,本质是用自然对数简化微积分运算。
当 (b = 10) 时:信息熵的单位是 “哈特(hart)” ,工程领域偶尔会用,但远不如比特、纳特普及。
决策树划分依据——信息增益#
对于训练数据集 D 和特征 A,特征 A 对数据集 D 的信息增益 (g(D,A)),本质是数据集原始不确定性与引入特征 A 后剩余不确定性的差值 。具体通过以下两个关键熵指标计算:
- 信息熵
:衡量数据集 D 本身的混乱程度(不确定性),反映数据分类结果的无序性。 - 信息条件熵
:在已知特征 A 取值的条件下,数据集 D 剩余的混乱程度(不确定性)。
信息增益的计算公式为:
选择对信息增益贡献最大的项优先判断
信息熵的计算:
条件熵的计算:
表示属于某个类别的样本数
决策树划分依据——其他#
- ID3
- 信息增益 最大的准则
- C4.5
- 信息增益比 最大的准则
- CART
- 分类树:基尼系数 最小的准则
- 优势:划分更加细致
决策树的API#
class sklearn.tree.DecisionTreeClassifier(criterion='gini',max_depth=None,random_state=None)
- 决策树分类器
- criterion:默认是
gini
,也可选择信息增益的熵entropy
- max_depth:树的深度大小
- random_state:随机数种子
代码案例#
可以可视化决策树 网站
1 | from sklearn.tree import DecisionTreeClassifier, export_graphviz |