机器学习05-决策树(python)

生活中的决策树案例可以通过一个简单的日常决策过程来理解。决策树实际上是一种逐步进行判断和选择的逻辑结构,类似于我们在生活中解决问题时的一步步思考。以下是一些典型的生活场景中的决策树案例:

1. 天气影响穿衣决策

假设你每天早上都要决定穿什么衣服,天气因素会影响你的选择。可以构建一个简单的决策树帮助你做出穿衣决策。

决策树:
  1. 天气

    • 如果天气晴朗:

      • 温度

        • 如果温度高于25°C,穿短袖。

        • 如果温度在15°C-25°C之间,穿长袖。

        • 如果温度低于15°C,穿外套。

    • 如果天气下雨:

      • 温度

        • 如果温度高于25°C,穿短袖并带雨伞。

        • 如果温度在15°C-25°C之间,穿长袖并带雨伞。

        • 如果温度低于15°C,穿外套并带雨伞。

    • 如果天气有风或刮大风:

      • 温度

        • 如果温度低于20°C,穿防风外套。

        • 如果温度高于20°C,穿长袖或外套。

2. 选择外出就餐地点

当你决定外出就餐时,多个因素会影响你对餐厅的选择,比如预算、口味、距离等。你可以通过决策树来简化选择过程。

决策树:
  1. 预算

    • 如果预算高于100元:

      • 口味偏好

        • 喜欢中餐,去高档中餐厅。

        • 喜欢西餐,去西餐厅。

        • 喜欢其他菜系,去国际美食餐厅。

    • 如果预算在50-100元之间:

      • 口味偏好

        • 喜欢中餐,去普通中餐馆。

        • 喜欢西餐,去连锁西餐厅。

        • 喜欢其他菜系,去快餐店。

    • 如果预算低于50元:

      • 距离

        • 如果距离近,去家附近的小吃店。

        • 如果距离远,选择外卖。

3. 选择周末活动

周末的时候,你可能会根据时间、天气、个人兴趣等决定去做什么活动。通过一个简单的决策树,可以帮助你更快速地做出决策。

决策树:
  1. 天气

    • 如果天气晴朗:

      • 时间

        • 如果有足够的时间(大于4小时),去远足或户外运动。

        • 如果时间不多(2-4小时),去公园散步或骑自行车。

        • 如果时间很短(少于2小时),在家附近散步或跑步。

    • 如果天气下雨:

      • 兴趣

        • 如果喜欢看电影或追剧,在家看电影。

        • 如果喜欢阅读,去图书馆或书店。

        • 如果喜欢社交活动,和朋友一起在咖啡馆或室内场所聚会。

4. 家庭晚餐决策

家庭成员决定晚餐吃什么也可以通过决策树来完成。假设有多个因素影响晚餐选择,比如时间、食材准备情况、个人口味等。

决策树:
  1. 冰箱里有的食材

    • 如果有蔬菜和肉类:

      • 时间

        • 如果时间充足(超过1小时),准备一顿丰盛的炒菜加米饭晚餐。

        • 如果时间不多(30分钟-1小时),准备简单的蔬菜肉类炒面或炒饭。

    • 如果只有蔬菜:

      • 时间

        • 如果时间充足(超过1小时),准备素食晚餐,如蔬菜沙拉和汤。

        • 如果时间较短,准备蔬菜沙拉或煎蛋等快餐。

    • 如果食材不足:

      • 选择外卖,根据个人口味选择外卖类型(中餐、快餐、烧烤等)。

5. 购买新手机的决策

当你准备购买一部新手机时,可能会根据价格、功能、品牌、使用需求等做出选择。一个简单的决策树可以帮助你做出选择。

决策树:
  1. 预算

    • 如果预算大于5000元:

      • 品牌偏好

        • 喜欢苹果,选择最新款 iPhone。

        • 喜欢安卓,选择高端安卓机型如三星、华为等。

    • 如果预算在3000-5000元之间:

      • 功能需求

        • 需要高性能和拍照功能,选择中高端安卓机如华为、小米。

        • 需要性价比,选择性价比高的品牌如一加、Realme。

    • 如果预算小于3000元:

      • 使用场景

        • 如果用于日常通信和社交,选择入门级手机如红米、荣耀。

        • 如果需要较好的拍照功能,选择中端机型如vivo。

总结:

决策树在生活中有广泛的应用,通过逐步判断条件并做出相应选择,可以简化复杂的决策过程。无论是日常穿衣、选择餐厅,还是购买物品,决策树都可以帮助你快速、逻辑清晰地做出决策。这种方式不仅适用于个人决策,也在商业和管理中得到了广泛应用,如客户分类、产品推荐等。

