热门标签 | 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系列则实现了近实时性能。


挑战与瓶颈


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


推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • c# – UWP:BrightnessOverride StartOverride逻辑 ... [详细]
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社区 版权所有