用户流失预测模型初探

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

相关文章

SpringSecurity显示用户账号已被锁定的原因及解决方案

《SpringSecurity显示用户账号已被锁定的原因及解决方案》SpringSecurity中用户账号被锁定问题源于UserDetails接口方法返回值错误,解决方案是修正isAccountNon... 目录SpringSecurity显示用户账号已被锁定的解决方案1.问题出现前的工作2.问题出现原因各

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Mysql中的用户管理实践

《Mysql中的用户管理实践》:本文主要介绍Mysql中的用户管理实践,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录13. 用户管理13.1 用户 13.1.1 用户信息 13.1.2 创建用户 13.1.3 删除用户 13.1.4 修改用户

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA