文章目录
- day08
- 模型评价
- 聚类算法
- 基于距离的聚类
- 基于层次的聚类
- 基于密度的聚类
- 基于分布的聚类
- 聚类结果的评价
day08
今天是第8天,昨日阐述了概率图模型和集成学习的分类,主要讲解了有向图和无向图,生成式模型和判断式模型,以及集成学习中重点的boosting代表算法和stacking的方式,今日重点阐述的是模型评价指标和聚类算法,模型评价是模型开发过程中不可或缺的部分,有助于发现表达数据的最佳模型和所选模型将来工作的性能如何。而聚类是一直无监督的算法,将一组数据对象根据其特征分为不同的簇。
模型评价
评价指标的划分,针对分类、回归问题
问题类型 | 评价指标 | 描述 | 常用场景 |
---|---|---|---|
分类问题(研判型) | 准确率(Accuracy) | 预测正确的样本占总样本的比例,常用于衡量模型的整体性能。 | 适用于大多数分类任务,如垃圾邮件分类、图片分类、文本分类等。 |
精确率(Precision) | 预测为正类(如垃圾邮件)中实际为正类的比例,衡量假阳性。 | 关注错误分类为正类的影响,如垃圾邮件分类、欺诈检测等。 | |
召回率(Recall) | 实际为正类中被正确预测为正类的比例,衡量假阴性。 | 关注漏掉正类的影响,如疾病诊断、癌症筛查等。 | |
F1值(F1-Score) | 精确率和召回率的调和平均值,平衡了精确性和召回能力。 | 精确率和召回率同等重要时使用,如疾病检测、诈骗检测等。 | |
分类问题(生成型) | 最大似然估计(MLE) | 通过最大化观测数据在模型下的似然函数来估计模型参数。 | 生成模型训练,如文本生成、图像生成、语音合成等。 |
最大后验估计(MAP) | 结合数据和先验知识,通过最大化后验概率来估计模型参数。 | 生成模型,尤其是结合先验知识时,如自然语言生成、图像生成等。 | |
交叉熵(Cross-Entropy) | 衡量预测分布与真实分布之间的差异,常用于分类任务和生成模型训练。 | 生成模型训练,如图像生成、文本生成、语音生成等。 | |
KL散度(Kullback-Leibler Divergence) | 衡量两个概率分布的差异,用于生成模型评估,越小越好。 | 生成模型,特别是变分自编码器(VAE)、生成对抗网络(GAN)等任务。 | |
回归问题 | 均方误差(MSE) | 计算预测值与真实值差异的平方的平均,对大误差更敏感。 | 适用于数值预测任务,如房价预测、温度预测、销售额预测等。 |
平均绝对误差(MAE) | 计算预测值与真实值的差的绝对值的平均,对异常值的敏感度较低。 | 适用于数值预测任务,特别是对异常值不敏感的任务,如房价预测、收入预测等。 | |
决定系数(R²) | 衡量回归模型对数据的拟合程度,值越接近1说明模型越好。 | 适用于回归分析,如股票价格预测、销量预测、经济指标预测等。 |
结构惩罚方法的目标是帮助我们选择合适的模型,避免模型过于复杂导致的“过拟合”
评价指标 | 描述 | 优点 | 缺点 | 示例及通俗解释 |
---|---|---|---|---|
AIC(赤池信息量准则) | 衡量模型的拟合优度与复杂度的平衡,值越小越好。 AIC = 2k - 2ln(L),其中k是模型参数个数,L是模型的似然函数值。 | 对比多个模型时,AIC能帮助选择最合适的模型,且计算简单。 | 在样本量较小的情况下,AIC可能会选择过于复杂的模型。 | 比如预测房价时,如果使用的模型有太多不必要的变量(如房子的颜色),AIC会对这些不重要的变量进行惩罚,减少过拟合的风险。 |
BIC(贝叶斯信息准则) | 和AIC类似,BIC也用于衡量模型复杂度与拟合优度之间的平衡。与AIC不同,BIC在复杂度的惩罚上更严格。 | 比AIC更加严格,适用于样本量较大的情况,避免过拟合。 | 在数据量较少时,BIC可能会选择过于简单的模型,导致欠拟合。 | 比如在一个大数据集上,BIC可能会拒绝一个复杂的模型,推荐一个更简单的模型,尽管这个简单模型可能无法完全拟合数据。 |
SIC(施瓦茨信息准则) | 是BIC的一种变体,适用于大样本数据,结构上类似于BIC,但对模型复杂度的惩罚更加严厉。 | 对大数据集尤其有效,能够更好地选择复杂度合适的模型。 | 和BIC类似,适用于大样本数据,小样本数据可能过度简化模型。 | 类似于BIC,假如你有一个大样本的营销数据,SIC会更倾向于推荐一个简洁但表现良好的模型。 |
MDL(最小描述长度) | 基于信息论的原则,选择能够最小化模型和数据的描述长度的模型。描述长度包括模型的复杂度和拟合数据所需的信息量。 | 强调模型的简洁性,特别适用于需要考虑压缩和存储的场景。 | 理解和计算较为复杂,通常需要更多的先验知识。 | 假设我们想压缩一个视频文件,MDL会帮助选择一个既能压缩数据又能保留重要信息的模型,避免压缩过度导致信息丢失。 |
常用的模型效果的评价方法
方法名称 | 描述 | 优点 | 缺点 |
---|---|---|---|
Hold-out(留出法) | 将数据分为训练集和测试集,训练集用来训练模型,测试集用来评估模型表现。 | 简单、易理解。 | 测试集可能不具代表性,可能导致评估结果偏差。 |
K-fold交叉验证 | 将数据分成K个子集,每次用K-1个子集训练,剩余一个子集用于测试,重复K次。 | 能更全面地评估模型,减少因数据划分引起的偏差。 | 计算成本较高,特别是当K较大时。 |
LOO交叉验证 | 每次用一个样本作为测试集,剩余样本用于训练,通常用于样本量较小的情况。 | 充分利用每一个样本,尤其适用于数据较少时。 | 计算开销大,尤其在数据量较大的时候。 |
Bootstrap(自助法) | 通过随机抽取数据生成多个子集进行训练和测试,适用于小样本数据。 | 能评估模型在不同数据上的表现,适用于小样本数据。 | 计算开销大,可能会导致一定的过拟合风险。 |
常见的特征重要度的识别方法
方法名称 | 描述 | 优点 | 缺点 | 适用模型 | 举例 |
---|---|---|---|---|---|
随机森林重要度 | 基于随机森林算法,评估每个特征对模型的贡献。 | 易于计算,适用于各种数据类型,能够处理数值型和类别型数据。 | 主要适用于树模型,其他模型难以直接应用,忽视特征间复杂关系。 | 随机森林、决策树等 | 在房价预测中,面积特征的重要性较高。 |
基于排列的重要度 | 通过扰动特征顺序来评估其对模型性能的影响。 | 适用于任何模型,能够提供全局性的特征重要性评估。 | 计算成本高,尤其在数据量大时,无法捕捉复杂的特征交互。 | 任何机器学习模型(回归、分类、神经网络等) | 在回归模型中,打乱面积特征后,模型性能显著下降,表明面积重要性高。 |
SHAP(Shapley值) | 不仅考虑该特征单独对预测的影响,还考虑它与其他特征的交互作用。会综合所有可能的特征组合,计算每个特征对最终预测的贡献。这一过程会对每个特征进行多次计算和加权,最后得到每个特征的SHAP值 | 提供细粒度的解释,适用于复杂模型,解释模型决策过程。 | 计算复杂,尤其在深度学习中,资源消耗较大。 | 任何机器学习模型,尤其是深度学习和复杂模型 | 在信用评分预测中,SHAP解释收入和债务对预测结果的贡献。 |
聚类算法
聚类的简单分类为:基于距离、层次、密度、分布,另外还有一些基于集成、分形理论的、模型的聚类算法
基于距离的聚类
基于距离的聚类方法是通过计算数据点之间的距离或相似度来决定哪些数据点属于同一簇。这种方法的核心思想是:相似的点应该被聚成一个簇,不相似的点应该分到不同的簇。
K-means 聚类
- 原理:K-means 聚类算法的目标是最小化每个簇内的点与簇中心(均值点)之间的距离。首先随机选择 K 个初始簇中心,然后根据每个数据点到这些中心的距离将数据点分配到最近的簇。接着,重新计算每个簇的中心点(簇内所有点的均值),然后重复以上步骤,直到簇中心不再变化。
- 优点:
- 计算速度较快,适用于大规模数据。
- 算法简单,易于实现。
- 缺点:
- 需要事先指定簇的数量 K,且对 K 的选择非常敏感。
- 对异常值和噪声数据敏感,异常值可能导致簇中心偏移。
- 可能陷入局部最优解,尤其是当初始簇中心选择不当时。
- 应用场景:适用于簇形状比较规则(即簇是凸形状的)的数据,如图像压缩、客户分群等。
PAM(Partitioning Around Medoids)
- 原理:PAM 是另一种基于距离的聚类算法,类似于 K-means,但不同的是,PAM 选择数据点本身作为簇的“代表点”或“中心点”,而不是均值。每次聚类时,通过计算每个点到所有代表点的距离,选择最能代表簇的点作为中心。PAM 不使用均值,而是选择簇内实际存在的点作为中心,这使得它对异常值更不敏感。
- 优点:
- 比 K-means 对异常值更鲁棒。
- 适用于小规模数据集,尤其当簇的数量较少时。
- 缺点:
- 计算开销较大,尤其在数据量很大时,效率较低。
- 应用场景:适用于小规模数据集或者对噪声点敏感的场景。
基于层次的聚类
基于层次的聚类方法通过构建层次结构(如树形结构)来描述数据之间的相似性。这类方法的关键在于选择合适的策略来决定簇的合并或分裂。
分裂层次聚类(自顶向下)
- 原理:分裂层次聚类从一个整体的簇开始,每次选取最不相似的数据点或簇,进行分裂,直到达到预设的簇数。一般来说,分裂层次聚类会根据某种标准(如最小化簇内的差异性)来选择分裂点。
- 优点:
- 直观的聚类过程,容易理解。
- 无需事先指定簇的数量。
- 缺点:
- 计算复杂度较高,尤其在数据量较大时。
- 聚类过程的决策是自顶向下的,可能会导致分裂的效果不佳,不能很好地适应一些实际数据的分布。
凝聚层次聚类(自底向上)
- 原理:凝聚层次聚类从每个数据点开始,每次将两个最相似的簇合并成一个新的簇,直到所有点都合并成一个簇,或者达到预定的簇数。合并的过程依赖于一种相似性度量,例如欧几里得距离、曼哈顿距离等。
- 优点:
- 不需要预设簇的数量。
- 通过层次树(Dendrogram)可以直观地展示不同簇的合并过程。
- 缺点:
- 计算复杂度较高(通常是 O(n^3)),对大规模数据集不适用。
- 对噪声和异常值较为敏感。
- 应用场景:适合小到中等规模的数据集,尤其是在树状图或层次结构非常重要的场景,如文档聚类、基因数据聚类等。
基于密度的聚类
基于密度的聚类方法通过计算数据点的密度来识别簇的边界。密度较高的区域通常被认为是簇,而稀疏区域则可能是噪声。该类方法能有效发现形状不规则的簇,并且能够自动识别噪声。
DBSCAN(密度聚类)
- 原理:DBSCAN(Density-Based Spatial Clustering of Applications with Noise)通过两个参数来定义密度:ε(邻域半径) 和 minPts(邻域内的最小点数)。DBSCAN 首先识别“核心点”——在指定的半径 ε 内包含至少 minPts 个点的点,然后从核心点扩展簇,最终形成簇。没有足够邻居的点被认为是噪声点。
- 优点:
- 不需要指定簇的数量,可以自动发现任意形状的簇。
- 能够有效处理噪声数据。
- 缺点:
- 对参数选择非常敏感,特别是对 ε 和 minPts 的选择。
- 在密度变化较大的数据集上,效果较差。
- 应用场景:适用于簇形状不规则的场景,如地理数据分析、图像分割等。
OPTICS(可扩展的密度聚类)
- 原理:OPTICS 是 DBSCAN 的改进,能够在不同的密度阈值下生成聚类。与 DBSCAN 不同,OPTICS 不直接给出簇,而是生成一个“可达性图”(相当于每个点到下一个点的有向图,距离越小越保留),表示在不同的密度范围下,点之间的相对密度关系。基于这个图,可以后续进行聚类分析。
- 优点:
- 解决了 DBSCAN 对参数敏感的问题。
- 可以处理不同密度的簇。
- 缺点:
- 生成的可达性图较为复杂,需要额外的计算和分析。
- 应用场景:适用于复杂的地理数据聚类、需要多层次密度分析的场景。
Mean-shift(均值漂移)
- 原理:Mean-shift 是一种基于密度的非参数聚类算法,它通过不断地调整每个数据点的“窗口”中心向密度最大的方向移动,直到达到某个密度峰值。窗口大小(即带宽)是该算法的关键参数。
- 优点:
- 不需要预先指定簇的数量。
- 能够发现任意形状的簇,适应性强。
- 缺点:
- 计算开销大,尤其在高维数据上。
- 窗口大小的选择对聚类结果有较大影响。
- 应用场景:适用于形状不规则的簇,图像处理、视频分析等领域。
基于分布的聚类
基于分布的聚类方法假设数据点来自于多个概率分布,通常是高斯分布,通过拟合数据的概率分布来识别簇。
GMM(高斯混合模型)
- 原理:GMM 假设数据是由多个高斯分布(或正态分布)混合而成的,每个簇被认为是一个高斯分布。GMM 使用 EM(期望最大化)算法来估计每个簇的参数(均值、方差和权重)。每个数据点根据它到不同高斯分布的概率被分配到一个簇中。
- 优点:
- 适用于高斯分布的数据。
- 能够处理簇的形状不规则,并可以给出每个点属于某个簇的概率。
- 缺点:
- 需要事先指定簇的数量。
- 对异常值敏感,且对于非高斯分布的数据效果不好。
- 应用场景:适用于数据呈现高斯分布的场景,如图像处理、语音识别、异常检测等。
聚类结果的评价
聚类算法的效果需要通过各种指标来评价。可以分为内部评价指标和外部评价指标。
- 内部评价指标:用于评估聚类结果本身的质量,而不依赖于外部标签。
- DB指标(Davies-Bouldin Index):衡量簇的紧凑度和分离度,值越小表示聚类效果越好。
- 邓恩指标(Dunn Index):衡量簇之间的最小距离与簇内的最大距离之比,值越大越好。
- 轮廓系数(Silhouette Coefficient):衡量簇的分离度和簇内的凝聚度,值越大表示聚类结果越好。
- 外部评价指标:根据已有的标签或实际分类结果来评估聚类效果。
- Rand指标:衡量聚类结果与真实标签之间的一致性,值越高越好。
- F指标(F-Measure):结合了精确度和召回率,综合评估聚类的准确性。
- Jaccard指标:计算真实标签与聚类结果的交集与并集的比值,值越大越好。
- FM指标(Fowlkes-Mallows Index):衡量聚类结果与真实标签的一致性,值越接近 1 表示聚类效果越好。
- 互信息(Mutual Information):衡量聚类结果与真实标签之间的信息共享程度。
- 混淆矩阵:用来表示聚类结果与真实标签的对比,通常通过计算精确度、召回率等来进一步分析。