精华内容
下载资源
问答
  • 价值模型最早是由波特提出的。波特认为企业的竞争优势来源于企业在设计、生产、营销、交货等过程及辅助过程中所进行的许多相互分离的活动, 设计任何产业内竞争的各种基本活动有五种类型: 内部后勤:与接收、存储...

    在这里插入图片描述价值链模型最早是由波特提出的。波特认为企业的竞争优势来源于企业在设计、生产、营销、交货等过程及辅助过程中所进行的许多相互分离的活动,

    设计任何产业内竞争的各种基本活动有五种类型:

    内部后勤:与接收、存储和分配相关联的各种活动,如原材料搬运、仓储、库存控制、车辆调度和向供应商退货。

    生产作业:与将投入转化为最终产品形式相关的各种活动,如机械加工、包装、组装、设备维护、检测等。

    外部后勤:与集中、存储和将产品发送给买方有关的各种活动,如产成品库存管理、原材料搬运、送货车辆调度等。

    市场和营销:与提供买方购买产品的方式和引导它们进行购买相关的各种活动,如广告、促销、销售队伍、渠道建设等。

    服务:与提供服务以增加或保持产品价值有关的各种活动,如安装、维修、培训、零部件供应等。

    展开全文
  • 而会员价价值度是用来评估用户的价值情况,是区分会员价值的重要性模型和参考依据,也是衡量不同营销效果的关键指标之一,我们可以通过复购率、消费频率、最近一次购买时间、最近一次购买金额等方面分析会员价值度。...

    用户数据化运营是互联网运营工作必备工作之一,且产品的生存必须有用户。而会员价价值度是用来评估用户的价值情况,是区分会员价值的重要性模型和参考依据,也是衡量不同营销效果的关键指标之一,我们可以通过复购率、消费频率、最近一次购买时间、最近一次购买金额等方面分析会员价值度。

    常用的价值度模型是RFM。RFM模型是根据会员最近一次购买时间R(Rencency)、购买频率F(Frequency)、购买金额M(Monetary)计算得出RFM的值,可以通过K-MEANS聚类或者的RFM价值模型对客户进行分类。

    K-means聚类原理

    K-means是一个聚类算法用来将n 个点分成 k 个集群。

    k-means算法为基于距离的非层次聚类算法,采用距离作为相似性的评价指标,距离越近,则认为两个样本的相似性越大。python建模采用sk-learn 机器学习库,其K-means算法采用的是欧几里得距离。算法过程简单归纳一下,就不上详细的数学公式了:

    step 1 选取K个对象作为初始的聚类中心,k需要事先指点,因此聚类结果具有一定的随机性

    step 2 分别计算每个样本到聚类中心的距离,将样本分配到距离最近的聚类中。

    step 3 在所有样本都分配到某个聚类后,重新计算K各聚类的中心

    step 4 与前一次计算的K个聚类中心比较,如果聚类中心发生变化,就转到 step2,用新的聚类中心分类样本,loop。

    step 5 当聚类中心不发生变化,或者达到最大迭代次数时,停止并输出聚类结果。

    最后的结果是点和质心之间的均方差达到最小。

    案例详解

    导入数据,并设置索引列

    日期缺失2条数据,订单金额缺失8条数据,缺少的数据极少量,可直接删除

    订单金额最小值0.5.最大值30999,最小值异常,经询问运营同事,原因是客户用优惠券购买的订单,1元以下的订单金额均无任何意义。可直接舍弃

    二、RMF分值计算

    ”R“是最近一次登陆时间离获取数据日期2017年8月22日之间的天数

    ”F“是发微博的条数

    ”M“是关注其他用户的数量

    R M F的原始变量值

    将R_score','F_score','M_score'列入number数据框,np.array将R、F、M的值转换位矩阵(3,86125),transpose为转置功能,等价与T。

    np.array(number_list).transpose()=np.array(number_list).T

    查看number数据的描述统计分析,可看出m_score的标准差较大,很可能由较多异常值。通过画箱线图进一步确认及剔除异常值。

    通过箱线图可看出m_score的离群值较多和较大,可去除>20000的数据。

    通过相关性系数表,得知R、F、M均为弱相关。

    机器学习模型一:基于K-Mean聚类模型分析法

    1、确认分类的K值

    分析各簇中心点与样本的距离

    图中可看出,K=3时,出现明显的转折点,因此,K-MEAN聚类的K值=3。

    2、机器学习,得出数据集和分组明细

    对于连续型数据,在机器学习之前,先对number数据进行Z-SCORE标准化处理。

    从sklearn.cluster模块加载k-means聚类模型进行机器学习

    输出各个特征的的聚类中心和各个类别的样本数目:

    将分类的数据集并入原始数据框number中

    3、K-means聚类结果分析

    通过K-Means算法将样本分为三个cluster后,现在分别分析这三个客户群体的样本属性,挖掘其中的价值,作出各客户群体特征的概率密度函数:

    结论:

    客户类别0的特点:

    消费时间间隔200到350天;消费次数集中在1次,消费金额在0-500以下

    客户类别1的特点:

    消费时间间隔0-150,消费次数集中在2-4次,消费金额在0~5000元。

    客户类别2的特点:

    消费时间间隔0-150天;消费次数集中在1-2次,消费金额在500元以下。

    对比分析后,得到类别1里面的客户消费时间间隔短,消费次数多,而且金额较大,属于高价值人群。类别2里面的客户群消费次数、消费时间间隔、消费金额处于中等水平,属于一般客户。类别0里面的客户,消费间隔时间长,次数少,金额也不是特别高,属于价值较低的客户。

    机器学习模型二:基于RFM客户价值预测模型

    RFM模型分析步骤:

    1 、设定分析数据的截止时间节点(如2018-4-1),用来做基于该时间节点的数据选取和计算。

    2 、在用户数据库中,以步骤1设定的时间节点为界限向前推一固定周期(如一周年、一个月等),选择截取每个会员的会员ID、订单时间、订单金额的原始数据集。

    3 、根据获取到的原始数据集,分别计算 最近一次购买时间R(Rencency):各个会员最近的订单时间与截止时间节点的距离; 购买频率F(Frequency):以会员ID为区分,分别统计各会员ID的订单数量; 购买金额M(Monetary):将用户多个订单的订单金额求和。

    4、 对R、F、M值进行分区。对于F和M变量来讲,值越大代表购买频率越高、订单金额越 高;但对R来讲值越小代表离截止时间节点越近,因此值越好。对R、F、M分别使用五分位(也可以分成其他分位,如三分位)法做数据分区,需要注意的是,对于R来讲需要倒过来划分,离截止时间越近的值划分越大。

    5、 将三个值组合或相加得到总的RFM得分。这里有两种得分方式,一种是直接将三个值拼接到一起,例如RFM得分为213、131、122;一种是直接将三个值相加求得一个新的汇总值,例如RFM得分为7、6、9。在得到不同会员的RFM的之后,根据步骤5产生的两种结果有不用的应用思路:

    应用思路1:基于三个维度值做用户群体划分和解读,对用户的价值度做分析。例如得分为213的会员往往购买频率较低,针对购买频率低的客户定期发送促销活动邮件;针对得分为131的会员虽然购买频率高但是订单金额低等,这些客户往往具有较高的购买粘性,可以考虑通过关联或搭配销售的方式提升订单金额。 2:基于RFM的汇总得分评估所有会员的价值度价值,并可以做价值度排名;同时,该得分还可以作为输入维度跟其他维度一起作为其他数据分析和挖掘模型的输入变量,为分析建模提供基础。

    计算RFM得分:

    导出excel,数据透视表,并画出图形

    结论

    公司的会员中 ,重要客户和一般客户基本55开,重要客户占50%以上,说明客户的日常维护做到位,一般挽留客户仍然较多,次部分客户可以在大型的促销节日进行挽留。针对不同客户分类群,采取差异化的营销策略进行醋活。

    展开全文
  • 财政收入影响因素分析及预测模型 电力窃电漏电用户 自动识别 ■电商产品评论数据情感分析 电子商务网站用户行为分析及 服务推荐 ■航空公司客户价值分析 航空公司客
  • 同步更新在个人网站:http://www.wangpengcufe.com/machinelearning/python-python1/一、案例背景在产品迭代过程中,通常需要根据用户的属性进行归类,也就是通过分析数据,对用户进行归类,以便于在推送及转化过程...

    def39f7bdb791a9e1e0e8ba37e4772e4.png

    同步更新在个人网站:http://www.wangpengcufe.com/machinelearning/python-python1/

    一、案例背景

    在产品迭代过程中,通常需要根据用户的属性进行归类,也就是通过分析数据,对用户进行归类,以便于在推送及转化过程中获得更大的收益。

    本案例是基于某互联网公司的实际用户购票数据为研究对象,对用户购票的时间,购买的金额进行了采集,每个用户用手机号来区别唯一性。数据分析人员根据用户购买的时间和金额,通过建立RFM模型,来计算出用户最近最近一次购买的打分,用户购买频率的打分,用户购买金额的打分,然后根据三个分数进行一个加权打分,和综合打分。业务人员可以根据用户的打分情况,对不同的用户进行个性化营销和精准营销,例如给不同的用户推送定制的营销短信,不同优惠额度的打折券等等。

    通过RFM方法,可以根据用户的属性数据分析,对用户进行了归类。在推送、转化等很多过程中,可以更加精准化,不至于出现用户反感的情景,更重要的是,对产品转化等商业价值也有很大的帮助。

    二、RFM概念

    RFM模型是衡量客户价值和客户创利能力的重要工具和手段。在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到的。该机械模型通过一个客户的近期购买行为、购买的总体频率以及花了多少钱3项指标来描述该客户的价值状况。

    RFM分析 就是根据客户活跃程度和交易金额的贡献,进行客户价值细分的一种方法。其中:

    R(Recency):客户最近一次交易时间的间隔。R值越大,表示客户交易发生的日期越久,反之则表示客户交易发生的日期越近。

    F(Frequency):客户在最近一段时间内交易的次数。F值越大,表示客户交易越频繁,反之则表示客户交易不够活跃。

    M(Monetary):客户在最近一段时间内交易的金额。M值越大,表示客户价值越高,反之则表示客户价值越低。

    8cb5e6ff7b11db901abc7f6676757c9d.png

    R打分:基于最近一次交易日期计算的得分,距离当前日期越近,得分越高。例如5分制。

    F打分:基于交易频率计算的得分,交易频率越高,得分越高。如5分制。

    M打分:基于交易金额计算的得分,交易金额越高,得分越高。如5分制。

    RFM总分值:RFM=Rx100+Fx10+Mx1

    RFM分析的主要作用:

    • 识别优质客户。可以指定个性化的沟通和营销服务,为更多的营销决策提供有力支持。
    • 能够衡量客户价值和客户利润创收能力。

    三、代码实现

    3.1、引包

    首先我们引入需要用的包,数据分析常用的numpy包,pandas包,等。

    import time
    import numpy as np
    import pandas as pd
    import mysql.connector

    3.2、读取数据

    接下来我们开始用pd.read_csv方法读取用户的数据

    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+':读取数据...')
    
    config = {
        'host' : '127.0.0.1',
        'user' : 'root',
        'password' : 'test123',
        'port' : 3306,
        'database' : 'user',
        'charset' : 'gb2312'
    }
    cnn = mysql.connector.connect(**config) # 建立MySQL连接
    cursor = cnn.cursor() # 获得游标
    sql = "SELECT  phoneNo AS PHONENO,create_date AS ORDERDATE,order_no AS ORDERNO,ROUND(pay_amount/100,2) AS PAYAMOUNT " 
          "FROM user.`event_record_order`" # SQL语句
    raw_data = pd.read_sql(sql,cnn,index_col='PHONENO')
    cursor.close() # 关闭游标
    cnn.close() # 关闭连接
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+':读取数据完毕!')
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+':开始建立RFM模型...')

    介绍一下config 里的参数信息:host是数据库的ip信息,本案例用的是本地数据库,实际部署生产服务器时,改成生产的ip地址即可。user 是数据库的用户名,password是密码,port是数据库的端口号,database是连接的数据库名 (schema),charset是字符集编码。

    购票时间(ORDERDATE),订单号(ORDERID)是object类型,订单金额(AMOUNTINFO)是浮点类型。index_col指定了数据中用户的唯一性用 USERID来表示。

    time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())打印了当前的系统时间,用来记录日志信息。

    3.3、数据审查

    print('Data Overview :')
    print(raw_data.head(4)) #打印原始数据前4条
    print('-' * 30)
    print('Data DESC:')
    print(raw_data.describe())  #打印原始数据基本描述性信息

    我们用raw_data.head(n)来指定取出数据的前几条,'-'*30是用来输出打印分隔线,下文再出现时不再重复解释,用raw_data.describe()来获得数据的基本描述性信息。输出结果:

    Data Overview:
                          ORDERDATE               ORDERNO  PAYAMOUNT
    PHONENO                                                         
    135****0930 2019-10-02 13:37:36  01201910021336227979        7.0
    183****1153 2019-09-30 06:22:29  0120190930062149F9AF        4.5
    150****6073 2019-10-30 18:21:45  01201910301821065CFD        2.0
    173****7295 2019-10-21 15:13:23  01201910211512498153        7.0
    ------------------------------
    Data DESC:
              PAYAMOUNT
    count  96323.000000
    mean       4.212409
    std        3.049499
    min        0.000000
    25%        2.600000
    50%        3.600000
    75%        5.000000
    max       80.000000

    我们看到结果中的 count表示总共的记录条数,mean表示了均值,std表示标准差,min表示最小值,25%表示下四分位,也叫第一四分位,50%表示中位值,也叫第二四分位,75%表示上四分位,也叫第三四分位。

    na_cols = raw_data.isnull().any(axis=0) #查看每一列是否具有缺失值
    print('NA Cols:')
    print(na_cols)
    print('-' * 30)
    na_lines = raw_data.isnull().any(axis=1) #查看每一行是否具有缺失值
    print('NA Records:')
    print('Total number of NA lines is :{0}'.format(na_lines.sum()))  #查看具有缺失值的行总记录数
    print(raw_data[na_lines])  #只查看具有缺失值的行信息

    我们用raw_data.isnull()来判断是否有缺失值,其中参数axis=0表示的是列,axis=1表示的是行,用:{0}'.format()的方式在字符串中传入参数。输出结果:

    NA Cols:
    ORDERDATE    False
    ORDERNO      False
    PAYAMOUNT    False
    dtype: bool
    ------------------------------
    NA Records:
    Total number of NA lines is :0
    Empty DataFrame
    Columns: [ORDERDATE, ORDERNO, PAYAMOUNT]
    Index: []

    通过结果可以看到,实际的交易用户数据还是比较完整的,没有缺失数据的情况,可能这批数据被技术人员采集过来已经处理过了,不讨论了。如果数据有缺失的情况怎么办?那就要对缺失的数据进行一个预处理。

    3.4、数据预处理

    数据预处理,包括数据异常,格式转换,单位转化(如果有单位不统一的情况)等。

    我们先来看异常值处理:

    sales_data = raw_data.dropna() #丢弃带有缺失值的行记录
    sales_data = sales_data[sales_data['PAYAMOUNT'] > 1]

    这里,我用代码去除了小于1元的订单,正常出行连1块钱都不用,那应该是测试数据了,现在谁出门做个公交还不得1元起步。对于用户有缺失值的记录进行了丢弃,当然也可以用其他的方法,例如平均值补全法。

    然后看日期格式转换:

    sales_data['ORDERDATE'] = pd.to_datetime(sales_data['ORDERDATE'])
    print('Raw Dtype:')
    print(sales_data.dtypes)

    用pd.to_datetime()方法对用户的订单日期进行了格式化转换。输出结果:

     Raw Dtype:
    ORDERDATE    datetime64[ns]
    ORDERNO              object
    PAYAMOUNT           float64
    dtype: object

    最后看数据转换:

    recency_value = sales_data['ORDERDATE'].groupby(sales_data.index).max()  #计算原始最近一次购买时间
    frequency_value = sales_data['ORDERDATE'].groupby(sales_data.index).count()    #计算原始订单数
    monetray_value = sales_data['PAYAMOUNT'].groupby(sales_data.index).sum()  #计算原始订单总金额

    这里根据订单日期的聚合运算得到了用户的最近一次购买时间,用户总的购买数,和购买金额,max()得到了购买时间,count()得到了购买数量,sum()得到了购买金额。

    3.5、计算RFM得分

    得到了最近的购买时间,购买数,和购买金额,下面就可以开始计算RFM得分了。

    deadline_date = pd.datetime(2019,11,15)
    r_interval = (deadline_date - recency_value).dt.days
    r_score = pd.cut(r_interval,5,labels=[5,4,3,2,1])
    f_score = pd.cut(frequency_value,5,labels=[1,2,3,4,5])
    m_score = pd.cut(monetray_value,5,labels=[1,2,3,4,5])

    我们又把客户分成五等分,这个五等分分析相当于是一个“忠诚度的阶梯”(loyalty ladder),如购买一次的客户为新客户,购买两次的客户为潜力客户,购买三次的客户为老客户,购买四次的客户为成熟客户,购买五次及以上则为忠实客户。其诀窍在于让消费者一直顺着阶梯往上爬,把销售想象成是要将两次购买的顾客往上推成三次购买的顾客,把一次购买者变成两次的。

    我们用deadline_date来表示分析的截止日期,那么统计用户的时间范围就是从数据中最早开始的购买时间到deadline_date。

    用pandas.series.dt.days可以对操作后的datatime直接进行取数。pandas.cut用来把一组数据分割成离散的区间。

    简单介绍一下pandas.cut的用法:

    pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise')
    • x:被切分的类数组(array-like)数据,必须是1维的(不能用DataFrame);
    • bins:bins是被切割后的区间(或者叫“桶”、“箱”、“面元”),有3中形式:一个int型的标量、标量序列(数组)或者pandas.IntervalIndex 。
      • 一个int型的标量,当bins为一个int型的标量时,代表将x平分成bins份。x的范围在每侧扩展0.1%,以包括x的最大值和最小值。
      • 标量序列,标量序列定义了被分割后每一个bin的区间边缘,此时x没有扩展。
      • pandas.IntervalIndex,定义要使用的精确区间。
    • right:bool型参数,默认为True,表示是否包含区间右部。比如如果bins=[1,2,3],right=True,则区间为(1,2],(2,3];right=False,则区间为(1,2),(2,3)。
    • labels:给分割后的bins打标签,比如把年龄x分割成年龄段bins后,可以给年龄段打上诸如青年、中年的标签。labels的长度必须和划分后的区间长度相等,比如bins=[1,2,3],划分后有2个区间(1,2],(2,3],则labels的长度必须为2。如果指定labels=False,则返回x中的数据在第几个bin中(从0开始)。
    • retbins:bool型的参数,表示是否将分割后的bins返回,当bins为一个int型的标量时比较有用,这样可以得到划分后的区间,默认为False。
    • precision:保留区间小数点的位数,默认为3.
    • include_lowest:bool型的参数,表示区间的左边是开还是闭的,默认为false,也就是不包含区间左部(闭)。
    • duplicates:是否允许重复区间。有两种选择:raise:不允许,drop:允许。

    重点理解我标粗的几个参数,其他参数有需要用到时查阅。

    RFM数据合并

    rfm_list = [r_score,f_score,m_score]  #将r、f、m三个维度组成列表
    rfm_cols = ['r_score','f_score','m_score'] #设置r、f、m 三个维度列名
    rfm_pd = pd.DataFrame(np.array(rfm_list).transpose(),dtype=np.int32,columns=rfm_cols,index=frequency_value.index) #建立r、f、m数据框

    我们把RFM的数据进行了合并,首先是将r、f、m三个维度组成一个列表,然后取了三个列名,把数据,列名组装成一个数据框DataFrame.

    print('RFM Score Overview:')
    print(rfm_pd.head(4))

    输出结果:

    RFM Score Overview:
                 r_score  f_score  m_score
    PHONENO                               
    13001055088        4        1        1
    13001061903        4        1        1
    13001066446        5        1        1
    13001123218        4        1        1
    rfm_pd['rfm_wscore'] = rfm_pd['r_score'] * 0.6 + rfm_pd['f_score'] * 0.3 + rfm_pd['m_score'] * 0.1
    rfm_pd_tmp = rfm_pd.copy()
    rfm_pd_tmp['r_score'] = rfm_pd_tmp['r_score'].astype('str')
    rfm_pd_tmp['f_score'] = rfm_pd_tmp['f_score'].astype('str')
    rfm_pd_tmp['m_score'] = rfm_pd_tmp['m_score'].astype('str')
    rfm_pd['rfm_comb'] = rfm_pd_tmp['r_score'].str.cat(rfm_pd_tmp['f_score']).str.cat(rfm_pd_tmp['m_score'])

    理论上,上一次消费时间越近的顾客应该是比较好的顾客,对提供即时的商品或是服务也最有可能会有反应。营销人员若想业绩有所成长,只能靠偷取竞争对手的市场占有率,而如果要密切地注意消费者的购买行为,那么最近的一次消费就是营销人员第一个要利用的工具。历史显示,如果我们能让消费者购买,他们就会持续购买。这也就是为什么,0至3个月的顾客收到营销人员的沟通信息多于3至6个月的顾客。

    这里,对RFM进行了加权打分,R占60%,F占30%,M占10%,当然也可以根据业务的实际情况进行相应的权重调整。综合打分是根据RFM=R100+F10+M*1。

    3.6、保存结果

    print('Final RFM Score Overview:')
    print(rfm_pd.head(4))
    print('-'*30)
    print('Final RFM Score DESC:')
    print(rfm_pd.describe())
    
    rfm_pd.to_csv('sales_rfm_score.csv')

    输出结果:

    Final RFM Score Overview:
                 r_score  f_score  m_score  rfm_wscore rfm_comb
    PHONENO                                                    
    13001055088        4        1        1         2.8      411
    13001061903        4        1        1         2.8      411
    13001066446        5        1        1         3.4      511
    13001123218        4        1        1         2.8      411
    ------------------------------
    Final RFM Score DESC:
                r_score       f_score       m_score    rfm_wscore
    count  53064.000000  53064.000000  53064.000000  53064.000000
    mean       3.732172      1.006407      1.002148      2.641441
    std        0.944452      0.113022      0.055212      0.570417
    min        1.000000      1.000000      1.000000      1.000000
    25%        3.000000      1.000000      1.000000      2.200000
    50%        4.000000      1.000000      1.000000      2.800000
    75%        5.000000      1.000000      1.000000      3.400000

    3.7、写入数据库

    建立数据库连接

    table_name = 'sale_rfm_score'
    #数据框基本信息
    config = {
        'host' : '172.0.0.1',
        'user' : 'root',
        'password' : 'test123',
        'port' : 3306,
        'database' : 'skpda',
        'charset' : 'gb2312'
    }
    con = mysql.connector.connect(**config)
    cursor = con.cursor()
    
    cursor.execute("show tables")  #
    table_object = cursor.fetchall()  # 通过fetchall方法获得所有数据
    table_list = []  # 创建库列表
    for t in table_object:  # 循环读出所有库
        table_list.append(t[0])  # 每个每个库追加到列表
    if not table_name in table_list:  # 如果目标表没有创建
        cursor.execute('''
        CREATE TABLE %s (
        phone_no               VARCHAR(20),
        r_score               int(2),
        f_score              int(2),
        m_score              int(2),
        rfm_wscore              DECIMAL(10,2),
        rfm_comb              VARCHAR(10),
        create_date              VARCHAR(20)
        )ENGINE=InnoDB DEFAULT CHARSET=gb2312
        ''' % table_name)  # 创建新表
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+ ':开始清除 table {0}的历史数据...'.format(table_name)) # 输出开始清历史数据的提示信息
    delete_sql = 'truncate table {0}'.format(table_name)
    cursor.execute(delete_sql)
    print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+ ':清除 table {0}的历史数据完毕!'.format(table_name)) # 输出清除历史数据完毕的提示信息

    连接的参数不再介绍,上文已经介绍过。通过fetchall方法获得所有数据,读出所有的表,如果没有表则创建。用cursor.execute先执行truncate语句,把表中的信息先清除,然后重新写入数据。

    将数据写入数据库

    phone_no = rfm_pd.index # 索引列
    rfm_wscore = rfm_pd['rfm_wscore']  #RFM 加权得分列
    rfm_comb = rfm_pd['rfm_comb']  #RFM组合得分列
    timestamp = time.strftime('%Y-%m-%d',time.localtime(time.time())) # 写库日期
    print('开始写入数据库表 {0}'.format(table_name)) # 输出开始写库的提示信息
    for i in range(rfm_pd.shape[0]):
        insert_sql = "INSERT INTO `%s` VALUES ('%s',%s,%s,%s,%s,%s,'%s')" % 
                     (table_name, phone_no[i], r_score.iloc[i], f_score.iloc[i], m_score.iloc[i], rfm_wscore.iloc[i],
                      rfm_comb.iloc[i], timestamp)  # 写库SQL依据
        cursor.execute(insert_sql)
        con.commit()
    cursor.close()
    con.close()
    print('写入数据库结束,总记录条数为: %d' %(i+1))

    先从数据集合 rfm_pd (rfm_pd 是一个DataFrame)中获取到rfm的每个字段, ’....{0}'.format(table_name)表示的是在字符串中拼接参数,{0}代表一个字符串占位符。

    四、案例结果分析

    根据RFM模型的建立,我们在数据库里生成了数据。

    aea6f3bc86d99c4a02236a913d5b5cfe.png

    然后前段工程师根据数据库里的数据得到了用户RFM的价值打分页面,如图(后台展示页面)。

    运营人员根据页面的打分情况来衡量客户价值和客户创利能力,了解客户差异。将客户分别按照R、F、M参数分组后,假设某个客户同时属于R5、F4、M3三个组,则可以得到该客户的RFM代码543。同理,我们可以推测,有一些客户刚刚成功交易、且交易频率高、总采购金额大,其RFM代码是555,还有一些客户的RFM代码是554、545……每一个RFM代码都对应着一小组客户,开展市场营销活动的时候可以从中挑选出若干组进行。

    e673c9f154fe7ffecc273349c717f17d.png

    用户是根据RFM的打分倒序排列,可以直接找到重点客户的信息,点开手机号,查看客户的详细信息(这一步由前端开发人员实现),针对重点客户展开各种个性化营销。

    ad9bfda14097b5e33996d7bd262e9aa9.png

    RFM三个指标每个维度再细分出5份,这样就能够细分出5x5x5=125类用户,再根据每类用户精准营销……显然125类用户已超出普通人脑的计算范畴了,更别说针对125类用户量体定制营销策略。实际运用上,我们只需要把每个维度做一次两分即可,这样在3个维度上我们依然得到了8组用户。

    这样,就可以得到以下解读(编号次序RFM,1代表高,0代表低)
    重要价值客户(111):最近消费时间近、消费频次和消费金额都很高,必须是VIP啊!
    重要保持客户(011):最近消费时间较远,但消费频次和金额都很高,说明这是个一段时间没来的忠诚客户,我们需要主动和他保持联系。
    重要发展客户(101):最近消费时间较近、消费金额高,但频次不高,忠诚度不高,很有潜力的用户,必须重点发展。
    重要挽留客户(001):最近消费时间较远、消费频次不高,但消费金额高的用户,可能是将要流失或者已经要流失的用户,应当基于挽留措施。

    案例结论:

    • 表现处于一般水平以上的用户的比例太小,低于1%(R、F、M三个维度得分均在3以上的用户数),VIP客户太少。
    • 会员中99%以上的客户消费状态都不容乐观,主要体现在消费频率低R、消费总金额低M。这可能跟公司的地铁出行的业务有关系,公司的业务分布在全国中小城市,大部分用户都是使用一次的用户。
    • 低价值客户有262个,占总比例的 0.4%,运营人员可以导出下载这批用户。
    展开全文
  • 数据分析模型

    2019-09-04 16:37:41
    常见数据分析模型较多,列举其中常见的八种供楼主参考: 1、行为事件分析 行为事件分析法来研究某行为事件的发生对企业组织价值的影响以及影响程度。企业借此来追踪或记录的用户行为或业务过程,如用户注册、浏览...

    常见数据分析模型较多,列举其中常见的八种供楼主参考:

    1、行为事件分析

    行为事件分析法来研究某行为事件的发生对企业组织价值的影响以及影响程度。企业借此来追踪或记录的用户行为或业务过程,如用户注册、浏览产品详情页、成功投资、提现等,通过研究与事件发生关联的所有因素来挖掘用户行为事件背后的原因、交互影响等。

    在日常工作中,运营、市场、产品、数据分析师根据实际工作情况而关注不同的事件指标。如最近三个月来自哪个渠道的用户注册量最高?变化趋势如何?各时段的人均充值金额是分别多少?上周来自北京发生过购买行为的独立用户数,按照年龄段的分布情况?每天的独立 Session 数是多少?诸如此类的指标查看的过程中,行为事件分析起到重要作用。

    行为事件分析法具有强大的筛选、分组和聚合能力,逻辑清晰且使用简单,已被广泛应用。行为事件分析法一般经过事件定义与选择、下钻分析、解释与结论等环节。

    2、漏斗分析模型

    漏斗分析是一套流程分析,它能够科学反映用户行为状态以及从起点到终点各阶段用户转化率情况的重要分析模型。

    漏斗分析模型已经广泛应用于流量监控、产品目标转化等日常数据运营工作中。例如在一款产品服务平台中,直播用户从激活APP开始到花费,一般的用户购物路径为激活APP、注册账号、进入直播间、互动行为、礼物花费五大阶段,漏斗能够展现出各个阶段的转化率,通过漏斗各环节相关数据的比较,能够直观地发现和说明问题所在,从而找到优化方向。对于业务流程相对规范、周期较长、环节较多的流程分析,能够直观地发现和说明问题所在。

    3、留存分析模型

    留存分析是一种用来分析用户参与情况/活跃程度的分析模型,考察进行初始行为的用户中,有多少人会进行后续行为。这是用来衡量产品对用户价值高低的重要方法。留存分析可以帮助回答以下问题:

    一个新客户在未来的一段时间内是否完成了您期许用户完成的行为?如支付订单等;某个社交产品改进了新注册用户的引导流程,期待改善用户注册后的参与程度,如何验证?想判断某项产品改动是否奏效,如新增了一个邀请好友的功能,观察是否有人因新增功能而多使用产品几个月?关于留存分析,我写过详细的介绍文章,供您参考:解析常见的数据分析模型——留存分析。

    4、分布分析模型

    分布分析是用户在特定指标下的频次、总额等的归类展现。它可以展现出单用户对产品的依赖程度,分析客户在不同地区、不同时段所购买的不同类型的产品数量、购买频次等,帮助运营人员了解当前的客户状态,以及客户的运转情况。如订单金额(100 以下区间、100 元 - 200元区间、200 元以上区间等)、购买次数(5 次以下、5 - 10次、10 以上)等用户的分布情况。

    分布分析模型的功能与价值:科学的分布分析模型支持按时间、次数、事件指标进行用户条件筛选及数据统计。为不同角色的人员统计用户在一天/周/月中,有多少个自然时间段(小时/天)进行了某项操作、进行某项操作的次数、进行事件指标。

    5、点击分析模型

    即应用一种特殊高亮的颜色形式,显示页面或页面组(结构相同的页面,如商品详情页、官网博客等)区域中不同元素点击密度的图示。包括元素被点击的次数、占比、发生点击的用户列表、按钮的当前与历史内容等因素。

    点击图是点击分析方法的效果呈现。点击分析具有分析过程高效、灵活、易用,效果直观的特点。点击分析采用可视化的设计思想与架构,简洁直观的操作方式,直观呈现访客热衷的区域,帮助运营人员或管理者评估网页的设计的科学性。

    6、用户行为路径分析模型

    用户路径分析,顾名思义,用户在APP或网站中的访问行为路径。为了衡量网站优化的效果或营销推广的效果,以及了解用户行为偏好,时常要对访问路径的转换数据进行分析。

    以电商为例,买家从登录网站/APP到支付成功要经过首页浏览、搜索商品、加入购物车、提交订单、支付订单等过程。而在用户真实的选购过程是一个交缠反复的过程,例如提交订单后,用户可能会返回首页继续搜索商品,也可能去取消订单,每一个路径背后都有不同的动机。与其他分析模型配合进行深入分析后,能为找到快速用户动机,从而引领用户走向最优路径或者期望中的路径。

    7、用户分群分析模型

    用户分群即用户信息标签化,通过用户的历史行为路径、行为特征、偏好等属性,将具有相同属性的用户划分为一个群体,并进行后续分析。我们通过漏斗分析可以看到,用户在不同阶段所表现出的行为是不同的,譬如新用户的关注点在哪里?已购用户什么情况下会再次付费?因为群体特征不同,行为会有很大差别,因此可以根据历史数据将用户进行划分,进而再次观察该群体的具体行为。这就是用户分群的原理。

    8、属性分析模型

    顾名思义,根据用户自身属性对用户进行分类与统计分析,比如查看用户数量在注册时间上的变化趋势、查看用户按省份的分布情况。用户属性会涉及到用户信息,如姓名、年龄、家庭、婚姻状况、性别、最高教育程度等自然信息;也有产品相关属性,如用户常驻省市、用户等级、用户首次访问渠道来源等。

    属性分析模型的价值是什么?一座房子的面积无法全面衡量其价值大小,而房子的位置、风格、是否学区、交通环境更是相关的属性。同样,用户各维度属性都是进行全面衡量用户画像的不可或缺的内容。

    属性分析主要价值在:丰富用户画像维度,让用户行为洞察粒度更细致。科学的属性分析方法,可以对于所有类型的属性都可以将“去重数”作为分析指标,对于数值类型的属性可以将“总和”“均值”“最大值”“最小值”作为分析指标;可以添加多个维度,没有维度时无法展示图形,数字类型的维度可以自定义区间,方便进行更加精细化的分析。

    展开全文
  • 数据分析模型

    2020-10-06 18:06:43
    数据分析模型 一、以用户为分析维度的模型 【用户生命周期、AARRR模型、RFM模型】 ① 用户生命周期 ???? 【用户从接触到离开产品的过程】 ② AARRR模型 ???? 【从产品营销角度,实现用户管理】 》用户生命周期...
  • 基于RFM模型的用户价值的数据分析报告 分析背景与目的   目前企业的业务逐步从产品为主导转向以客户的需求为主导。一种全新的”以客户为中心“的业务模式正在形成并提升的前所未有的高度。然而与客户保持关系...
  • 产品迭代过程中,通常需要根据用户的属性进行归类,也就是通过分析数据,对用户进行归类,以便于在推送及转化过程中获得更大的收益。 本案例是基于某互联网公司的实际用户购票数据为研究对象,对用户购票的时间,...
  • 行为事件分析模型

    2019-11-27 01:03:11
    用户行为分析模型 行为事件分析模型 研究:某行为事件的发生对企业组织价值的影响以及影响程度。 企业用途:追踪或记录的用户行为或业务过程, 如用户注册、浏览产品详情页、成功投资、提现等, 最终目的:...
  • 结合近期的思考与学习,将为大家陆续介绍不同针对用户行为的分析模型。 行为事件分析法来研究某行为事件的发生对企业组织价值的影响以及影响程度。企业借此来追踪或记录的用户行为或业务过程,如用户注册、浏览产品...
  • 为了研究网络社区成员进行比特产品非商品交换的目的和所能获得的交换价值,基于交换价值的测度分析构建比特产品非商品交换机制模型,然后通过仿 真研究影响交换价值实现...
  •  行为事件分析法来研究某行为事件的发生对企业组织价值的影响以及影响程度。企业借此来追踪或记录的用户行为或业务过程,如用户注册、浏览产品详情页、成功投资、提现等,通过研究与事件发生关联的所有因素来挖掘...
  • 10分钟,快速搞懂RFM用户分析模型

    千次阅读 2019-12-17 22:17:11
    RFM客户价值模型是一种有着几十年发展和应用的业务分析模型。通过一个客户的近期购买行为(R)、购买的总体频率(F)以及消费总金额(M)三项指标来描述该客户的价值状况,依据这三项指标划分为6...
  • 第8章 航空公司客户价值分析传统的识别客户价值应用最广泛的模型主要通过3个指标(最近消费时间间隔(Recency)、消费频率(Frequency)和消费金额(Monetary))来进行客户细分,识别出价值高的客户,简称RFC模型。...
  • ↑关注 + 星标,每天学Python新技能后台回复...留存分析模型留存分析模型是一种用来分析用户参与情况/活跃程度的分析模型,考察进行初始行为的用户中,有多少人会进行后续行为。这是用来衡量产品对用户价值高低的重...
  • 换句话说,通过了解当今产品的价格,我们经常可以对明天的产品价值做出大致的预测。因此,在大数据分析python自回归模型中,我们将讨论一个反映这种相关性的模型。–自回归模型。 什么是自回归模型? 自回归模型或...
  • 需求分析及其模型

    2021-01-07 15:00:03
    产品愿景 目标市场 核心特点 用户分析/用户画像 场景 一个什么用户在什么时间什么地点,通过什么方式做了一个什么动作,满足了什么需求 唤起点,习惯的养成 YY语音 适应玩家的免费游戏语音 收入 消费能力 盈利模式 ...
  • 01产品概述产品定位:【趣头条】作为一款内容资讯APP,团队致力于让用户的阅读更有价值,通过大数据算法和云计算等技术,为用户提供感兴趣、有价值的个性化内容及服务。产品Slogan:让阅读...
  • 最近有些忙,但是看到了很好的分析模型也要跟大家分享的,这篇博客有些粗糙,主要是po上一些链接供大家学习,有时间的话,我也会写出自己关于用户行为分析的理解的。 下面是关于用户行为分析常见的分析维度,有助于...
  • 航空公司客户价值分析 项目背景 信息时代的到来注定营销焦点从产品中心转到了用户中心,客户关系管理成为企业的核心问题。 客户关系管理的关键问题则是客户分类,通过分类区分客户价值的有无和高低,针对不同...
  • 日本进入第三消费社会,资本疯狂增长,日本制造的产品充斥全球,此时的日本国民价值观由大量消费和美式倾向转变为个性化多样化和品牌倾向,由此催生出如何提高产品质量和企业服务的问题,而卡诺模型的提出,成功解决...
  • 常见的大数据分析模型

    千次阅读 2019-07-18 20:50:58
    常见数据分析模型较多,列举其中常见的八种供楼主参考: 1、行为事件分析 行为事件分析法来研究某行为事件的发生对企业组织价值的影响以及影响程度。企业借此来追踪或记录的用户行为或业务过程,如用户注册、浏览...
  • 换句话说,通过了解当今产品的价格,我们经常可以对明天的产品价值做出大致的预测。因此,在大数据分析python自回归模型中,我们将讨论一个反映这种相关性的模型。–自回归模型。什么是自回归模型?自回归模型或简称...
  • 因此,除了用KS指标来评价风控模型性能之外,我们如何分析模型的特点,使其在实际业务场景中发挥出最大的价值?本文主要介绍风控模型的业务性能指标分析方法。目录Part 1. 风控模型的技术和业务指标Part 2. 单模型的...
  • 作者:Aiden月月针对全量用户...RFM客户价值模型是一种有着几十年发展和应用的业务分析模型。通过一个客户的近期购买行为(R)、购买的总体频率(F)以及消费总金额(M)三项指标来描述该客户的价值状况,依据这三项指标...
  • 常见数据分析模型较多,列举其中常见的八种供楼主参考: 1、行为事件分析 行为事件分析法来研究某行为事件的发生对企业组织价值的影响以及影响程度。企业借此来追踪或记录的用户行为或业务过程,如用户注册、浏览...
  • ▌ 一、什么是行为事件分析?行为事件分析法主要用于研究某行为事件的发生对企业组织价值的影响以及影响程度。企业借此来追踪或记录用户行为及业务过程,如用户注册、浏览产品详情页...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 457
精华内容 182
关键字:

产品价值分析模型