当前位置: 首页 > news >正文

Python 数据智能实战 (7):智能流失预警 - 融合文本反馈

写在前面

—— 不再错过关键预警!结合用户行为与 LLM 文本洞察,构建更精准的流失预测模型

在之前的探索中,我们学习了如何利用大语言模型 (LLM) 对用户评论进行深度挖掘,提取情感、发现主题,并将非结构化的文本信息转化为有价值的特征 (如 Embeddings)。

现在,我们要将这些新获得的技能应用到电商领域最关键、最具挑战性的任务之一:用户流失预测 (Customer Churn Prediction)

用户流失是悬在所有电商企业头上的“达摩克利斯之剑”。获取新客户的成本远高于维护老客户,因此,及早、准确地识别出有流失倾向的用户并采取有效的挽留措施,对企业的持续增长至关重要。

传统的流失预测模型通常依赖于 结构化的用户行为数据和交易数据

  • Recency ®: 最近一次购买距今天数。
  • Frequency (F): 一段时间内的购买次数。
  • Monetary (M): 一段时间内的购买总金额。
  • 活动指标: 登录频率、页面浏览时长、购物车添加次数、优惠券使用率等。
  • 用户属性: 注册时长、用户等级、地域等。

基于这些特征,我们可以使用 Scikit-learn 中的 分类算法 (如逻辑回归、决策树、随机森林、支持向量机、梯度提升树等) 来构建预测模型,判断一个用户在未来某个时间段内是否会流失。

这些方法确实有效,但往往存在一个“盲点”:

  • 行为滞后性: 当用户的购买频率下降、登录次数减少时,可能已经处于流失的边缘,挽留的黄金窗口期可能已经错过。
  • 忽略“无声”的信号: 很多时候,用户的流失并非悄无声息。他们可能在 用户评论 中表达了对产品的不满,在 客服沟通 中抱怨了糟糕的体验,在 社交媒体 上吐槽了物流的延迟。这些 散落在文本数据中的负面信号,蕴含着极强的流失预警信息,但传统模型往往无法捕捉。
  • 难以区分相似行为背后的不同原因: 两个同样“低频低消费”的用户,一个可能是价格敏感型、偶尔薅羊毛的用户,另一个可能是曾经的高价值用户、但近期因为一次糟糕的购物体验而心生去意。传统模型很难区分这两种情况。

如何才能在用户行为发生显著变化之前,就捕捉到那些“无声”的流失信号,提升预测的准确性和时效性呢?

答案正是:融合 LLM 对用户文本反馈的深度理解!

本篇博客,我们将实战演练:

  1. 构建一个基于传统行为特征的基准流失预测模型。
  2. 演示如何利用 LLM 从用户评论或反馈文本中提取关键特征 (例如:负面情感强度、特定抱怨主题标签)。
  3. 将 LLM 提取的文本特征与传统行为特征合并。
  4. 构建一个融合了文本特征的增强版流失预测模型。
  5. 对比评估两个模型的性能,验证 LLM 特征带来的效果提升。

通过本篇实战,你将掌握一种将“用户行为”与“用户心声”相结合的、更强大的流失预测建模方法,让你能够更早、更准地识别高风险用户,为精细化的用户挽留策略提供数据支撑!

一、基础:构建传统流失预测模型

首先,我们需要一个基于传统结构化特征的基准模型,作为后续比较的基础。

1. 数据准备

