电商用户行为分析

用户行为分析

电商用户行为数据多样,整体可以分为用户行为习惯数据业务行为数据两大 类。

  • 用户的行为习惯数据包括了用户的登录方式、上线的时间点及时长、点击和浏 览页面、页面停留时间以及页面跳转等等,我们可以从中进行流量统计和热门商品 的统计,也可以深入挖掘用户的特征;这些数据往往可以从 web 服务器日志中直接 读取到。而业务行为数据就是用户在电商平台中针对每个业务(通常是某个具体商 品)所作的操作,我们一般会在业务系统中相应的位置埋点,然后收集日志进行分 析。
  • 业务行为数据又可以简单分为两类:
    • 一类是能够明显地表现出用户兴趣的行为, 比如对商品的收藏、喜欢、评分和评价,我们可以从中对数据进行深入分析,得到 用户画像,进而对用户给出个性化的推荐商品列表,这个过程往往会用到机器学习 相关的算法;
    • 另一类则是常规的业务操作,但需要着重关注一些异常状况以做好风 控,比如登录和订单支付。

用户行为分析的分类

  • 统计分析
    • 点击、浏览
    • 热门商品、近期热门商品,分类热门商品,流量统计
  • 偏好统计
    • 收藏、喜欢、评分、打标签
    • 用户画像,推荐列表(结合特征工程和机器学习算法)
  • 风险控制
    • 下订单、支付、登录
    • 刷单监控,订单失效监控,恶意登录(短时间内频繁登陆失败)监控

用户行为分析的分类——项目模块的设计

电商用户行为分析_第1张图片
电商用户行为分析_第2张图片

主要模块
基于对电商用户行为数据的基本分类,我们可以发现主要有以下三个分析方向:
1. 热门统计

  • 利用用户的点击浏览行为,进行流量统计、近期热门商品统计等。

2. 偏好统计

  • 利用用户的偏好行为,比如收藏、喜欢、评分等,进行用户画像分析,给出个 性化的商品推荐列表。

3. 风险控制

  • 利用用户的常规业务行为,比如登录、下单、支付等,分析数据,对异常情况 进行报警提示。

下面项目所用到的字段名

字段名		数据类型		说明
userId	  	 Long		加密后的用户 ID 
itemId	 	 Long	 	加密后的商品 ID 
categoryId	 Int 		加密后的商品所属类别 ID 
behavior	 String 	用户行为类型,包括('pv', 'buy', 'cart', 'fav') (pv:浏览 , cart:购物车 ,fav:收藏, buy:购买)
timestamp 	 Long 		行为发生的时间戳,单位秒
ip		 String 	访问的 IP 
userId		 Long		访问的user ID
eventTime	 Long		访问时间
method		 String		访问方法	GET/POST/PUT/DELETE
url		 String		访问的url

项目模块——实时热门商品统计

  • 基本需求
    • 统计近一个小时内的热门商品,每5分钟更新一次
    • 热门度用浏览次数(“pv”)来衡量
  • 解决思路
    1. 在所有用户行为数据中,过滤(filter)出浏览(“pv”)行为进行统计

    2. 按照itemId(商品id) 进行分区 .keyBy("itemId")

    3. 进行商品的统计,构建滑动窗口,窗口长度为1小时,滑动距离为5分钟,

      • 设置时间窗口.timeWindow(Time.hours(1),Time.minutes(5))
      • 时间窗口(timeWindow)区间为左闭右开
      • 同一份数据会被分发到不同的窗口
    4. 预聚合 .aggregate(new CountAgg(),new WindowResultFunction())

      • 第一个参数定义窗口聚合规则;
        • extends AggregateFuntion
          • IN:传进来的数据类型
          • ACC:累加器的类型
          • OUT:输出的类型
      • 第二个参数定义输出结果的类型
        • extends WindowFunction[IN, OUT, KEY, W <: Window]
          • IN:输入为累加器的类型,Long
          • OUT:窗口累加以后输出的类型
          • KEY:Tuple泛型,在这里是itemId,窗口根据itemId聚合
          • W:聚合的窗口,w.getEnd就能拿到窗口的结束时间
    5. 进行统计整理——基于窗口结束时间,keyBy(“windowEnd”)

    6. 对窗口内的数据处理 process 排序输出,求出窗口的前N个热门商品

      • extends KeyedProcessFunction
        • K:key的类型
        • I:传入类型
        • O:输出类型
      • implement methods
        • open:初始化,在这里可以获取当前流的状态
        • processElement:处理流中每一个元素时调用
        • onTime:定时调用,注册定时器Time并触发之后的回调操作
          电商用户行为分析_第3张图片

