一、项目背景
目前公司使用的基本销售系统手段为逐个向客户销售商品,也就是在完全不知客户是否对商品感兴趣的情况之下接触客户,是一项时间和成本密集型任务。销售人员通过多种沟通方式联系现有客户和潜在客户,由于时间和成本限制,也不可能联系到所有的客户,即使联系到所有的客户也会造成很高的成本,最终也可能达不到盈利的目的。如果使用逻辑回归(Logistic Regression)识别具有高转化率的顾客,着重接触这部分顾客群体,将会获得更高的投资收益。
目前公司推出一款新商品, 公司现有的客户的数量有41188,公司销售部门接触客户的大致成本在10元左右(本次以50云做预算),如果客户购买商品,平均收入为300元,收入与成本比为30:1。如果一直以这种方式会造成很大的损失,如果先确定目标,然后做预算,找到实现最高投资的成本是多少?实现最高利润的成本是多少?利润—投资平衡点涉及的成本是多少?
二 、逻辑回归(Logistic Regression)预测思路
二项逻辑回归(binomial logistic regression)预测了二分类中的类别的概率,该变量基于一个或多个的独立变量,可以是连续的也可以是离散的。在销售系统中,因变量是先前营销活动的结果,自变量是先前的活动指标。此次数据按照7/3的比例划分训练集和测试集。
三、程序代码分析和盈利能力评估
1、在训练集和测试集中,购买商品的客户结果变量为1,反之为0,。1的比例为11.2%
传统销售方案评估代码为:
X_train = pd.read_csv('X_train.csv')
X_test = pd.read_csv('X_test.csv')
Y_train = pd.read_csv('Y_train.csv')
Y_test = pd.read_csv('Y_test.csv')
X_train =np.array(X_train)
print(X_train)
#Calculating "Average profit per customer" for reaching out to
# all the customers in train data
print('The number of customers to be reached out to are:',len(Y_train))#训练集数量
print('Number of responders are:',Y_train['Y'].value_counts()[1],'\n')#购买了商品的客户量
print('Cast associate for reaching out to customers:',len(Y_train)*50) #总共成本支出
print('Revenue:$',Y_train['Y'].value_counts()[1]*300)#所有收益
print('Profit (revnue - cost):$',Y_train['Y'].value_counts()[1]*50-len(Y_train)*50) #亏损——盈利结果
输出结果为:
The number of customers to be reached out to are: 28831
Number of responders are: 3252
Cast associate for reaching out to customers: 1441550
Revenue:975600
Profit (revnue - cost):-255790
由结果可知,如果使用每一个客户都接触的方式进行销售,最终的亏损为255790
2、对训练样本进行逻辑回归(Logistic Regression),并使用事件发生的预测概率以0.01的间隔来计算每个概率值的成本,收入,利润和投资回报(ROI)
相关的经济公式和代码分析如下:
def cost_function(Y_Actual,ddd,cost_per_individual,
revenue_per_individual,low_threshold,high_threshold):
cost_function_output = pd.DataFrame()
for threshold in np.arange(low_threshold,high_threshold,0.01):
#混淆矩阵输出,根据购买率对应输出二维的矩阵
confusion_out = confusion_matrix(Y_Actual,np.where(Y_predict>threshold,1,0))
#混淆矩阵预测为购买商品的输出比例
target_populaion=round((confusion_out[1][1]+confusion_out[0][1])/(len(Y_Actual)),4)
#预测客户购买了商品,而且客户正好正好购买了商品的比例
responders_in_target_populaiton = round(confusion_out[1][1]/(len(Y_Actual)),4)
#成本总花费
cost = (confusion_out[1][1]+confusion_out[0][1])*cost_per_individual
#总的收益
revenue = confusion_out[1][1]*revenue_per_individual
profit = revenue-cost #利润 = 总收益-成本
#投资回报率
ROI =