关联规则(1)概述
一、关联规则概述
关联规则-策略挖掘中必不可少的算法。
1993年,Agrawal等人在首先提出关联规则概念,迄今已经差不多30年了,在各种算法层出不穷的今天,这算得上是老古董了,比很多人的年纪还大,往往是数据挖掘的入门算法,但深入研究的不多,尤其在风控领域,有着极其重要的应用潜力,是一个被低估的算法。
关联规则-策略挖掘中必不可少的算法。
1993年,Agrawal等人在首先提出关联规则概念,迄今已经差不多30年了,在各种算法层出不穷的今天,这算得上是老古董了,比很多人的年纪还大,往往是数据挖掘的入门算法,但深入研究的不多,尤其在风控领域,有着极其重要的应用潜力,是一个被低估的算法。
Apriori算法是常用的用于挖掘出数据关联规则的算法,它用来找出数据值中频繁出现的数据集合,找出这些集合的模式有助于我们做一些决策。
支持度:关联规则A->B的支持度support=P(AB),指的是事件A和事件B同时发生的概率;
置信度:指的是发生事件A的基础上发生事件B的概率;
频繁k项集:频繁项集表示的就是在数据集中频繁出现的项集(可以是一个,也可以是多个)。如果事件A中包含k个元素,那么称这个事件A为k项集,并且事件A满足最小支持度阈值的事件称为频繁k项集;
应用程序编程接口(API)是一组允许软件组件进行交互的协议。中间接口通常用于简化开发,使软件团队能够重复使用代码。API还通过将应用程序与它们所运行的基础设施脱钩来抽象系统之间的功能。尽管API在现代商业中的好处和用例不断增加,但固有的安全挑战带来了各种安全风险。
一个API代表了一组服务,允许一个程序与另一个外部或内部程序进行通信。当我们谈论API安全时,我们通常指的是保护应用程序的后端服务,包括其数据库、用户管理系统或其他与数据存储交互的组件。API安全包括采用多种工具和做法来保护技术栈的完整性。一个强大的安全的API包括一个组织使用的API和使用这些API的服务。这包括防止恶意行为者访问敏感信息或代表你采取你不希望他们执行的行动。
不幸的是,虽然API是现代应用程序的一个重要组成部分,但它们是攻击者访问敏感信息的一个常见目标。在使用API时,了解第三方应用程序如何通过接口输送数据是至关重要的。此外,随着API日益成为一个攻击载体,API安全措施有助于安全团队评估安全风险,并有一个全面的计划来保护它们。
由于API是公开访问的,它们是窃取敏感信息的常见目标,包括应用逻辑、用户凭证、信用卡号码等。此外,API端点的漏洞也会被恶意行为者利用,以获得对系统或网络的未授权访问,进行其他形式的攻击,如跨站脚本和代码注入。在线网络应用安全项目(OWASP)发布了基于风险的十大漏洞建议,以确保网络API的安全。这些包括:
在开发过程中以及每当API更新时,应解决以下API安全风险:
在多数情况下,专门部署的API安全工具可以更容易、更自动化解决API安全问题。此类平台在整个API生命周期中支持一系列功能,并为组织的API业务逻辑提供必要的上下文以阻止攻击和数据暴露。
这份API安全最佳实践将帮助企业弥补API安全策略中的差距,以下是关于如何确定问题范围和活动优先顺序的一些建议:
以下内容翻译来至:SaltSecurity Checklist-API_Security_Best_Practices
比赛相关整理
好论文整理
公司整理的可开源笔记
2021 KDD 论文:Unveiling Fake Accounts at the Time of Registration: An Unsupervised Approach
- https://dl.acm.org/doi/10.1145/3447548.3467094
小伍哥聊风控:https://mp.weixin.qq.com/s/PE4OSByfngPEJOW8UWVkMw
今天分享一篇腾讯的论文,是一篇非常偏工程化的文章,其中也有很多技术的创新,但是工程上的一些实践感觉还是非常有价值的, 其实在风控业务中,业务的抽象和提取方法,可能远大于算法本身,特别是图学习领域,一个垃圾的图,算法学的越准,错的越离谱。
- 论文下载:https://mboehm7.github.io/resources/sigmod2021b_sliceline.pdf
切片查找——最近一项关于调试机器学习(ML)模型的工作旨在查找前K个数据切片(例如,谓词的连接词,如性别女性和博士学位),其中经过训练的模型的表现明显不如整个训练/测试数据。这些切片可以用于为有问题的子集获取更多数据、添加规则或以其他方式改进模型。与决策树相比,一般的切片查找问题允许重叠的切片。由此产生的搜索空间是巨大的,因为它涵盖了特征的所有子集及其不同的值。因此,现有的工作主要依赖于启发式,并专注于适合单个节点内存的小型数据集。在本文中,我们从算法和系统的角度,以整体的方式解决了切片查找的这些可扩展性限制。我们利用切片大小、错误和结果分数的单调性财产来促进有效的修剪。此外,我们提出了一种优雅的基于线性代数的枚举算法,它允许在现有ML系统的基础上进行快速枚举和自动并行化。对不同真实世界回归和分类数据集的实验表明,有效的修剪和高效的稀疏线性代数使精确枚举变得可行,即使对于具有许多特征、相关性和数据大小超过单节点内存的数据集也是如此。
机器学习(ML)和数据驱动的应用程序从根本上改变了IT格局的许多方面,从面向用户的应用程序到后端决策系统,再到软件和硬件堆栈的优化[21,36,56]。开发和部署用于生产的ML管道过程中的关键步骤是数据验证(分析输入数据特征)[56,59]和模型调试(分析有效的ML模型特征)[22,56,60]。需要考虑的方面包括数据误差(如异质性、人为误差、测量误差)、缺乏模型泛化(如过拟合、不平衡、域外预测)以及系统偏差和缺乏公平性。缺乏模型验证和调试可能会导致无声但严重的问题[56]。例如,种族偏见的监狱风险评估[6]、基于积雪的狼检测[58]和基于图像水印的马检测[38]。模型调试旨在识别此类问题。
模型调试技术:除了基本数据调试和验证[56,59]、服务期间的模型准确性监测和比较[56,60],以及通过混淆矩阵进行手动模型误差分析(例如,正确标签与预测标签的矩阵可视化)外,还存在几种先进的模型调试技术。计算机视觉领域的例子有显著性图[30,63,70]、逐层相关性传播[8,38]和基于遮挡的解释[75],它们都旨在找到对预测有重大影响的输入图像区域。数据管理界最近通过利用这种计算中固有的重叠,为基于遮挡的解释贡献了有效的增量计算方法[47,48]。然而,对于具有连续和分类特征的结构化数据和预测任务,文献相对较少。现有的工作包括解释表[25](主要关注数据摘要)和切片查找器[18,19],其目的是查找前K个数据切片(例如,谓词的连接词,如性别女性和博士学位),其中训练的模型的表现明显不如整个数据集。找到这样的有问题的切片对于理解缺乏训练数据或模型偏差非常有用,但也可以作为改进模型的途径
- 论文:https://dl.acm.org/doi/10.1145/3359789.3359835#:~:text=Neurlux%20does%20not%20rely%20on%20any%20feature%20engineering%2C,report%20is%20from%20a%20malicious%20binary%20or%20not.
- 项目:https://github.com/ucsb-seclab/Neurlux
恶意软件检测在计算机安全中起着至关重要的作用。现代机器学习方法一直以提取恶意特征的领域知识为中心。然而,可以使用许多潜在的功能,手动识别最佳功能既耗时又困难,特别是考虑到恶意软件的多样性。在本文中,我们提出了Neurlux,一种用于恶意软件检测的神经网络。Neurlux不依赖任何特征工程,而是从详细描述行为信息的动态分析报告中自动学习。我们的模型借鉴了文档分类领域的思想,使用报告中的单词序列来预测报告是否来自恶意二进制文件。我们调查了我们模型的学习特征,并显示了它倾向于给予报告的哪些组成部分最高的重要性。然后,我们在两种不同的数据集和报告格式上评估了我们的方法,表明Neurlux改进了现有技术,可以有效地从动态分析报告中学习。此外,我们还表明,我们的方法可移植到其他恶意软件分析环境,并可推广到不同的数据集。
随着恶意软件变得越来越复杂,恶意软件分析也需要不断发展。传统上,大多数反恶意软件使用基于签名的检测,将可执行文件与已知恶意软件签名列表进行交叉引用。然而,这种方法有局限性,因为对恶意软件的任何更改都可能更改签名,因此同一恶意软件的新版本通常可以通过加密、混淆、打包或重新编译原始样本来逃避基于签名的检测。VirusTotal报告称,每天分析超过68万个新样本[40],其中可能有相当多的样本只是之前看到的样本的重新打包版本,正如Brosch等人[3]观察到的那样。超过50%的新恶意软件只是现有恶意软件的重新打包版本。
近年来,由于需要将技术推广到以前看不见的恶意软件样本,因此产生了利用机器学习技术的检测方法[25,26,38]。恶意软件分析可以大致分为两类:代码(静态)分析和行为(动态)分析。静态分析和动态分析都有其优点和缺点。尽管动态分析提供了可执行行为的清晰画面,但它在实践中面临着一些问题。例如,对不可信代码的动态分析需要一个复制目标主机的虚拟机,这需要大量的计算资源。此外,恶意软件可能不会表现出其恶意行为,或者虚拟化环境可能不会反映恶意软件所针对的环境[5,15,27,30]。为了避免这些限制,一些相关工作仅依赖于从静态分析中提取的特征来实现对大量恶意软件样本的快速检测。然而,可以采用各种加密和混淆技术来阻碍静态分析[19,24]。这对静态恶意软件检测器来说是一个更严重的问题,因为包装在今天的良性样本中也被广泛使用。样本[28]。尽管动态分析被证明容易受到规避技术的影响,但运行时行为很难混淆。动态分析二进制文件可以解包并记录其与操作系统的交互,这是恶意软件分析的一个有吸引力的选择。
无论使用静态分析还是动态分析,大多数基于机器学习的恶意软件检测器都严重依赖于相关的领域知识[12,13,34]。这些方法通常依赖于恶意软件专家手动调查的功能,这需要大量的功能工程。例如,Kolbitsch等人[13]捕获了PE可执行程序在为此目的设计的特定功能中的行为图。恶意软件不断被创建、更新和更改,这可能会使最初精心设计的功能不适用于较新的恶意软件或不同的恶意软件家族。在这种情况下,必须不断完善成本高昂的特征工程工作。因此,找到一种降低人工特征工程成本的方法来从原始数据中提取有用的信息是至关重要的。
最近有一些关于基于深度学习的恶意软件分类的工作,这不需要特征工程。然而,现有的深度学习方法并没有利用来自现有动态分析系统的信息,而是倾向于选择一种类型的动态特征[14]或使用静态特征[6]。这些解决方案遗漏了关于每个样本所采取的行动的完整信息。
在本文中,我们提出了Neurlux,这是一个使用神经网络分析动态分析报告的系统。Cuckoo[21]等服务通过在沙盒中跟踪可执行文件来提供对可执行文件的详细动态分析。此分析包含诸如网络活动、注册表更改、文件操作等信息。我们使用这些报告作为分析的基础。也就是说,给定一个动态分析报告,我们希望能够预测该报告是针对恶意软件样本还是良性可执行文件。
我们的直觉是,我们可以将这些报告视为文件。凭借这种直觉,我们提出了Neurlux,这是一种神经网络,它在不需要任何特征工程的情况下学习并操作(清洁的)动态分析报告。Neurlux借用了文档分类领域的概念,将报告视为一系列单词,这些单词构成了一系列句子,从而创建了一个有用的模型。Neurlux打算用学习这些行为伪像或启发式的神经网络来取代昂贵的手工启发式。
为了检查我们的方法是否偏向于特定的报告格式(即沙盒),我们在评估中包括了两个不同的沙盒,即杜鹃沙盒[21]、杜鹃沙盒和一个商业反恶意软件供应商的沙盒(我们将其称为VendorSandbox)。此外,我们使用了两个不同的数据集,一个由商业反恶意软件供应商VendorDataset提供,另一个是标记的基准数据集EMBER[2]EmberDataset。
为了证明Neurlux比特征工程方法做得更好,我们实现了三种这样的技术,并与稍后讨论的技术进行了比较。此外,我们实现并比较了由Karbab等人[11]提出的MalDy模型作为基线。MalDy将行为(动态)报告形式化为一个单词袋(BoW),其中特征是报告中的单词。总之,我们做出了以下贡献: