用户流失预测模型初探

2024-04-12 16:32

本文主要是介绍用户流失预测模型初探,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python机器学习sklearn LogisticRegression用户流失预测模型初探

19 人赞了该文章

什么是逻辑回归?

Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的基本都差不多。正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinear model)。

这一家族中的模型形式基本上都差不多,不同的就是因变量不同。

  • 如果是连续的,就是多重线性回归;
  • 如果是二项分布,就是Logistic回归;
  • 如果是Poisson分布,就是Poisson回归;
  • 如果是负二项分布,就是负二项回归。

Logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最常用的就是二分类的Logistic回归。

Logistic回归的主要用途:

  • 寻找危险因素:寻找某一疾病的危险因素等;
  • 预测:根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大;
  • 判别:实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。

Logistic回归主要在流行病学中应用较多,比较常用的情形是探索某疾病的危险因素,根据危险因素预测某疾病发生的概率,等等。例如,想探讨胃癌发生的危险因素,可以选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群肯定有不同的体征和生活方式等。这里的因变量就是是否胃癌,即“是”或“否”,自变量就可以包括很多了,例如年龄、性别、饮食习惯、幽门螺杆菌感染等。自变量既可以是连续的,也可以是分类的。

分析主题?分析目的?分析结论?

最近学了Python的sklearn,结合实际用户,想建立用户流失预测模型。网上查了很多资料,针对用户流失预警模型采用决策树,逻辑回归算法比较多,当然也有使用SVM,贝叶斯算法。下面就是我根据自己工作中的一个产品作为主题,预测其用户流失与留存。流失=上个月有消费,本月无消费表流失(其实也是消费流失啦)。数据周期使用的是一两个月来做分析,什么情况下用户会消费流失?于是挑选了一些指标特征来做分析,比如上个月的消费次数、最近的消费时间(可量化),消费金额,rmf这个原理还是有一个分析依据的。当然还有其他特征如,用户观看总时长、用户活跃天数、停留时长、启动次数、等。

import pandas as pd
df=pd.read_csv('DL135667_RESULT.csv')
df_data=df.loc[:,['pay_times','pay_r','pay','all_dr','all_ndt']]
df_target=df.loc[:,['is_lost']]
X= df_data.as_matrix()
Y=df_target.as_matrix()
特征工程:代码忽略,这个在数据收集和清理后已做了些分析。

针对上面选择的指标,利用决策树模型查下看看特征在分类中起到的作用大

from sklearn.ensemble import ExtraTreesClassifier
x_train,x_test,y_train,y_test=train_test_split(X,Y,test_size=0.2) 
#利用信息熵作为划分标准,对决策树进行训练,这里做了些测试,深度设置为7效果比较好。 
clf=tree.DecisionTreeClassifier(criterion='entropy',max_depth=7)   
clf.fit(x_train,y_train)
#把决策树写入文件  if os.path.isdir(u'D:\\sklearn测试库'):  pass  else:  os.makedirs(u'D:\\sklearn测试库')  with open(u'D:\\sklearn测试库\\决策结果.txt','w') as  f:  f=tree.export_graphviz(clf,out_file=f)  print(u'打印出特征') 
expected = y_test
predicted = clf.predict(x_test)
#预测情况,精确率,召回率,f1分数等
print(metrics.classification_report(expected, predicted))print(metrics.confusion_matrix(expected, predicted)) from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import ExtraTreesClassifier
#logisticrgression逻辑回归
lg_model = LogisticRegression(penalty='l2',C=1000)
a_normalized = normalize(scale(X), norm='l2')  #数据标准化正则化
#特征对模型分类重要程度model = ExtraTreesClassifier()model.fit(a_normalized,Y)print('feature_importances:')print(model.feature_importances_)
#pca降维,该方法是测试下降维的效果
pca = decomposition.PCA(n_components=2)
a_pca = pca.fit_transform(a_normalized)
lx_train,lx_test,ly_train,ly_test=train_test_split(a_pca,Y,test_size=0.2) 
lg_model.fit(lx_train, ly_train)
lexpected = ly_test
predicted = lg_model.predict(lx_test)
print(metrics.classification_report(lexpected, predicted))
print(metrics.confusion_matrix(lexpected, predicted))	

交叉认证分#scores = cross_validation.cross_val_score(clf, raw data, raw target, cv=5, score_func=None).clf是不同的分类器,可以是任何的分类器。比如支持向量机分类器。clf = svm.SVC(kernel='linear', C=1)cv参数就是代表不同的cross validation的方法了。如果cv是一个int数字的话,并且如果提供了raw target参数,那么就代表使用StratifiedKFold分类方式,如果没有提供raw target参数,那么就代表使用KFold分类方式。cross_val_score函数的返回值就是对于每次不同的的划分raw data时,在test data上得到的分类的准确率。至于准确率的算法可以通过score_func参数指定,如果不指定的话,是用clf默认自带的准确率算法。

#交叉验证
scores = cross_validation.cross_val_score(lg_model, a_pca, Y,cv=5)#score_func=metrics.f1_score 可选择指标参数,默认自带的准确率算法。
print scores

这篇关于用户流失预测模型初探的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/897657

相关文章

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

mysql删除无用用户的方法实现

《mysql删除无用用户的方法实现》本文主要介绍了mysql删除无用用户的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 1、删除不用的账户(1) 查看当前已存在账户mysql> select user,host,pa

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus