实例 | 利用犯罪记录聚类和分类暴力行为(附步骤解析)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

介绍


很高兴知道Data Science的应用超越了商业场景和企业盈利的目的。最近我有幸承担了全国安全社区网络的一项非盈利项目,使我能够亲身体验应用机器学习的方法来服务我们的社区。纽约州约翰杰伊刑事司法学院的研究部门分享了地方检察官提供的的城市数据,由于签署了不公开协议,所以我不会列举这些数据。

研究焦点是亲密伴侣暴力案件,并为此类案件提供外展计划。主要问题在于,从这么多不同的案例记录中,找出他们正在寻找的案例是非常低效的,因此我们的目标是开发一种更简单的方法来解决这一难题。

无监督学习

数据跨度是从2015年到2017年。DA(地方检察官)数据包含描述以前案件详情的特征,例如受害者/嫌疑犯姓名,犯罪地点,可疑行为等。以其原始形式记录的数据没有符合客户对“亲密”的确切定义的标签,但有列可以指出它。

然而,由于这些详细的信息是针对这些案件给出的,所以我首先会尽我所能使用一个无监督的学习方法来总结数据。我决定根据所有记录中的可疑行为对案件进行聚集。 我的目标是根据嫌疑人的表现的相似性来聚集案件。如果可以创建行为概况,那么我们就可以根据它们属于哪个集群,更有效地给嫌疑犯分配各种外展活动。

1. PCA数据转换

有39个特征描述了我们可以跟踪的嫌疑犯的行为。这些包括“受损”,“推动”和“投掷物品”等动作。 唯一的问题是,这些是二进制特征,处理它们可能有点棘手。

103993b7696f3439443d9d5db60515ef3b37cb18

经过多次失败的系统聚类实验以及使用不同相异性度量的测试后,我发现在使用主成分分析法对变量进行转换之后应用K均值聚类产生了解释度非常高的聚类。

整个过程可以总结在下图中:

30d335e008f3a663c03c1d3166637000077f2e0b

通常情况下,我们认为通过PCA选择解释足够差异的主要成分的数量,是降低维度的一种手段。 数据降维的情况如下所示:

c76155dcc935f44141ee68a0d752902b09dc63ee

但是,我们的目标不是要减少我们拥有的特征量,我们的目标是将它们转换为我们可以聚类的数字数据。为此,我们将所有39个主成分得分(又称特征向量),保留100%的原始方差并对它们进行聚类。

2. 聚类

K均值聚类中的目标函数是最小化群内差异。 看看陡坡图,5、6个集群看起来是正确的。 在对两者进行试验之后,我得出结论认为5个集群最具可解释性。

51186520a8420535a54eecbfc452e7da4a692943

3. 集群档案


在为每个观察分配一个聚类标签并将它们与原始数据集匹配后,描述它们就变得非常容易。 回顾二进制数据,我们可以简单地将每个特性和每个集群中的所有1加起来。 具有较高总和的特征在描述该集群时将被赋予更多权重。下面是集群前3个最突出的特征的例子,这些特征被描述为“在影响下相遇”:

4de6ddaf2271de1d830e25271cfc548b85c66a49

根据上面的示例分析,最终集群看起来像这样! 每个案件将被标记为属于这些集群中的一个,并且每种情况下的嫌疑人都被假定为采用其中一个档案。

32ee639c42dc9577257875cd643696b0af0f47c5

监督学习

在开始任何监督学习方法之前,我首先需要一个可以帮助指导机器学习的功能。重申一下,我们的目标是能够对案件进行分类,不管它是否亲密,因为发现并非所有案件都被正确分类。

1. 特征工程—标记“亲密”

全国安全社区网络将“亲密关系”定义为目前或以前的任何密切关系。 这包括结婚,约会或者一起生孩子。使用数据集中的各种列,我通过定义python函数设计了监督功能“亲密关系”:

ab2e80e6d00d2d160280903c1264adb69dacf4cf

2. 选择一个模型

现在我已经对每个案例做了标记(“亲密”/“非亲密”),我需要建立一个分类模型。出于多种原因,我决定采用Logistic回归模型,对多项式朴素贝叶斯(Multinomial Naive Bayes)分类器进行建模:

