我正在处理序列数据,这些数据是恶意软件 win-api 调用的长列表。我试图将识别“恶意软件行为”的问题转化为查找顺序模式之一。我将每个 api 调用视为单个项目项集。不同的可能项目(api 调用)的数量非常大。
现在,当我应用SPADE 算法(另请参阅 Zaki,SPADE:挖掘频繁序列的有效算法,机器学习,42、31–60、2001)时,我遇到了内存问题。有没有更好的替代方法来在大词汇量序列中找到序列模式?
我正在处理序列数据,这些数据是恶意软件 win-api 调用的长列表。我试图将识别“恶意软件行为”的问题转化为查找顺序模式之一。我将每个 api 调用视为单个项目项集。不同的可能项目(api 调用)的数量非常大。
现在,当我应用SPADE 算法(另请参阅 Zaki,SPADE:挖掘频繁序列的有效算法,机器学习,42、31–60、2001)时,我遇到了内存问题。有没有更好的替代方法来在大词汇量序列中找到序列模式?
您可以将数据映射到序列很重要的特征空间,以及通过滑动窗口计算的统计数据和累积统计数据,并将其用于决策树。
决策树可以处理序列和非序列数据。这可能会大大降低您的数据复杂性。
您可以尝试其他顺序模式挖掘算法。
比如开源的SPMF java数据挖掘库提供SPADE,还有PrefixSpan、SPAM、CM-SPAM、CM-SPADE、GSP等(顺便说一下,我是项目创始人)。据我所知,CM-SPADE 通常比 SPADE 快。就内存而言,SPAM 使用的内存可能更少。您可以尝试一下。