商品销售数据建模及分析
一、概述
本篇的数据集及程序代码上传在个人github上
本文针对所给的酒类商品销售数据集进行了以下两大类分析:
(1) 统计分析类
- 酒种的销售统计
- 地区的销售统计
(2) 建模分析类
- 相似用户反馈
- 相似商品反馈
- 协同过滤推荐
- 感兴趣用户推荐
- 地域优先推荐
- 用户流失度分析
- 高价值用户分析
其中用户流失度分析及高价值用户分析依赖更加完整的数据集(订单的时间序列及单次订单消费金额等信息),本篇暂时不讨论
二、总体分析
2.1 逻辑架构
其中主要的技术选型如下:
- HBase:数据存储
主要存储预处理之后的商品及用户基本信息以及用户购买行为信息。 - Spark:离线数据分析
从HBase中读取用户行为数据,构建基于Machine Learning的数据模型 - HDFS:模型及特征矩阵存储
导出Spark学习出的稳定数据模型及特征矩阵到HDFS中 - Zepplin:数据可视化
支持多种数据展示效果:列表、柱状图、饼图等。在intepreter支持下可方便对接HBase和Spark - Zookeeper:分布式集群管理
分布式HBase、Spark等组件使用Zookeeper来管理集群
注:其实数据样本记录不多,所以没有使用Flume(数据采集)、Kafka(数据传输)及Storm(实时数据分析)等组件
2.2 物理部署
建议三台以上机器搭建大数据分析及应用平台,软件部署情况可参考如下:
机器别名 | 安装软件 |
---|---|
Machine01 | Hadoop-2.6.4, spark-1.6.5, HBase-1.2.2, ZK-3.4.8, zeppelin-0.6.2 |
Machine02 | Hadoop-2.6.4, spark-1.6.5, HBase-1.2.2, ZK-3.4.8 |
Machine03 | Hadoop-2.6.4, spark-1.6.5, HBase-1.2.2, ZK-3.4.8 |
三、详细分析
3.1 运行时架构
3.2 数据预处理
针对原始的xsl数据,这里进行了预处理,处理后的结果存在HBase中:
- brand-info表:酒品牌基本信息,包含品牌名称,所属分类以及编号信息
主键(row key) | 列簇(Family) | 列(Column) | 含义(Description) |
ID (酒品牌编号) | brandinfo | brand | 品牌名称 |
category | 所属分类 |
- user-info表:包含两个列簇,userinfo列簇包含用户名称,地址等基本信息,orderinfo列簇存储用户购买的酒品牌的编号列表
主键(row key) | 列簇(Family) | 列(Column) | 含义(Description) |
ID (用户Id) | userinfo | name | 用户名称 |
邮箱 | |||
phone | 手机号码 | ||
province | 省 | ||
city | 市 | ||
zone | 区 | ||
min | 最小购买能力 | ||
max | 最大购买能力 | ||
ordernum | 订单数 | ||
orderinfo | orderindexs | 用户购买的品牌id列表 |
3.3 统计分析
主要是利用基于spark的mapreduce能力按照品种和地域对酒的销售情况进行了统计,统计结果存储在HBase中
- cate-sale表:存储品牌,销售记录
主键(row key) | 列簇(Family) | 列(Column) | 含义(Description) |
brand (品牌) | catesale | salenum | 某品牌的销售数量 |
- zone-sale表:存储地区及销售记录,其中主键的组成方式为”省市区_品牌”
主键(row key) | 列簇(Family) | 列(Column) | 含义(Description) |
key (组合主键) | zonesale | salenum | 某地区某品牌的销售数量 |
3.4 建模分析
3.4.1 ALS 矩阵分解模型
该模型的原理直观的表示为上图,交替最小二乘算法(ALS)将可将高维的用户-评分矩阵 RRR分解为两个低维的用户特征矩阵U" role="presentation" style="position: relative;">UUU和商品特征矩阵 VVV。使得R,U,V" role="presentation" style="position: relative;">R,U,VR,U,VR, U, V满足: R≈UTVR≈UTVR \approx U^TV。其中维数 kkk作为算法的参数输入,即隐藏因子。该模型一方 main可以解决原始用户评分矩阵可能存在的数据稀疏问题,另一方面分解后的用户特征矩阵和商品特征矩阵可用于后续的协同过滤推荐及相似用户挖掘等。
我们在数据预处理部分已经对用户和酒品牌进行了编号,这里将所有用户的购买记录转化为用户评分矩阵(例如:编号为3的用户购买了编号为5的酒,则有用户评分矩阵R" role="presentation" style="position: relative;">RRR的第三行第五列元素 r3,5=1r3,5=1r_{3,5}=1),为了得到用户特征矩阵 UUU和商品特征矩阵V" role="presentation" style="position: relative;">VVV,需要对以下公式进行最小化求值。
\arg\min \limits_{U,V} \sum_{\{i,j|r_{i,j}\neq 0\}} (r_{i,j}-u_i^Tv_j)^2+\lambda(\sum_i n_{ui} ||u_i||^2+\sum_i n_{vj} ||v_j||^2)
其中 λλ\lambda是正则化系数, nuinuin_{ui}为用户 III有购买过的商品数 nvj" role="presentation" style="position: relative;">nvjnvjn_{vj}为商品j总计被购买的次数。这种防止过拟合的正则化方案被称作加权 λλ\lambda正则化。模型训练的过程如下:
3.4.2 余弦相似度模型
余弦相似度模型,是在提取出待评估个体(用户或商品)的特征矩阵之后,采用如下公式计算出待评估个体之间的相似度(数值越大越相似)
simlarity(A,B)=cosθ=A⋅B||A||⋅||B||=∑ni=1Ai×Bi∑ni=1A2i√×∑ni=1B2i√simlarity(A,B)=cosθ=A⋅B||A||⋅||B||=∑i=1nAi×Bi∑i=1nAi2×∑i=1nBi2simlarity(A,B)=\cos\theta=\frac{A \cdot B}{||A|| \cdot ||B||}=\frac{\sum_{i=1}^n A_i \times B_i}{\sqrt {\sum_{i=1}^n A_i^2} \times \sqrt {\sum_{i=1}^n B_i^2}}
因此只要构造出个体(用户或商品)的特征举证,就可以利用该模型计算出某个用户的相似用户以及某个商品的相似商品。这里的特征矩阵可以直接采用ALS模型中分解出来的用户特征矩阵及商品特征矩阵。也可以根据实际情况融入多维特征,例如将地域特征加入用户特征矩阵中,计算出的相似用户就带有地域相近的含义。
3.4.3 协同过滤推荐模型
协同过滤推荐由分为基于用户的协同过滤推荐和基于物品的协同过滤推荐
1. 基于用户的协同过滤推荐
该算法先寻找与目标用户有相同喜好的邻居(也即相似度高的邻居用户),然后根据相似用户的喜好产生向目标用户的推荐。显然我们在余弦相似度模型中已经建立了用户和其相似用户的度量标准,这里可以直接选择目标用户相似度高的数个用户的购买记录为目标用户推荐
2. 基于物品的协同过滤推荐
该算法先根据所有用户对物品或者信息的评价,发现物品和物品之间的相似度,然后根据用户的历史偏好信息将类似的物品推荐给该用户。显然我们在余弦相似度模型中已经建立了物品及其相似物品的度量标准,这里可以根据目标用户的购买记录选择和其已经购买物品相似度最高的数个物品为目标用户推荐。
3.5 整体流程图
四、结果展示
选用Zepplin作为结果展示的工具,基于网页notebook提供交互式数据分析及可视化。分析维度及结果如下:
1. 酒种的销售统计
统计某种类型酒的TopN的销售情况,其中类型以下拉框的形式选择,TopN为可编辑的文本框。支持多种展示形式,后面不再赘述
2. 地区的销售统计
3. 地域优先推荐
针对指定用户(输入用户名称或编号),推荐其附近的人购买的品牌
4. 协同过滤推荐
5. 感兴趣用户推荐
针对某一品牌,挖掘可能对该品牌该兴趣的用户
6. 相似用户反馈
针对某一用户,挖掘其相似购买行为的用户及相似度度量值
7. 相似商品反馈
商品销售数据建模及分析相关推荐
- 亚马逊商品销售数据爬虫分析报告
家电产业和消费者升级悄然地展开. 市场的这种变化使消费者对家用电器的期望不再仅仅是一个简单的功能满足,而是更多的细节体验和技术创新. 通过洞察家用电器的消费特点,有利于确定市场的未来趋势,从而积极应对 ...
- 数据挖掘实战—商品零售购物篮分析
文章目录 引言 一.数据探索性分析 1.数据质量分析 1.1 缺失值分析 1.2 异常值分析 1.3 重复数据分析 2.数据特征分析 2.1 描述性统计分析 2.2 分布分析 2.2.1 商品热销情况 ...
- 《对冲基金建模与分析基于MATLAB》简介及PDF下载
转 <对冲基金建模与分析--基于MATLAB>简介及PDF下载 内容简介 本书是关于用MATLAB对对冲基金进行建模和分析的入门读物.在对对冲基金的基本概念.分类.相关工具和指标系统介绍的 ...
- 《需求工程-软件建模与分析之读书笔记之三》
<需求工程-软件建模与分析之读书笔记之三> 第14章<面向对象建模>采用了面向对象方法学的世界观,将系统看作是一系列对象的集合,每个对象具有独立的职责,完成独立的任务,对象之间 ...
- 《需求工程——软件建模与分析》读后感之三
在需求获取中,需求工程师可以得到关于问题域的描述信息,可以得知相关者对软件系统的期望.可是,上述这些被记录在获取笔录上的内容都还是属于现实世界的信息,它们是用户和其他相关者对现实世界的理解与描述,使用 ...
- Algorithm:数学建模大赛之数学建模基础(经验/技巧)、流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价)、论文写作(意义/摘要/关键词/问题重述和模型假设/建模/文献)之详细攻略
Algorithm:数学建模大赛之数学建模基础(经验/技巧).流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价).论文写作(意义/摘要/关键词/问题重述和模型假设/建模/求解/结论/参考文 ...
- 数学建模——层次分析法Python代码
数学建模--层次分析法Python代码 import numpy as np class AHP: """ 相关信息的传入和准备 """ d ...
- 大数据建模、分析、挖掘技术应用研修班的通知
--- 关于举办 2021年数字信息化培训项目系列 --- 大数据建模.分析.挖掘技术应用研修班的通知 各企事业单位: 随着2015年9月国务院发布了<关于印发促进大数据发展行动纲要的通知> ...
- 《需求工程——软件建模与分析》阅读笔记之一
在老师推荐的几本书里面,我选择了阅读<需求工程--软件建模与分析>一书,感觉受益颇多,刚开始接触软件觉得最难得是代码,关键是代码,其他都没必要,随着学习的渐渐深入,越来越理解老师说的,在一 ...
最新文章
- linux下的PHP+Mysql+PHPWind实现
- MySQL分区的限制(最多有多少个分区)
- 三角剖分(delaunay)拓扑结构 高维近邻
- 37. Leetcode 100. 相同的树 (二叉树-二叉树性质)
- 《Spring Boot官方文档》16. 自动配置
- 51. N-Queens N 皇后
- Java实例——基于jsoup的简单爬虫实现(从智联获取工作信息)
- 如何修改服务器Tomcat的首页为项目
- 一起来做个免登录资源导航小程序!
- 《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一2.3 执行计划各个列的含义...
- Impala之DDL、DML
- 2017-7-8 OpenStack手工+oz自动制作CentOS 7.3镜像
- 6大常见排序算法 python实现
- python新闻标题分类_机器学习也会“标题党”?这个算法能根据标题判断新闻类别...
- Android开发什么该做、什么不该做,你真的知道吗?
- 数学规划模型(一):数学规划模型的基本知识
- 最新版-----新浪微博的第三方登录
- linux设备驱动--字符设备模型
- 计讯物联山海步道安全管理与运维解决方案
- JS 实现网站简繁体切换
热门文章
- CSS第六天-高级技巧(元素隐藏、精灵图、CSS用户界面样式、margi负值作用、CSS三角形)
- 清理win7系统盘空间
- Circos从入门到精通
- Vue学习笔记02——Vue路由
- d2l.train_ch3函数,将输入数据转化为该函数所接受的格式
- ICH1/ICH2/ICH3/ICH4/ICH5/ICH6/ICH7/ICH8/ICH9的区别和联系
- AHRS算法代码:磁力计+加计+陀螺版
- 打印机驱动的PCL与PS的区别
- 很多时候,你不得不被生活的种种琐事所牵绊
- html在字体两边加直线,css怎么在文字两边加上横线