d47e62d2b349aca45e42305ed6714efbe5ed61d9 由于训练规模较小,生成的朴素贝叶斯(Naive Bayes)模型将超越本文Andrew Ng所述的判别性Logistic回归模型;
d47e62d2b349aca45e42305ed6714efbe5ed61d9 朴素贝叶斯(Naive Bayes)及其独立特征的假设使得模型更简单,更普通,因此变体更少;
d47e62d2b349aca45e42305ed6714efbe5ed61d9 朴素贝叶斯(Naive Bayes)因其用于文本数据和垃圾邮件检测而名声鹤唳。

增加最后一点非常有趣的,提供的数据集包含了现场警官的文字叙述。 我们可以通过警官叙述的词语选择来检测亲密关系吗?我决定找出答案。

3. 自然语言处理

为了运行朴素贝叶斯分类器(Multinomial Naive Bayes classifier),我需要首先清理文本数据。 在Python中使用NLTK模块,采取了以下步骤:

d47e62d2b349aca45e42305ed6714efbe5ed61d9 标记叙述(使用RegexpTokenizer)
d47e62d2b349aca45e42305ed6714efbe5ed61d9 删除无用词(使用无用词)
d47e62d2b349aca45e42305ed6714efbe5ed61d9 应用词形(使用WordNetLemmatizer)

由此产生的叙述看起来像这样:

27bb5c5e403f95a289719a3204e03c50f404d3e1

处理完文本之后,我将标记化和词元化的叙述转换为一个交易对象,其中每个单词都是自己的特征,每一行都是叙述或“文档”。 这也可以被称为“文档术语矩阵”。

8f9bb5f1a4e6a6e62e06cda29402b02be25b1d49

4. 降维

文档术语矩阵生成了3,805个特征。 为了减少这一点,以提高我们的模型的准确性,不够频繁的特征被删除。通过使用验证集合,我得出结论,删除所有出现少于两次的单词就足够了。这已经将维度降低到1861个特征。

5. 调整多项式朴素贝叶斯(Multinomial Naive Bayes)

多项式朴素贝叶斯分类器(Multinomial Naive Bayes classifier)默认将alpha设置为1. Alpha是一个平滑参数,用于处理出现在未在训练集中训练的保留集中的单词。 使用GridSearchCV,alpha被调整为2.53。

6. 模型评估

在用α= 2.53重置多项式朴素贝叶斯(Multinomial Naive Bayes)并将数据分解成训练集和测试集后,结果出人意料地好。

训练精度:84%

测试精度:81%

混合矩阵如下:

e13e39df4da2024dc03c2cb36f36b777148a4c9c

7. 结论

总之,该模型的真阳性,即敏感性为80.4%(82 /(82 + 20)),该模型的真阴性又称特异性为82.4%(14 /(3 + 14))。两者都远超我的预期,由于叙述为许多不同的警官所写,而每个警官都有自己的写作风格。但是模型显示,无论警官是谁,处理亲密案件时,都会倾向于频繁地使用某些关键词。这才是该模型性能的关键。

尾语

希望上述模型能够被我们的社区广泛使用。聚类可以非常有帮助,特别是当我们没有足够的数据为我们的案例提供标签时。它可以让我们快速了解嫌疑人是什么样的(实际上我更愿意称他们为病人)。 鉴于我们确实有足够数据的幸运情况,朴素贝叶斯分类器可以大大减少将潜在患者筛选到治疗计划所需的时间。早期发现早期干预可以减少我们社区中的暴力案件,这只是数据科学可以做的许多有价值的事情之一。迫不及待想要看看还有什么事情可以做!


原文发布时间为:2018-06-6

本文作者:Kenny Moy

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”。

