【用户画像】用户偏好购物模型BP

2024-06-04 01:28

本文主要是介绍【用户画像】用户偏好购物模型BP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

用户购物偏好模型BP(Buyer Preferences Model)旨在通过对用户购物行为的深入分析和建模,以量化用户对不同商品或服务的偏好程度。该模型对于电商平台、零售商以及其他涉及消费者决策的商业实体来说,具有重要的应用价值。

二、推荐系统

概述

推荐系统是一种利用电子商务网站、社交媒体平台等向用户提供个性化商品、内容或服务建议的系统。它通过分析用户的行为、兴趣、历史记录等信息,帮助用户快速找到符合其需求的物品,提高用户体验和满意度。

推荐引擎,作为网站不可或缺的后台智能核心,高度依赖用户行为日志。这些日志不仅是用户兴趣与偏好的宝贵记录,更是网站实现个性化服务的关键数据。通过深度分析用户的行为日志,推荐引擎能够精确捕捉每个用户的独特需求,并据此为用户呈现定制化的页面和信息。这种个性化的服务不仅极大地提升了用户的浏览体验,还显著提高了网站的点击率和转化率。

推荐系统原理

数据采集:收集用户的喜好、搜索历史、点击历史、服务偏好等数据,构建用户行为模型。
数据分析:对用户数据进行处理,分析用户之间的关系,建立用户属性档案和潜在需求模型。
内容过滤:从已收集的数据中抽取出与用户行为相关的部分,进行深度分析和统计,计算特征值,滤除不符合用户兴趣的内容。
推荐内容:根据内容过滤结果和相关参数,进行智能化筛选,推荐出最匹配用户兴趣的内容。
分类

推荐系统组成

推荐系统一般都由三个部分组成,前端的交互界面、日志系统以及推荐算法系统。

1.前端的交互界面

  • 交互界面是用户与推荐系统直接交互的窗口。
  • 它负责展示推荐系统生成的推荐结果,如商品列表、视频推荐、文章推荐等。
  • 交互界面还需要收集用户的反馈,如点击、浏览、购买、评分等行为,以便后续对推荐算法进行优化。

2.日志系统

  • 日志系统负责记录用户的行为数据,包括用户在网站或应用上的所有活动,如搜索、点击、购买、评价等。
  • 这些日志数据是推荐系统的基础,它们提供了关于用户兴趣和偏好的宝贵信息。
  • 日志系统还需要对原始数据进行清洗、整合和存储,以便后续的数据分析和推荐算法使用。

3.推荐算法系统

  • 推荐算法系统是推荐系统的核心,它负责根据用户的行为数据和其他相关信息,生成个性化的推荐结果。
  • 推荐算法可以采用多种技术,如基于内容的推荐、协同过滤推荐、深度学习推荐等。
  • 推荐算法系统需要不断地优化和调整,以适应用户兴趣的变化和市场的动态。

个性化推荐成功的两大关键条件:

  • 信息过载:用户面临海量信息,难以快速找到符合自己喜好的物品。

  • 需求不明确:用户没有明确的需求时,推荐系统能够预测潜在兴趣,主动推送相关内容。

一个完整的推荐系统一般存在3个参与方: 用户内容提供方和提供推荐系统的网站

一个出色的推荐系统不仅能够精准地预测用户的偏好和行为,更能够拓宽用户的视野,引领他们“发现”新奇而有趣的内容。

推荐系统基本思想

知你所想,精准推送:
利用用户和物品的特征信息,为用户推荐那些具有用户喜欢的特征的物品。这包括基于用户的历史行为、偏好标签、上下文信息(如浏览记录、购买记录等)来构建用户模型。
同时,对物品进行特征分析,如内容信息、分类标签、关键词等,以匹配用户兴趣。
物以类聚:
利用用户喜欢过的物品,给用户推荐与他喜欢过的物品相似的物品。这通常基于物品的相似性度量,如基于内容的相似性或基于协同过滤的相似性。
人以群分:
利用和用户相似的其他用户,给用户推荐那些和他们兴趣爱好相似的其他用户喜欢的物品。这主要基于社会化推荐或协同过滤推荐,通过分析用户之间的相似性来找到可能感兴趣的物品。

 推荐系统数据分析

推荐系统主要由用户数据物品数据用户对物品行为数据(评分数据、点击数据、购物数据等)构成

具体如下:

第一:物品的元数据

关键字、分类标签和基因描述(对物品的详细特征的描述,比如钢琴有什么详细特征,音色等)

第二:用户数据

性别、年龄、兴趣标签(构建用户画像,能够通过这些基本信息实现更精准的推送)

第三:用户对物品行为数据(或者说对物品或信息的偏好)

显式反馈:用户主动提供的反馈信息,如评分和评论,它们直接表达了用户对物品的喜好程度。
隐式反馈:用户在使用网站或应用时产生的数据,如浏览记录、购买记录等,它们间接地反映了用户的兴趣。隐式反馈在推荐系统中起着至关重要的作用,因为它们可以被大量获取,并用于实时更新用户模型。

推荐系统分类

推荐系统可以根据其工作原理和算法特点进行分类,主要包括以下几种:

基于内容的推荐:系统为用户推荐与他们过去的兴趣类似的物品,物品间的相似性基于被比较的特征来计算。
协同过滤:找到与用户有相同品味的用户,然后将相似的用户过去喜欢的物品推荐给用户。这种方法是推荐系统中最流行和最广泛实现的技术。
基于人口统计学的推荐:根据用户的人口统计信息(如语言、国籍、年龄等)进行推荐。
基于知识的推荐:根据特定领域的知识推荐物品,这些知识是关于如何确定物品能满足用户需要和偏好的。
基于社区的推荐:依赖用户朋友的偏好进行推荐,通常称为社会化推荐系统。
混合推荐系统:综合以上多种技术的推荐系统,以弥补单一技术的不足。

 应用:

