ML.NET 推荐引擎中一类矩阵因子分解的缺陷

ML.NET 作为 .NET 跨平台的机器学习套件,在回归、预测、分类甚至是图像识别、异常检测都展现出简洁快速的优势,以往的文章已介绍过不再赘述。其实机器学习场景中还有一类非常常见的,就是推荐,特别是在线购物、文娱产品为了提升用户体验,一个比较好的主意就是让用户优先看到他需要的物品、内容,甚至提供用户意料之外又情理之中的产商品。推荐算法正好能够通过数据实现这一目标。

 

 

 

如上图所示,如果我们有用户、商品的购买关系,并且还有用户的评级、评分、评价内容,那么矩阵因子分解算法非常适用。如果我们还能获取到商品本身的一些属性,比如名称、分类、简介、价格的话,那么场感知分解机算法就能发挥特别好的作用。当然,推荐算法比较难的就是冷启动阶段,可能什么数据都没有,初始阶段没有更多选择,那么也只能从相似用户消费记录入手做推荐了,获取用户与购买商品编号的对应关系也算是容易的,此时用得比较多的是一类矩阵因子分解算法。仍然举一个例子,刚刚营业的某书店,基于借阅书的记录,我们给借了《三国志》的读者小强推荐同样借过这本书的小王借看的其他书,可能不一定是名著,不过没关系,这足够达到推荐的效果,因为算法背后的逻辑是相信他们总有其他书是都喜欢看的。

了解到前面的背景知识后,回头我们再看看 ML.NET 的推荐引擎,它同时支持矩阵因子分解和场感知分解算法,官网文档在《教程:使用矩阵因子分解和 ML.NET 生成影片推荐系统》有过详细的介绍。Sergey Tihon 在 ML.NET 的 Github 仓库中提过一个 Issue,详见《"Label" for One-Class Matrix Factorization #873》,其中谈到了 ML.NET 推荐引擎中一类矩阵因子分解算法存在一处缺陷。具体来看 MatrixFactorizationTrainer 类的详情,针对一类矩阵因子分解,在梯度下降时默认观测值都是表示正向的1,而平方误差函数调用的是MatrixFactorization将按枚举值传递给损失函数。参看《Matrix Factorization and Factorization Machines for Recommender Systems》,注意到以下这一页,预测标签始终为1。

 所以如果数据集没有更多的特征可用,我们必须指定矩阵因子工厂并提供对应的参数值1而不是按默认的枚举值生成 Trainer。修复后的示例参见:《Fix Label column meaning in Recommendation sample》。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建立用户、密码类型

每次做用户密码等类型的验证都很麻烦,最近想了个办法来简化判断的逻辑。.Net中提供了隐式转换,虽然降低了代码可读性,但是使用确实很方便。而且我认为,定义自己的类型使用它并不会降低可读性。可以定义用户类型UserName1 usingSys…

tars框架php,TarsPHP: TARS-PHP是针对php使用tars二进制协议,以及tars平台整体运维、RPC等一系列能力的解决方案...

TARS-PHPTARS-PHP是针对php使用tars二进制协议,以及tars平台整体运维、RPC等一系列能力的解决方案。它主要由如下的几个部分组成:如果你想要快速的体验tars-server,请进入examples目录,里面有详尽的三种服务的部署guideline和开发guidelinetars-clientta…

晋升新一线的合肥,跨平台的.NET氛围究竟如何?

大伙可能不知道,2020年合肥已经成功晋升为新一线城市了。本文通过对目前合肥.NET招聘信息以及公众号的相关数据的分析来看下目前合肥.NET的大环境。就着2020中国.NET开发者峰会顺利举行的东风,同时为进一步提升合肥地区的.NET技术氛围,一些合…

软件工程心理学之1----开篇

最近偶然翻了下以前做过的项目或者做过的咨询或者监理的一些记录,文档之类的,又听了和看了一些讲座和相关的资料,觉得应该要重视软件工程中的心理学应用。因为之前自己在大学学过心理学,当时以为没什么用,但现在回顾一…

开源项目barcodelib-C#条形码图像生成库

介绍该库旨在为开发人员提供一个简单的类,以便他们在需要根据数据字符串生成条形码图像时使用。用法该库包含一个名为BarcodeLib的类,其中包含三个构造函数:Barcode(); Barcode(string); Barcode(string, BarcodeLib.TYPE);如果决定使用参数创…

成功测试管理者的九大原则

简介 许多测试管理者是从技术部门进到管理阶层的。尽管他们有可能受过很多测试或软件工程的培训和指导,但他们还是很难经常从失败和错误中学到管理技巧。作为一个管理者,你有两项基本工作:找出为你工作的最好 的员工并且建立一个能够使员工完…

categories php,manage-categories.php

include common.php;include header.php;include menu.php;Typecho_Widget::widget(Widget_Metas_Category_Admin)->to($categories);?><?php include page-title.php; ?><?php _e(删除); ?><?php _e(刷新); ?><?php $categories->parse…

ctf php 读取flag,BugkuCTF flag.php(反序列化)