信息熵(Entropy)是度量信息的不确定性的一种工具。在机器学习中,信息熵通常用于衡量一个系统或数据集的混乱程度或不确定性。生活中的信息熵与机器学习中的信息熵原理相同,都是用来描述系统中随机性不确定性的大小。下面我将通过例子解释机器学习中的信息熵和生活中的信息熵。

1. 机器学习中的信息熵

在机器学习(尤其是决策树算法)中,信息熵用于衡量数据集的纯度或不确定性。当一个分类任务中,所有数据点都属于同一个类别时,熵为零,因为没有不确定性。当数据点的类别非常混乱且均匀分布时,熵达到最大值,表示信息的不确定性最大。

例子:

假设我们有一个包含 10 个样本的数据集,目标是对这些样本进行二分类。分类的可能结果为 "猫" 或 "狗"。

  • 如果数据集中的 10 个样本都属于 "猫",则数据集的信息熵为 0,因为分类没有不确定性——所有样本都属于同一类(确定性最高)。

  • 但是,如果 5 个样本是 "猫",5 个样本是 "狗",那么数据集的信息熵就比较高,因为分类的结果具有不确定性,"猫" 和 "狗" 的比例相等,混乱度最大。

公式上,信息熵 ( H ) 的定义如下: [ H(X) = - \sum_{i=1}^{n} P(x_i) \log_2 P(x_i) ] 其中,( P(x_i) ) 是类别 ( x_i ) 出现的概率。

具体计算

  • 如果 10 个样本都是 "猫",信息熵 ( H(X) ) 为: [ H(X) = - (1 \log_2 1) = 0 ] 因为 ( \log_2 1 = 0 ),所以熵为 0,表示没有不确定性。

  • 如果 5 个样本是 "猫",5 个样本是 "狗",信息熵为: [ H(X) = - \left( \frac{1}{2} \log_2 \frac{1}{2} + \frac{1}{2} \log_2 \frac{1}{2} \right) = 1 ] 这表示不确定性最高。

2. 生活中的信息熵

生活中的信息熵与机器学习中的信息熵有相似的概念,都是描述不确定性。我们可以用信息熵来描述很多日常生活中的情景,比如:

例子 1:天气预报中的信息熵

假设你每天早晨要决定是否带伞出门,而你依赖天气预报来做出这个决策。

  • 确定性高的情况:如果天气预报告诉你今天一定会下雨(概率为 100%),这时的不确定性为 0,信息熵为 0,因为你确定需要带伞。

  • 确定性低的情况:如果天气预报告诉你今天有 50% 的概率下雨、50% 的概率晴天,这时的信息熵就高,因为你无法确定是否需要带伞,决策的混乱度增加。

具体计算

  • 如果预报说 100% 下雨,信息熵为: [ H = - (1 \log_2 1) = 0 ] 不确定性为 0。

  • 如果预报说 50% 下雨,50% 晴天,信息熵为: [ H = - \left( \frac{1}{2} \log_2 \frac{1}{2} + \frac{1}{2} \log_2 \frac{1}{2} \right) = 1 ] 不确定性最大,决策困难。

例子 2:家庭晚餐的选择

你和家人准备决定今晚吃什么饭。你有以下选项:中餐、意大利面、寿司、快餐等。

  • 如果家人都非常明确说今晚吃中餐,信息熵为 0,因为决策非常确定。

  • 但是,如果家人有不同的意见,有人想吃中餐,有人想吃寿司,有人想吃快餐,且意见均衡,这时的信息熵较高,因为存在多种可能性且没有明确答案,决策充满不确定性。

具体计算

  • 如果所有人都选择中餐,信息熵为: [ H = - (1 \log_2 1) = 0 ] 不确定性为 0。

  • 如果有 50% 的人想吃中餐,50% 的人想吃寿司,信息熵为: [ H = - \left( \frac{1}{2} \log_2 \frac{1}{2} + \frac{1}{2} \log_2 \frac{1}{2} \right) = 1 ] 不确定性为 1,表示你们的晚餐选择变得更难以确定。

总结:

  • 机器学习中的信息熵主要用于衡量数据的纯度或不确定性,帮助我们选择最佳的特征来划分数据集。熵越低,数据越纯;熵越高,数据越混乱。

  • 生活中的信息熵反映的是我们在日常决策过程中面临的不确定性。当所有条件都非常明确时,信息熵为 0(确定性高);当有多个可能的选择且各自概率均衡时,信息熵较高(不确定性大)。

无论是在机器学习还是生活中,信息熵都帮助我们理解和处理不确定性,指导我们做出更理性的决策。

 ​​​​​​​

公式不要背,理解就行。

我用通俗的方式解释信息熵信息增益,并结合决策树(ID3 算法)的应用。

1. 什么是信息熵?

