热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习中的相似度度量与模型优化

本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。

相似度度量方法


余弦相似度



  1. 公式:$ \cos{\theta}=\frac {x^Ty}{||x|| · ||y||} $

  2. 仅考虑向量的方向,不考虑其模长

  3. 广泛应用于推荐系统等领域


欧氏距离


1. 公式:$ d(x,y)=(x-y)^T(x-y) $
2. 综合考虑了向量的方向和模长
3. 适用于基于类距离的分类任务


马氏距离


马氏距离(Mahalanobis Distance)是欧氏距离的一种修正形式,解决了各维度尺度不一致和相关性的问题。计算马氏距离时,首先需要对特征进行白化处理,即将特征的协方差矩阵转换为单位矩阵。这可以通过特征值对角化方法实现,确保解耦后的欧式距离不变。然后将协方差矩阵单位化以统一各维度的量纲。


对于非方阵的特征矩阵,可以使用奇异值分解(SVD),且不会造成信息丢失。对于更高维度的数据,可以使用高阶SVD。


提升模型泛化能力


常见问题


训练样本可能存在稀疏性、分布不均或含有噪声等问题,导致模型在测试数据上的表现不佳,出现过拟合现象。即模型在训练集上表现良好,但在未见过的数据上表现较差。


应对策略


选择适当的模型复杂度


过于复杂的模型可能导致过拟合,因此应根据训练集的质量选择合适的模型复杂度。实践表明,简单模型往往能取得更好的效果。


正则化


正则化通过引入正则项来防止过拟合。例如,在损失函数中加入L2正则项:$ \widetilde{E}(w) = \frac 1 2 \sum_{n=1}^N {y(x_n,\textbf{w})-t_n}^2+\frac \lambda 2||\textbf{w}||_2^2 $,其中$ \frac \lambda 2||\textbf{w}||_2^2 $为正则项,限制了参数$ \textbf{w} $的大小,从而改善过拟合现象。


模型评估方法


常用评估方法


留出法


将数据集随机分为训练集和测试集,虽然简单但可能导致划分偏差。为克服此问题,可以多次随机划分并取平均结果。


K折交叉验证


将数据集分为k份,每次用一份作为测试集,其余作为训练集,重复k次,最后取平均结果。该方法更稳定,但计算成本较高。


留一验证


当K等于样本总数时,即为留一验证。


评估指标


回归任务通常使用测试误差作为指标,分类任务则有以下几种常用指标:


准确率(Accuracy)



  • 定义:预测正确的样本比例

  • 公式: $ Accuracy = \frac {TP+TN} {TP+TN+FP+FN} $

  • 若阴阳样本比例失衡,难以正确评估模型性能


精度(Precision)



  • 定义:预测为阳性样本中实际为阳性的比例

  • 公式:$ Precision = \frac {TP} {TP+FP} $


召回率(Recall)



  • 定义:全部阳性样本中预测为阳性的比例

  • 公式:$ Recall = \frac {TP} {TP+FN} $


特异度(Specificity)



  • 定义:全部阴性样本中预测为阴性的比例

  • 公式:$ Specificity = \frac {TN} {TN+FP} $


F-Score



  • 综合考量精度和召回率,常用的F1-Score公式为:$ F_1=\frac{2*precision*recall} {precision+recall} $


混淆矩阵



  • 定义:行表示真值,列表示预测值,元素为计数统计值,对角线元素越大,性能越好


PR曲线



  • 定义:横轴为召回率,纵轴为精度,越往右上突性能越好,对各类别样本分布敏感


ROC曲线



  • 横轴为假阳性率(FPR),纵轴为召回率,越往左上突性能越好,对角线为随机识别算法的性能,AUC值越高越好


分类器类型


MED分类器


MED分类器即最小欧氏距离分类器,选取类中样本均值作为原型,将待预测样本归为其欧氏距离最小的类。二分类决策边界为超平面。


MICD分类器


MICD分类器采用马氏距离作为度量,同样使用均值作为类的原型。二分类决策边界为二次函数,能够更好地处理类内差异。


MAP分类器


