机器学习-聚类分析,我的第一次工程化实践

像一个优秀的工程师一样使用机器学习,而不要像一个机器学习专家一样使用机器学习方法。 ---google


公司在今年计划部署UEBA平台,整合已有的态势感知、纵深防御、SOC等,旨在利用大数据、机器学习解决一些以往无法分析、溯源的内外部威胁。


对于UEBA,14年之后谈起的概念,国内目前谈论的并不多,但在一些大厂内部可能早已投入部署,这是一个大概念,是安全行业的一个大跨步。想要了解的小伙伴可以自行百度,但百度推荐的内容,均是一些厂家和个人的介绍,国内并未对此概念进行普及。

机器学习-聚类分析,我的第一次工程化实践_第1张图片

闲话不多说,以下进入正题


大体流程如下

· 通过获取的用户信息,这些信息基本是来自于甲方,我们通过数据采集技术,转接到平台的数据。

· 对数据进行ETL,现定的是一周进行一次离线批处理。

· 需要参与机器学习训练的特征有11个,将这些信息存储到Mysql或者Hive中,以下两幅图分别是 特征字段 和 Table的样本。


机器学习-聚类分析,我的第一次工程化实践_第2张图片

· 算法计划采用基于密度的DBscan算法。

· 训练好的模型保存到HDFS上。

· 使用的时候,从HDFS上加载下来,进行聚类,输出结果。 

以上是对于该项目工程化的一个概述,需要对此一步步的实现。作为小白,我的心路历程如下。这里我不会对算法原理进行过多的阐述,仅仅分享工程化的思路。


从算法着手,DBscan,将所有样本映射到空间中,空间的维度,与点的位置由特征数和特征值决定。那么,思考到这里,问题便出现了。

机器学习-聚类分析,我的第一次工程化实践_第3张图片

我的数据不都是数值型的,这该怎样映射到空间中呢?

通过咨询机器学习同学,他们建议我去了解以下特征工程这个分支,小编计算机专业出身,没系统的学习数学、统计学、机器学习,真心不知道这个东西,一了解,才明白了自己之前的看法如井底之蛙,外面的世界还大的很。


有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已


其重要性可见一斑,对机器学习只停留在算法阶段的我,有一种世界这么大,赶紧去看看的心情。

机器学习-聚类分析,我的第一次工程化实践_第4张图片

对应自己的需求,就是将字符串类型的特征,转换为合理的数值型,并能够映射到空间中,但我怎么保障,得到的空间点,不是随意分布,而是对应特征字段的字符串值进行一个映射呢?


这块引入特征编码,我采用的是独热编码(one-hot编码),将每一个状态代表一个bit位,这样的空间分布是完全合理的。

举个栗子:

机器学习-聚类分析,我的第一次工程化实践_第5张图片
机器学习-聚类分析,我的第一次工程化实践_第6张图片


我的转换过程如下:

将字符串转换为向量(因为后台使用的scala语言,调用sparkMlib的算法库),如果是python的话,转化后的值为0和1组成的数值。


通过这些独热编码后的特征值,作为DBscan的输入,进行模型训练。

以上便是整体的一个流程,但其中还存在很多问题,比如,现在的特征是人为的选择的,带有一定的主观性,并不能代表最好的特征,这些都需要考证、实验,后期我会更新这块的内容,希望大家能给与建议,十分感激!


机器学习-聚类分析,我的第一次工程化实践_第7张图片
我的公众号,不定期更新,你值得拥有

你可能感兴趣的:(机器学习-聚类分析,我的第一次工程化实践)