信息熵可以简单理解为一种度量不确定性或混乱程度的指标。我们可以通过信息熵来衡量一个数据集的混乱程度。

  • 如果一个数据集非常有序(例如所有元素都属于同一个类别),那么它的信息熵很低,甚至为零,因为没有任何不确定性。

  • 相反,如果数据集非常混乱(例如包含很多不同的类别且每种类别的数量差不多),那么信息熵就很高,因为不确定性非常大。

举个例子:

  • 假设有两组数据:数据 α数据 β

    • 数据 α:ABCDEFGH

    • 数据 β:AAAABBCD 数据 α 包含 8 种不同的信息(A 到 H),而数据 β 只有 4 种不同的信息(A、B、C、D)。显然,数据 β 比数据 α 更有规律,混乱度(不确定性)低,因此信息熵较低。而数据 α 的混乱度较高,信息熵也就更高。

2. 如何计算信息熵?

公式: [ H(X) = - \sum_{i=1}^{n} P(x_i) \log_2 P(x_i) ]

  • 其中,( P(x_i) ) 是第 ( i ) 类别在数据集中的概率(也就是该类别占总数据的比例),( H(X) ) 表示数据集 X 的信息熵。

例子:
  • 数据 α:ABCDEFGH 每个字符的概率都是 ( \frac{1}{8} ),因此信息熵是: [ H(\alpha) = - \left( 8 \times \frac{1}{8} \log_2 \frac{1}{8} \right) = 3 ]

  • 数据 β:AAAABBCD A 的概率是 ( \frac{4}{8} ),B 是 ( \frac{2}{8} ),C 和 D 都是 ( \frac{1}{8} ),因此信息熵是: [ H(\beta) = - \left( \frac{4}{8} \log_2 \frac{4}{8} + \frac{2}{8} \log_2 \frac{2}{8} + \frac{1}{8} \log_2 \frac{1}{8} \times 2 \right) = 1.75 ]

可以看到,数据 α 的信息熵为 3,而数据 β 的信息熵为 1.75,说明数据 α 的混乱度更高。

3. 什么是信息增益?

信息增益描述的是在使用某个特征对数据进行划分后,不确定性减少的程度。简单来说,信息增益越大,说明该特征越有用,它可以帮助我们更好地将数据分类。

公式: [ IG(D, A) = H(D) - H(D|A) ]

  • 其中,( H(D) ) 是划分前的整体熵,( H(D|A) ) 是基于特征 A 划分后的条件熵。

例子:

假设有一个简单的数据集,其中性别和活跃度是两个特征。目标是预测用户是否流失(is_lost)。 为了知道哪个特征对流失的影响更大,可以通过计算信息增益来选择特征。

  1. 计算数据集的整体熵: 根据数据集中流失和未流失的比例,计算整体熵。例如有 15 个用户,其中 5 人流失,10 人未流失,计算公式为: [ H(D) = - \left( \frac{5}{15} \log_2 \frac{5}{15} + \frac{10}{15} \log_2 \frac{10}{15} \right) = 0.9812 ]

  2. 计算性别的条件熵: 根据性别对数据集进行划分,假设性别为“男”的用户流失和未流失的比例为 3:5,性别为“女”的用户流失和未流失的比例为 2:5,计算条件熵: [ H(D|gender) = \frac{8}{15} \times \left( -\frac{3}{8} \log_2 \frac{3}{8} - \frac{5}{8} \log_2 \frac{5}{8} \right) + \frac{7}{15} \times \left( -\frac{2}{7} \log_2 \frac{2}{7} - \frac{5}{7} \log_2 \frac{5}{7} \right) = 0.9748 ]

  3. 计算信息增益: [ IG(D, gender) = H(D) - H(D|gender) = 0.9812 - 0.9748 = 0.0064 ]

  4. 计算活跃度的条件熵: 假设根据活跃度划分数据的条件熵为 0.3036,那么: [ IG(D, act_info) = 0.9812 - 0.3036 = 0.6776 ]

通过比较信息增益,我们可以发现“活跃度”的信息增益更大(0.6776 > 0.0064),说明“活跃度”比“性别”对流失的预测更加有用。

4. 决策树的构建过程(ID3 算法)

ID3 决策树通过选择信息增益最大的特征逐步构建决策树,直到数据集可以完全分类或满足停止条件。步骤如下:

  1. 计算每个特征的信息增益

  2. 选择信息增益最大的特征,将数据集按该特征划分。

  3. 对每个子集重复上述步骤,直到数据集不可再划分或满足其他停止条件(如树的最大深度)。

小结:
  • 信息熵描述了一个系统的混乱程度。

  • 信息增益帮助我们通过某个特征划分数据,减少混乱度,选择最优的特征来构建决策树。

  • 在构建决策树的过程中,我们每次都选择信息增益最大的特征来划分数据集,从而帮助我们做出最优的分类决策。

