热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

OnePUNCHMan——交替最小二乘推荐算法

文章目录交替最小二乘推荐算法交替最小二乘推荐算法ALS(AlternatingLeastSquare),交替最小二乘法。在机器学习中,特指使用最小二乘


文章目录

  • 交替最小二乘推荐算法


交替最小二乘推荐算法

ALS(Alternating Least Square),交替最小二乘法。在机器学习中,特指使用最小二乘法的一种协同推荐算法。
如下图所示,u表示用户,v表示商品,用户给商品打分,但是并不是每一个用户都会给每一种商品打分。比如用户u6就没有给商品v3打分,需要我们推断出来,这就是机器学习的任务。
在这里插入图片描述


注意:虽然这个表在上图看起来很小,实际上这个表是很大的,行列一般以万/十万/百万/千万计数。


由于并不是每个用户给每种商品都打了分&#xff0c;可以假设ALS矩阵是低秩的&#xff0c;即一个mn的矩阵&#xff0c;是由mk和k*n两个矩阵相乘得到的&#xff0c;其中k<
在这里插入图片描述
这种假设是合理的&#xff0c;因为用户和商品都包含了一些低维度的隐藏特征&#xff0c;比如我们只要知道某个人喜欢碳酸饮料&#xff0c;就可以推断出他喜欢百世可乐、可口可乐、芬达&#xff0c;而不需要明确指出他喜欢这三种饮料。这里的碳酸饮料就相当于一个隐藏特征。上面的公式中&#xff0c;Um×k表示用户对隐藏特征的偏好&#xff0c;Vk×n表示产品包含隐藏特征的程度。这个k就是商品Product的潜在因素&#xff0c;用来解释数据中的交互关系。


注意&#xff1a;由于k的值很小&#xff0c;所以这种分解算法只能是一种近似值&#xff0c;并不是绝对的上述说的等式


原始的矩阵是低秩的&#xff0c;也就是稀疏的&#xff0c;但UV的乘积是却稠密的&#xff0c;即该矩阵存在较少的非0元素。因此&#xff0c;该约等式只是一种近似&#xff0c;原始矩阵大量元素是缺失的&#xff08;因为缺失&#xff0c;默认为0&#xff0c;但可能实际上不为0&#xff09;&#xff0c;而算法为原始矩阵补全了大部分缺失值。从这个角度来看&#xff0c;矩阵分解的算法有时候称为矩阵补全算法。

第三次强调了&#xff0c;UV的乘积只是尽可能的逼近A&#xff0c;用数学的话来讲就是无限趋近于A。怎么求解呢&#xff1f;ALS算法呼之欲出&#xff01;
首先我们简写前面的公式为下&#xff1a;
A&#61;XTYA&#61;X^{T}YA&#61;XTY

不幸的是&#xff0c;上述的A&#61;XTYA&#61;X^{T}YA&#61;XTY 通常没有解&#xff0c;因为XTYX^{T}YXTY 通常不够大&#xff01;也就是说&#xff0c;我们找到的分解矩阵X和Y的阶太小了&#xff0c;无法完美的表示A。其实这不完全是坏事&#xff0c;因为A归根到底只是现实中的一个微小样本&#xff0c;它只是一次观察&#xff0c;而且是很稀疏的观察。就比如拼图里&#xff0c;很多拼板都掉了&#xff0c;虽然拼图最后的图样是一只猫&#xff0c;但是手上的拼板太少的时候&#xff0c;就很难看到正确的图案。

所以&#xff0c;另一个由上述公式推导化为&#xff1a;
AiY(YTY)−1&#61;XiA_{i}Y(Y^{T}Y)^{-1}&#61;X_{i}AiY(YTY)1&#61;Xi
这个公式如何理解呢&#xff1f;
首先A是已知的&#xff0c;要求解矩阵XXX和矩阵YYY。那么根据上述公式&#xff0c;只需要知道一个另一个通过公式推导也是能够知道的。
比如知道矩阵YYY&#xff0c;那么&#xff0c;因为XXX的第iii行是根据AAA的第iii行和YYY的函数得到的&#xff0c;所以只需要根据上述公式&#xff0c;一行一行求出XXX即可。
要想两边精确相等是不可能的&#xff0c;因此&#xff0c;实际的目的是最小化的∣AiY(YTY)−1−Xi∣|A_{i}Y(Y^{T}Y)^{-1}-X_{i}|AiY(YTY)1Xi &#xff0c;或者是最小的矩阵平方误差&#xff0c;这也是“最小二乘”的由来。