MAP分类器基于贝叶斯规则,利用类的先验概率和观测似然概率计算后验概率,进而进行分类。其决策边界在单维空间中通常是两条线,在高维空间中则是复杂的非线性边界。


决策误差



  • 概率误差为未选择的类的后验概率

  • 平均概率误差:$ p(error)=\frac{1}{N}\sum_{x\in{R_1}\cup{R_2}}p(error|x)p(x) $


高斯观测概率



  • 单维高斯分布:$ p(x|C_k)=\frac{1}{\sqrt{2\pi}\sigma_k}e^{-\frac{1}{2}(\frac{x-\mu_k}{\sigma_k})^2} $

  • 决策边界公式:$ (\frac{1}{\sigma_j^2}-\frac{1}{\sigma_i^2})x^2-2(\frac{\mu_j}{\sigma_j^2}-\frac{\mu_i}{\sigma_i^2})x+\frac{\mu_j^2}{\sigma_j^2}-\frac{\mu_i^2}{\sigma_i^2}-2ln(\frac{P(C_j)\sigma_j}{P(C_i)\sigma_i})=0 $

  • 方差相等时倾向于选择先验概率较高的类,先验概率相等时倾向于选择方差较小的类。


贝叶斯分类器


贝叶斯分类器在MAP分类器基础上加入了决策风险因素,选择期望损失最小的类。


决策风险和损失



  • 定义当前决策动作相对于选择其他类别的风险程度为损失,记为$ \lambda_{ij} $

  • 损失是可学习参数


决策目标



  • 贝叶斯分类器选择期望损失最小的类,即对于所有测试样本,选择损失最小的类以达到期望损失最小。

  • 假设特征之间独立同分布(IID),应用链式法则可得到朴素贝叶斯分类器公式:$ P(C_i|x)=\prod_{k=1}^p(x_k|C_i)P(C_i)/\sum_i\prod_{k=1}^pp(x_k|C_i)P(C_i) $


参数估计


这部分内容将在后续补充。


人工智能前沿技术:目标检测

目标检测结合计算机视觉和图像处理技术,用于识别图像或视频中的特定对象。目标检测可以使用多种输入源,如可见光谱摄像机用于日间检测,红外光谱摄像机用于夜间检测,激光扫描器提供目标的距离信息。多传感器融合能显著提高检测性能。


发展现状


传统目标检测流程包括预处理、ROI提取、目标分类、验证和增强等步骤。近年来,深度学习特别是卷积神经网络(CNN)的应用极大地提升了目标检测的效果。例如,R-CNN通过区域性识别解决了局部性问题,Fast-RCNN改进了训练算法,YOLO系列则实现了近实时性能。


挑战与瓶颈


尽管在高分辨率和低遮挡情况下表现出色,目标检测在小物体、高度遮挡、远距目标和聚集目标检测方面仍面临挑战。


推荐阅读
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文将介绍由密歇根大学Charles Severance教授主讲的顶级Python入门系列课程,该课程广受好评,被誉为Python学习的最佳选择。通过生动有趣的教学方式,帮助初学者轻松掌握编程基础。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 深入解析:手把手教你构建决策树算法
    本文详细介绍了机器学习中广泛应用的决策树算法,通过天气数据集的实例演示了ID3和CART算法的手动推导过程。文章长度约2000字,建议阅读时间5分钟。 ... [详细]
  • Android 渐变圆环加载控件实现
    本文介绍了如何在 Android 中创建一个自定义的渐变圆环加载控件,该控件已在多个知名应用中使用。我们将详细探讨其工作原理和实现方法。 ... [详细]
  •   上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系,到底是什么关系呢?我们就来探讨一下吧。(这一篇数学推导占了大多数,可能看起来会略有枯燥,但这本身就是一个把之前算法 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 在前两篇文章中,我们探讨了 ControllerDescriptor 和 ActionDescriptor 这两个描述对象,分别对应控制器和操作方法。本文将基于 MVC3 源码进一步分析 ParameterDescriptor,即用于描述 Action 方法参数的对象,并详细介绍其工作原理。 ... [详细]
author-avatar
雷宠专业摄影工作室
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有