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

一、前言

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

二、推荐系统

概述

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

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

推荐系统原理

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

推荐系统组成

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

1.前端的交互界面

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

2.日志系统

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

3.推荐算法系统

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

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

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

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

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

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

推荐系统基本思想

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

 推荐系统数据分析

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

具体如下:

第一:物品的元数据

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

第二:用户数据

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

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

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

推荐系统分类

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

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

 应用:

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

三、标签模型开发 

评分数据

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

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

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

import scala.util.matching.Regex

object RegexUrlTest {
	
	def main(args: Array[String]): Unit = {
		// 访问url
		val 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("没有匹配成功"); null
			case 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
				}
				// 返回productId
				productId
			}
		)
		

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.RegressionEvaluator
		val evaluator: RegressionEvaluator = new RegressionEvaluator()
			.setLabelCol("rating")
			.setPredictionCol("prediction")
			.setMetricName("rmse")
		val rmse: Double = evaluator.evaluate(alsModel.transform(ratingsDF))
		//  rmse = 1.0300179222180903
		println(s"rmse = $rmse")

5.模型推荐

		// 5.1 给用户推荐商品: Top5
		val rmdItemsDF: DataFrame = alsModel.recommendForAllUsers(5)

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

四、总结

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

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

  • 24
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值