我理解的作者:
作者提出了在一般的检测恶意代码的模型评分都是偏高的,因为他们忽略了训练模型时,所用的数据集的时效作用(时间偏差),以及所用数据的正反例分布情况(即空间偏差)。
这里提出了两个概念:
- Spatial bias refers to unrealistic assumptions about the ratio of goodware to malware in the data.
- Temporal bias refers to temporally inconsistent evaluations which integrate future knowledge about the testing objects into the training phase or create unrealistic settings.
翻译过来就是:
- 空间偏差 是指对数据中的好软件与恶意软件的比率所作的不切实际的假设。
- 时态偏差 是指将未来关于测试对象的知识整合到培训阶段或创造不现实的设置的时间不一致的评估。
我对空间偏差的理解:就是我们在训练时所用的训练集与测试集与真实情况下的恶意软件分布的比率存在着很大的差异,而这种差异会使我们的模型的得分出现虚高的现象。
对时间偏差的理解:就是我们在测试模型时,我们的时间已经和模型训练时的时间存在着很大的差异,而一般来说,恶意软件数据是有着时效性的,即数据的作用会有着时间衰减性,在我们存在时间的差异下,我们的测试模型会存在不准确的情况。
提到:
- We implement and publicly release the code of our methodology, TESSERACT, and we further demonstrate how our findings can be used to evaluate performance-cost trade-offs of solutions to mitigate time decay such as active learning
翻译过来是:我们实现并公开发布了我们的方法代码,Tesseract,我们进一步演示了我们的发现如何被用来评估解决方案的性能成本权衡,以减轻风险。 时间衰减,如主动学习。
作者用了Tesseract这个模型去演示受空间偏差和时间偏差影响的模型。
使用到的算法
这里使用到了3种算法:
1,支持向量机
2,随机森林
3,深度学习
其中支持向量机的输入数据与深度学习的输入数据是相同的,作者这样操作是为了使深度学习算法能够发现输入数据存在的潜在关于时间衰减的信息。
数据集
经过统计发现,安卓中的恶意软件的比率大致为 1/10,如下图分布。
这里用了支持向量机和随机森林来获得偏差的数据
时间偏差:
这里提出了概念漂移:
- Concept drift is a problem that occurs in machine learning when a model becomes obsolete as the distribution of incoming data at test-time differs from that of training data, when the assumption does not hold that data is independent and identically distributed.
- 概念漂移是在机器学习中出现的一个问题,当模型变得过时,测试时传入的数据的分布与训练数据的分布不同,即,当假设不成立时,数据是独立且相同分布的。
R.对于减少时间偏差,我们有以下的操作:
- 使训练集的规格小于测试集是为了估计分类器的长期性能和对衰减的鲁棒性。用户可以根据自己的目标考虑不同的时间分割,前提是每一次分割,数据集上都有大量的样本。
- 在测试集上找出一个相应的时间并且在这个时间上自己找到一个合适的时间差,在相邻时间差进行操作。
- 任何时间段的训练集必须严格优先于测试集进入模型操作。
- 每一次的测试的数据都得来自同一时间的数据。
空间偏差:
这里基于测试和训练集中的恶意软件百分比的假设来识别两种主要类型的空间实验偏差。
训练中的空间实验偏差
- in this scenario one may have more interest in finding objects of the minority class (e.g., “more malware”) by improving Recall subject to a constraint on maximum FPR.
提高了在训练时恶意软件的分布比率,既是人们在训练时想的是要尽量多的找到恶意软件,既是提高召回率(查全率),但是这会影响到模型的判断精度。
R.对于减少空间偏差我们有下面的操作:
我们的目标使得测试和训练时候的恶意软件的分布与真实情况下恶意软件的分布情况一致,因为有时候很难知道真实情况下恶意软件的分布情况,所以我们尽量使测试时的恶意软件的分布情况与训练时的恶意软件的分布情况一致。
引入了一种新的度量(AUT)来判定模型的对时间衰减率
首先我们已经对模型进行的时间节点分割的操作,即我们现在有很多个时间节点,然后我们有以下操作:
- 在每一个时间节点上都对train和test的表现进行了评价(例如可以用F1评价)。
- 得到一直积累下来的评价得分(就是前面得分的累加)。
- 定义了一种度量性能的方法AUT,既据时间节点画图下得分曲线下的面积。
优化参数
优化模型的目标:
(Emax是能容忍的最大损失)
我们根据这个条件,用网格搜索来优化我们的参数 (这里是优化我们的学习率)。
TESSERACT: Revealing Hidden Performance
在这个框架的样本下还有着时间这一列特征数据。
通过下面算法来调整训练集中malware的比率:
大致就是用迭代的方法来找到最合适的FI.
(在这里,我们的训练过程一定要遵循前面的要求R)
Delaying Time Decay(减小时间衰减带来的影响)
三个策略:
- Incremental retraining:把每一个月的所有数据都人工打上标签,用来再训练模型。
- Active learning:在每一个月的数据中找出最有价值的数据人工打上标签,送进再训练中。
- Classification with rejection:若样本为低可信度则先放入滞留区,待人工判别,其余的用来重训练。
三个评判:
- Performance §:模型的AUT表现。
- Labeling Cost (L):开销,例如我们人工标记恶意软件时候的花费。
- Quarantine Cost(Q):上面判别的第三种方法所用的隔离手段所带来的开销是多少。