利用python建立客户流失预警模型(下)——建立模型
前言
上一部分已经完成了对数据的整理与分析,接下来建立数据分析模型。
首先,建立分类模型来预测客户是否会流失。逻辑回归,决策树,随机森林,xgboost等可用于分类问题(也可用于回归问题)。由于不是所有模型在所有样本预测均为最优,可考虑使用模型融合。在建模时,通过交叉验证训练集来得到模型最优的参数。对于阈值的设置可考虑KS曲线的最大值。
其次是客户画像,在筛选后的变量中挑选少量综合性变量,通过样本间的聚类仿照RFM模型的想法得到客户大体的定位,比如重要价值客户、重要保持客户等,然后根据集中度、活跃度等给客户加小标签,根据总体的标签以及客户流失与否给出业务层面的意见。
客户流失预测模型
1、logistic回归
建立模型,通过交叉验证、网格搜索来寻求最优参数,用于拟合最优模型
#LogisticRegression
lr = LogisticRegression(n_jobs=-1,random_state=666,solver='saga',penalty='l1')
c_v=KFold(len(y_train),n_folds=10,random_state=666)
parameter_grid={
'C':[0.1,1,10],'max_iter':[100,500,1000]} #参数可调
gridsearch_b=GridSearchCV(lr,param_grid=parameter_grid,cv=c_v,scoring='f1',n_jobs=-1)
gridsearch_b.fit(x_train,y_train)
best_param_b=gridsearch_b.best_params_
best_lr=LogisticRegression(n_jobs=-1,random_state=666,solver='saga',penalty='l1',C=0.1,max_iter=100)
用生成的最优模型在测试机上进行预测:
best_lr.fit(x_train,y_train)
yhat_test_lr=best_lr.predict(x_test) #预测结果
confusion_matrix(y_test,yhat_test_lr) #混淆矩阵
yp_test_lr=best_lr.predict_proba(x_test) #预测概率
衡量logistic回归进行分类的精度的指标:AUC,recall,precision等
fpr_lr,tpr_lr,threshold_lr=roc_curve(y_test,yp_test_lr[:,1])
auc(fpr_lr,tpr_lr)