这些概念和计算是机器学习中的核心,特别是用于分类问题时,决策树通过信息增益来选择最佳划分路径。

决策树很容易过拟合。

决策树虽然是一种强大的机器学习模型,但它非常容易过拟合。下面我会详细解释决策树容易过拟合的原因,并给出解决方法。

1. 什么是过拟合?

过拟合是指模型在训练集上表现得非常好,但在测试集或新数据上表现很差的情况。这意味着模型过度拟合了训练数据中的噪声或细节,失去了泛化能力。

2. 决策树为什么容易过拟合?

决策树模型容易过拟合,主要有以下几个原因:

1. 决策树的自由度太高:

决策树可以无限制地对数据进行分裂,直到每个叶节点都只包含一个样本。这样,决策树就能“记住”每一个训练数据点,导致训练误差非常低。但这种对数据的过度划分也意味着树的结构变得非常复杂,模型会对训练集中的噪声和异常点过度拟合。

• 比如,如果数据中存在一些噪声(例如异常点),决策树会通过创建深层的分支去捕捉这些噪声,尽管它们对于模型的预测能力并没有帮助。

2. 分裂时倾向于不断划分数据:

决策树的构建过程中,每次都会选择一个特征进行划分,使得数据的不确定性(熵)最大程度地减少。然而,如果没有限制树的深度或分裂的最小样本数,决策树可能会一直分裂下去,直到所有叶节点都只包含一个样本。这会导致模型变得非常复杂,无法泛化到新数据。

• 举个例子,如果训练数据集中的某些数据点本身带有噪声或异常,决策树可能会为这些特征建立一条复杂的分支,而这些分支只适用于训练集中的某些样本,导致模型在其他数据集上表现不佳。

3. 小样本问题:

决策树对样本数量少的特征过于敏感,尤其是在数据集较小的情况下,每个叶节点可能只包含少量数据。决策树会过度依赖这些小样本中的特征,做出过度拟合的判断。这样,训练得到的模型会对训练集表现很好,但在测试集上表现很差。

4. 深度过大的树结构:

决策树容易生成过深的树(深度过大),这意味着模型拟合了训练数据中的每一个小细节。深度过大的决策树相当于学习了数据中的噪声和细节,导致模型在新的、未见过的数据上表现不佳。

• 比如,如果一棵树的深度太深,模型会为训练集中的每一个可能的情况(甚至是异常情况)创建一个分支。这虽然能在训练集上达到很高的准确率,但在测试集或新数据上却容易出错。

3. 过拟合的后果

当决策树过拟合时,模型的泛化能力下降,导致以下问题:

测试集性能差:虽然在训练集上表现得非常好(高准确率),但在测试集或真实场景中表现不佳(低准确率)。

模型对新数据的鲁棒性差:模型过度依赖训练数据中的细节和噪声,当遇到新数据时,模型无法有效处理。

4. 如何防止决策树过拟合?

为了防止决策树过拟合,我们通常会采取以下策略:

1. 预剪枝(Pre-Pruning):

在构建决策树时,限制树的复杂度,提前终止分裂。可以通过以下参数来实现:

最大深度(max_depth):限制树的最大深度,避免生成过深的树。

最小样本数(min_samples_split):限制每个节点至少要有一定数量的样本才能进一步分裂。

最小叶节点样本数(min_samples_leaf):控制每个叶节点至少有多少样本,防止叶节点太小。

最大特征数(max_features):限制每次分裂时考虑的特征数量,防止模型过度拟合所有特征。

这些参数可以有效限制树的规模,从而减少模型对训练集细节的过度拟合。

2. 后剪枝(Post-Pruning):

后剪枝是在树构建完成后,对一些叶节点进行剪枝,合并过度分裂的分支。这种方式可以先构建一个完整的树,然后通过验证集或者交叉验证,选择最优的剪枝策略。

• 通过计算剪枝后的准确率变化,如果剪枝后的准确率提高,则进行剪枝,直到树达到最优。

3. 使用随机森林(Random Forest)或梯度提升树(Gradient Boosting Trees):

随机森林和梯度提升树是基于决策树的集成方法,通过训练多个决策树并结合它们的预测结果,减少单棵决策树的过拟合风险。

随机森林通过随机选择特征和样本来构建多棵决策树,这样每棵树都会有些许差异,从而减少过拟合的风险。

梯度提升树通过训练多个弱分类器(每棵树都是弱分类器),每次都在前一次树的基础上做出改进,最终得到一个强分类器。

4. 使用交叉验证(Cross Validation):

通过交叉验证选择最佳的树深度和参数。在交叉验证中,数据集被分成多折(如 5 折或 10 折),模型在不同的折上进行训练和验证,最终选择在验证集上表现最好的模型。

上述优化方法,了解即可,我们只需要知道决策树如果一直下去,就会过拟合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值