@Macux
2017-08-24T11:53:28.000000Z
字数 1874
阅读 1177
Mobvista
目标:产生带有正负例标签的训练集,保证训练集里的信息是足够的、无偏的、准确的。一句话概括:训练集包含了要学习的绝大多数知识。
现在的“基于规则”的方法,是可以找到 click fraud的,但是会存在漏网之鱼,也可能有错判。
错判的问题,容易解决:将规则定的更严厉,做到宁放过勿杀错。
那么找不全的问题要怎么解决? by algorithm
- 一开始,先定一个很强的规则,找出高precision的fraud click(标记为fraud) 和 高precision的OK click(标记为OK)。比如有M条规则,至少满足N条的才记为fraud,至多满足K条的才记为OK
- 不符合以上两种标记条件的,标记为observation(待观察)
- 我们的目标就是让模型,从observation中,学习到更多的反作弊规则,即找出更多的fraud click。
- 学习方法:无监督学习、半监督学习、监督学习
- 学习过程:
- 取N条记录(怎么取:可以按照时间窗口取,原则是能被强规则标记出更多fraud click),用强规则方法,给记录打标,fraud or observation or OK。明显,这样的打标方法肯定是有偏的。因为强规则是为了追求高precision,而牺牲recall。记fraud&ok set为set1,其余为set2
- 接下来,就是从observation集找出遗漏的fraud click,让set1有更多的负样例的知识。
3 种方法从observation中找出遗漏的fraud click
- 监督学习。
a) 如果直接把set1丢给监督学习的模型,一定不会有特别好的结果(泛化能力比较差)。因为客观上,set1并不含有全部的作弊知识。set1只是将那些作弊嫌疑最大,作弊手法最“粗糙”的click揪了出来。还有一些比较隐蔽的作弊,被丢在了observation中。
b) 我们可以通过堆更多的特征来弥补这一点,并利用set1中的现有的知识,进行迭代学习。
c) 从set1中可以扩展出许多关于主渠道和子渠道的过往作弊特征:比如当前点击是否是来自过往3天有作弊记录的渠道,这个渠道过往3天的作弊均值、作弊占比等等,这个渠道所在主渠道过往3天的作弊占比,作弊点击均值,最值等等,记为
d) 扩充后的特征维度,加上人工堆积的特征维度,以及特征之间的聚合交叉,构成总的特征空间。
e) 堆完特征 & 做完数据预处理(这两项maybe会耗费很多的时间),用set1训练多个分类模型,得到模型。由于正负样例的比例差距会很大,这里使用AUC作为模型评价标准。
f) 然后按照点击时间的先后顺序,一条一条的进行预测(点击是否作弊),然后更新渠道特征集
g) 最后负样例的确定标准:至少k个模型都标注它为负样例。
h) 这样set1的样本量增加到set3,set2的样本量降低为set4- 半监督学习
a) maybe Reinforcement Learning works.- 无监督学习
a) 有两种玩法:结合监督学习一起玩 & 单独玩。
b) 对监督学习的学习结果进行聚类,设置簇为2时,观察各散点的分布。
c) 设一个阈值,将距离超过的单独拿出来,这样set3剩下的数据中负样例的可信度变高。(<=> 还是在评价分类模型的结果)
d) 单独玩,找一个聚类算法,对特征空间里的特征重新做数据预处理,maybe不需要那么多的分桶处理,maybe一个合理的归一化会带来更棒的结果。
e) 难点:如何评价聚类结果
f) 数学指标评价:暂时看到的,比较推荐的有silhouette coefficient & S_Dbw
h) 可视化评价:绘制图形,观察离散点的分布。
i) 异常值评价:人工加入异常值,观察算法对异常值的鲁棒程度。
j) 最重要的业务评价:将离中心点较远的一些点拿出来,人为判断。
k) 监督学习判断:将聚类判断的结果和用监督学习分类器判断的结果进行对比,观察差异。