实时流量统计——热门页面

  • 基本需求
    • 从web服务器的日志中,统计实时的热面访问页面
    • 统计每分钟的ip访问量,取出访问量最大的5个地址,每5秒更新一次
  • 解决思路
    • 将apache服务器日志中的时间,转换为时间戳,作为Event Time
    • 构建滑动窗口,窗口长度为1分钟,滑动距离为5秒

具体步骤可以参考上面实时热门商品统计的步骤

实时流量统计——PV和UV

  • 基本需求
    • 从埋点日志中,统计实时的PV和UV
    • 统计每小时的访问量(PV),并且对用户进行去重(UV)
  • 解决思路
    • 统计埋点日志中的pv行为,利用Set数据结构进行去重
    • 对于超大规模的数据,可以考虑布隆过滤器进行去重

具体步骤可以参考上面实时热门商品统计的步骤

市场营销分析——APP市场推广统计

  • 基本需求
    • 从埋点日志中,统计APP市场推广的数据指标
    • 按照不同的推广渠道,分析统计数据
  • 解决思路
    • 通过过滤日志中的用户行为,按照不同的渠道进行统计
    • 可以用process function处理,得到自定义的输出数据信息

具体步骤可以参考上面实时热门商品统计的步骤

市场营销分析——页面广告统计

  • 基本需求
    • 从埋点日志中,统计每小时页面广告的点击量,每5秒刷新一次,并按照不同省份进行划分
    • 对于"刷单"式的频繁点击行为进行过滤,并将该用户加入黑名单
  • 解决思路
    • 根据省份进行分组,创建长度为1小时、滑动距离为5秒的时间窗口进行统计
    • 可以用process function 进行黑名单过滤,检测用户对同一广告的点击量,如果超过上限则将用户信息以侧输出流输出到黑名单中

具体步骤可以参考上面实时热门商品统计的步骤

恶意登录监控

  • 基本需求
    • 用户在短时间内频繁登录失败,有程序恶意攻击的可能
    • 同一用户(可以不同ip)在2秒内连续两次登录失败,需要报警
  • 解决思路
    • 将用户的登录失败行为存入ListState,设置定时器2秒后触发,查看ListState中有几次登陆失败
    • 更加精确的检测,可以使用CEP(复杂事件处理)库实现事件流的模式匹配

具体步骤可以参考上面实时热门商品统计的步骤

订单支付实时监控

  • 基本需求
    • 用户下单之后,应设置订单失效时间,以提高用户支付的意愿,并降低系统风险
    • 用户下单后15分钟未支付,则输出监控信息
  • 解决思路
    • 利用CEP库进行事件流的模式匹配,并设定匹配的时间间隔
    • 也可以利用状态编程,用process function实现处理逻辑

具体步骤可以参考上面实时热门商品统计的步骤

订单支付实时对账

  • 基本需求
    • 用户下单并支付后,应查询到帐信息,进行实时对账
    • 如果有不匹配的支付信息或者到账信息,并提示信息
  • 解决思路
    • 从两条流中分别读取订单支付信息和到账信息,合并处理
    • 用connect连接合并两条流,用coProcessFunction 做匹配处理

具体步骤可以参考上面实时热门商品统计的步骤

你可能感兴趣的:(项目分析)