2019年5月开始在武汉某公司大数据部,做大数据开发的实习生,方向是数据挖掘和预测建模方向。
目标用户流失预测模型,保证召回率。
因为是用户流失预测,所以线性用逻辑回归,非线性用XGboost算法。
因为流失与不流失容易数据不平衡,类别基本只要超过4:1就是数据不平衡了,所以需要用过采样、欠采样等方法来处理数据。
#欠采样
def down_sample(train):
train1=train[train[‘loyalty_loss’]==1]#正例
train2=train[train[‘loyalty_loss’]==0]##负例
train3=train2.sample(frac=a)##抽负例
return pd.concat([train1,train3],ignore_index=True)
train=down_sample(train)
train = shuffle(train)
def down_sample(test):
test1=test[test[‘loyalty_loss’]==1]#正例
test2=test[test[‘loyalty_loss’]==0]##负例
test3=test2.sample(frac=a)##抽负例
return pd.concat([test1,test3],ignore_index=True)
test=down_sample(test)
test = shuffle(test)
print (‘train:%s,%s’%train.shape)
print (‘test:%s,%s’%test.shape)
最后模型