实际上&#xff0c;在编码中&#xff0c;虽然公式中说明了行向量的计算方法&#xff0c;但是实践中从来不会对矩阵求逆。我们一般会借助QR分解之类的方法&#xff0c;更快更直接的计算。
QR分解是将矩阵分解为一个正交矩阵与上三角矩阵的乘积。用一张图可以形象地表示QR分解&#xff1a;
在这里插入图片描述
这其中&#xff0c; 为正交矩阵&#xff0c;&#xff0c;R为上三角矩阵。


详见 https://www.cnblogs.com/AndyJee/p/3846455.html






回归正题&#xff1a;
只要知道一个YYY&#xff0c;那么我们就能逐行求出XXX。求出的这个XXX又可以通过这个公式求出新的YYY&#xff0c;新的YYY又可以求出新的XXX…子子孙孙无穷匮也。这时候&#xff0c;智叟说了一句&#xff0c;愚公你有老婆么&#xff1f;愚公老婆都没有&#xff0c;怎么会有子孙呢&#xff1f;
那么愚公的老婆哪里来呢&#xff1f;即这个YYY怎么来呢&#xff1f;有小朋友说&#xff0c;我们可以给它new个对象。
嗯&#xff0c;没错&#xff0c;这个YYY就是人为“瞎编”出来的&#xff0c;并且是随机的。而XXX是最优化计算出来的&#xff0c;这个YYY是假的无所谓&#xff0c;我们又可以用计算出来的XXX计算出新的YYY这个过程一直继续&#xff0c;XXXYYY都会收敛到一个合适的结果&#xff0c;也就是“交替”一词的来历

ALS算法页可以利用输入数据是稀疏的这一点&#xff0c;可以用简单的线性代数运算最优解&#xff0c;以及数据本身可并行化&#xff0c;这三点解释了Mlib为什么要使用ALS算法&#xff0c; 并且也只有ALS算法作为唯一的一种推荐算法。


推荐阅读
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 图数据库中的知识表示与推理机制
    本文探讨了图数据库及其技术生态系统在知识表示和推理问题上的应用。通过理解图数据结构,尤其是属性图的特性,可以为复杂的数据关系提供高效且优雅的解决方案。我们将详细介绍属性图的基本概念、对象建模、概念建模以及自动推理的过程,并结合实际代码示例进行说明。 ... [详细]
  • 汇编语言等号伪指令解析:探究其陡峭的学习曲线
    汇编语言以其独特的特性和复杂的语法结构,一直被认为是编程领域中学习难度较高的语言之一。本文将探讨汇编语言中的等号伪指令及其对初学者带来的挑战,并结合社区反馈分析其学习曲线。 ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • LambdaMART算法详解
    本文详细介绍了LambdaMART算法的背景、原理及其在信息检索中的应用。首先回顾了LambdaMART的发展历程,包括其前身RankNet和LambdaRank,然后深入探讨了LambdaMART如何结合梯度提升决策树(GBDT)和LambdaRank来优化排序问题。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 本文详细介绍了如何使用ActionScript 3.0 (AS3) 连接并操作MySQL数据库。通过具体的代码示例和步骤说明,帮助开发者理解并实现这一过程。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 在互联网信息爆炸的时代,当用户需求模糊或难以通过精确查询表达时,推荐系统成为解决信息过载的有效手段。美团作为国内领先的O2O平台,通过深入分析用户行为,运用先进的机器学习技术优化推荐算法,提升用户体验。 ... [详细]
  • 机器学习公开课备忘录(三)机器学习算法的应用与大数据集
    机器学习公开课备忘录(三)机器学习算法的应用与大数据集对应机器学习公开课第六周和第10周机器学习算法模型的选择与评价1、对于一个data,可以将data划分为trainingset、t ... [详细]
  • 支持向量机(SVM)是一种基于统计学习理论的模型,主要在VC维和结构风险最小化的理论基础上发展而来。本文将探讨几种不同的SVM方法及其优化策略,旨在提高模型的效率和适用性。 ... [详细]
  • 2017年人工智能领域的十大里程碑事件回顾
    随着2018年的临近,我们一同回顾过去一年中人工智能领域的重要进展。这一年,无论是政策层面的支持,还是技术上的突破,都显示了人工智能发展的迅猛势头。以下是精选的2017年人工智能领域最具影响力的事件。 ... [详细]
  • 本文深入探讨了CART(分类与回归树)的基本原理及其在随机森林中的应用。重点介绍了CART的分裂准则、防止过拟合的方法、处理样本不平衡的策略以及其在回归问题中的应用。此外,还详细解释了随机森林的构建过程、样本均衡处理、OOB估计及特征重要性的计算。 ... [详细]
  • Python并行处理:提升数据处理速度的方法与实践
    本文探讨了如何利用Python进行数据处理的并行化,通过介绍Numba、多进程处理以及Pandas DataFrame上的并行操作等技术,旨在帮助开发者有效提高数据处理效率。 ... [详细]
author-avatar
Qualcommtjmag_716
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有