一、背景与数据说明
泰坦尼克号数据集是机器学习领域中常被用作分类问题的经典数据集之一,源于1912年泰坦尼克号沉船事故,记录了船上乘客的基本信息及生还情况。通过分析该数据集,不仅可以探讨当时人类社会在危机时刻的生存行为模式,还为研究分类模型的应用与性能评估提供了一个实践场景。
数据集中,训练集包含891个样本,测试集包含418个样本,每个样本记录了一个乘客的相关信息,如性别、年龄、票价、登船港口等(如图所示)。实验的目标是通过机器学习算法(如决策树)挖掘出与生还概率相关的重要因素,建立预测模型分析乘客的生还概率,并结合测试集实际标签值评估模型的分类精度。这不仅对算法性能评估有实际意义,也为数据驱动的决策方法提供了参考。
二、ID3算法的思想
ID3(Iterative Dichotomiser 3)是决策树的经典生成算法之一。其主要思想是通过计算特征的信息增益,选择信息增益最大的特征作为划分标准,进而将数据集划分成不同的子集。信息增益是衡量一个特征对数据集划分效果的指标,它通过减少数据集的“熵”(即不确定性)来评估特征的划分效果。选择信息增益最大的特征进行划分,可以有效地减少数据集的混乱度,提高分类准确性。
ID3算法的基本步骤:
1. 计算数据集的熵(即数据集的不确定性)。
2. 对于每一个特征,计算该特征对应的条件熵,并根据公式计算该特征的信息增益。
3. 选择信息增益最大的特征进行划分。
4. 对每个子集递归执行以上步骤,直到满足停止条件。
ID3算法是一种易于实现、计算量适中的决策树生成方法,适合小规模数据集,且生成的决策树能够直观地解释每个特征对决策的影响。然而,其性能可能受多种因素影响,如数据特征处理方式、模型参数选择以及过拟合问题等。
因此,本实验旨在基于决策树ID3算法对泰坦尼克号数据集进行分析,主要探讨以下问题:
1. 分析哪些特征(如性别、年龄、船票等级等)对预测生还率具有显著影响?
2. 如何利用决策树算法(ID3算法)有效处理数据,构建合理的分类模型,并通过剪枝等方法优化模型以提升泛化能力?
3. 如何在验证集和测试集上评估模型的准确性,并结合实际测试结果验证模型的可靠性?
三、核心伪代码
1. 如果D中的所有样本都属于同一类别,则返回一个叶节点,标签为该类别。
2. 如果特征集合F为空或D为空,则返回一个叶节点,标签为D中多数样本的类别。
3. 对于每个特征f在F中:
a. 计算特征f的信息增益:
i. 计算数据集D的熵(Entropy)。
ii. 计算基于特征f划分D后各子集的熵。
iii. 计算信息增益:
Gain(f) = Entropy(D) - ∑ (|D_i| / |D|) * Entropy(D_i),其中D_i是根据特征f划分得到的子集。
4. 选择信息增益最大的特征f。
5. 创建一个决策节点,特征f作为该节点的分裂标准。
6. 对于特征f的每一个取值v:
a. 令D_v为D中,特征f的值为v的样本子集。
b. 递归调用ID3算法,在子集D_v上构建子树,去掉特征f。
c. 将递归结果作为特征f值v的子节点。
7. 返回生成的决策树。
四、实验设置与参数选择
在本实验中,为了构建并优化基于决策树的分类模型,对数据进行了合理的预处理,并设置了科学的实验流程和参数。
首先,数据预处理是实验的基础。针对数据集中存在的缺失值问题,采用以下策略进行填充:用乘客年龄(Age)的中位数填充该字段中的缺失值,用登船港口(Embarked)的众数填充对应的缺失值。此外,为了使类别型数据能够被机器学习算法处理,将性别(Sex)和登船港口(Embarked)字段转化为数值型变量,分别编码为0和1,以及0、1、2。
接下来,模型设置方面,实验选用ID3算法构建初始决策树,使用信息增益作为划分准则(criterion='entropy'),以便找到能最大化减少数据集不确定性的特征。为了防止模型过拟合,对决策树进行后剪枝优化,具体方法为限制决策树的最大深度(max_depth=5),从而减少过多的分裂对模型泛化能力的影响。
最后,在评估指标方面,为全面评估模型的性能,实验分别在验证集和测试集上进行评估。在验证集中,计算分类准确率以验证模型的表现;在测试集中,结合实际测试结果文件gender_submission.csv,计算预测的分类精度,确保模型的性能在真实场景中具有较高的可靠性。通过以上设置与选择,实验能够科学地分析并验证决策树算法在泰坦尼克号数据集中的应用效果。
五、实验的详细步骤
1. 数据预处理
首先,加载训练集(train.csv)和测试集(test.csv)文件。针对缺失值字段,采取适当的填充策略:用中位数填充Age字段,用众数填充Embarked字段,并用中位数填充Fare字段。接下来,将类别型字段转化为数值型变量:将Sex字段映射为0(男)和1(女),将Embarked字段映射为0(S)、1(C)、2(Q)等数值形式,以便决策树模型能够处理这些数据。
代码如下:
2. 模型训练
在训练过程中,从训练集数据中选择特征列['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']作为输入特征,Survived列作为目标变量进行分类任务。随后,按8:2的比例将数据划分为训练集和验证集。使用ID3算法训练初始决策树模型,通过选择最优特征进行数据集的递归划分。并使用决策树可视化工具绘制未剪枝的决策树结构。
代码如下:
3. 模型优化
为了提高模型的泛化能力,避免过拟合,对决策树进行后剪枝处理。具体操作是设置决策树的最大深度(max_depth=5),以限制树的复杂度,从而简化模型结构。通过剪枝,减少决策树的过度拟合,确保模型在新数据上的预测效果更好。并使用决策树可视化工具绘制剪枝后的决策树结构。
代码如下:
4. 模型评估与测试
在验证集上评估未剪枝和剪枝后两种决策树模型的分类准确率,比较它们在处理未知数据时的表现。接着,在测试集上对样本进行预测,并结合gender_submission.csv文件计算模型的分类精度,评估模型在实际应用中的准确性。
代码如下:
六、实验结果
1. 未剪枝的决策树模型(ID3算法)
在实验中,使用ID3算法训练的未剪枝决策树模型在验证集上的分类准确率为78.2%,而在测试集上的分类准确率为79.2%。虽然该模型能够较好地拟合训练数据,但仍存在一定的过拟合风险,尤其在测试集上的表现与验证集相近,未能显著提升模型的泛化能力。
2. 后剪枝的决策树模型
经过后剪枝处理后,决策树模型的结构得到了简化,最大深度被限制在5,进一步减少了过拟合。经过优化后,模型在验证集上的分类准确率提高至80.4%,而在测试集上的分类准确率显著提升至88.9%。这一提升表明,剪枝有效地提高了模型的泛化能力,减少了过拟合现象,使得模型在实际应用中的表现更加优秀。
3. 模型结构可视化
通过模型可视化,可以直观地看到剪枝前后的决策树结构变化。以下是未剪枝决策树的二维可视化:
未剪枝的决策树较为复杂,分支较多,模型容易过拟合训练数据。
而剪枝后的决策树则明显更加简洁,树的深度显著降低,分支较少,且决策过程更加简洁高效。以下是剪枝后决策树的二维可视化:
通过后剪枝,决策树的复杂度大幅降低,模型更加简洁且具有更强的泛化能力,同时测试集的分类精度也得到了显著提升,证明了剪枝优化的有效性。
测试集上的分类准确率如图所示:
七、心得体会和总结
本次实验通过构建基于ID3算法的决策树模型,深入探讨了数据预处理、特征选择及模型优化等核心环节,取得了以下主要结论:
1. 决策树模型的性能高度依赖于数据预处理的质量。合理填充缺失值与类别型变量的编码,是确保模型准确性的关键步骤。
2. 未剪枝的决策树虽然能够很好地拟合训练数据,但容易出现过拟合问题,导致在测试集上的泛化能力不足。通过后剪枝优化,不仅简化了模型结构,还显著提升了模型的测试集分类精度。
3. ID3算法以其直观性和易实现性适用于结构化数据分析,但在实际应用中,需结合剪枝策略及其他超参数调整方法,进一步提升其性能与鲁棒性。
未来,可尝试将CART算法或集成学习方法(如随机森林、XGBoost)引入到模型中,以进一步提高分类效果。同时,还可通过特征工程挖掘更多有意义的变量,深入探索泰坦尼克号数据集中的潜在规律。