如果你在浏览互联网时记录所有IP流量(使用Wireshark或类似程序),你会发现许多发送的数据包并不属于你的浏览活动的一部分。
我的问题是:
如果你希望将从你的电脑发送的数据包分为两组:
1) 作为浏览活动的一部分发送的数据包
2) 所有其他数据包
你将如何使用机器学习来解决这个问题?
你可以假设数据包的有效载荷不能用于此目的,因为它要么被封装要么被加密,因此只能使用数据包头,例如TCP窗口大小、TCP标志位、数据包长度和数据包方向。
回答:
这听起来像是一个二元分类问题。
你可以使用三种基本方法:
- 收集你可以手动标记为“浏览活动”和“其他”的数据包,并在其上训练二元分类器(如SVM等)
- 仅收集属于“浏览活动”的数据包,并在其上训练单类分类器(如单类SVM)
- 收集你能收集到的所有数据,并尝试将其聚类成两个簇,可惜的是,有一个(非常小!)的几率找到的划分是你想要的
在上述每种情况下,你都需要准备一组特征来表示你的数据。因此,要么使用一些特征的固定集合,要么你可以尝试简单地使用数据包头作为原始文本,并训练一些基于文本的模型,如某些卷积神经网络等。