提交得分
问题
数据处理
- 所有数据只看了数据的分布情况,了解其标签含义,未深入
- 数据有的很难知道含义,比如说职业职称,这些数具体代表啥含义不清楚,可能是数据举办方故意保密,保护个人隐私。
评测
本次比赛成绩排名根据测试集的在公积金逾期风险监控中,需要尽可能做到尽可能少的误伤和尽可能准确地探测,于是我们选择“在FPR较低时的TPR加权平均值”作为平均指标。
给定一个阀值,可根据混淆矩阵计算TPR(覆盖率)和FPR(打扰率)
TPR = TP /(TP + FN)
FPR = FP /(FP + TN)
其中,TP、FN、FP、TN分别为真正例、假反例、假正例、真反例。
这里的评分指标,首先计算了3个覆盖率TPR:
TPR1:FPR=0.001时的TPR
TPR2:FPR=0.005时的TPR
TPR3:FPR=0.01时的TPR
最终成绩= 0.4 * TPR1 + 0.3 * TPR2 + 0.3 * TPR3 代码如下:
def tpr_weight_funtion(y_true,y_predict):
d = pd.DataFrame()
d['prob'] = list(y_predict)
d['y'] = list(y_true)
d = d.sort_values(['prob'], ascending=[0])
y = d.y
PosAll = pd.Series(y).value_counts()[1]
NegAll = pd.Series(y).value_counts()[0]
pCumsum = d['y'].cumsum()
nCumsum = np.arange(len(y)) - pCumsum + 1
pCumsumPer = pCumsum / PosAll
nCumsumPer = nCumsum / NegAll
TR1 = pCumsumPer[abs(nCumsumPer-0.001).idxmin()]
TR2 = pCumsumPer[abs(nCumsumPer-0.005).idxmin()]
TR3 = pCumsumPer[abs(nCumsumPer-0.01).idxmin()]
return 0.4 * TR1 + 0.3 * TR2 + 0.3 * TR3
我的理解是:不要把一个不是逾期的人判为逾期,数据中的逾期的人的样本很少,逾期率只有0.063925,那训练时就可能把逾期的人当作异常值剔除。
要解决的问题
- 数据预处理,数据一共有20个特征,这20个特征都需要还是有无关特征,对于连续值需不需要离散化?
- 选择什么模型,暂时测过的是贝叶斯与决策树,决策树比贝叶斯好很多,我们还有很多模型可以继续测试
- 题目说训练集提供40000名,测试集提供15000名,此数据测试集增加了干扰样本,这些干扰样本不参与最终分数的计算。我们训练时不需要测试集,测试集是通过训练好的模型来输出结果,那么说,我们还需要考虑吗
- 个人的住房公积金缴存和贷款等数据信息,不太懂什么是公积金,了解相关知识应该会更好一些。