进去后是个登录页面&#xff0c;但是login根本不会跳转&#xff0c;看源码也没提示&#xff0c;但是这道题给了一个提示&#xff1a;hint&#xff0c;那么盲猜应该是一个get参数&#xff0c;因为post不能跳转&#xff0c;那么get总有内容吧&#xff0c;跟上hint参数&#xff0c…

2021技术人新展望

一、前言各位小伙伴们还有几天新的一年即将来临&#xff0c;这篇文章作为今年的结束吧。不知道大家对自己每一年的技术发展规划是什么&#xff0c;我在这里分享一下我2021年的新的规划&#xff0c;这里非常感谢各位小伙伴对我的关注。二、内容概要2021的布局客户端技术分享服务…

在 ASP.NET 中实现会话状态的基础

简介 在 Web 应用程序这样的无状态环境中&#xff0c;了解会话状态的概念并没有实际的意义。尽管如此&#xff0c;有效的状态管理对于大多数 Web 应用程序来说都是一个必备的功能。Microsoft ASP.NET 以及许多其他服务器端编程环境都提供了一个抽象层&#xff0c;允许应用程序基…

【One by One系列】IdentityServer4(三)使用用户名和密码

继续介绍IdentityServer4,我们上篇介绍了IdentityServer4实现OAuth2.0的授权方式之一的客户端凭证&#xff0c;接下来我们继续介绍OAuth2.0的另外一种授权方式密码式&#xff0c;Resource Owner Password Credentials。post请求token?grant_typepassword&usernameUSERNAME…

oracle数据缓冲区作用,Oracle内存结构(02)--缓冲区

用户提交一个新SQL语句时&#xff0c;Oracle会分析(parse)该句SQL(硬解析)&#xff0c;这个过程将耗费相对较多的时间。分析完毕后&#xff0c;oracle会将该SQL的分析结果给保存在Library Cache中&#xff0c;当数据库再次执行该SQL时&#xff0c;oracle将直接取第一次分析结果…

使用设计模式构建通用数据库访问类

在应用程序的设计中&#xff0c;数据库的访问是非常重要的&#xff0c;我们通常需要将对数据库的访问集中起来&#xff0c;以保证良好的封装性和可维护性。在.Net中&#xff0c;数据库的访问&#xff0c;对于微软自家的SqlServer和其他数据库&#xff08;支持OleDb&#xff09;…

【One by One系列】IdentityServer4(二)使用Client Credentials保护API资源

书接上回&#xff0c;我们将会正式开始介绍IdentityServer4。IdentityServer4是实现了OAuth2.0OpenId Connect两种协议的优秀第三方库,属于.net生态中的优秀成员。可以很容易集成至ASP.NET Core&#xff0c;颁发token。使用Id4基本步骤如下&#xff1a;**1.**在Startup.Configu…

善良成就未来

弗莱明是一个穷苦的苏格兰农夫&#xff0c;有一天当他在田里工作时&#xff0c;听到附近泥沼里有人发出求救的哭声。于是&#xff0c;他放下农具&#xff0c;跑到泥沼边&#xff0c;发现一个小孩掉到了里面&#xff0c;弗莱明忙把这个孩子从死亡的边缘救了出来。 隔天&#xff…

office连接oracle,Access(VBA)连接Oracle数据库的代码

access是包含前台程序开发和后台数据库的应用软件。可以利用access作为前台开发&#xff0c;后台用sqlServer&#xff0c;oracle这些作为数据库。而access连接数据库&#xff0c;可以利用链接表。直接读取表记录。也可以通过ADO等数据操作方式读取数据库方法1:odbc连接方式Dim …

开放封闭在.NET中

对修改是封闭的&#xff0c;对扩展是开放的。新需求对于已上线的系统是司空见惯的&#xff0c;最佳实践告诉我们对生产中的代码在扩展功能时不要直接修改&#xff0c;而是去重写一个新的方法&#xff0c;新类型或新服务去扩展它&#xff0c;这道理很简单&#xff0c;任何即有代…

用sniffer技术盗取电话银行密码

用sniffer技术盗取电话银行密码 此篇讲解盗取&#xff0c;破解请看我博客上另一篇文章。http://polugen.cnblogs.com什么是sniffer Sniffer&#xff0c;嗅探器&#xff0c;是一种威胁性极大的被动攻击工具。使用这种工具&#xff0c;可以监视网络的状态、数据流动情况以及网络上…

oracle dbf文件设置,oracle移动数据dbf文件

ORACLE数据库由数据文件&#xff0c;控制文件和联机日志文件三种文件组成。由于磁盘空间的变化&#xff0c;或者基于数据库磁盘I/O性能的调整等&#xff0c;数据库管理员可能会考虑移动数据库文件。下面以linux平台为例&#xff0c;分别讨论数据文件的移动方法。移动数据文件&a…

使用 Avalonia 开发 UOS 原生应用

最近很火的是国产的操作系统 UOS 系统&#xff0c;这个系统现在存在的问题就是生态没搭建起来。作为 dotnet 开发者&#xff0c;可以通过很多不同方向的技术为 UOS 系统生态贡献应用&#xff0c;如 Xamarin 和 GTK# 或 wine 和 win32 应用&#xff0c;或 mono 和 WinForms 应用…