相关文章
|
5天前
|
开发框架 供应链 监控
并行开发模型详解:类型、步骤及其应用解析
在现代研发环境中,企业需要在有限时间内推出高质量的产品,以满足客户不断变化的需求。传统的线性开发模式往往拖慢进度,导致资源浪费和延迟交付。并行开发模型通过允许多个开发阶段同时进行,极大提高了产品开发的效率和响应能力。本文将深入解析并行开发模型,涵盖其类型、步骤及如何通过辅助工具优化团队协作和管理工作流。
|
1月前
|
机器学习/深度学习 存储 人工智能
让模型评估模型:构建双代理RAG评估系统的步骤解析
在当前大语言模型(LLM)应用开发中,评估模型输出的准确性成为关键问题。本文介绍了一个基于双代理的RAG(检索增强生成)评估系统,使用生成代理和反馈代理对输出进行评估。文中详细描述了系统的构建过程,并展示了基于四种提示工程技术(ReAct、思维链、自一致性和角色提示)的不同结果。实验结果显示,ReAct和思维链技术表现相似,自一致性技术则呈现相反结果,角色提示技术最为不稳定。研究强调了多角度评估的重要性,并提供了系统实现的详细代码。
51 10
让模型评估模型:构建双代理RAG评估系统的步骤解析
|
1月前
|
数据可视化 Python
Python绘制基频曲线——实例解析与应用探讨
Python绘制基频曲线——实例解析与应用探讨
44 9
|
1月前
|
监控 数据挖掘 BI
项目管理流程全解析及关键步骤介绍
项目管理流程是项目成功的基石,涵盖启动、规划、执行、监控和收尾等阶段。Zoho Projects 等软件可提高效率,支持结构化启动与规划、高效执行与协作及实时监控。这些流程和工具对项目的全局视角、团队协作和风险控制至关重要。项目管理软件适用于不同规模企业,实施时间因软件复杂度和企业准备而异。
50 2
|
10天前
|
SQL 监控 测试技术
全面解析SQL数据库迁移:步骤、挑战与最佳实践a8u.0335pw.com
随着信息技术的快速发展,数据库迁移已成为企业和组织在IT领域经常面临的一项任务。数据库迁移涉及到数据的转移、转换和适应新环境的过程,特别是在使用SQL数据库时。本文将详细介绍SQL数据库迁移的过程,探讨其面临的挑战,并分享一些最佳实践。一、数据库迁移概述数据库迁移是指将数据库从一个环境迁移到另一个环
|
14天前
|
数据可视化 Python
Python绘制基频曲线——实例解析与应用探讨
Python绘制基频曲线——实例解析与应用探讨
16 0
|
2月前
|
图形学 数据可视化 开发者
超实用Unity Shader Graph教程:从零开始打造令人惊叹的游戏视觉特效,让你的作品瞬间高大上,附带示例代码与详细步骤解析!
【8月更文挑战第31天】Unity Shader Graph 是 Unity 引擎中的强大工具,通过可视化编程帮助开发者轻松创建复杂且炫酷的视觉效果。本文将指导你使用 Shader Graph 实现三种效果:彩虹色渐变着色器、动态光效和水波纹效果。首先确保安装最新版 Unity 并启用 Shader Graph。创建新材质和着色器图谱后,利用节点库中的预定义节点,在编辑区连接节点定义着色器行为。
183 0
|
2月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
169 0
|
2月前
|
开发者 测试技术 Android开发
Xamarin 开发者的五大常见问题及解决方案:从环境搭建到性能优化,全面解析高效跨平台应用开发的技巧与代码实例
【8月更文挑战第31天】Xamarin 开发者常遇问题及解决方案覆盖环境搭建至应用发布全流程,助新手克服技术难关。首先需正确安装配置 Visual Studio 及 Xamarin 支持,设置 iOS/Android 测试环境。利用 Xamarin.Forms 和 XAML 实现高效跨平台开发,共享 UI 和业务逻辑代码。针对性能优化,采取减少 UI 更新、缓存计算结果等措施,复杂问题则借助 Xamarin Profiler 分析。
39 0
|
2月前
|
数据采集 弹性计算 供应链
阿里云服务器付费模式:按量付费、包年包月和抢占式实例全解析
阿里云服务器提供包年包月、按量付费与抢占式实例三种付费模式。包年包月为预付费,适合长期稳定使用,价格更优惠并支持备案。按量付费则为后付费模式,按小时结算,适合短期或访问量波动大的场景,但不支持备案。抢占式实例基于按量付费,价格更低(最多节省90%),适用于无状态应用,如临时测试或可弹性伸缩的Web服务,但存在被系统释放的风险,同样不支持备案。根据具体需求选择合适的付费模式能够有效降低成本并提高效率。
74 0

推荐镜像

更多