【用户画像】用户偏好购物模型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

相关文章

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT