10_行销(Marketing)里客户流失

本文探讨了客户流失对企业的影响,强调保留现有客户的重要性。通过分析客户数据,特别是网络活动和客户服务记录,可以识别流失原因。文章介绍了建立一个神经网络模型来预测客户流失,使用Kaggle上的WA_Fn-UseC_-Telco-Customer-Churn.csv数据集,并通过Keras进行实现,以提高客户保留率。
摘要由CSDN通过智能技术生成

客户流失是指客户决定停止使用公司的服务,内容或产品。当我们讨论客户分析时,保留现有客户的成本要比获取新客户便宜得多,而且回头客的收入通常要比新客户高。在竞争激烈的行业中,企业面对许多竞争对手,因此获得新客户的成本甚至更高,因此保留现有客户对于此类企业而言变得越来越重要。客户离开公司有很多原因。客户流失的一些常见原因是不良的客户服务,无法在产品或服务中找到足够的价值,缺乏沟通和缺乏客户忠诚度。保留这些客户的第一步是监视一段时间内的客户流失率。如果客户流失率通常很高或随着时间的流逝而增加,那么最好花一些资源来改善客户保留率。

为了提高客户保留率,当务之急是更好地了解客户。我们可以调查已经流失的客户,以了解他们为什么离开。我们还可以调查现有客户,以了解他们的需求和痛苦点。例如,我们可以查看客户的网络活动数据,并了解他们在哪里花费最多的时间,他们正在查看的页面上是否有错误,或者他们的搜索结果是否未返回良好的内容。我们还可以查看客户服务呼叫日志,以了解他们的等待时间长短,他们的投诉是什么以及如何处理他们的问题。对这些数据点进行深入分析可以揭示企业在保留现有客户方面面临的问题。

在本文中, 我们来建立一个机器学习模型,该模型可以预测哪些客户可能流失,并锁定并留住这些较高流失风险的特定客户。我们会使用神经网络模型。人工神经网络(ANN)模型是一种机器学习模型,受人脑功能的启发。 ANN模型最近在图像识别,语音识别和机器人技术方面的成功应用证明了其在各种行业中的预测能力和实用性。您可能已经听说过“深度学习”一词。这是一种ANN模型,其中输入和输出层之间的层数很大。

在这里插入图片描述
此图显示了具有一个隐藏层的ANN模型的简单情况。此图中的圆圈表示人工神经元或节点,它们模拟人脑中的这些神经元。箭头表示信号如何从一个神经元传输到另一个神经元。如该图所示,ANN模型通过查找从每个输入神经元到下一层神经元的信号的模式或权重进行学习,从而最好地预测了输出。

下面我们还是用Kaggle数据集 WA_Fn-UseC_-Telco-Customer-Churn.csv 。然后我们用keras来构建一个神经网络。

# This Python 3 environment comes with many helpful analytics libraries installed
# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python
# For example, here's several helpful packages to load

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)

# Input data files are available in the read-only "../input/" directory
# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory

import os
for dirname, _, filenames in os.walk('/kaggle/input'):
    for filename in filenames:
        print(os.path.join(dirname, filename))

# You can write up to 5GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using "Save & Run All" 
# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session
/kaggle/input/telco-customer-churn/WA_Fn-UseC_-Telco-Customer-Churn.csv

Load the packages

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score
from sklearn.metrics import roc_curve, auc
%matplotlib inline

Load the data

df = pd.read_csv('../input/telco-customer-churn/WA_Fn-UseC_-Telco-Customer-Churn.csv')
df.head(3)
customerID gender SeniorCitizen Partner Dependents tenure PhoneService MultipleLines InternetService OnlineSecurity ... DeviceProtection TechSupport StreamingTV StreamingMovies Contract PaperlessBilling PaymentMethod MonthlyCharges TotalCharges Churn
0 7590-VHVEG Female 0 Yes No 1 No No phone service DSL No ... No No No No Month-to-month Yes Electronic check 29.85 29.85 No
1 5575-GNVDE Male 0 No No 34 Yes No DSL Yes ... Yes No No No One year No Mailed check 56.95 1889.5 No
2 3668-QPYBK Male 0 No No 2 Yes No DSL Yes ... No No No No Month-to-month Yes Mailed check 53.85 108.15 Yes

3 rows ?? 21 columns

df.shape
(7043, 21)

Data Analysis & Preparation

Encoding target var: Churn

df['Churn'] = df['Churn'].apply(lambda x: 1 if x == 'Yes' else 0)
df.Churn.mean()
0.2653698707936959

Create TotalCharges

df['TotalCharges'] = df['TotalCharges'].replace(' ', np.nan).astype(float)
df = df.dropna()

Create Continuous Vars

df[['tenure', 'MonthlyCharges', 'TotalCharges']].describe()
tenure MonthlyCharges TotalCharges
count 7032.000000 7032.000000 7032.000000
mean 32.421786 64.798208 2283.300441
std 24.545260 30.085974 2266.771362
min 1.000000 18.250000 18.800000
25% 9.000000 35.587500 401.450000
50% 29.000000 70.350000 1397.475000
75% 55.000000 89.862500 3794.737500
max 72.000000 118.750000 8684.800000

Normalize the variable

df['MonthlyCharges'] = np.log(df['MonthlyCharges'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值