1. 背景
移动时代,在流量快速变现的利益驱动下,流量造假越发的猖獗,流量造假形式和技术手段也越来越多。以往通过单一特征人工分析渠道流量作弊情况,已经难以适应当前复杂的环境。随着机器学习的快速的发展,解决了许多难题,我们也希望通过机器学习的手段,检测出当前的作弊流量。
2. 技术方案
初步选择非监督学习算法中的K-means均值聚类算法,计划将所按照流量来源划分为一个个的族群(即每个渠道)。通过判断渠道流量的特征来分辨渠道的流量是否正常。
使用TensorFlow作为机器学习的框架,TF是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。数据流图是是一个有向图,使用结点和线来描述数学计算。数据流图可以方便的将各个节点分配到不同的计算设备上完成异步并行计算,非常适合大规模的机器学习应用。
3. 实现
3.1 K-means的算法步骤
3.2 具体实现
3.2.1 数据预处理
由于实际环境复杂,从生产环境拿到的数据需要进行处理才能进行训练。
1. 选定样本属性,此次属性有。
2. 文本数值化,由于属性值是文本值,不能用于数值计算,比如location,可以统计出所有点击分布的省份,然后数值化成1,2,3,4….。
3. 缺省值处理,实际接触的数据存在缺省值得情况,需要依据具体情况进行填充。
4. 归一化,由于属性互相之间的单位不同,单位越小,数值越大,对结果影响越大,所以需要按照实际情况对数据的单位进行调整。
3.2.2 设定聚类数
K值得选定是决定整个模型的关键,事先设定K值为渠道的数目,根据最终结果再继续调整质心的数目。
3.2.3 测定质心与样本的距离
K-means聚类是以距离测度作为聚类依据,因此对于同一个样本点,选取不同的距离测度,得到的距离也不同,本次使用常见的欧几里得距离作为相异度,其意义就是两个元素在欧氏空间中的集合距离,具体公式定义如下。
3.2.4 重新选定质心
对于每一个聚类,重新选定质心,质心一般为所有数据点的中心值,质心选定的公式如下:
3.2.5 停止条件
迭代次数是否达到上限,或者算法已经收敛,即质心不在变化。
3.2.6 代价函数
代价函数是判断算法收敛的条件,代价函数的差分值小于一定数值的时候(N次越不过最小值点)即可认为收敛了。
3.2.7 重复实验
由于k-means算法依赖于K值,和初始中心点的选择,所以可以多试验几次,对比实验结果。过程中可以使用TF的界面工具TensorBoard直观的观看训练的过程。
3.2.8 验证结果
由于正常的渠道的流量应该是具有规律性,往往与时间、区域以及设备的分布有很大关联性,所以,如果最终簇的分布是比较离散没有呈现一定的聚集性,则表示此渠道的流量可能存在问题。反之则比较正常。
因此得到最终的聚类结果后,需要事先根据算法用计算簇的聚集性,通常使用的方法有计算方差等,或者使用Matplotlib通过图像方法将簇绘制成图,观察图像特征,得出最终结果。
如下图所示,最终结果分为了三类,黑框中的样本聚集程度明显高于其他两个框中的样本,因此可以猜测其他两个框中得流量可能存在问题,需要进一步调查。
4. 优化方向
4.1 K值的调整
二分k-means算法(bisecting k-means)是为了克服k-means算法收敛于局部最小值的问题而提出的。该算法首先将所有点作为一个簇,然后将该簇一分为二。之后选择其中一个簇继续划分,选择哪一个簇进行划分取决于对其划分是否可以最大程度降低SSE的值,上述过程不断迭代,直到得到用户指定的簇数目为止。
4.2 中心点选择
使用k-medoids算法,在 k-means 中,中心点取为当前 cluster 中所有数据点的平均值,而在 k-medoids 中,中心点的选取限制在当前 cluster 所包含的数据点的集合中。由于K-means要求数据点处于一个欧氏空间中,因此对数据的要求比较高,在实际中可能达不到这样的要求,所以可以使用k-medoids算法选择中心点。
5. 结论
最终结论,可以使用k-means结合TF做异常流量甄别,只不过对数据的完整度要求较高,而且需要适应的调整算法以及参数,来不断完善识别的精准度。
领取专属 10元无门槛券
私享最新 技术干货