# 摘要
本报告探讨了数据挖掘中的多种分类算法在不同数据集上的应用与评估。通过选择 IRIS、Wine Quality 和 Breast Cancer 等经典数据集,运用逻辑回归、决策树、朴素贝叶斯、神经网络以及支持向量机(SVM)模型进行分类分析,并结合交叉验证和多项性能指标(如准确率、精确率、召回率、F1 值)量化模型的表现。实验结果表明,不同算法在特定数据集上的性能各异,且分类模型的适用性与数据集的特征分布密切相关。
# 引言
数据挖掘与大数据分析是当今信息技术领域中一项重要的研究方向,通过从大量复杂的数据集中提取有价值的模式和信息,数据挖掘能够为各类业务决策、科学研究及数据驱动的应用提供强有力的支持。在本次课程作业旨在利用多种数据挖掘算法对不同数据集进行分类与分析,进而对其性能进行评估。
本次实验任务包括四个主要部分:首先,选择并处理了多个数据集,其中包括 IRIS、Wine Quality、Breast Cancer 等广泛应用的数据集;其次,利用逻辑回归、决策树、朴素贝叶斯、神经网络以及支持向量机(SVM)等多种机器学习算法对数据集进行分类,并通过交叉验证对模型的表现进行评估;接着,结合多种指标(如准确率、精确率、召回率、F1 值)对不同算法的性能进行量化分析与可视化呈现;最后,以科技论文的形式撰写报告,系统化呈现实验过程、结果及结论。
通过本次作业,我不仅深入理解了各类分类算法的原理,还通过实际操作掌握了如何在不同数据集上选择合适的模型,并进行模型性能评估。这为我在未来的研究和实践中更好地运用数据挖掘技术提供了宝贵的经验。
# 模型与介绍
# 分类模型
# 逻辑回归模型
逻辑回归(Logistic Regression)是一种广泛应用于二分类问题的统计模型。与线性回归不同,逻辑回归并不直接输出目标值的预测结果,而是通过逻辑函数(Logistic Function)将线性回归的结果映射到 0 到 1 之间的概率值,从而判断某个样本属于某一类别的概率。
逻辑回归的基本思想是通过一个线性模型计算输入特征的加权和,然后将该线性组合通过逻辑函数(也称为 sigmoid 函数)进行变换。逻辑函数的形式如下:
其中: 是输入特征 的预测值,代表样本属于正类的概率; 是模型的参数向量; 是输入特征向量; 是自然对数的底数。
逻辑回归通过极大化似然估计来确定模型的参数 ,通常采用对数似然函数的负数作为损失函数,定义如下:
其中: 是样本的数量; 是第 个样本的真实标签(取值为 0 或 1); 是模型对第 个样本的预测概率。
# 决策树模型
决策树(Decision Tree)是一种常用于分类和回归任务的树形结构模型。它通过一系列的决策规则将数据划分为不同的类别或数值预测,从而实现分类或回归。决策树的每个节点代表一个特征,每个分支代表该特征的某种可能值,叶节点则表示最终的分类或预测结果。
决策树的构建过程通常是基于贪心算法,选择能够最好区分样本的特征作为分裂节点。常见的分裂标准包括信息增益、信息增益率和基尼系数等。
- 信息增益:表示某个特征对数据集分类的不确定性的减少量。信息增益越大,特征越有助于分类,计算公式如下:
其中 是数据集 的熵, 是特征 的子集。
- 基尼系数:表示样本被错误分类的概率,基尼系数越小,样本的纯度越高,计算公式为:
其中 是样本属于第 类的概率。
为了防止决策树过拟合,通常会在构建树后进行剪枝操作。剪枝分为预剪枝和后剪枝两种:预剪枝指的是在树的构建过程中,通过限制树的深度或节点的最小样本数来提前停止分裂。而后剪枝指的是先生成一棵完整的树,然后通过去除一些不重要的分支来简化树的结构。
# 朴素贝叶斯算法
朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的概率分类算法,常用于文本分类、垃圾邮件过滤等任务。该算法假设特征之间相互独立,因此被称为 “朴素”。尽管这种假设较为简单,但在许多实际应用中表现出良好的效果。
朴素贝叶斯基于贝叶斯定理进行推理,公式如下:
其中, 是给定特征下样本属于类别 的概率, 是类别 的先验概率, 是在类别 条件下观测到特征 的联合概率。
由于朴素贝叶斯假设特征之间相互独立,可以将联合概率分解为每个特征的条件概率之积:
最终,朴素贝叶斯的分类决策为选择具有最大后验概率的类别:
朴素贝叶斯的关键假设是特征之间相互独立,尽管这一假设在现实中并不总是成立,但该算法在处理高维数据时非常高效。朴素贝叶斯算法计算效率高、实现简单,尤其在大规模数据集上表现出色,但其独立性假设可能导致在一些特征高度相关的数据集上表现不佳。
# 神经网络模型
神经网络(Neural Networks,简称 NN)是一类模仿生物神经网络结构的机器学习模型,广泛应用于分类、回归、图像识别、自然语言处理等任务。神经网络由多个层次的神经元构成,通常包括输入层、隐藏层和输出层。
神经网络的基本结构是由多个层次的神经元组成。每个神经元通过权重 和偏置 来对输入进行线性变换,结果通过激活函数进行非线性处理。常见的激活函数包括 Sigmoid、ReLU、Tanh 等。单个神经元的计算公式如下:
其中, 是输入向量, 是权重向量, 是偏置, 是输出值。
神经网络通过前向传播(Forward Propagation)计算输出,通过反向传播(Backpropagation)算法更新网络的权重和偏置,以最小化损失函数。损失函数常见的有均方误差(MSE)和交叉熵损失(Cross-Entropy)。
神经网络的训练过程包括以下步骤:
- 前向传播:从输入层到输出层进行计算,获得模型的预测结果。
- 计算损失:根据预测结果和真实标签计算损失。
- 反向传播:通过计算损失函数对每个参数的偏导数,更新模型的权重和偏置,最常用的优化算法是梯度下降(Gradient Descent)及其变种,如 Adam。
- 迭代训练:重复前向传播和反向传播,直到损失函数收敛或者达到指定的训练轮数。
神经网络的优势在于其强大的非线性拟合能力,能够处理高维复杂数据。然而,训练神经网络通常需要大量数据和计算资源,同时网络结构和超参数的选择也影响模型的性能。
# 支持向量机模型
支持向量机(Support Vector Machine, SVM)是一种用于分类和回归任务的监督学习算法,特别适用于小样本、高维数据的分类问题。通过寻找一个最优的超平面,将不同类别的样本尽可能准确地划分开。
SVM 的基本思想是找到一个能够最大化分类间隔(Margin)的超平面,以区分不同类别的样本。假设给定一个训练集 ,其中 是输入特征, 是类别标签,SVM 的优化目标是最小化以下问题:
其中 是超平面的法向量, 是偏置项。
对于线性不可分的数据,SVM 通过引入核函数(Kernel Function)将原始特征映射到更高维的特征空间,使数据在高维空间中线性可分。常见的核函数有线性核、RBF(径向基函数)核、多项式核等。
在实际应用中,数据通常无法完全线性可分。SVM 引入了软间隔(Soft Margin)来允许部分数据点出现在分类间隔内。通过引入惩罚参数 ,SVM 可以在最大化间隔和减少分类错误之间进行权衡。
其中, 是松弛变量,用于度量分类错误的样本数量。
SVM 的优势在于其能够有效处理高维数据,特别适合小样本数据集。然而,SVM 对于大规模数据集的计算开销较大,且在处理非线性数据时,核函数的选择会影响模型性能。
# 数据评价及相关指标
在本次实验中,根据实验的要求,我们将采用混淆矩阵 (Data Matrix) 以及准确度 (accuracy)、召回率 (recall)、精确度 (precession) 以及 F1 度量 (F1 measures) 进行数据分析,以下是混淆矩阵以及各类评价指标的介绍:
# 混淆矩阵
混淆矩阵(Confusion Matrix)是一种评估分类模型性能的工具,通过展示模型的预测类别和实际类别的对比情况来计算分类结果的准确性。对于二分类问题,混淆矩阵可以表示为:
实际正类 | 实际负类 | |
---|---|---|
预测正类 | True Positive (TP) | False Positive (FP) |
预测负类 | False Negative (FN) | True Negative (TN) |
其中:
- TP(True Positive):模型正确预测为正类的样本数。
- FP(False Positive):模型错误预测为正类的样本数。
- FN(False Negative):模型错误预测为负类的样本数。
- TN(True Negative):模型正确预测为负类的样本数。
# 准确度、召回率、精确度
准确度、召回率和精确度是分类模型性能的常用评价指标:
- 准确度(Accuracy): 指模型预测正确的样本数占总样本数的比例,其计算公式为:$$\frac {TP + TN}{TP + TN + FP + FN}$$
- 召回率(Recall): 指模型在所有实际正类样本中预测正确的比例,计算公式为:$$\frac {TP}{TP + FN}$$
- 精确度(Precision): 指模型在所有预测为正类的样本中实际正类样本的比例,计算公式为:$$\frac {TP}{TP + FP}$$
# F1 度量
F1 度量(F1 Score)是精确度和召回率的调和平均,用于综合评估模型的精确度和召回率。其计算公式为:
对于多分类任务,F1 度量有两种计算方式:微平均(Micro-Averaged)和宏平均(Macro-Averaged)。
- Micro F1 Score**:在计算精确度和召回率时,将所有类别的 TP、FP 和 FN 加总,计算整体的精确度和召回率,然后求 F1。其计算方式更关注整体表现,适合类别样本不平衡的数据集。
- Macro F1 Score:先分别计算每个类别的 F1 分数,然后取所有类别 F1 分数的平均值。其计算方式更关注各类别的单独表现,适合类别样本较为均衡的数据集。
其中 为类别数, 为第 个类别的 F1 得分。
# 实验设置
# 数据集
根据实验的要求,我从 UCI dataset repository 中下载了以下数据集:
- : 基于饮食习惯和身体状况的肥胖水平估计(Obesity) 该数据集的目的是通过分析个人的饮食习惯、生活方式及身体特征来估计其肥胖水平,从而帮助了解肥胖的潜在影响因素。数据集包含了多种影响肥胖水平的因素信息,用于训练区分不同等级的肥胖状况。
- : ** 鸢尾花卉数据集(Iris)** 数据内容是某一花卉的五个特征数据以及他们的品种,以此用于训练模型进行不同花卉的区分。
- : ** 葡萄酒质量数据集(Wine Quality)** 数据内容为多个葡萄酒的物理化学的特征值以及品酒鉴定的葡萄酒质量等级,用于训练区分葡萄酒的等级。该数据集共有白葡萄酒和红葡萄酒两类数据,本次实验中我们采用了红葡萄酒的数据。
- : ** 乳腺癌诊断数据(Breast Cancer Wisconsin)** 其内容为多个病例的相关身体数据以及其最终的诊断结果,以此训练模型进行乳腺癌患者的区分与判断。
# 逻辑回归分析实验
在此实验中,根据实验要求,我们选择威斯康星乳腺癌诊断数据 。将 按照 : = 80 : 20 的比例进行划分,使用训练数据集 进行逻辑回归分类器的训练,并且使用测试数据集 进行测试。
# 决策树与朴素贝叶斯模型分类实验
对于实验的训练结果,我们采用混淆矩阵 (Confusion Matrix) 进行表示。对于实验结果的评价指标,由于该数据集为二分类任务,因此相对简单,不需要区分 F1_measure 的形式,因此我们采用 accuracy、precision、recall 和 F1_measure 进行误差分析以及模型评价。
# 决策树与朴素贝叶斯模型分类实验
# 数据设置
在此实验中,根据实验要求,分别将 , 按照 : = 80 : 20 的比例进行划分,使用训练数据集 分别训练一个决策树分类器和和一个朴素贝叶斯分类器,并且使用测试数据集 进行测试。
在此实验中,为了方便数据的处理和模型的训练,因此我们将 中涉及肥胖因素的部分指标(如运动频率、出行类型等)进行编码处理,以此简化模型训练流程。
# 模型设置
对于决策树分类器的类型,我采用了 sklearn 自带的 DecisionTreeClassifier 模型进行测试。其中,分类标准设置为基尼指数,每个节点选择最佳分裂点进行分裂,不限制最大节点深度以及叶子节点的数量,由此进行模型的训练以及循环。
# 评价指标
对于实验的训练结果,我们采用混淆矩阵 (Confusion Matrix) 进行表示。对于实验结果的评价指标,由于该训练模型预期输出多个分类,对应的指标值也有多种。相对应的,F1_measure 也有两个版本。因此在我们的实验中,我们将通过各个数据的 accuracy、precision、recall 的值和 F1\measure 的 macro、micro 版本进行模型的评估。
# 神经网络和 SVM 分类算法
# 数据设置
在此实验中,根据实验要求,分别将将 $D_2$,$D_3$ 按照 $|D_train|$ : $|D_test|$ = 80$\%$ : 20$\%$ 的比例进行划分,使用训练数据集 $|D_train|$分别训练神经网络和支持向量机模型,并且使用测试数据集 $|D_test|$进行测试。
对于数据集$D_3$,其原始数据中酒的等级一共有五档,但考虑到其中高档次和低档次的数据太少,我将极端值的数据与相邻值进行了合并,将数据合并为三类。
# 模型设置
其中,对于神经网络模型,根据实验要求,我们设定参数为:一个输入层、一个隐藏层、一个输出层,隐藏层的神经元数目我们采用了穷举搜索指定参数的所有可能组合,并使用交叉验证来评估每个组合的性能,由此得到最优解并进行训练。对于支持向量机模型,我们则选择直接调用sklearn库进行模型的训练和实验
# 评价指标
对于实验的评价指标,类似于上一个实验,我们也将通过各个数据的accuracy、precision、recall的值和F1\_measure的 macro、micro 版本进行模型的评估。
# 实验结果
# 逻辑回归分析实验
在逻辑回归分析实验中,根据得到的模型进行结果的分析,具体的结果如下:
由具体的结果以及图 1 所示的混淆矩阵可见,对于大部分的样例,该模型均可以有效地得到正确判断,但仍然有较多将良性错误预测为恶性的样例。
同时,对于得到的模型,我们根据前文提到的误差分析指标,可以得到如图 2 所示的柱状图,从柱状图中 accuracy、precision、recall 三个值可以看到,该模型能以大约 90 的概率正确区分良性和恶性肿瘤,并且对于 F1_measure, 其指标接近 1,可以说明其在精确率和召回度上具有良好且均衡的性能。
# 决策树与朴素贝叶斯模型分类实验
# 对数据集 的分类结果
如图 2 所示:其在决策树分类算法上的结果明显优于朴素贝叶斯算法的分类结果。
从图 2 所示的混淆矩阵中,我们可以看出,决策树算法得到的分类值基本集中于对角线间,因此可以判断对与大部分的模型,其均有效实现了正确分类;而对于朴素贝叶斯算法的矩阵而言,其混淆矩阵的数据明显更加分散而非集中于对角线上,因此可以判断对此类数据,朴素贝叶斯模型未能实现有效的分类。
从图 2 所示的不同指标的对比中我们也可以看出:相比于决策树算法,朴素贝叶斯矩阵在精确度、召回率、准确性的平均值以及两种 F1 度量上均低于决策树算法。决策树算法在选取的各个评价标准上都有着较高的平均值,且两种 F1 度量均接近 1,显示出该模型对于 数据拥有较好的分类准确性和泛化能力。而对于朴素贝叶斯算法,其各个评价标准均在 60 左右,显示出该模型对 数据的分类准确性和泛化能力均较弱。
# 对数据集 的分类结果
如图 3 所示:决策树分类算法与朴素贝叶斯算法整体上均有效实现分类任务,但对于不同的项目,其分类的精确度有所差异。
从图 3 所示的混淆矩阵中,我们可以看出,两种算法基本实现了正确分类,对于数据量较大的两个数据,其数据基本都位于对角线上,但对于数据量较小(实际值为 1)的数据,其在分类上存在着较多的误分类现象,在这其中,朴素贝叶斯算法相比决策树算法,误分类数量偏高。
从图 3 所示的不同指标的对比中我们也可以看出:两种算法在各个指标上均相差不大,均在 90 左右,朴素贝叶斯算法均略低于决策树算法。二者的精确度和 F1 度量均略低于准确度和召回率。显示出较好的分类情况。并且,对于 F1 度量,macro 形式均低于 micro 形式,这也与数据量较小的数据存在较多误分类现象相吻合。
# 不同分类模型的结果差异以及原因分析
对于两种数据下不同的分类模型得出的结果,我可以得出一些结论,对于这些结论,我进行了一些原因的分析:
-
对、 两个数据集,朴素贝叶斯算法的准确性均低于决策树算法。由于朴素贝叶斯算法依赖特征的条件独立性假设,而在实际情况中,一组数据的不同属性一般都会有一定的联系,一类数据因此当数据的不同属性之间出现可能存在的依赖关系时,朴素贝叶斯算法的准确度将受到一定的影响。这点在我选取选取的肥胖数据 中可以明显看出,其原始数据中存在的各类数据(如身高、体重)等本身存在一定的关系,造成其并不完全符合朴素贝叶斯算法以来的假设。
-
对于 数据集,数据量较小的类准确度上较低。由于数据量较小,因此在模型训练上,模型难以提取此类数据的信息,因此在分类上也容易误分类到其他数据量大的数据上,也因此会出小数据的分类准确度较低。
# 神经网络和 SVM 分类算法
# 对数据集 的分类结果
如图 4 所示:其在其在神经网络分类器上的结果略优于 SVM 算法的分类结果。
从图 4 所示的混淆矩阵中,我们可以看出,神经网络算法得到的分类值基本集中于对角线间,因此可以判断对与大部分的模型,其均有效实现了正确分类;而对于 SVM 算法的矩阵而言,其混淆矩阵中的数据分布稍微分散,尤其是在分类 2 的情况下,误分类数量稍高。
从图 4 所示的不同指标的对比中我们也可以看出:相比于 SVM 算法,神经网络在精确度、召回率、准确性和两种 F1 度量上均优于 SVM 算法。神经网络在选取的各个评价标准上表现良好,特别是 F1(macro)和 F1(micro)度量分别达到 0.9306 和 0.9333,显示出该模型对于 数据拥有较好的分类准确性和泛化能力。而对于 SVM 算法,其各个评价标准略低于神经网络,表现稍弱。
# 对数据集 的分类结果
如图 5 所示:神经网络分类器和 SVM 算法在该数据集上均有较高的误分类率。
从图 5 所示的混淆矩阵中,我们可以看出,两种算法在分类 3(实际值为 3)的数据上有显著的误分类现象,而分类 1 的样本误分类数量较少,这可能是因为分类 3 的样本数量较少,导致模型在此类数据上的泛化能力较弱。相比之下,神经网络算法的混淆矩阵在分类 3 的误分类数量略少于 SVM 算法,但总体误分类数量仍较多。
从图 5 所示的不同指标对比中我们也可以看出:两种算法在各项指标上均未达到理想效果。神经网络算法的精确度和 F1(micro)较 SVM 略高,达到 0.6093,但 F1(macro)和精确度均较低,显示出该模型在 数据上的分类能力有限,而 SVM 的各项评价指标普遍较低,尤其是精确度和 F1(macro)明显低于神经网络,显示出该模型对该数据集的分类效果不佳。
# 不同分类模型的结果差异以及原因分析
对于两个数据集和不同分类模型得出的结果,可以得出以下结论并进行原因分析:
- 对于 数据集(IRIS 数据集),神经网络算法的表现略优于 SVM 算法,尤其是在精确度和 F1 度量上。这可能是由于 IRIS 数据集结构相对简单且类别分布较明确,使得神经网络能够更好地学习分类边界,而 SVM 在该数据集上表现稍差。
- 对于 数据集(Wine Quality 数据集),两种算法的表现均不理想。其原因可能为由于 数据集本身特征复杂且类别分布不均匀,并且受限于品酒较高的主观性,数据本身的关联程度较低,因而模型难以从原始数据中获取有效信息进行分类,导致模型难以准确分类特别是数量较少的类。
- 数据量较小的类在 数据集中分类准确率较低。由于样本量小,模型难以提取此类数据的特征,导致误分类现象频发。
# 结论
本报告详细分析了逻辑回归、决策树、朴素贝叶斯、神经网络和支持向量机等常见分类算法在多个数据集上的表现。实验使用了 IRIS、Wine Quality 和 Breast Cancer 等经典数据集,通过交叉验证评估模型性能,并使用准确率、精确率、召回率和 F1 值等指标进行定量分析。实验结果表明,不同算法在数据集上的表现存在显著差异,各模型在特定场景中均有其适用优势和局限性。本文通过量化分析和可视化结果,展示了各算法在不同数据集上的表现差异,为后续研究和实际应用提供了有价值的参考。
总体而言,不同分类算法在不同数据集上的表现受到数据集特征分布、类别分布、以及算法自身模型复杂度的影响。在实际应用中,应根据数据特性选择合适的模型。本次实验不仅帮助我更深入地理解了各分类算法的适用场景和优缺点,也为我在未来的实际问题中进行模型选择提供了参考依据。
# 参考文献
-
Palechor, F. M., & De la Hoz Manotas, A. (2019). Dataset for estimation of obesity levels based on eating habits and physical condition in individuals from Colombia, Peru and Mexico. Data in Brief, 25. https://api.semanticscholar.org/CorpusID:201195793
-
Unwin, A., & Kleinman, K. (2021). The iris data set: In search of the source of virginica. Significance, 18. https://api.semanticscholar.org/CorpusID:244763032
-
Cortez, P., Cerdeira, A. L., Almeida, F., Matos, T., & Reis, J. (2009). Modeling wine preferences by data mining from physicochemical properties. Decis. Support Syst., 47, 547-553. https://api.semanticscholar.org/CorpusID:2996254
-
Street, W. N., Wolberg, W. H., & Mangasarian, O. L. (1993). Nuclear feature extraction for breast tumor diagnosis. In Electronic Imaging. https://api.semanticscholar.org/CorpusID:14922543
-
Abiodun, O. I., Jantan, A., Omolara, A. E., Dada, K. V., Mohamed, N. A., & Arshad, H. (2018). State-of-the-art in artificial neural network applications: A survey. Heliyon, 4(11). https://doi.org/10.1016/j.heliyon.2018.e00938
-
Yang, F. J. (2018). An Implementation of Naive Bayes Classifier. In 2018 International Conference on Computational Science and Computational Intelligence (CSCI), 301-306. https://doi.org/10.1109/CSCI46756.2018.00065
-
Song, Y. Y., & Lu, Y. (2015). Decision tree methods: applications for classification and prediction. Shanghai Archives of Psychiatry, 27(2), 130-135. https://doi.org/10.11919/j.issn.1002-0829.215044
-
Hearst, M. A., Dumais, S. T., Osuna, E., Platt, J., & Scholkopf, B. (1998). Support vector machines. IEEE Intelligent Systems and their Applications, 13(4), 18-28. https://doi.org/10.1109/5254.708428