假设我们有一个 df_user_features DataFrame,包含了用户的行为特征、交易特征以及一个表示未来是否流失的目标变量 Churn (1 表示流失, 0 表示未流失)。

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression # 使用逻辑回归作为简单基准
from sklearn.ensemble import RandomForestClassifier # 使用随机森林作为另一个基准/增强模型
from sklearn.metrics import accuracy_score, classification_report, roc_auc_score, confusion_matrix# 模拟用户特征数据
user_data = {'CustomerID': [f'C{i:03d}' for i in range(1, 101)],'Recency': np.random.randint(1, 365, 100),'Frequency': np.random.randint(1, 50, 100),'Monetary': np.random.uniform(50, 5000, 100),'AvgOrderValue': lambda df: df['Monetary'] / df['Frequency'], # 计算平均订单价值'LoginDaysLast30': np.random.randint(0, 30, 100),'UsedCouponLast30': np.random.randint(0, 2, 100), # 0 or 1# 目标变量:模拟流失情况 (通常基于未来一段时间是否活跃/购买)# 这里简单模拟,假设高 Recency, 低 Frequency/Monetary 更可能流失'Churn': [1 if r > 180 and f < 10 and m < 1000 else 0 for r, f, m in zip(np.random.randint(1, 365, 100), np.random.randint(1, 50

相关文章:

Python 数据智能实战 (7):智能流失预警 - 融合文本反馈

写在前面 —— 不再错过关键预警!结合用户行为与 LLM 文本洞察,构建更精准的流失预测模型 在之前的探索中,我们学习了如何利用大语言模型 (LLM) 对用户评论进行深度挖掘,提取情感、发现主题,并将非结构化的文本信息转化为有价值的特征 (如 Embeddings)。 现在,我们要将…...

Flutter - 概览

Hello world ⌘ shift p 选择 Empty Application 模板 // 导入Material风格的组件包 // 位置在flutter安装目录/packages/flutter/lib/material.dart import package:flutter/material.dart;void main() {// runApp函数接收MainApp组件并将这个Widget作为根节点runApp(cons…...

Python-pandas-操作Excel文件(读取数据/写入数据)及Excel表格列名操作详细分享

Python-pandas-操作Excel文件(读取数据/写入数据) 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是pandas的使用语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性。【帮帮志系列文章】&#xff1a;每…...

手写 Vue 源码 === Vue3 设计思想

1.声明式框架 Vue3 是声明式的框架,用起来简单。 命令式和声明式区别 早在 JQ 的时代编写的代码都是命令式的,命令式框架重要特点就是关注过程声明式框架更加关注结果。命令式的代码封装到了 Vuejs 中,过程靠 vuejs 来实现声明式代码更加简单,不需要关注实现,按照要求填代…...

Android WebView加载h5打开麦克风与摄像头的权限问题

目录 快速处理 app向系统申请录音与相机权限h5向app申请录音和相机权限 详细解答 app权限与h5权限录音与麦克风默许的风险最佳实践 Android webview h5 麦克风权限&#xff0c;摄像头&#xff08;相机&#xff09;权限实现与填坑。 快速处理 app向系统申请录音与相机权限 …...

三种计算最小公倍数的方法分析

三种计算最小公倍数的方法分析与比较 一.引言 最小公倍数&#xff08;Least Common Multiple, LCM&#xff09;是数学中的一个基本概念&#xff0c;指能够被两个或多个整数整除的最小的正整数。在编程中&#xff0c;我们有多种方法可以计算两个数的最小公倍数。本文将分析三种…...

PDF转换工具xpdf-tools-4.05

XPDF是一个开源的PDF查看、提取和转换工具套件&#xff0c;使用C编写&#xff0c;支持多种操作系统&#xff0c;包括Linux、Unix、OS/2、Windows和Mac OS X‌1。XPDF不仅是一个PDF查看器&#xff0c;还包含多个实用工具&#xff0c;如文本提取器、图像转换器和HTML转换器等‌&a…...

aws(学习笔记第四十课) image-content-search

aws(学习笔记第四十课) image-content-search 使用SQS Lambda集成 数据库&#xff08;Aurora Serverless&#xff09; Cognito&#xff08;用户管理&#xff09; rekognition&#xff08;图像解析&#xff09; 学习内容&#xff1a; 使用SQS Lambda Aurora Serverless Cog…...

GPT-4o 图像生成与八个示例指南

什么是GPT-4o图像生成&#xff1f; 简单来说&#xff0c;GPT-4o图像生成是集成在ChatGPT内部的一项功能。用户可以直接在对话中&#xff0c;通过文本描述&#xff08;Prompt&#xff09;来创建、编辑和调整图像。这与之前的图像生成工具相比&#xff0c;体验更流畅、交互性更强…...

PostgreSQL 查看表膨胀情况的方法

PostgreSQL 查看表膨胀情况的方法 表膨胀(Table Bloat)是PostgreSQL中由于MVCC机制导致的一种常见现象&#xff0c;当大量数据被更新或删除后&#xff0c;表中会积累"死元组"(dead tuples)&#xff0c;这些死元组占据空间但不可见&#xff0c;导致表实际占用的磁盘空…...

从 0 到 1!深度剖析项目实施流程,开启项目管理新视野

一、项目准备 / 前期准备 &#xff08;一&#xff09;跟销售进行项目交接 对接人&#xff1a;销售人员交接会议内容&#xff1a; 了解项目背景、客户基本信息、项目版本、具备二次开发功能、接口、了解合同信息等。明确项目情况、客户基本情况、使用软件&#xff08;版本&…...

书生实战营之沐曦专场

一&#xff1a;实验环境进入和启动实验容器(D.run平台) 1.1首先进入平台进行注册 D.run平台https://console.d.run/ 注册和登录环节就跳过了。 1.2 启动实验容器--详细步骤如下 1.2.1选择容器的名称、区域、镜像&#xff08;注意镜像必须选择Dlinfer&#xff09; 1.2.2可以选…...

在运行 Hadoop 作业时,遇到“No such file or directory”,如何在windows里打包在虚拟机里运行

最近在学习Hadoop集群map reduce分布运算过程中&#xff0c;经多方面排查可能是电脑本身配置的原因导致每次运行都会报“No such file or directory”的错误&#xff0c;最后我是通过打包文件到虚拟机里运行得到结果&#xff0c;具体步骤如下&#xff1a; 前提是要保证maven已经…...

基于YOLOV5的目标检测识别

基于YOLOV5的目标检测识别 舰船目标检测口罩目标检测飞机目标检测 舰船目标检测 口罩目标检测 飞机目标检测...

第4篇:服务层抽象与复用逻辑

在业务系统复杂度指数级增长的今天&#xff0c;服务层&#xff08;Service Layer&#xff09;的合理设计直接影响着系统的可维护性和扩展性。本文将深入剖析 Egg.js 框架中的服务层架构设计&#xff0c;从基础实现到高级封装&#xff0c;全方位讲解企业级应用的开发实践。 一、…...

多模态大语言模型arxiv论文略读(五十四)

RoboMP 2 ^2 2: A Robotic Multimodal Perception-Planning Framework with Multimodal Large Language Models ➡️ 论文标题&#xff1a;RoboMP 2 ^2 2: A Robotic Multimodal Perception-Planning Framework with Multimodal Large Language Models ➡️ 论文作者&#xff…...

中小企业MES系统详细设计

版本&#xff1a;V1.1 日期&#xff1a;2025年5月2日 一、设备协议兼容性设计 1.1 设备接入框架 #mermaid-svg-PkwqEMRIIlIBPP58 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-PkwqEMRIIlIBPP58 .error-icon{fill…...

第二十周:项目开发中遇到的相关问题(一)

自十九周开始&#xff0c;我们便开始着手写项目&#xff08;关于新闻资讯类的Web项目&#xff09;&#xff0c;当然&#xff0c;在这之中我们也学到了很多高效且有用的好技术&#xff0c;在接下来的内容中将去具体的描述这些好技术&#xff0c;介绍它们的具体用法和应用场景。本…...

WebRtc10: 端对端1v1传输基本流程

媒体能力协商过程 RTCPeerConnection&#xff08;核心类&#xff09; 基本格式 pc new RTCPeerConnection([configiration]); RTCPeerConnection方法分类 媒体协商Stream/Track传输相关方法统计相关方法 媒体协商过程 协商状态变化 媒体协商方法 createOffercreateAnswe…...

【云备份】配置文件加载模块

目录 一.为什么要配置文件 二.配置文件的实现 三.单例文件配置类设计 四.源码 一.为什么要配置文件 我们将服务端程序运行中用到的一些关键信息保存到配置文件中&#xff0c;这样可以使程序的运行更加灵活。 这样做的好处是&#xff0c;未来如果我们想要修改一些关键信息&…...

重构之道:识别并替换不合适使用的箭头函数

1、引言 JavaScript 自 ES6 引入了箭头函数(Arrow Function)后,因其简洁的语法和对 this 的词法绑定机制,迅速成为开发者喜爱的写法之一。然而,并不是所有场景都适合使用箭头函数。 在实际开发中,我们常常会因为追求代码简洁而忽视其潜在问题,例如: this 指向错误不适…...

git问题记录-如何切换历史提交分支,且保留本地修改

问题记录 我在本地编写了代码&#xff0c;突然想查看之前提交的代码&#xff0c;并且想保留当前所在分支所做的修改 通过git stash对本地的代码进行暂存 使用git checkout <commit-hash>切换到之前的提交记录。 查看完之后我想切换回来&#xff0c;恢复暂存的本地代码…...

【MySQL】事务管理

事务管理 一. 事务的概念二. 事务的特征三. 事务的版本支持四. 事务的提交方式五. 事务的常见操作六. 事务的隔离级别1. 查看与设置隔离级别2. 读未提交 (Read Uncommitted)3. 读提交 (Read Committed)4. 可重复读 (Repeatable Read)5. 串行化 (Serializable)6. 隔离级别的总结…...

【点对点协议(PPP)全解析】从原理到工程实践

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心配置实现案例1&#xff1a;基础PPP链路建立案例2&#xff1a;CHAP认证配置 运行结果验证 三、性能对比测试…...

环境搭建:开启 Django 开发之旅

一、环境搭建&#xff1a;开启 Django 开发之旅 &#xff08;一&#xff09;安装 Python 先确保电脑上装有 Python 3.6 及以上版本&#xff0c;Django 5.1 的话&#xff0c;至少得 Python 3.8 哦。 安装前&#xff0c;先查下有没有装过 Python &#xff0c;终端&#xff08;Wi…...

如何配置NGINX作为反向代理服务器来缓存后端服务的响应?

大家好&#xff0c;我是锋哥。今天分享关于【如何配置NGINX作为反向代理服务器来缓存后端服务的响应&#xff1f;】面试题。希望对大家有帮助&#xff1b; 如何配置NGINX作为反向代理服务器来缓存后端服务的响应&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源…...

【Java IO流】File类基础详解

参考笔记&#xff1a;java File类基础 万字详解&#xff08;通俗易懂&#xff09;-CSDN博客 目录 1.前言 2. File类介绍 3. File类构造方法 4.File类常用的方法案例演示 4.1 创建文件/文件夹的方法 4.2 删除文件/文件夹的方法 4.3 判断文件/文件夹是否存在的方法 4.4 …...

《C#数据结构与算法》—201线性表

线性表的实现方式 顺序表 线性表的顺序存储是指在内存中用一块地址连续的空间依次存放线性表的数据元素&#xff0c;用这种方式存储的线性表叫顺序表。 特点&#xff1a;表中相邻的数据元素在内存中存储位置也相邻。 顺序表接口实现&#xff1a; 方法名参数返回值描述GetLen…...

MATLAB绘制局部放大图

今天&#xff0c;我将分享一段 MATLAB 代码&#xff0c;该代码生成了一个主副图结合的可视化展示&#xff0c;用于比较不同控制系统性能表现。 clc; clear; close all;% 生成时间向量 t 0:0.1:12;% 生成模拟数据 zero_feedback 0.5 * ones(size(t)); % 恒定…...

TS 常用类型

JS不会检查变量类型的变化 给变量规定特定的数据类型&#xff0c;错误赋值时会报错 优势&#xff1a;TS会标记出代码中的意外行为&#xff0c;尤其是typeerrors 具体实现&#xff1a;类型注解 JS和TS中数据类型的变化...

[Control-Chaos] Toxic Cascade(毒性級鏈)

信息 信息描述靶場名稱Toxic Cascade地址GitHub: Toxic Cascade難度中等人數推薦1人類型CTF、APT 攻擊模擬、故事解謎、化工工程與逆向工程描述Toxic Cascade 是一個結合 CTF、APT 攻擊模擬、故事解謎、化工工程與逆向工程的高度沉浸式靶場。該靶場具有獨特的情境背景與模擬真…...

纳米AI搜索体验:MCP工具的实际应用测试,撰写报告 / 爬虫小红书效果惊艳

1. 引言 近期测试了纳米AI搜索的MCP工具功能&#xff0c;重点体验了其智能体在报告生成和社交媒体数据分析方面的表现。平台整合了100多个MCP工具&#xff0c;通过本地化部署的方式&#xff0c;为用户提供了不同于云端方案的操作体验。本文将分享实际测试结果&#xff0c;包括智…...

React useMemo函数

第一个参数是回调函数&#xff0c;返回计算的结果&#xff0c;第二个参数是依赖项&#xff0c;该函数只监听count1变量的变化 import { useReducer, useState } from react; import ./App.css;// 定义一个Reducer函数 根据不同的action进行不同的状态修改 function reducer(st…...

第 1 篇:起点的选择:为何需要超越数组与链表?

大家好&#xff0c;欢迎来到“数据结构选型指南”系列&#xff01;在软件开发中&#xff0c;数据是核心&#xff0c;而如何高效地组织和访问这些数据&#xff0c;则是程序性能的关键。选择合适的数据结构&#xff0c;就像为你的 Java 应用选择最优的“引擎零件”。今天&#xf…...

MySQL 索引不生效的情况

MySQL 索引不生效的 SQL 查询需要避免的情况 索引是提高 MySQL 查询性能的关键&#xff0c;但某些 SQL 写法会导致索引失效&#xff0c;从而影响查询效率。以下是需要避免的常见情况&#xff1a; 1. 使用 NOT、! 或 <> 操作符 -- 索引可能失效 SELECT * FROM users WH…...

【阿里云大模型高级工程师ACP学习笔记】2.9 大模型应用生产实践 (上篇)

特别说明:由于这一章节是2025年3月官方重点更新的部分,新增内容非常多,因此我不得不整理成上、下两篇,方便大家参考。 学习目标 备考阿里云大模型高级工程师ACP认证,旨在全面掌握大模型应用生产实践的专业知识,提升在该领域的实操技能与理论水平,为职业发展增添助力。具…...

STM32 ZIBEE DL-20 无线串口模块

一.配置方法 二.串口中断 u8 i; u16 buf[20],res; u8 receiving_flag 0; // 新增一个标志&#xff0c;用于标记是否开始接收数组 void USART1_IRQHandler(void) {if(USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET) //接收中断{res USART_ReceiveData(USART1);if(receiv…...

【算法基础】选择排序算法 - JAVA

一、算法基础 1.1 什么是选择排序 选择排序是一种简单直观的排序算法&#xff0c;它的工作原理是&#xff1a;首先在未排序序列中找到最小&#xff08;或最大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后再从剩余未排序元素中继续寻找最小&#xf…...

FastAPI 与数据库交互示例

目录 安装必要的包完整代码示例运行应用使用说明API 端点说明代码解析 下面将创建一个简单的 FastAPI 应用程序&#xff0c;演示如何与 SQLite 数据库进行交互。这个例子包括创建、读取、更新和删除&#xff08;CRUD&#xff09;操作。 安装必要的包 首先&#xff0c;需要安装…...

(六——下)RestAPI 毛子(Http resilience/Refit/游标分页)

文章目录 项目地址一、Refit1.1 安装需要的包1.2 创建接口IGitHubApi1.3 创建RefitGitHubService1. 实现接口2. 注册服务 1.4 修改使用方法 二、Http resilience2.1 安装所需要的包2.2 创建resilience pipeline简单版2.3 创建全局的resilience处理1. 创建清理全局ResilienceHan…...

Rust 学习笔记:关于枚举与模式匹配的练习题

Rust 学习笔记&#xff1a;关于枚举与模式匹配的练习题 Rust 学习笔记&#xff1a;关于枚举与模式匹配的练习题以下程序能否通过编译&#xff1f;若能&#xff0c;输出是什么&#xff1f;考虑这两种表示结果类型的方式&#xff0c;若计算成功&#xff0c;则包含值 T&#xff1b…...

父子组件双向绑定

v-model 语法糖实现 vue中我们在input中可以直接使用v-model来完成双向绑定,这个时候 v-model 通常会帮我们完成两件事: v-bind:value的数据绑定@input的事件监听如果我们现在封装了一个组件,其他地方在使用这个组件时,是否也可以使用v-model来同时完成这两个功能呢? 当我…...

系统思考与第一性原理

最近一直有客户提到“第一性原理”&#xff0c;希望借此穿透纷繁复杂的现象&#xff0c;看清事情的本质。我第一反应是&#xff1a;这与系统思考中的冰山模型不谋而合。 冰山模型中提到&#xff1a;我们看到的只是表面事件&#xff0c;事件背后有趋势&#xff0c;趋势背后有结…...

基于Redis实现-UV统计

基于Redis实现-UV统计 本文将使用HyperLogLog来实现UV统计。 首先我们搞懂两个概念&#xff1a; UV&#xff1a;全称Unique Visitor&#xff0c;也叫独立访客量&#xff0c;是指通过互联网访问、浏览这个网页的自然人。1天内同一个用户多次访问该网站&#xff0c;只记录一次…...

【iOS】类与对象底层探索

类与对象底层探索 Clang探索对象本质objc_setProperty源码探索cls与类的关联原理isa的类型isa_t原理探索 类&类的结构什么是元类NSObject到底有几个isa走位&继承关系图objc_class&objc_object 类结构分析计算cache类中的内存大小获取bits属性列表&#xff08;prope…...

2025年- H18-Lc126-54.螺旋矩阵(矩阵)---java版

1.题目描述 2.思路* 思路1&#xff1a; 补充2&#xff1a; directions[1][0] // 表示“下”这个方向的行增量&#xff08;1&#xff09; directions[1][1] // 表示“下”这个方向的列增量&#xff08;0&#xff09; int[][] directions {{0, 1}, {1, 0}, {0, -1}, {-…...

Paddle Serving|部署一个自己的OCR识别服务器

前言 之前使用C部署了自己的OCR识别服务器&#xff0c;Socket网络传输部分是自己写的&#xff0c;回过头来一看&#xff0c;自己犯傻了&#xff0c;PaddleOCR本来就有自己的OCR服务器项目&#xff0c;叫PaddleServing&#xff0c;这里记录一下部署过程。 1 下载依赖环境 1.1 …...

yolov5 本地训练

YOLOv5 | Kaggle 直接gitclone他的源码用Vscode看&#xff08;也可以直接把jupyter下下来&#xff09; 他要1.8&#xff0c;我的是2.7&#xff0c;他这个代码可能有点年头了 两年前了 他的环境 我的环境 我就是不懂为什么清华源的torch windows默认下出来是cpu版本 . 在终端…...

同城跑腿小程序帮取帮送接单抢单预约取件智能派单同城配送全开源运营版源码优创

一、源码描述 这是一套同城跑腿小程序&#xff0c;基于FastadminUniapp框架&#xff0c;全开源无加密&#xff0c;可私有化部署&#xff0c;包含用户端、骑手端和运营端&#xff08;后端&#xff09;&#xff0c;支持帮取/帮送模式&#xff0c;支持一键接单/抢单&#xff0c;主…...

基于SpringBoot的药房药品销售管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...