最近几周都沉迷机器学习不可自拔,非常有 “相见恨晚” 的感觉,想丢下一切跟机器学习走 :)
后果就是工作进度拉下不少 o(╥﹏╥)o,趁着周五疯狂赶进度。
有这样一个场景:Agent 每隔一段时间会回传 CPU 的占用情况(数据存在 ElasticSearch 里),需要提取一天内 CPU 占用率过高的主机列表发邮件提醒我。
原本代码是这样写的:
但是一台机器可能会触发多次CPU占用率过高的记录(无需重复提醒),还有一些机器只触发了一次的CPU占用率过高(偶发事件,应该忽略),这都需要特殊处理下。
大脑放空...这大概得做个 groupby 吧...要是改这个ES查询语句,我可能又要改半天了...说起来,pandas 的 groupby 是真好用啊...要是 pandas 能用在这个破项目里就好了...诶诶,怎么不能用啊?
查了下资料,[dict1, dict2, dict3...] 这种格式的可以直接转化为 dataframe 对象。处理完的 dataframe 对象也可以轻松的转化为各种形式的 Python 内置数据类型。代码如下:
处理后的告警结果如下(按平均 CPU 占用率排序。不过港真,这种单核 CPU 占用率在30%的辣鸡 Agent 真的是我写出来的吗?)
想想参加个比赛,被各种数据虐来虐去,groupby用了多少次准确率还是低到令人发指。用在这犄角旮旯统计的事情上,几行代码分分钟解决问题。
这是一个多么痛的领悟:Pandas、Numpy 用于科学计算,并非机器学习专用。
写完又开始神游天边,在我没接触机器学习,也没用过 Pandas、Numpy 之前,是不是花了很多冤枉时间来写辣鸡代码?
突然让我感受到机器学习的重要性,是从隔壁组做了个基于机器学习的流量分析开始。将贝叶斯算法应用于预处理阶段,可以过滤掉大部分的正常请求,比正则或者字符串的匹配效率要高很多。再对剩下的数据进行二次处理,由于数据量不大,正则表达式的效率问题也就不那么突出了。
而后,我想做个服务端监控,和领导聊我的一些想法的时候,领导丢给我了一个词:UEBA。本来以为是个IT圈的新词,搜索的时候发现竟然和安全有千丝万缕的关系。(https://www.jianshu.com/p/49b93dd261b8)
春节放假的时候,想研究一下开源的 HIDS —— ossec,买了本巨厚的《OSSIM最佳实践》翻了一遍,ossec Agent 源码也看了一部分,独独空下了 Server 端事件分析、上下文关联这部分的内容。当时觉得太复杂,没想到最后还是逃不开命运。
四月份开始正儿八经的开始看书看视频,跟着吴恩达老师学了两周,了解了一些简单算法的原理,在数学公式里一脸懵逼。用octave做出第一个仿真的时候,开心到炸裂~
万能的朋友推荐了本书(Machine Learning and Deep Learning in python using Scikit-Learn and TensorFlow, github: https://github.com/ageron/handson-ml),用 Jupyter 一步步跟着复现。人生中头一次看原文书,竟然还能理解的差不多,感谢我的高中老师 ヽ( ̄▽ ̄)و
书还没看到一半,万能的朋友再次出现,给我安利了一个机器学习比赛。选了个业务安全方向的题目,自己折腾了一周多,晚上睡觉都梦到 pd.merge,训练出的准确率还是惨不忍睹。积累了一丢丢实践经验,准备回去继续看书,毕竟厚积才能薄发。
作为一只机器学习界的萌新,还是要把常用算法都实践一波。YSRC开源的驭龙 HIDS 源码要看,OSSIM 的事件关联分析部分要看。
沿着 “漏洞发现” 这条路,我从扫描器和 SDL 做到 HIDS。之后会沿着 “安全感知” 的这条路,结合威胁数据分析和机器学习,希望能找到适合我的新方向 (~ ̄▽ ̄)~