赛题地址:http://bdc.saikr.com/vse/bdc/2017
1 引言
本次大赛以某人机验证产品采集的鼠标轨迹脱敏数据为基础,期望用机器学习算法来提高人机验证中各种机器行为的检出率,其中包括对抗过程中出现的新的攻击手段的检测。复赛在DIX平台上利用初赛3000条训练集数据轨迹预测200万条测试集数据轨迹。
1.1 基本解题思路
由于复赛的200万条数据与初赛的训练集和A、B榜数据存在很大的不同,初赛特征不能完全适用于复赛,所以我们队在复赛期间重新观察3000训练数据(具体见2.1节)后认为:机器样本之中也存在着多种不同的类别,同样的特征在不同机器类别中会出现互斥现象,即多个特征用在同一模型的效果不如将多个特征分开使用的效果好。故而我们队采用不同的模型识别不同种类的机器样本,最后将不同模型的识别结果合并作为最终的机器样本结果。
我们队主要分为了五个不同的预测结果,包括四个GBDT模型及特征和一条规则,具体为:
1) GBDT1:主要以初赛的模型特征作为基础,特征20维;
2) rule:以3000训练集中的2800-2900机器样本为基础提取的规则;
3) GBDT2:采用一定条件对预测集数据进行筛选,再采用gbdt模型训练预测,包括‘x方向上速度平均值比最后速度平均值’及‘轨迹是否有回勾’两个特征;
4) GBDT3:采用gbdt模型训练预测,包括‘x方向上速度平均值比最后速度平均值’及‘角度唯一值个数的变异系数’两个特征;
5) GBDT4:采用gbdt模型训练预测,包括‘y方向增量的增量平均卷积的标准差’及‘y方向增量的增量标准差卷积的标准差’两个特征。
1.2 文件代码描述
所有代码包含在‘code’文件夹内,在DIX平台的运行方式参见3.2节,每一个代码文件的具体作用如下:
2 get_feature.py——初赛20维训练集测试集特征提取
2 GBDT.py——GBDT1模型训练及预测结果
2 rules.py——rule规则提取结果
2 get_linefeature.py——GBDT2、GBDT3、GBDT4训练集测试集特征提取
2 lineGBDT.py——GBDT2模型训练及预测结果
2 angleGBDT.py——GBDT3模型训练及预测结果
2 rollingGDBT.py——GBDT4模型训练及预测结果
2 merge.py——预测结果合并
2 模型及特征工程
2.1 数据观察
如上述所言,我们重点对3000训练集中的后400机器样本进行了轨迹观察,包括x、y方向速度、增量标准差、加速度等。最后我们将400条黑样本划分为了三个大类:
1)2601-2800为一大类,该类中按顺序每50条轨迹为一小类,该大类的主要特点就是每一条轨迹都能在其所属的小类中找到模板,即其最终的序列是相同的,只是根据验证码滑块的位置取到不同的序列,如图2-1所示就是2601-2650小类中x方向增量为0的序列
图2-1
2)2801-2900为一大类,该类的主要特点是其x方向的增量固定,用我们的特征表示为delt_x_std(x方向上增量标准差)为0。
3)2901-3000为一大类,该类的主要特点是y会频繁地随机上下波动,对y方向上的增量取窗口为2的滑窗标准差,其序列相比于前2900条轨迹更为散乱,即标准差更大。
2.2 GBDT1
该模型以初赛的模型特征作为基础,经过特征筛选后的最终特征20维,具体含义如下:
- 起始点特征:
2 ‘first_data_x’, #起始点x坐标
2 ‘first_speed_x’, #起始点x方向速度
2 ‘first_data_y’, #起始点y坐标
2 ‘first_delt_t’, #起始点与第二个点时间的时间差
- 统计信息特征:
2 ’X_max‘, #轨迹x坐标的最大值
2 ’y_min‘, #轨迹y坐标的最小值
2 ‘x_min ##轨迹x坐标的最小值
- 规则特征:
2 ‘data_x_return‘, #是否有回勾
- 交叉特征
2 ‘speed_xstd_laststd‘ #x 方向速度全局的标准差与最后9个点标准差的比值