亚马逊的个性化推荐系统:通过分析用户的购物历史、搜索记录、点击行为等大数据,利用协同过滤算法和机器学习技术,为用户推荐个性化的商品。
爱奇艺的视频推荐系统:基于用户的观看历史、评分、点赞等数据,利用深度学习和数据挖掘技术,为用推荐系统,又称智能推荐系统,是现代互联网服务中不可或缺的一部分。它利用信息技术、大数据和人工智能等先进技术,在海量信息中为用户提供个性化的内容推荐,极大地提升了用户体验。以下是对推荐系统的详细介绍:

三、标签模型开发 

评分数据

在这里我们使用用户对每个物品的点击次数来作为评分的标准:

想要获取点击次数,首先我们得获取物品的编号,也就是ItemId, 而这个编号我们从url中可以获得:

对于这些url我们使用正则匹配解析,具体代码如下

import scala.util.matching.Regexobject RegexUrlTest {def main(args: Array[String]): Unit = {// 访问urlval locUrl = "http://www.eshop.com/product/10781.html?ebi=ref-i5-main-1-7"// 正则表达式val regex: Regex = "^.+\\/product\\/(\\d+)\\.html.+$".r// 正则匹配val optionMatch: Option[Regex.Match] = regex.findFirstMatchIn(locUrl)// 获取匹配的值val productId = optionMatch match {case None => println("没有匹配成功"); nullcase Some(matchValue) => matchValue.group(1)}println(s"productId = $productId")}}

运行程序输出结果:

新建标签

新建 业务(4级)标签品牌偏好标签 ,相关字段信息如下:

标签名称:用户购物偏好
标签分类:电商-某商城-行为属性
更新周期:1天
业务含义:用户购物偏好
(商品/品牌偏好)
标签规则!
inType=hbase
zkHosts=bigdata-cdh01.itcast.cn
zkPort=2181
hbaseTable=tbl_tag_logs
family=detai1
selectFieldNames=global_user_id,loc_url

程序入口:
cn.itcast.tags.models.rmd.BpModel
算法名称:
ALS
算法引擎:
tags-model_2.11.jar
模型参数:
--driver-memory 512m --executor-memory 512m --num-executors 1 --
executor-cores 1

在标签管理平台创建【用户推荐】3级标签及【用户购物偏好】4级标签,用于方便管理模型:

模型开发

开发模型标准流程:继承基类 AbstractModel,实现标签计算方法 doTag

具体在:用户画像——使用模板方法(Template Pattern)构建标签抽象类AbstractModel

这篇文章中有讲到。

算法模型开发步骤:

1. 自定义函数,从url中提取出访问商品id

		val url_to_product: UserDefinedFunction = udf((url: String) => {// 正则表达式val regex: Regex = "^.+\\/product\\/(\\d+)\\.html.+$".r// 正则匹配val optionMatch: Option[Regex.Match] = regex.findFirstMatchIn(url)// 获取匹配的值val productId = optionMatch match {case Some(matchValue) => matchValue.group(1)case None => null}// 返回productIdproductId})

2. 从url中计算商品id

	val ratingsDF: Dataset[Row] = businessDF.filter($"loc_url".isNotNull) // 获取loc_url不为null.select($"global_user_id".as("userId"), //url_to_product($"loc_url").as("productId") //).filter($"productId".isNotNull) // 过滤不为空的数据// 统计每个用户点击各个商品的次数.groupBy($"userId", $"productId").count()// 数据类型转换.select($"userId".cast(DoubleType), //$"productId".cast(DoubleType), //$"count".as("rating").cast(DoubleType) //)

 3. 使用ALS算法训练模型(评分为隐式评分)

val alsModel: ALSModel = new ALS()// 设置属性.setUserCol("userId").setItemCol("productId").setRatingCol("rating").setPredictionCol("prediction")// 设置算法参数.setImplicitPrefs(true) // 隐式评分.setRank(10) // 矩阵因子,rank秩的值.setMaxIter(10) // 最大迭代次数.setColdStartStrategy("drop") // 冷启动.setAlpha(1.0).setRegParam(1.0)// 应用数据集,训练模型.fit(ratingsDF)ratingsDF.unpersist()

 4. 模型评估

		import org.apache.spark.ml.evaluation.RegressionEvaluatorval evaluator: RegressionEvaluator = new RegressionEvaluator().setLabelCol("rating").setPredictionCol("prediction").setMetricName("rmse")val rmse: Double = evaluator.evaluate(alsModel.transform(ratingsDF))//  rmse = 1.0300179222180903println(s"rmse = $rmse")

5.模型推荐

		// 5.1 给用户推荐商品: Top5val rmdItemsDF: DataFrame = alsModel.recommendForAllUsers(5)// 5.2. 给物品推荐用户val rmdUsersDF: DataFrame = alsModel.recommendForAllItems(5)

四、总结

BP用户偏好购物模型通过交替最小二乘法(ALS)对大量用户-物品评分数据进行模型训练,从而实现给用户推荐商品(或者给物品推荐用户)的功能,在物品信息以及用户数据量大的时候起到了关键作用,但在数据量小的领域不适合构建推荐系统,因为小范围的数据用户不需要推荐也能满足自己高质量的需求。
 

(以上内容部分来自黑马程序员,侵删。)

这篇关于【用户画像】用户偏好购物模型BP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

mysql删除无用用户的方法实现

《mysql删除无用用户的方法实现》本文主要介绍了mysql删除无用用户的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 1、删除不用的账户(1) 查看当前已存在账户mysql> select user,host,pa

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus