热门标签 | 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模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本实验主要探讨了二叉排序树(BST)的基本操作,包括创建、查找和删除节点。通过具体实例和代码实现,详细介绍了如何使用递归和非递归方法进行关键字查找,并展示了删除特定节点后的树结构变化。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
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社区 版权所有