2017年第六届数学建模国际赛小美赛B题电子邮件中的笔迹分析解题全过程文档及程序

2017年第六届数学建模国际赛小美赛

B题 电子邮件中的笔迹分析

原题再现:

  笔迹分析是一种非常特殊的调查形式,用于将人们与书面证据联系起来。在法庭或刑事调查中,通常要求笔迹鉴定人确认笔迹样本是否来自特定的人。由于许多语言证据出现在电子邮件中,从广义上讲,笔迹分析还包括如何根据电子邮件的语言特征识别作者的问题。
  作者归属是语言学家开始使用语言风格的可识别特征(从词频到首选句法结构)来识别有争议文本的作者的过程。电子邮件内容短小,作者语言风格明显。请构造一个有效的模型,通过捕获电子邮件的语言特征来识别作者。您可以使用安然电子邮件数据集来培训和测试您的模型。
  安然电子邮件数据集链接:http://bailando.sims.berkeley.edu/enron_email.html

整体求解过程概述(摘要)

  本文开发了一个工具,可以用来识别这类电子邮件的作者。作者的风格可以通过测量文本中的各种茎秆特征来简化为一种模式。电子邮件还包含可测量的宏结构特征。这些特征可与支持向量机(SVM)学习算法一起使用,以分类或将电子邮件的作者身份归属给作者,提供适当的消息样本以供比较。
  首先,第3章讨论了实验过程的计划和范围,该实验过程用于确定分析电子邮件的作者特征和识别电子邮件的作者身份是否可行。概述了需要评估的特征列表,并说明了为什么要使用支持向量机(SVM)算法进行这项工作。特征集包括但不限于:基于文档的特征、基于单词的特征、虚词比率、字长频率分布、搭配频率、基于字符的特征和字母2-gram。
  接下来,第4章详细介绍了为对电子邮件作者进行系统分类而进行的实验,并报告了实验结果。这是通过首先进行一系列实验来完成的,这些实验旨在揭示纯文本块(不是电子邮件)的成功SVM作者属性的基线值,从而设置特征集、文本大小和消息数量的约束。这些基线实验为该项目的核心——识别电子邮件文本中包含的有用特性的任务——设置了框架。本章报告的实验列表见表12(第25页)。第38页报告了这些结果,证实了迄今使用的方法可作为进一步研究电子邮件数据的基础。
  最后,第5章讨论了电子邮件的属性和分析。第5.1节讨论了对电子邮件数据进行的初步实验。电子邮件数据用于本章中讨论的实验,因此可以首次测试电子邮件特定功能的影响。第5.2节概述了如何改进结果。第5.3节确定了电子邮件中讨论主题的影响。本研究的目的是使用加权的宏平均F1度量,在大约85%的水平上实现电子邮件数据的正确分类。本章报告的结果表明,在增加了电子邮件的结构特征之后,这一目标就实现了。本章报告的实验列表见表22(第39页)。
  最后一章对本文的主要结论进行了总结。这也为今后的工作提出了一些可能的扩展。

模型假设:

  •我们已经考虑的因素发挥着至关重要的作用。
  •我们收集的数据是准确的。
  •人们的写作习惯没有改变。

问题分析:

  问题背景:
  许多公司和机构已经开始依赖因特网来处理业务,随着个人使用因特网,特别是自万维网建立以来,电子邮件流量显著增加。Lyman和Varian(2000年)估计,2000年将发送5 000亿至6 000亿封电子邮件,进一步估计到2003年,每年发送的电子邮件将超过2万亿封。在GVU’s1第8次WWW用户调查中(Pitkow等人,1997年),84%的受访者表示电子邮件是不必要的。
  随着电子邮件流量的增加,出于不正当的原因,电子邮件的使用量也随之增加。误用的例子包括:发送垃圾邮件或未经请求的商业电子邮件(UCE),这是垃圾邮件的广泛传播;发送威胁;发送恶作剧;以及计算机病毒和蠕虫的传播。此外,贩运毒品或儿童色情制品等犯罪活动很容易通过发送简单的电子邮件来协助和教唆。

  本文讨论的问题包括:
  •设置使用支持向量机进行分类实验的框架
  •选择候选文体特征以解决电子邮件作者分类问题
  •确定测试电子邮件作者身份分类是否成功的实验序列

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:(代码和文档not free)

with open('x_C.pickle','rb') as f:x_C = pickle.load(f)f.close()
with open('y.pickle','rb') as f:y = pickle.load(f)f.close()
with open('x_W.pickle','rb') as f:x_W = pickle.load(f)f.close()
with open('x_F.pickle','rb') as f:x_F = pickle.load(f)f.close()
with open('x_L.pickle','rb') as f:x_L = pickle.load(f)f.close()
with open('x_C_W.pickle','rb') as f:x_C_W = pickle.load(f)f.close()
with open('x_C_F.pickle','rb') as f:x_C_F = pickle.load(f)f.close()
with open('x_W_F.pickle','rb') as f:x_W_F = pickle.load(f)f.close()
with open('x_F_L.pickle','rb') as f:x_F_L = pickle.load(f)f.close()
with open('x_F_C_W.pickle','rb') as f:x_F_C_W = pickle.load(f)f.close()
with open('x_F_C_L.pickle','rb') as f:x_F_C_L = pickle.load(f)f.close()
with open('x_F_L_W.pickle','rb') as f:x_F_L_W = pickle.load(f)f.close()
with open('x_F_C_L_W.pickle','rb') as f:x_F_C_L_W = pickle.load(f)f.close()
#test diffrent feaure effect (x_C)
x_train, x_test, y_train, y_test = train_test_split(x_C, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_C accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_W)
x_train, x_test, y_train, y_test = train_test_split(x_W, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_W accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F)
x_train, x_test, y_train, y_test = train_test_split(x_F, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_L)
x_train, x_test, y_train, y_test = train_test_split(x_L, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_L accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_C_W)
x_train, x_test, y_train, y_test = train_test_split(x_C_W, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_C_W accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_C_F)
x_train, x_test, y_train, y_test = train_test_split(x_C_F, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_C_F accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_W_F)
x_train, x_test, y_train, y_test = train_test_split(x_W_F, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_W_F accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F_L)
x_train, x_test, y_train, y_test = train_test_split(x_F_L, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F_L accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F_C_W)
x_train, x_test, y_train, y_test = train_test_split(x_F_C_W, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F_C_W accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F_C_L)
x_train, x_test, y_train, y_test = train_test_split(x_F_C_L, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F_C_L accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F_L_W)
x_train, x_test, y_train, y_test = train_test_split(x_F_L_W, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F_L_W accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent feaure effect (x_F_C_L_W)
x_train, x_test, y_train, y_test = train_test_split(x_F_C_L_W, y, test_size=0.2, 
random_state=42)
svclf = SVC(kernel = 'linear')#default with 'rbf'
svclf.fit(x_train,y_train)
pred = svclf.predict(x_test);
print("x_F_C_L_W accuracy: ",sum(pred == y_test)/len(y_test))
#test diffrent kernel effect
new_kernel =['Linear','Polynomial','Radial basis function','Sigmoid tanh']
x_train, x_test, y_train, y_test = train_test_split(x_F_C_L_W, y, test_size=0.2, 
random_state=42)
for kernel in new_kernel:svclf = SVC(kernel=kernel)svclf.fit(x_train, y_train)pred = svclf.predict(x_test);print(kernel," accuracy: ", sum(pred == y_test)/len(y_test))
#test diffrent gama effect
gama_lst =[0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1.0, 2.0]
x_train, x_test, y_train, y_test = train_test_split(x_F_C_L_W, y, test_size=0.2, 
random_state=42)
for gama in gama_lst:svclf = SVC(kernel = 'linear',gamma=gama)svclf.fit(x_train, y_train)pred = svclf.predict(x_test);print('gama=',gama," accuracy: ", sum(pred == y_test)/len(y_test))
#test diffrent degree effect
x_train, x_test, y_train, y_test = train_test_split(x_F_C_L_W, y, test_size=0.2, 
random_state=42)
for degree in range(1,11):svclf = SVC(kernel = 'linear',degree=degree)svclf.fit(x_train, y_train)pred = svclf.predict(x_test);print('gama=',degree," accuracy: ", sum(pred == y_test)/len(y_test))
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/222430.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity中Shader旋转矩阵(二维旋转矩阵)

文章目录 前言一、旋转矩阵的原理1、我们以原点为中心,旋转坐标轴θ度2、求 P~2x~:3、求P~2y~:4、最后得到 P~2~点 的点阵5、该点阵可以拆分为以下两个矩阵相乘的结果 二、在Shader中,使用该旋转矩阵实现围绕 z 轴旋转1、在属性面板定义 floa…

Text Intelligence - TextIn.com AI时代下的智能文档识别、处理、转换

本指南将介绍Text Intelligence,AI时代下的智能文档技术平台 Textin.com 关注TechLead,分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认…

海康rtsp拉流,rtmp推流,nginx部署转flv集成

海康rtsp拉流,rtmp推流,nginx部署转flv集成 项目实际使用并测试经正式使用无问题,有问题欢迎评论留言 核心后台java代码: try {// FFmpeg命令String command "ffmpeg -re -i my_video.mp4 -c copy -f flv rtmp://localho…

【3D生成与重建】SSDNeRF:单阶段Diffusion NeRF的三维生成和重建

系列文章目录 题目:Single-Stage Diffusion NeRF: A Unified Approach to 3D Generation and Reconstruction 论文:https://arxiv.org/pdf/2304.06714.pdf 任务:无条件3D生成(如从噪音中,生成不同的车等)、…

EfficientDet:Scalable and Efficient Object Detection中文版 (BiFPN)

EfficientDet: Scalable and Efficient Object Detection EfficientDet:可扩展和高效的目标检测 摘要 模型效率在计算机视觉中变得越来越重要。本文系统地研究了用于目标检测的神经网络架构设计选择,并提出了几个关键的优化方法来提高效率。首先&…

基于ssm房屋租赁平台的设计与开发论文

摘 要 目前对于在外的人员来说租赁房屋是最基本的问题。对于房屋的租赁可以选择直接找房东、找专业的房屋租赁公司和自己在网上找房屋。自己找房东的问题在于需要时间,而且对于需要提前租赁房屋的需要多次跑到小区,找中介租赁房屋的问题在于费用问题&am…

FA2016ASA (MHz范围晶体单元,内置热敏电阻) 汽车

FA2016ASA是爱普生推出的一款内置热敏电阻、频率范围为38.4MHz的晶振,确保数据的准确传输,同时有效避免频谱干扰的出现。可以在-40C to 125C 的温度内稳定工作。在汽车内部空间有限的情况下,FA2016ASA以其小型超薄的外形尺寸2.0 1.6 0.68mm…

为什么GRU和LSTM能够缓解梯度消失或梯度爆炸问题?

1、什么是梯度消失(gradient vanishing)? 参数更新过小,在每次更新时几乎不会移动,导致模型无法学习。 2、什么是梯度爆炸(gradient exploding)? 参数更新过大,破坏了模…

PIC单片机项目(7)——基于PIC16F877A的智能灯光设计

1.功能设计 使用PIC16F877A单片机,检测环境关照,当光照比阈值低的时候,开灯。光照阈值可以通过按键进行设置,同时阈值可以保存在EEPROM中,断电不丢失。使用LCD1602进行显示,第一行显示测到的实时光照强度&a…

flink watermark 实例分析

WATERMARK 定义了表的事件时间属性,其形式为: WATERMARK FOR rowtime_column_name AS watermark_strategy_expression rowtime_column_name 把一个现有的列定义为一个为表标记事件时间的属性。该列的类型必须为 TIMESTAMP(3)/TIMESTAMP_LTZ(3),且是 sche…

指标体系构建-01-什么是数据指标

参考 四千字全面解析数据产品经理必知概念:标签、维度、指标 什么是数据指标 指标是指于其中打算达到的指数,规格,标准等,是用数据对事物进行描述的工具。通常指标对应是否有价值取决于这个指标的实际意义。同时关注指标对应的数值&#x…

养老院自助饮水机(字符设备驱动)

目录 1、项目背景 2、驱动程序 2.1 三层架构 2.2 驱动三要素 2.3 字符设备驱动 2.3.1 驱动模块 2.3.2 应用层 3、设计实现 3.1 项目设计 3.2 项目实现 3.2.1 驱动模块代码 3.2.2 用户层代码 4、功能特性 5、技术分析 6. 总结与未来展望 1、项目背景 养老院的老人…

网络基础【网线的制作、OSI七层模型、集线器、交换机介绍、路由器的配置】

目录 一.网线的制作 1.1.网线的标准 1.2.水晶头的做法 二.OSI七层模型、集线器、交换机介绍 集线器(Hub): 交换机(Switch): 三.路由器的配置 3.1.使用 3.2.常用的功能介绍 1、如何管理路由器 2、家…

Linux线程

文章目录 线程线程原理页表线程VS进程线程相关函数pthread_create函数pthread_selfpthread_exitpthread_cancelpthread_joinpthread_detach 线程ID 线程 什么是线程?为什么要有线程? 线程本质上就是轻量化的进程,一个进程就是一个执行流&…

信息论安全与概率论

目录 一. Markov不等式 二. 选择引理 三. Chebyshev不等式 四. Chernov上限 4.1 变量大于 4.2 变量小于 信息论安全中会用到很多概率论相关的上界,本文章将梳理几个论文中常用的定理,重点关注如何理解这些定理以及怎么用。 一. Markov不等式 假定…

Protobuf 编码规则及c++使用详解

Protobuf 编码规则及c使用详解 Protobuf 介绍 Protocol Buffers (a.k.a., protobuf) are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data Protocol Buffers(简称为protobuf)是谷歌的语言无关、…

多层负载均衡实现

1、单节点负载均衡 1)站点层与浏览器层之间加入了一个反向代理层,利用高性能的nginx来做反向代理 2)nginx将http请求分发给后端多个web-server 优点: 1)DNS-server不需要动 2)负载均衡:通过ngi…

Python深度学习028:神经网络模型太多,傻傻分不清?

文章目录 深度学习网络模型常见CNN网络深度学习网络模型 在深度学习领域,有许多常见的网络模型,每种模型都有其特定的应用和优势。以下是一些广泛使用的深度学习模型: 卷积神经网络(CNN): 应用:主要用于图像处理,如图像分类、物体检测。 特点:利用卷积层来提取图像特…

《数据分析-JiMuReport》积木报表详细入门教程

积木报表详细入门教程 一、JimuReport部署入门介绍 积木报表可以通过源码部署、SpringBoot集成、Docker部署以及各种成熟框架部署,具体可查看积木官方文档 当前采用源码部署,首先下载Jimureport-example-1.5.6 1 jimureport-example目录查看 使用ID…

喜报|迪捷软件“ModelCoder 建模及形式化验证代码生成软件”荣登浙江省首版次产品目录

近日,浙江省经济和信息化厅公布《2023年浙江省首版次软件产品应用推广指导目录》,浙江迪捷软件科技有限公司的“ModelCoder 建模及形式化验证代码生成软件”经过多轮审核及专家评定被纳入目录,这是迪捷软件自主研发的产品继“天目全数字实时仿…