物流行业网站建设方案,wap网页制作教程,wordpress 免费版,怎么开网店挣钱一#xff0c;决策树#xff1a; 简介#xff1a; 决策树是一种通过构建类似树状的结构#xff08;颠倒的树#xff09;#xff0c;从根节点开始逐步对数据进行划分#xff0c;最终在叶子节点做出预测结果的模型。
结构组成#xff1a; 根节点#xff1a;初始的数据集…一决策树 简介 决策树是一种通过构建类似树状的结构颠倒的树从根节点开始逐步对数据进行划分最终在叶子节点做出预测结果的模型。
结构组成 根节点初始的数据集全集没有经过任何划分最顶层的部分 内部节点代表对某个特征的测试根据特征值将数据划分为子节点中间部分 叶子节点代表最终的分类结果或回归值最底层的部分
学习过程 ①选择根节点找到一个明显的特征能将数据最纯净地分为两组 ②递归对每个子节点重复上述操作直到所有样本都同属于一类完全纯净 or 没有更多的特征可用 or 达到的预设的树的深度防止过拟合 测量分类纯度以区分猫狗为例 ①信息熵 熵(H)的函数图像如上图所示当区分后的样本全为猫或狗时熵为0当样本中猫和狗的比例越接近于1时熵越大。 熵的函数 Pi是数据集中第i类样本的比例 当所有样本属于同一类时完全纯净熵为0当样本类别均匀分布时熵最大。 ②基尼指数 基尼指数衡量随机抽取的两个样本类别不一致的概率数值越小纯度越高 公式 当数据集完全纯净时基尼指数为0当数据集类别分布均匀时基尼指数为0.5 ③分类误差 分类误差表示使用多数类作为标签时误分类的概率 公式 完全纯净时误差为0二分类均匀分布时误差为0.5 三者比较 计算效率基尼指数分类误差信息熵 敏感度信息熵基尼指数分类误差
三者在决策树中的应用 信息增益熵通过父节点减去子节点熵的加权平均值来选择增益最大的特征 基尼指数类似信息增益选择使基尼指数下降最多的分割
信息增益的实现 信息增益在构建决策树过程中使用某个特征对数据集实现分割后学习熵的减少程度。 核心选择使信息增益最大的特征进行分割即使学习熵减少程度最大最大程度上纯化子节点 实现步骤 ①计算父节点的熵 ②按照特征分割计算子节点的熵 ③计算加权子节点的熵 ④计算信息增益
举例 假设父节点中有10个样本6个属于A类4个属于B类 ①计算父节点的熵代入信息熵的公式得到父节点的熵为0.971 ②按特征分割数据计算子节点的熵用特征将这10个样本分为两个子节点每个子节点有5个样本分别计算两个子节点的熵。 子节点14A1B熵为0.722 子节点22A3B熵为0.971 ③计算加权子节点熵 加权熵5/10*子节点1熵5/10*子节点2熵0.8465 ④计算信息增益 信息增益父节点熵-加权子节点熵0.1245
构建决策树
①数据准备和预处理 从决策树的根结点开始对数据进行数据清洗和特征处理或标签编码
②分割 通过选择该特征后提供的最高信息增益的特性进行分割
③创建树的分支 根据所选特性将数据集拆分成两个子集并创建树的分支后将数据集划分给分支
④递归 对每个子节点重复上述操作直到满足停止条件 停止条件
节点纯度达标达到预设的最大树深继续分割的信息增益低于阈值无显著信息增益子节点的样本数小于阈值样本数过少
One-Hot编码 One-Hot编码是将包含K个类别的离散特征转换为K个二元特征常用在构建决策树时处理多类别特征。 举例原始特征“颜色”包含三个类别红蓝绿 经过One-Hot编码后生成三个新特征是不是红色是不是蓝色是不是绿色 优点可以将多类别特征转换为二元特征每个特征仅对应一个类别模型可以更灵活的选择分割点可以避免算法对多取值特征的偏好 缺点 1.增加特征数量增加计算负担 2.降低单个特征的重要性使得信息分散 3.过拟合风险 拆分连续值的决策树分支 连续值的分割目标是找到某个阈值将数据集分为两个子集使得分割后的子集纯度最高。
实现步骤
排序连续特征值根据排完序的特征值点生成候选分割点计算每个分割点之间的纯度对比执行后分割 二回归树模型 回归树是一种用来预测连续数值的决策树模型如用来预测房价温度......。与分类树不同分类树预测的是类别而回归树预测的是连续的数值。 实现原理 从根节点到叶节点分而治之将数据集划分为多个小区域每个区域内的样本数尽可能相似直到每个小区域足够纯净 拆分步骤 ①遍历所有特征 ②遍历每个特征的所有可能分割点 若为连续特征尝试相邻值的中间点若为离散特征尝试每个类别 ③选择最优分割点 衡量指标均方误差EMS 均方误差是衡量一个区域内样本的数值差异的程度均方误差越小该区域内样本越相似。 通过计算分割后的左右子区域的均方误差和选择使总均方误差和最小的分割方式。 回归树的构建流程 从根节点开始遍历所有特征--- 遍历分割点选择使总均方误差最小的分割方式---生成子节点按分割条件将数据分为左右两个部分 --- 递归处理子节点重复上述步骤 --- 达到停止条件回归树达到预测树深||区域内样本数过少||均方误差下降不明显 代码实现及运行结果 from sklearn.tree import DecisionTreeRegressor
import pandas as pd# 示例数据房屋面积㎡和价格万元
data pd.DataFrame({面积: [80, 120, 100, 90, 150],价格: [300, 450, 400, 350, 500]
})# 训练回归树模型
model DecisionTreeRegressor(max_depth2) # 限制树深度为2
model.fit(data[[面积]], data[价格])# 预测新样本
new_house pd.DataFrame({面积: [110]})
predicted_price model.predict(new_house)
print(f预测价格{predicted_price[0]:.1f}万元) # 输出预测价格425.0万元 决策树模型中的放回抽样 从原始的数据集中有放回地随机抽取样本的方法每次抽取时每个样本被选中的概率相同而且可能被重复选中。每个训练子集的样本数与原始数据集相同 三随机森林算法 随机森林算法是一种通过组合多个决策树的算法集成树。 集成方法 ①Bagging通过自助采样从原始数据集中生成多个子集每个子集训练一棵决策树 ②随机特征选择每棵树节点分裂时随机选择部分特征作为候选降低树之间的相关性防止过拟合 训练过程
有放回地抽样从原始数据集中随机抽取N个样本作为训练集用未参与训练的样本验证模型无需额外的验证集特征抽样每个节点分裂时从全部特征中随机选取子集每棵树生长到最大深度||叶子节点纯度达标时停止
四XGBoost类似贪心算法 XGBoost是一种基于梯度提升树的集成算法通过加法模型和前向分布算法逐步优化目标函数。每次训练后把侧重点放在先前训练过但拟合效果不好的决策树上。 第一次循环通过已有的训练集开始训练决策树 第二-N次循环根据前一次循环产生的决策树的训练效果侧重于选择训练不好的决策树来进行训练。 XGBoost优点 ①可以选择默认拆分标准和停止标准 ②内置正则化防止过拟合
五决策树 VS 神经网络 决策树适用于数据量小特征明显训练速度快的场景例如分群评分。 神经网络适用于数据量大数据种类多样图像音频文件的场景。