机器学习第二篇----协同过滤

2024-08-23 11:38

本文主要是介绍机器学习第二篇----协同过滤,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

中秋假期期间,又一次拜读了《推荐系统实战》一书,把一些收获分享给大家。

提到推荐系统,就不得不提“协同过滤” :

协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。(来自百度百科)。

上述解释再通俗一点来讲,就是大家齐心协力过滤出来最合适的物品(社交就是人)推荐给最有意向的人。

推荐系统中最常用的算法是“基于邻域的协同过滤算法”,基于邻域的算法分为两大类,一类是基于用户的协同过滤算法,另一类是 基于物品的协同过滤算法。

  1. 基于用户的协同过滤算法(userCF)
    基于用户的协同过滤算法主要包括两个步骤。
    (1) 找到和目标用户兴趣相似的用户集合。
    (2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
    步骤1中相似用户的计算涉及到相似度的计算,其中相似度最基本的算法是余玄相似度(很多情况下是最基础最好用的),需要对用户的各个指标向量化(特征向量化是最麻烦的,首先需要选特征,这就和业务密切相关,其次需要分清特征的主次),然后计算相似度。
    计算相似度的算法还有其他的算法,比如基于位置的曼哈顿距离,还有杰卡得(Jaccard)距离等等,计算距离公式的选取,往往会根据业务来确定,公式选取会直接影响推荐结果
    步骤二中,需要计算相似用户和被推荐用户的差集

  2. 基于物品的协同过滤算法(itemCF)
    基于物品的协同过滤算法主要分为两步。
    (1) 计算物品之间的相似度。
    (2) 根据物品的相似度和用户的历史行为给用户生成推荐列表。

步骤一中的相似度的计算使用如下公式

在这里插入图片描述

这个公式惩罚了物品j的权重,如果物品j很热门,很多人都喜欢,
那么Wij就会很大,接近1,因此这个公式减轻了热门物品会和很多物品相似的可能性

  1. 两种算法的比较
    在这里插入图片描述

参考文献:

《推荐系统实战》

这篇关于机器学习第二篇----协同过滤的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1099275

相关文章

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

SpringIntegration消息路由之Router的条件路由与过滤功能

《SpringIntegration消息路由之Router的条件路由与过滤功能》本文详细介绍了Router的基础概念、条件路由实现、基于消息头的路由、动态路由与路由表、消息过滤与选择性路由以及错误处理... 目录引言一、Router基础概念二、条件路由实现三、基于消息头的路由四、动态路由与路由表五、消息过滤

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

java streamfilter list 过滤的实现

《javastreamfilterlist过滤的实现》JavaStreamAPI中的filter方法是过滤List集合中元素的一个强大工具,可以轻松地根据自定义条件筛选出符合要求的元素,本文就来... 目录1. 创建一个示例List2. 使用Stream的filter方法进行过滤3. 自定义过滤条件1. 定

Redis如何实现刷票过滤

《Redis如何实现刷票过滤》:本文主要介绍Redis如何实现刷票过滤问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录引言一、概述二、技术选型三、搭建开发环境四、使用Redis存储数据四、使用SpringBoot开发应用五、 实现同一IP每天刷票不得超过次数六

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx