基于 Python 的短视频用户行为分析系统

基于 Python 的短视频用户行为分析系统

基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。

功能模块

总览仪表盘 (Dashboard)

  • 核心指标卡片:总用户数、总视频数、平均观看比率、完播率
  • 活跃用户趋势:按日聚合的活跃用户数与交互次数折线图
  • 时段分布:24小时交互量柱状图

行为分析 (Behavior)

  • 工作日/周末对比:五维度(观看比率、播放时长、交互数、独立用户、独立视频)双组柱状图
  • 行为漏斗:曝光 → 点击 → 点赞 → 评论 → 转发 → 关注的转化漏斗
  • 完播率分析:按时长分桶(0-10s / 10-30s / 30-60s / 60s+)的完播率对比
  • 留存分析:基于首日用户的7日留存率曲线

推荐偏差 (Bias)

  • 偏差指标:位置偏差、时间偏差、用户偏差、内容偏差、公平性综合得分
  • 流行度长尾分布:视频曝光量的长尾效应可视化(头部集中度、Top10%曝光占比)
  • 位置偏差曲线:前20个推荐位置的CTR衰减趋势
  • 曝光偏差模式:头部集中/位置优势/时间偏差/用户偏差/冷启动的五维柱状图
  • 退出点分布:按会话长度分桶的用户退出率饼图

行为序列 (Sequence)

  • 行为分布:skip/click/like/comment/forward/follow的比例饼图
  • Top行为模式:高频行为2-gram/3-gram序列柱状图
  • 兴趣漂移:按日期的Top标签热度变化多线图
  • 退出类型分布:点赞后退出/评论后退出/点击后退出/跳过后退出饼图

用户聚类 (Clustering)

  • KMeans聚类散点图:PCA降维后的二维散点,按簇着色
  • 聚类雷达图:每个簇在观看深度/互动频率/内容偏好/活跃时段/播放时长五维的归一化雷达
  • 运营建议:基于每个簇的特征差异自动生成策略建议
  • 支持调节聚类数(3-10)并重新训练

内容分析 (Content)

  • 供需分析:按标签维度的视频供给量与交互需求量双柱对比
  • 品类竞争矩阵(BCG):市场份额 vs 增长率的气泡散点图
  • 内容疲劳度:Top视频的完播率随时间下降趋势多线图,自动检测疲劳视频
  • 新内容存活率:按早期曝光量分桶的存活率柱状图
  • 多样性分布:Top标签的视频数量环形图 + Gini系数

NLP语义 (NLP)

  • TF-IDF关键词:Top20关键词的TF-IDF均值柱状图
  • 词频统计:Top15标签的频次柱状图
  • t-SNE语义地图:视频语义嵌入的二维降维散点,按完播率着色
  • 相似视频查询:输入视频ID,基于余弦相似度返回Top10相似视频

GNN推荐 (GNN)

  • 图统计:用户数/视频数/交互数/社交节点数指标卡片
  • 社交网络图:Force-layout用户-好友关系可视化
  • 推荐结果:每个用户的Top5推荐视频及得分
  • LightGCN训练:支持一键训练图神经网络模型

A/B实验 (ABTest)

  • CTR对比:对照组 vs 实验组的CTR时序曲线
  • 留存率对比:两组的留存率变化曲线
  • KPI报告:CTR提升/留存提升/显著性/建议的四维指标卡

时序预测 (TimeSeries)

  • 趋势预测:历史活跃用户数 + GRU/线性外推的未来5天预测(虚线区分)
  • 兴趣漂移预测:CTR/点赞率/平均播放时长随时间变化的趋势线

系统管理 (System)

  • 数据库状态:表名及记录数统计
  • 模型管理:已训练的模型文件列表(自动过滤非模型文件)
  • 一键重新训练:依次训练KMeans/LightGCN/TF-IDF三个模型,显示每个模型的耗时与状态
  • 缓存管理:一键清除服务端缓存

目录结构

复制代码
code/
├── app.py                          # Flask应用入口,注册蓝图、认证路由、页面路由
├── init_db.py                      # 数据库初始化与数据导入脚本
├── requirements.txt                # Python依赖清单
├── mac_run.sh                      # macOS一键启动脚本
├── window_run.bat                  # Windows一键启动脚本
│
├── backend/
│   ├── config.py                   # 全局配置(路径、密钥)
│   ├── simple_cache.py             # 文件缓存系统 + NumpyEncoder
│   ├── cache_manager.py            # 缓存管理
│   ├── utils/                      # 工具函数(safe_div, date_to_weekday等)
│   ├── database/
│   │   └── __init__.py             # 数据库连接、建表、数据导入(KuaiRec/KuaiRand)
│   │
│   ├── analysis/                   # 数据分析服务层
│   │   ├── behavior.py             # 行为分析:漏斗、完播率、留存、工作日对比
│   │   ├── bias.py                 # 偏差分析:位置偏差、长尾分布、Gini系数
│   │   ├── content.py              # 内容分析:供需、BCG矩阵、疲劳度、存活率、多样性
│   │   ├── clustering.py           # 聚类分析:KMeans + PCA + 雷达图 + 运营建议
│   │   ├── abtest.py               # A/B实验:对照组/实验组对比、KPI报告
│   │   └── sequence.py             # 序列分析:行为模式、兴趣漂移、退出点
│   │
│   ├── gnn/
│   │   └── recommend.py            # LightGCN图神经网络推荐
│   │
│   ├── nlp/
│   │   └── semantic.py             # TF-IDF关键词、语义嵌入、t-SNE、相似度
│   │
│   ├── timeseries/
│   │   └── predict.py              # GRU时序预测、兴趣漂移预测
│   │
│   └── api/                        # Flask蓝图路由层(每个模块一个子目录)
│       ├── dashboard/              # GET /overview, /active_trend, /hourly
│       ├── behavior/               # GET /weekday_weekend, /funnel, /completion_rate, /retention
│       ├── bias/                   # GET /summary, /patterns, /position, /exit_points
│       ├── content/                # GET /supply_demand, /category_matrix, /fatigue, /survival, /diversity
│       ├── sequence/               # GET /patterns, /interest_drift, /exit_points
│       ├── clustering/             # GET /result, /radar, /suggestions
│       ├── nlp/                    # GET /tfidf, /word_cloud, /tsne_map, /similarity
│       ├── gnn/                    # GET /graph_stats, /social_graph, /recommendations; POST /train
│       ├── abtest/                 # GET /comparison, /retention, /kpi
│       ├── timeseries/             # GET /trend_prediction, /interest_drift
│       └── system/                 # GET /status; POST /retrain_all, /clear_cache
│
├── frontend/
│   ├── templates/
│   │   ├── login.html              # 登录/注册页
│   │   └── index.html              # 主界面(侧边栏 + 11个Tab面板)
│   └── static/
│       ├── css/
│       │   ├── style.css           # 自定义暗色主题样式
│       │   ├── bootstrap.css       # Bootstrap 5
│       │   └── bootstrap-icons.css # 图标字体
│       ├── fonts/
│       │   └── bootstrap-icons.woff2
│       └── js/
│           ├── api.js              # API封装(缓存、去重、图表工具、渐进式加载)
│           ├── app-main.js         # Tab切换、侧边栏、全局交互
│           ├── bootstrap.js        # Bootstrap JS
│           ├── echarts.js          # ECharts图表库
│           └── tabs/
│               ├── dashboard.js    # 总览模块
│               ├── behavior.js     # 行为模块
│               ├── bias.js         # 偏差模块
│               ├── sequence.js     # 序列模块
│               ├── clustering.js   # 聚类模块
│               ├── content.js      # 内容模块
│               ├── nlp.js          # NLP模块
│               ├── gnn.js          # GNN模块
│               ├── abtest.js       # A/B实验模块
│               ├── timeseries.js   # 时序模块
│               └── system.js       # 系统模块
│
├── data/
│   ├── analysis.db                 # SQLite主数据库
│   ├── cache_json/                 # API响应缓存文件
│   ├── export/                     # 数据导出目录
│   └── processed/                  # 预处理的pkl数据文件
│
├── models/
│   ├── clustering/                 # KMeans模型 (kmeans_model.pkl, scaler.pkl, pca_model.pkl)
│   ├── gnn/                        # LightGCN模型 (lightgcn_model.pkl)
│   ├── nlp/                        # 语义嵌入 (embeddings.pkl)
│   └── timeseries/                 # GRU模型 (gru_model.pkl)
│
└── tests/
    ├── test_analysis.py
    ├── test_cache.py
    └── test_utils.py

资料/
├── KuaiRec(快手稠密推荐数据集)/
│   └── data/                       # big_matrix.csv, small_matrix.csv, item_feat.csv, social_network.csv
└── KuaiRand/
    └── KuaiRand-Pure/
        └── data/                   # log_random_4_22_to_5_08_pure.csv 等随机曝光日志

数据源

数据集 说明 用途
KuaiRec 快手稠密推荐数据集(全观测交互矩阵) 行为分析、完播率、聚类、GNN训练
KuaiRand 快手随机曝光数据集(无偏日志) 偏差分析、A/B实验、行为漏斗

技术栈

  • 后端: Flask + SQLite + Pandas + NumPy + scikit-learn + PyTorch
  • 前端: ECharts + Bootstrap 5 + 原生JavaScript
  • 模型: KMeans聚类 / LightGCN图推荐 / TF-IDF + t-SNE语义 / GRU时序预测
相关推荐
第九序言T1 小时前
数据分析岗 Pandas 面试题 20 道(上):概念与读代码
python·数据分析·pandas·数据处理
Dmz丶1 小时前
前端转 AI 100 天 Day 37:Few-shot 与 CoT——让模型学会“推理”
python
孟健1 小时前
我用Grok Bot本地剪口播视频,3段提示词搞定气口切除、字幕与封面
人工智能·python·aigc
旖旎夜光1 小时前
【C++ 基础入门】类和对象(上):封装、对象模型与 this 指针
开发语言·c++·笔记·学习
揽星河..2 小时前
【C语言】结构体
c语言·开发语言
2601_966949652 小时前
如何封装 qd.klines.batch(),让批量 K 线查询函数在多个策略中复用?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
神仙别闹3 小时前
基于Python实现英词语自动对齐系统
开发语言·python
akinggw3 小时前
libagentcore - 一个基于c++的AI多agent系统升级到2.0版本
开发语言·jvm·c++
老歌老听老掉牙4 小时前
圆柱端面四平面交线及其在yoz面投影的几何解析与 Python 实现
开发语言·python·平面