机器学习笔记(6)---K-近邻算法(4)---使用K近邻算法检测异常操作之一

这篇博客介绍了如何利用K-近邻(KNN)算法来检测Web安全中的异常操作。作者参考《Web安全之机器学习》,通过分析50个用户的操作日志,将数据转化为KNN可理解的特征,如命令出现频率等,并构建了训练和测试数据集。尽管实验结果显示预测结果均为正常操作,但作者强调从中仍能学到数据预处理和特征工程的方法。
摘要由CSDN通过智能技术生成

前言

接着前面三篇学习笔记《约会对象魅力程度分类》、《使用sklearn中的KNN算法》和《KNN手写识别系统》,本节记录使用K近邻算法检测异常操作,主要参考《Web安全之机器学习》 。
转载请注明出处:http://blog.csdn.net/rosetta

使用K近邻算法检测异常操作之一

实验数据及情况

实验数据在Schonlau个人网站中:http://www.schonlau.net/
Schonlau实验数据

训练数据包含50个用户的操作日志(网站上对应红框处“Masquerade Data(zip File)”)和一个标签文件label.txt(网站上对应的红框处“WIndows ascii file”)

在本机解压后是这样子的:
Schonlau数据解压后
实验数据一共收集了50个用户的操作命令(在理解代码时,只先考虑1个用户的即可),每个用户命令为15000条,前5000条是正常数据(这里隐含的一层意思是,我不需要特意指定标签了,你在代码中把我们全设置成0就可以了(本次实验就0表示正常操作;1表示异常操作)),后10000条随机包含了异常操作。

为了方便操作,会把数据集的每100个命令作为一个操作序列,所以15000条数据实际上看作150条,而前50条都是正常的,那么只有后面的100条需要标记,所以lable.txt中只有100条,而不是150条。在代码中使用KNN算法时,会把训练数据的label的前50条自动补上0,后100条从lable.txt中读取,这样就组合出了代码中实际的lable是150条的,和数据的条目能对应上了。

注意下本次实验样本数据的标签放在label.txt中,要以列方向去看,比如User1样本的标签对应第0列(因为加载到python list中是以0开始算的),User3就是第2列了。

另外在训练数据的时候,怎么把每组的100条数据清洗成易理解的数据?本实验是这么做的(针对1个用户来说):先统计15000条数据中最频繁使用的50个命令(后续称全局TOP50)和最不频繁使用的50个命令(后续称LOW50),然后统计每个100条数据中不重复命令的个数,及最频繁使用的前10个命令和是不频繁使用的10个命令,拿前10和后10分别和TOP50 LOW50取交集,生成一条数据的特征list:[无重复命令个数,和TOP50交集个数,和LOW50交集个数],生成这样的特征一共150条。

代码中的特征变量由user_cmd_feature list表示。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值