精华内容
下载资源
问答
  • 客户价值分析

    2019-11-19 16:53:30
    一.概述 背景:某航空公司需要以客户为中心,按照客户的需求,在对客户的特点了解上使用不同的营销手段,目的...目标: 对公众客户客户分为公众客户、商业客户即公司、大客户)进行分群,根据客户信息,对客户进行...

    一.概述

    背景:某航空公司需要以客户为中心,按照客户的需求,在对客户的特点了解上使用不同的营销手段,目的是争取更多新客户,降低客户流失率,降低服务成本,提高业务收入,增加 ARPU值(average revenue per user 每个用户的平均收益,一般以月为单位),进行精准的市场营销策略制定。

    目标: 对公众客户(客户分为公众客户、商业客户即公司、大客户)进行分群,根据客户信息,对客户进行分类。针对不同类型客户进行特征提取,分析不同类型客户的价值。采取个性化服务,根据客户类型,制定相应营销策略。

    **方法:**识别客户价值应用最广泛的模型是RFM模型。

    • 最近消费时间间隔(Recency)

    • 消费频率(Frenquency)

    • 消费金额(Monetary)

    **模型修改:**由于航空公司票价受到飞行距离、舱位等级等多种因素影响,同样消费金额的不同旅客对航空公司的价值是不同的。因此单纯的RFM模型并不是适用航空客户价值分析。所以选择客户在一定时间内累积的飞行里程M和客户在一定时间内的平均折扣率C两个指标代替消费金额。另外再增加一个指标就是会员入会时间,这个指标在一定程度也会影响客户价值。
    最终指标:L:入会时间 R:最近乘坐航班 F:飞行次数 M:累积飞行里程 C:平均折扣率 (LRFMC模型)

    总体流程图如下

    在这里插入图片描述

    项目数据说明:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    构造LRFMC指标:
    
    L=LOAD_TIME - FFP_DATE(观测窗口的结束时间 - 入会时间)
    R=LAST_TO_END(最后一次乘坐飞机距观测窗口结束的时长)
    F=FLIGHT_COUNT(观测窗口内的飞行次数)
    M=SEG_KM_SUM(观测窗口内的总飞行里程)
    C=AVG_DISCOUNT(平均折扣率)
    

    二. 数据探索分析

    导包:

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    datafile= 'air_data.csv' 
    
    data = pd.read_csv(datafile, encoding = 'utf-8') #读取原始数据,指定UTF-8编码。
    data.shape #查看数据结构
    
    # 对数据的描述,探索性分析
    explore = data.describe().T # T是转置,转置后更方便查阅。
    explore
    
    explore['null'] = len(data)-explore['count'] # describe()函数自动计算非空值数,需要手动计算空值数
    explore = explore[['null', 'max', 'min']]
    explore.columns = ['空值数', '最大值', '最小值'] # 表头重命名
    explore
    
    

    在这里插入图片描述

    通过观察发现原始数据中存在票价为空,票价最小值为0,折扣率最小值为0、总飞行记录大于0的记录。

    票价为空可能是客户不存在乘机记录,其他数据可能是客户乘坐0折机票,可将这些数据删掉。

    三. 数据预处理

    过滤

    a.票价为空的记录
    b.票价为0、平均折扣率不为0、总飞行距离大于0的记录 (可能是积分兑换)

    (1)数据清洗

    data=data[data['SUM_YR_1'].notnull()*data['SUM_YR_2'].notnull()]# 保留票价非空值 【SUM_YR_1和SUM_YR_2分别表示第一年、第二年总票价】
    
    # 只保留票价非零的,或者平均折扣率与总飞行公里数同时为0的记录。
    index1 = data['SUM_YR_1'] != 0
    index2 = data['SUM_YR_2'] != 0
    index3 = (data['SEG_KM_SUM'] == 0) & (data['avg_discount'] == 0) 
    data = data[index1 | index2 | index3] 
    data.shape
    # 过滤掉944条记录
    

    (2)属性约束

    # LOAD_TIME:数据截取时间(观察期的结束时间,这里为2014-2-31)
    # FFP_DATE:入会时间   —— L
    # LAST_TO_END:最后一次乘机时间   —— R
    # FLIGHT_COUNT:飞行次数  —— F
    # SEG_KM_SUM:飞行总里程  —— M
    # avg_discount :平均折扣率 —— C
    
    data = data[['LOAD_TIME','FFP_DATE','LAST_TO_END','FLIGHT_COUNT','SEG_KM_SUM','avg_discount']]
    data.head(20)
    

    在这里插入图片描述

    (3)数据变换

    data.info()
    

    在这里插入图片描述

    可以看出LOAD_TIME和FFP_DATE为文本型,因为模型只能接受数值型的,所以需要进行转换,因为他们都是时间型的,需要对他们进行时间序列的处理。

    L = pd.to_datetime(data['LOAD_TIME'])- pd.to_datetime(data['FFP_DATE']) # 注意类型转换
    data['L'] = L.map(lambda x : x/np.timedelta64(30*24*60,'m'))#转换为month
    data['R'] = data['LAST_TO_END']
    data['F'] = data['FLIGHT_COUNT']
    data['M'] = data['SEG_KM_SUM']
    data['C'] = data['avg_discount']
    data1 = data[['L','R','F','M','C']]
    data1.head()
    
    

    在这里插入图片描述

    explore1 = data1.describe().T
    explore1 = explore1[['max','min']].T
    explore1
    
    # 5个指标的取值范围数据差异较大,为了消除数量级数据带来的影响,对数据进行标准化处理。
    

    在这里插入图片描述

    # 标准化
    data_sta = (data1 - data1.mean(axis = 0))/(data1.std(axis = 0)) # 处理后的数据均值为0,标准差为1.
    data_sta.columns=['Z'+i for i in data_sta.columns] # 表头重命名。
    data_sta.head()
    

    在这里插入图片描述

    四. 模型构建

    (1)客户聚类

    from sklearn.cluster import KMeans # 导入K均值聚类算法
    def distEclud(vecA, vecB):
        """
        计算两个向量的欧式距离的平方,并返回
        """
        return np.sum(np.power(vecA - vecB, 2))
    def test_Kmeans_nclusters(data_train):
        """
        计算不同的k值时,SSE的大小变化
        """
        data_train = data_train.values
        nums = range(2, 10)
        SSE = []
        for num in nums:
            sse = 0
            kmodel = KMeans(n_clusters=num)
            kmodel.fit(data_train)
            # 簇中心
            cluster_ceter_list = kmodel.cluster_centers_
            # 个样本属于的簇序号列表
            cluster_list = kmodel.labels_.tolist()
            for index in range(len(data)):
                cluster_num = cluster_list[index]
                sse += distEclud(data_train[index, :], cluster_ceter_list[cluster_num])
            print("簇数是", num, "时; SSE是", sse)
            SSE.append(sse)
        return nums, SSE
    nums, SSE = test_Kmeans_nclusters(data_sta)
    

    在这里插入图片描述

    # 中文和负号的正常显示
    plt.rcParams['font.sans-serif'] = 'SimHei'
    plt.rcParams['font.size'] = 12.0
    plt.rcParams['axes.unicode_minus'] = False
    # 使用ggplot的绘图风格
    plt.style.use('ggplot')
    ## 绘图观测SSE与簇个数的关系
    fig=plt.figure(figsize=(10, 8))
    ax=fig.add_subplot(1,1,1)
    ax.plot(nums,SSE,marker="+")
    ax.set_xlabel("n_clusters", fontsize=18)
    ax.set_ylabel("SSE", fontsize=18)
    fig.suptitle("KMeans", fontsize=20)
    plt.show()
    

    在这里插入图片描述

    (2)客户价值分析

    r1 = pd.Series(kmodel.labels_).value_counts()  # 统计各个类别的数目
    r2 = pd.DataFrame(kmodel.cluster_centers_)  # 找出聚类中心
    # 所有簇中心坐标值中最大值和最小值
    max = r2.values.max()
    min = r2.values.min()
    r = pd.concat([r2, r1], axis=1)  # 横向连接(0是纵向),得到聚类中心对应的类别下的数目
    r.columns = list(data_sta.columns) + [u'类别数目']  # 重命名表头
    
    # 绘图
    fig = plt.figure(figsize=(10, 8))
    ax = fig.add_subplot(111, polar=True)
    center_num = r.values
    feature = ["入会时间—L", '最后一次飞行时间-R',"飞行次数-F", "飞行总里程=M", "平均折扣率-C"]
    N = len(feature)
    for i, v in enumerate(center_num):
        # 设置雷达图的角度,用于平分切开一个圆面
        angles = np.linspace(0, 2 * np.pi, N, endpoint=False)
        # 为了使雷达图一圈封闭起来,需要下面的步骤
        center = np.concatenate((v[:-1], [v[0]]))
        angles = np.concatenate((angles, [angles[0]]))
        # 绘制折线图
        ax.plot(angles, center, 'o-', linewidth=2, label="第%d簇人群,%d人" % (i + 1, v[-1]))
        # 填充颜色
        ax.fill(angles, center, alpha=0.25)
        # 添加每个特征的标签
        ax.set_thetagrids(angles * 180 / np.pi, feature, fontsize=15)
        # 设置雷达图的范围
        ax.set_ylim(min - 0.1, max + 0.1)
        # 添加标题
        plt.title('客户群特征分析图', fontsize=20)
        # 添加网格线
        ax.grid(True)
        # 设置图例
        plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1.0), ncol=1, fancybox=True, shadow=True)
    
    # 显示图形
    plt.show()
    

    在这里插入图片描述

    五.总结

    L:入会时间 R:最后一次飞行时间 F:飞行次数 M:飞行总里程 C:平均折扣率

    客户的价值分析:
    (1)客户群3 —— R特别高,其余都低,属于低价值客户
    (2)客户群1 —— F M 很高,L也不低,可以看做是重要保持客户
    (3)客户群4 —— 可以看做是一般客户
    (4)客户群2 —— 可以看做是重要发展客户
    (5)客户群5 —— L很高,可以看做是重要的挽留客户,因为入会时间较长,但是F和M较低。

    客户价值排名:

    客户群1 ——1—— 重要保持
    客户群2 ——2—— 重要发展
    客户群5 ——3—— 重要挽留
    客户群4 ——4—— 一般客户
    客户群3 ——5—— 低价值客户

    客户特点:
    (1)重要保持客户:
    客户平均折扣率(C)较高(一般所乘航班的舱位等级较高)
    最近乘坐航班(R)低,乘坐的次数(F)或里程较高(M)
    他们是航空公司的高价值客户,是最为理想的客户类型,对公司贡献最大,所占比例小,最优先的目标,进行差异化管理,提高满意度。

    (2)重要发展客户:
    客户平均折扣率(C)较高(一般所乘航班的舱位等级较高),
    最近乘坐航班(R)低,乘坐的次数(F)或里程较低(M),
    入会时长L短,他们是潜在价值客户。
    虽然说,当前价值不高,但是却有很大的发展潜力,促使这类客户在本公司消费和合作伙伴处消费。通过客户价值提升,加强满意度,促使称为忠诚客户。

    (3)重要挽留客户:
    客户平均折扣率(C)(一般所乘航班的舱位等级较高),
    乘坐的次数(F)或里程(M)较高,但是很长时间没乘坐本公司航班(R)或频率变小,
    增加与这类客户的互动,了解情况,采取一定手段,延长客户生命周期。

    (4)一般与低价值客户:
    客户所乘坐航班平均折扣率C、乘坐次数F里程M低以及入会时间L短,较长时间无乘坐R高。
    入会时长L短,他们是潜在价值客户。
    虽然说,当前价值不高,但是却有很大的发展潜力,促使这类客户在本公司消费和合作伙伴处消费。通过客户价值提升,加强满意度,促使称为忠诚客户。

    (3)重要挽留客户:
    客户平均折扣率(C)(一般所乘航班的舱位等级较高),
    乘坐的次数(F)或里程(M)较高,但是很长时间没乘坐本公司航班(R)或频率变小,
    增加与这类客户的互动,了解情况,采取一定手段,延长客户生命周期。

    (4)一般与低价值客户:
    客户所乘坐航班平均折扣率C、乘坐次数F里程M低以及入会时间L短,较长时间无乘坐R高。
    他们可能是在公司打折促销时才会乘坐本公司航班。

    展开全文
  • 客户价值分析.ipynb

    2021-04-06 20:51:00
    数据挖掘实战—航空公司客户价值分析
  • 第8章 航空公司客户价值分析传统的识别客户价值应用最广泛的模型主要通过3个指标(最近消费时间间隔(Recency)、消费频率(Frequency)和消费金额(Monetary))来进行客户细分,识别出价值高的客户,简称RFC模型。...

    第8章 航空公司客户价值分析

    传统的识别客户价值应用最广泛的模型主要通过3个指标(最近消费时间间隔(Recency)、消费频率(Frequency)和消费金额(Monetary))来进行客户细分,识别出价值高的客户,简称RFC模型。

    在RFC模型中,消费金额表示在一段时间内,客户购买产品的总金额。但是不适用于航空公司的数据处理。因此我们用客户在一段时间内的累计飞行里程M和客户在一定时间内乘坐舱位的折扣系数C代表消费金额。再在模型中增加客户关系长度L,所以我们用LRFMC模型。

    8.1 探索数据

    探索数据的缺失情况、异常值等。

    #-*- coding: utf-8 -*-

    #对数据进行基本的探索

    #返回缺失值个数以及最大最小值

    import pandas as pd

    #航空原始数据,第一行为标题

    datafile= '/home/hadoop/data/air_customer/air_data.csv'

    #数据探索结果表

    resultfile = '/home/hadoop/data/air_customer/tmp/explore.xls'

    data = pd.read_csv(datafile, encoding = 'utf-8')

    explore = data.describe().T

    #计算空值

    explore['null'] = len(data)-explore['count']

    ##统计空值,最大,最小值等

    explore = explore[['null', 'max', 'min']]

    explore

    数据部分结果

    null max min

    MEMBER_NO 0.0 62988.000000 1.00

    FFP_TIER 0.0 6.000000 4.00

    AGE 420.0 110.000000 6.00

    FLIGHT_COUNT 0.0 213.000000 2.00

    BP_SUM 0.0 505308.000000 0.00

    EP_SUM_YR_1 0.0 0.000000 0.00

    EP_SUM_YR_2 0.0 74460.000000 0.00

    SUM_YR_1 551.0 239560.000000 0.00

    SUM_YR_2 138.0 234188.000000 0.00

    SEG_KM_SUM 0.0 580717.000000 368.00

    WEIGHTED_SEG_KM 0.0 558440.140000 0.00

    AVG_FLIGHT_COUNT 0.0 26.625000 0.25

    #保存结果

    explore.to_excel(resultfile)

    8.2 预处理数据

    根据上面的数据统计,丢弃所有不符合的数据,

    1、票价为空的

    2、票价为0,但是折扣不是0,而且飞行里程大于0,

    这样的数据是错误数据,直接删除

    #票价非空值才保留

    data = data[data['SUM_YR_1'].notnull()]

    data = data[data['SUM_YR_2'].notnull()]

    # 去掉票价为0,但是折扣不是0,或飞行里程大于0

    data = data.drop(data['SUM_YR_1'] ==0 & (data['SEG_KM_SUM'] != 0) | (data['avg_discount'] > 0))

    ##保存清理后数据

    cleanedfile = '/home/hadoop/data/air_customer/tmp/data_cleaned.csv'

    data.to_csv(cleanedfile, encoding = 'utf-8')

    8.3 数据归约

    # 属性规约:去掉不相管的属性,只留下与LRFMC模型相关的属性

    # FFP_DATE 入会时间

    # LOAD_TIME 观测窗口结束时间

    # FLIGHT_COUNT 飞行频率

    # avg_discount 平均折扣

    # SEG_KM_SUM 观测窗口总飞行公里数

    # LAST_TO_END 最后一次乘机时间至观察窗口末端时长

    data = data[['FFP_DATE','LOAD_TIME', 'FLIGHT_COUNT', 'avg_discount', 'SEG_KM_SUM','LAST_TO_END']]

    #保存数据

    cleanedfile = '/home/hadoop/data/air_customer/tmp/data_cleaned.csv'

    data.to_csv(cleanedfile, encoding = 'utf-8')

    数据变化的LRFMC数据:

    L = LOAD_TIME - FFP_DATE (观测窗口时间 - 入会时间)

    R = LOAD_TIME - LAST_TO_END (观测窗口时间 - 最后一次乘机时间)

    F = FLIGHT_COUNT

    M = SEG_KM_SUM

    C = avg_discount

    from datetime import datetime

    import time

    def normal_time(date):

    '''

    格式化数据

    '''

    return datetime.strptime(date,"%Y/%m/%d")

    def interval_time(dd):

    '''

    计算时间间隔,以月为单位

    '''

    return dd.days / 30

    # 计算LRFMC数据

    data_LRFMC= pd.read_csv(cleanedfile,encoding='utf-8')

    # data_LRFMC.columns = ['L', 'R', 'F','M', 'C']

    data_LRFMC['L'] = (data['LOAD_TIME'].apply(normal_time) - data['FFP_DATE'].apply(normal_time)).apply(interval_time)

    data_LRFMC['R'] = data['LAST_TO_END']

    data_LRFMC['F'] = data['FLIGHT_COUNT']

    data_LRFMC['M'] = data['SEG_KM_SUM']

    data_LRFMC['C'] = data['avg_discount']

    # 显示数据的描述,最大值和最小值

    data_LRFMC_describe = data_LRFMC.describe().T

    data_LRFMC_describe = data_LRFMC_describe[['max','min']].T

    LRFMCfile = '/home/hadoop/data/air_customer/tmp/LRFMC.csv'

    #数据写入文件

    data_LRFMC.to_csv('LRFMCfile')

    data_LRFMC_describe[['L','R','F','M','C']]

    L R F M C

    max 114.0 731.0 213.0 375074.0 1.500000

    min 12.0 1.0 2.0 751.0 0.136017

    最大值和最小值间隔较大,需要对数据进行标准化。

    data_LRFMC=data_LRFMC[['L','R','F','M','C']]

    # 标准化、重命名、写入文件

    data_normal = (data_LRFMC - data_LRFMC.mean()) / (data_LRFMC.std())

    data_normal.columns = ['Z'+i for i in data_normal.columns]

    data_normafile = '/home/hadoop/data/air_customer/tmp/data_norma.csv'

    data_normal.to_csv('data_normafile')

    8.4 训练模型

    数据处理完毕,下面进行模型的构建,

    1、使用聚类算法,将数据生成5类用户

    2、针对聚类结果进行特征分析

    from sklearn.cluster import KMeans

    k = 5

    kmodel = KMeans(k,n_jobs=2) #得到模型

    data_normal1=data_normal.dropna()

    kmodel.fit(data_normal1) #训练模型

    # 查看聚类中心和对应的类别

    print(kmodel.cluster_centers_)

    print(kmodel.labels_)

    [[ 0.17343002 -0.07166046 -0.11266706 -0.09427382 2.69339174]

    [-0.69751929 -0.40379498 -0.1697544 -0.17211799 -0.21902225]

    [-0.3148445 1.67877305 -0.57462591 -0.5402772 -0.11557315]

    [ 0.47921629 -0.79631365 2.48086723 2.43227193 0.27007082]

    [ 1.15091348 -0.36698843 -0.09473823 -0.10441368 -0.13723191]]

    print(kmodel.labels_)

    [3 3 3 ..., 1 1 4]

    8.4 可视化数据结果

    import matplotlib.pyplot as plt

    clu = kmodel.cluster_centers_

    x = [1,2,3,4,5]

    colors = ['red','green','yellow','blue','black']

    for i in range(5):

    plt.plot(x,clu[i],label='clustre '+str(i),linewidth=6-i,color=colors[i],marker='o')

    plt.xlabel('L R F M C')

    plt.ylabel('values')

    plt.show()

    8.5 客户价值分析

    注意kmeans每次运行的时候得到的类会有差别,簇号也会相应的改变,但是中间点基本不会改变:

    cluster L R F M C color

    客户群1 0.17343 -0.07166 -0.11267 -0.09427 0.693392 red

    客户群2 -0.69752 -0.40379 -0.16975 -0.17212 -0.21902 gree

    客户群3 -0.31484 1.678773 -0.57463 -0.54028 -0.11557 yellow

    客户群4 0.479216 -0.79631 2.480867 2.432272 0.270071 blue

    客户群5 1.150913 -0.36699 -0.09474 -0.10441 -0.13723 black

    我们重点关注的是L,F,M,从图中可以看到:

    1、客户群4[blue] 的F,M很高,L也不低,可以看做是重要保持的客户;

    2、客户群3[yellow] 的R比较高,为重要发展客户

    3、客户群1[red] 重要挽留客户,原因:C较高,但是F,M较低

    4、客户群2[green] 一般客户

    5、客户群5[black] 低价值客户

    展开全文
  • 客户价值分析模型

    2017-03-15 17:20:10
    比较有借鉴意义的客户价值分析模型,数学基础不好的慎下,通过数据对用户需求进行分析、推倒、得到最终结果,如何描述客户行为,过程性非常强,简单易懂。 没有数学基础的不要下载,如果你连贝叶斯算法都不懂,就...
  • Python数据分析与应用航空公司客户价值分析.ppt大数据,成就未来 * 大数据挖掘专家 * 大数据挖掘专家 大数据,成就未来 航空公司客户价值分析 * 目录 分析航空公司现状 1. 行业内竞争 民航的竞争除了三大航空公司...

    Python数据分析与应用航空公司客户价值分析.ppt

    大数据,成就未来 * 大数据挖掘专家 * 大数据挖掘专家 大数据,成就未来 航空公司客户价值分析 * 目录 分析航空公司现状 1. 行业内竞争 民航的竞争除了三大航空公司之间的竞争之外,还将加入新崛起的各类小型航空公司、民营航空公司,甚至国外航空巨头。航空产品生产过剩,产品同质化特征愈加明显,于是航空公司从价格、服务间的竞争逐渐转向对客户的竞争。 分析航空公司现状 2. 行业外竞争 随着高铁、动车等铁路运输的兴建,航空公司受到巨大冲击。 目前航空公司已积累了大量的会员档案信息和其乘坐航班记录。 以2014-03-31为结束时间,选取宽度为两年的时间段作为分析观测窗口,抽取观测窗口内有乘机记录的所有客户的详细数据形成历史数据,44个特征,总共62988条记录。数据特征及其说明如右表所示。 分析航空公司现状 航空公司数据特征说明 ? 特征名称 特征说明 客户基本信息 MEMBER_NO 会员卡号 FFP_DATE 入会时间 FIRST_FLIGHT_DATE 第一次飞行日期 GENDER 性别 FFP_TIER 会员卡级别 WORK_CITY 工作地城市 WORK_PROVINCE 工作地所在省份 WORK_COUNTRY 工作地所在国家 AGE 年龄 航空公司客户数据说明 表 名 特征名称 特征说明 乘机信息 FLIGHT_COUNT 观测窗口内的飞行次数 LOAD_TIME 观测窗口的结束时间 LAST_TO_END 最后一次乘机时间至观测窗口结束时长 AVG_DISCOUNT 平均折扣率 SUM_YR 观测窗口的票价收入 SEG_KM_SUM 观测窗口的总飞行公里数 LAST_FLIGHT_DATE 末次飞行日期 AVG_INTERVAL 平均乘机时间间隔 MAX_INTERVAL 最大乘机间隔 积分信息 EXCHANGE_COUNT 积分兑换次数 EP_SUM 总精英积分 PROMOPTIVE_SUM 促销积分 PARTNER_SUM 合作伙伴积分 POINTS_SUM 总累计积分 POINT_NOTFLIGHT 非乘机的积分变动次数 BP_SUM 总基本积分 续表 原始数据中包含40多个特征,利用这些特征做些什么呢?我们又该从哪些角度出发呢? 思考 借助航空公司客户数据,对客户进行分类。 对不同的客户类别进行特征分析,比较不同类别客户的客户价值。 对不同价值的客户类别提供个性化服务,制定相应的营销策略。 项目目标 结合目前航空公司的数据情况,可以实现以下目标。 公司收入的80%来自顶端的20%的客户。 20%的客户其利润率100%。 90%以上的收入来自现有客户。 大部分的营销预算经常被用在非现有客户上。 5%至30%的客户在客户金字塔中具有升级潜力。 客户金字塔中客户升级2%,意味着销售收入增加10%,利润增加50%。 这些经验也许并不完全准确,但是它揭示了新时代客户分化的趋势,也说明了对客户价值分析的迫切性和必要性。 了解客户价值分析 客户营销战略倡导者Jay & Adam Curry从国外数百家公司进行了客户营销实施的经验中提炼了如下经验。 熟悉航空客户价值分析的步骤与流程 航空客户价值分析项目的总体流程如图所示。 目录 通过对数据观察发现原始数据中存在票价为空值,票价最小值为0,折扣率最小值为0,总飞行公里数大于0的记录。票价为空值的数据可能是客户不存在乘机记录造成。 处理方法:丢弃票价为空的记录。 其他的数据可能是客户乘坐0折机票或者积分兑换造成。由于原始数据量大,这类数据所占比例较小,对于问题影响不大,因此对其进行丢弃处理。 处理方法:丢弃票价为0,平均折扣率不为0,总飞行公里数大于0的记录。 处理数据缺失值与异常值 航空公司客户原始数据存在少量的缺失值和异常值,需要清洗后才能用于分析。 本项目的目标是客户价值分析,即通过航空公司客户数据识别不同价值的客户,识别客户价值应用最广泛的模型是RFM模型。 R(Recency)指的是最近一次消费时间与截止时间的间隔。通常情况下,最近一次消费时间与截止时间的间隔越短,对即时提供的商品或是服务也最有可能感兴趣。 F(Frequency)指顾客在某段时间内所消费的次数。可以说消费频率越高的顾客,也是满意度越高的顾客,其忠诚度也就越高,顾客价值也就越大。 M(Monetary)指顾客在某段时间内所消费的金额。消费金额越大的顾客,他们的消费能力自然也就越大,这就是所谓“20%的顾客贡献了80%的销售额”的二八法则。 构建航空客户价值分析的关键特征 1. RFM模型介绍 RFM模型包括三个特征,使用三维坐标系进行展示,如图所示。X轴表示Recency,Y轴表示Frequency,Z轴表示Monetary,每个轴一般会分成5级表示程度,1为最小,5为最大。 构建

    展开全文
  • 航空客户价值分析

    2019-10-17 14:12:38
    航空客户价值分析 航空公司在客户关系管理的关键问题是客户分类,通过客户分类,区分无价值客户、高价值客户。 通过借助数据,使用各类算法对客户进行分类。对不同类别的客户进行特征分析,比较不同类客户的客户...

    航空客户价值分析

    信息时代来临使得企业的营销点从产品中心转变为客户中心,客户关系管理成为企业的核心问题,客户关系管理的关键问题是客户分类,通过客户分类,区分客户价值,企业针对不同类型的客户进行个性化的服务方案,采用不同的营销策略,将有限的资源集中用于高价值的客户,实现企业利润最大化目标。那么如何对客户进行分类就成了最关键的问题。

    面对激烈的市场竞争,各航空公司都推出了更优惠的营销方式来吸引更多的客户,国内某航空公司现通过建立合理的客户价值评估模型,对客户进行分群,分析不同客户群的客户价值,并制定相应的营销策略。目前该航空公司已积累了大量的会员档案信息和其乘坐信息。
    由于航空公司在客户关系管理的关键问题是客户分类,通过客户分类,区分无价值客户、高价值客户。借助数据,使用各类算法对客户进行分类。对不同类别的客户进行特征分析,比较不同类客户的客户价值。识别客户价值应用最广泛的模型是RFM模型。
    最近消费时间间隔(Recency)
    消费频率(Frenquency)
    消费金额(Monetary)
    模型修改:
    由于航空公司票价受到飞行距离、舱位等级等多种因素影响,同样消费金额的不同旅客对航空公司的价值是不同的。因此单纯的RFM模型并不是适用航空客户价值分析。所以选择客户在一定时间内累积的飞行里程M和客户在一定时间内的平均折扣率C两个指标代替消费金额。另外再增加一个指标就是会员入会时间,这个指标在一定程度也会影响客户价值。
    最终指标:L:入会时间 R:最近乘坐航班 F:飞行次数 M:累积飞行里程 C:平均折扣率 (LRFMC模型)
    构造LRFMC指标:
    L=LOAD_TIME - FFP_DATE(观测窗口的结束时间 - 入会时间)
    R=LAST_TO_END(最后一次乘坐飞机距观测窗口结束的时长)
    F=FLIGHT_COUNT(观测窗口内的飞行次数)
    M=SEG_KM_SUM(观测窗口内的总飞行里程)
    C=AVG_DISCOUNT(平均折扣率)

    一、数据探索分析

    通过观察发现原始数据中存在票价为空,票价最小值为0,折扣率最小值为0、总飞行记录大于0的记录。
    票价为空可能是客户不存在乘机记录,其他数据可能是客户乘坐0折机票,可将这些数据删掉。

    在这里插入图片描述
    在这里插入图片描述

    二、数据预处理

    过滤:
    票价为空的记录
    票价为0、平均折扣率不为0、总飞行距离大于0的记录 (可能是积分兑换)

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    三、模型构建

    主要是两个部分: 利用K-means算法对客户进行聚类。 结合业务,分析客户特征,分析客户价值。
    (1)客户聚类

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    (2)客户价值分析

    r1 = pd.Series(kmodel.labels_).value_counts() # 统计各个类别的数目
    r2 = pd.DataFrame(kmodel.cluster_centers_) # 找出聚类中心

    所有簇中心坐标值中最大值和最小值

    max = r2.values.max()
    min = r2.values.min()
    r = pd.concat([r2, r1], axis=1) # 横向连接(0是纵向),得到聚类中心对应的类别下的数目
    r.columns = list(data_sta.columns) + [u’类别数目’] # 重命名表头

    绘图

    fig = plt.figure(figsize=(10, 8))ax = fig.add_subplot(111, polar=True)center_num = r.valuesfeature = ["入会时间—L", '最后一次飞行时间-R',"飞行次数-F", "飞行总里程=M", "平均折扣率-C"]N = len(feature)for i, v in enumerate(center_num):# 设置雷达图的角度,用于平分切开一个圆面angles = np.linspace(0, 2 * np.pi, N, endpoint=False)# 为了使雷达图一圈封闭起来,需要下面的步骤center = np.concatenate((v[:-1], [v[0]]))angles = np.concatenate((angles, [angles[0]]))# 绘制折线图ax.plot(angles, center, 'o-', linewidth=2, label="第%d簇人群,%d人" % (i + 1, v[-1]))# 填充颜色ax.fill(angles, center, alpha=0.25)# 添加每个特征的标签ax.set_thetagrids(angles * 180 / np.pi, feature, fontsize=15)# 设置雷达图的范围ax.set_ylim(min - 0.1, max + 0.1)# 添加标题plt.title('客户群特征分析图', fontsize=20)# 添加网格线ax.grid(True)# 设置图例plt.legend(loc='upper right', bbox_to_anchor=(1.3, 1.0), ncol=1, fancybox=True, shadow=True)

    显示图形

    plt.show()
    L:入会时间 R:最后一次飞行时间 F:飞行次数 M:飞行总里程 C:平均折扣率

    客户的价值分析:
    (1)客户群3 —— R特别高,其余都低,属于低价值客户
    (2)客户群4 —— F M 很高,L也不低,可以看做是重要保持客户
    (3)客户群1 —— 可以看做是一般客户
    (4)客户群2 —— 可以看做是重要发展客户
    (5)客户群5 —— L很高,可以看做是重要的挽留客户,因为入会时间较长,但是F和M较低。

    客户价值排名:

    客户群4 ——1—— 重要保持
    客户群2 ——2—— 重要发展
    客户群5 ——3—— 重要挽留
    客户群1 ——4—— 一般客户
    客户群3 ——5—— 低价值客户

    客户特点:
    (1)重要保持客户:
    客户平均折扣率(C)较高(一般所乘航班的舱位等级较高)
    最近乘坐航班(R)低,乘坐的次数(F)或里程较高(M)
    他们是航空公司的高价值客户,是最为理想的客户类型,对公司贡献最大,所占比例小,最优先的目标,进行差异化管理,提高满意度。

    (2)重要发展客户:
    客户平均折扣率(C)较高(一般所乘航班的舱位等级较高),
    最近乘坐航班(R)低,乘坐的次数(F)或里程较低(M),
    入会时长L短,他们是潜在价值客户。
    虽然说,当前价值不高,但是却有很大的发展潜力,促使这类客户在本公司消费和合作伙伴处消费。通过客户价值提升,加强满意度,促使称为忠诚客户。

    (3)重要挽留客户:
    客户平均折扣率(C)(一般所乘航班的舱位等级较高),
    乘坐的次数(F)或里程(M)较高,但是很长时间没乘坐本公司航班(R)或频率变小,
    增加与这类客户的互动,了解情况,采取一定手段,延长客户生命周期。

    (4)一般与低价值客户:
    客户所乘坐航班平均折扣率C、乘坐次数F里程M低以及入会时间L短,较长时间无乘坐R高。
    他们可能是在公司打折促销时才会乘坐本公司航班。

    展开全文
  • 统计分析法在电信客户价值分析中的应用.doc
  • python数据分析:客户价值分析案例实战 数据集,相应文章地址为:https://blog.csdn.net/weixin_42000526/article/details/82014361
  • 航空公司客户价值分析 1.挖掘背景与目标 开启了第一个数据分析的项目,针对于航空公司价值的分析。客户关系管理的关键问题是客户分类,通过客户分类,区别无价值客户,高价值客户,企业针对不同价值的客户制定...
  • ⑶从营销角度讲,客户价值分析实际上是一个市场细分问题,解决市场细分问题比较常用的方法是聚类分析;⑷对不同价值的客户类别提供个性化的服务,并且制定相应的营销策略,使得公司的利益最大化。这个就是那个csv...
  • 电信客户价值分析

    千次阅读 2019-02-28 08:29:06
    文章目录一、电信运营商--客户价值分析二、使用聚类模型—分析项目需求三、聚类模型的原理和方法四、代码:4.1 数据感知4.2 数据预处理4.3 模型建立4.4 概率密度图 开发环境 jupyter notebook...
  • 航空公司客户价值分析: 流程:业务系统(挖掘目标)——数据抽取 ——数据探索与预处理——建模与应用——结果与反馈。 客户关系长度L、消费时间间隔R、消费频率F、飞行里程M和折扣系数的均值C五个指标作为航空公司...
  • python之航空公司客户价值分析 (二)-附件资源
  • 在对电商用户的分析中RFM客户价值分析是非常有效的一种分析方法,而在这方面Tableau体现了他强大的BI数据展示和分析功能。 一、RFM分析方法简单介绍 RFM分析是从周期内最近下单时间R、下单频率F、下单金额平均值M...
  • 航空公司客户价值分析 项目背景 信息时代的到来注定营销焦点从产品中心转到了用户中心,客户关系管理成为企业的核心问题。 客户关系管理的关键问题则是客户分类,通过分类区分客户价值的有无和高低,针对不同...
  • 航空公司客户价值分析 数据探索分析 对于数据进行简单的统计量的分析,对于数据有个整体的大概认识 datafile = 'G:/python/taidi/data_code/chapter7/demo/data/air_data1.csv' resultfile = 'G:/python/taidi/data_...
  • 要实现精细化运营,就需要对用户进行分层,筛选出各层次的用户,这样运营才能针对性的制作策略去运营。我今天就来说下用户分层经典...而RFM模型就是通过这三项指标,来描述客户价值状况,从而得到分群的客户。其中...
  • 数据挖掘--基于KMeans算法的客户价值分析-附件资源

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,350
精华内容 1,340
关键字:

客户价值分析