决策树(Decision Tree, DT)在机器学习和数据科学领域的成功源于其仿效人类决策过程的逻辑流程。这一过程类似于一张流程图,每个节点都通过简单的二分决策处理给定的变量,直至最终做出决策。
以购买T恤为例,决策可能基于预算、品牌、尺码和颜色等变量展开:
-
如果价格超过30元,我会放弃购买;否则,会考虑购买。
-
如果价格低于30元且是我喜欢的品牌,进一步考虑尺码。
-
最后,如果价格低于30元、是我喜欢的品牌且尺码合适,且颜色是黑色,我会购买。
这种逻辑简单而合理,适用于各种数据。然而,决策树对数据集变化非常敏感,特别是在小数据集上,容易过拟合。
探索性数据分析(Exploratory Data Analysis, EDA)是数据科学项目中的关键阶段,旨在深入探索数据集及其变量,尽可能多地理解哪些因素对目标变量的影响最大。在这一阶段,数据科学家通过理解数据分布、检查错误或缺失数据,并通过可视化分析每个解释变量如何影响目标变量,从而获取初步见解。
决策树在EDA过程中的应用极为有益,因其能够捕捉数据中微小的模式和关系。在探索性阶段,不需过度关注数据分割或算法微调,简单地运行决策树即可获得深刻见解。
以下是从学生表现数据集中探索影响最终成绩G3的示例:
下面使用的数据集是来自UCI存储库的学生表现数据集进行示例,首先加载包和数据集:
import pandas as pd
import seaborn as sns
sns.set_style()
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
from sklearn.tree import plot_tree
from ucimlrepo import fetch_ucirepo
student_performance = fetch_ucirepo(id=320)
X = student_performance.data.features
y = student_performance.data.targets
df = pd.concat([X,y], axis=1)
df.head(3)
以下两个示例是从学生表现数据集中探索影响最终成绩G3的示例。
示例一:'failures', 'absences', 'studytime' 对G3的影响
通过构建决策树分析失败次数、缺勤次数和学习时间对成绩的影响。观察到失败次数较少且学习时间超过2.5的学生成绩更高。
cols = ['failures', 'absences', 'studytime']
X = df[cols]
y = df.G3
dt = DecisionTreeRegressor().fit(X,y)