我想找到不同的模式识别算法来检测不同类型的欺诈。我有 100 万个关于客户信息的非结构化文本文档,其中包含有关客户名称、查看者、云中位置的元数据。
以下是我正在考虑的模式以及我想检测的相关欺诈行为:
数字模式 - 虚构的发票编号,虚构生成的交易金额。
时间模式 - 交易发生过于频繁,活动在不寻常的时间或日期。
名称模式 - 相似和警告的名称和地址。
地理模式 - 明显不相关的实体之间的邻近关系。
我可以使用什么技术?任何关键字?
我想找到不同的模式识别算法来检测不同类型的欺诈。我有 100 万个关于客户信息的非结构化文本文档,其中包含有关客户名称、查看者、云中位置的元数据。
以下是我正在考虑的模式以及我想检测的相关欺诈行为:
数字模式 - 虚构的发票编号,虚构生成的交易金额。
时间模式 - 交易发生过于频繁,活动在不寻常的时间或日期。
名称模式 - 相似和警告的名称和地址。
地理模式 - 明显不相关的实体之间的邻近关系。
我可以使用什么技术?任何关键字?
我一直致力于使用文本挖掘构建欺诈检测解决方案,因此我了解导致此问题的场景。我将讨论构建欺诈检测解决方案应遵循的方法/技术。我将其分为 4 个部分
作为第一步,您必须在相关业务线的主题专家的帮助下识别欺诈概念。欺诈概念是代表可疑场景的人、特征、实体或事件,相似的概念可以组合在一起形成概念类别。每个概念进一步由单词、短语、实体等表示。文档中这些单词/短语的存在意味着该交易中出现了欺诈概念。该练习的最终结果将是一个欺诈字典,它是概念和可疑关键词的存储库。
例如考虑问题中提到的数据集,numeric patterns成为概念类别,fictitious invoice numbers并且fictitiously-generated transaction amounts是两个不同的概念。将有一个与该概念相关联的关键字/短语,应将其捕获到欺诈字典中。
您可以使用 NLP 技术来构建字典。
脚步:
1) Convert the sentence to lowercase
2) Remove stopwords, these are common words found in a language. Words like for, very, and, of, are, etc, are common stop words
3) Extract n-gram i.e., a contiguous sequence of n items from a given sequence of text. simply increasing n, model can be used to store more context
4) Assign a syntactic label (noun, verb etc.)
5) Knowledge extraction from text through semantic/syntactic analysis approach i.e., try to retain words that hold higher weight in a sentence like Noun/Verb
可以识别要与欺诈词典中的短语/关键字和交易中的欺诈概念进行语义匹配的短语/关键字。此时,需要注意维护使用关键字/短语以避免误报的上下文(否定,积极意义)。
对于交易中每个识别出的欺诈概念,可以分配权重 1。这样做是为了计算交易的可疑分数。分数越高可疑。
请注意,使用具有大量文本内容的更大数据集和大量欺诈字典的组合会导致潜在识别的数量更多。
您可以考虑使用 OpenNLP / StanfordNLP 进行词性标注。大多数编程语言都有 OpenNLP/StanfordNLP 的支持库。您可以根据自己的舒适度选择语言。
希望这可以帮助。
没有更多细节,很难给出详细的建议,但乍一看,这似乎是机器学习的教科书案例。看看您是否可以获得具有已知欺诈活动的类似数据集,并根据数据选择机器学习方法。
我建议使用Scikit Learn在R或Python中玩这个。文本将需要一些时间,但很容易规范化并变成一个特征集。我建议应用TFIDF对整个语料库中的每个文本文档进行规范化。然后,您将拥有许多文本功能,您可以将它们与元数据功能结合起来进行新奇检测。Scikit-Learn 和它的优秀用户指南是在这个领域入门的一个很好的资源,就像Mahout(基于 Java)和Mahout In Action一书一样。R 中也有无数的包来实现这一点。
需要注意的一件事是,您似乎建议了要检测欺诈的特定方法。这种基于预感的机器学习被称为应用启发式算法,并且往往比纯机器学习方法表现更差。您应该只专注于使用新奇检测算法或可能的异常检测算法,并让统计数据发现欺诈,而不是尝试应用您自己的直觉。