精华内容
下载资源
问答
  • 基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例实践获得数据挖掘项目经验,同时快速领悟看似难懂的数据挖掘理论。读者在阅读过程中,应充分...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    本书共15章,分两个部分:基础篇、实战篇。基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例实践获得数据挖掘项目经验,同时快速领悟看似难懂的数据挖掘理论。读者在阅读过程中,应充分利用随书配套的案例建模数据,借助相关的数据挖掘建模工具,通过上机实验,以快速理解相关知识与理论。

    基础篇(第1~5章),第1章的主要内容是数据挖掘概述;第2章对本书所用到的数据挖掘建模工具Python语言进行了简明扼要的说明;第3章、第4章、第5章对数据挖掘的建模过程,包括数据探索、数据预处理及挖掘建模的常用算法与原理进行了介绍。

    实战篇(第6~15章),重点对数据挖掘技术在电力、航空、医疗、互联网、生产制造以及公共服务等行业的应用进行了分析。在案例结构组织上,本书是按照先介绍案例背景与挖掘目标,再阐述分析方法与过程,最后完成模型构建的顺序进行的,在建模过程的关键环节,穿插程序实现代码。最后通过上机实践,加深读者对数据挖掘技术在案例应用中的理解。

    目录

    前言

    基础篇

    第1章 数据挖掘基础2

    1.1 某知名连锁餐饮企业的困惑2

    1.2 从餐饮服务到数据挖掘3

    1.3 数据挖掘的基本任务4

    1.4 数据挖掘建模过程4

    1.4.1 定义挖掘目标4

    1.4.2 数据取样5

    1.4.3 数据探索6

    1.4.4 数据预处理7

    1.4.5 挖掘建模7

    1.4.6 模型评价7

    1.5 常用的数据挖掘建模工具7

    1.6 小结9

    第2章 Python数据分析简介10

    2.1 搭建Python开发平台12

    2.1.1 所要考虑的问题12

    2.1.2 基础平台的搭建12

    2.2 Python使用入门13

    2.2.1 运行方式14

    2.2.2 基本命令15

    2.2.3 数据结构17

    2.2.4 库的导入与添加20

    2.3 Python数据分析工具22

    2.3.1 Numpy23

    2.3.2 Scipy24

    2.3.3 Matplotlib24

    2.3.4 Pandas26

    2.3.5 StatsModels27

    2.3.6 Scikit-Learn28

    2.3.7 Keras29

    2.3.8 Gensim30

    2.4 配套资源使用设置31

    2.5 小结32

    第3章 数据探索33

    3.1 数据质量分析33

    3.1.1 缺失值分析34

    3.1.2 异常值分析34

    3.1.3 一致性分析37

    3.2 数据特征分析37

    3.2.1 分布分析37

    3.2.2 对比分析40

    3.2.3 统计量分析41

    3.2.4 周期性分析44

    3.2.5 贡献度分析45

    3.2.6 相关性分析47

    3.3 Python主要数据探索函数50

    3.3.1 基本统计特征函数50

    3.3.2 拓展统计特征函数53

    3.3.3 统计作图函数54

    3.4 小结59

    第4章 数据预处理60

    4.1 数据清洗60

    4.1.1 缺失值处理60

    4.1.2 异常值处理64

    4.2 数据集成64

    4.2.1 实体识别64

    4.2.2 冗余属性识别65

    4.3 数据变换65

    4.3.1 简单函数变换65

    4.3.2 规范化66

    4.3.3 连续属性离散化68

    4.3.4 属性构造70

    4.3.5 小波变换71

    4.4 数据规约74

    4.4.1 属性规约74

    4.4.2 数值规约77

    4.5 Python主要数据预处理函数80

    4.6 小结81

    第5章 挖掘建模83

    5.1 分类与预测83

    5.1.1 实现过程83

    5.1.2 常用的分类与预测算法84

    5.1.3 回归分析85

    5.1.4 决策树89

    5.1.5 人工神经网络95

    5.1.6 分类与预测算法评价100

    5.1.7 Python分类预测模型特点103

    5.2 聚类分析104

    5.2.1 常用聚类分析算法104

    5.2.2 K-Means聚类算法105

    5.2.3 聚类分析算法评价111

    5.2.4 Python主要聚类分析算法111

    5.3 关联规则113

    5.3.1 常用关联规则算法114

    5.3.2 Apriori算法114

    5.4 时序模式119

    5.4.1 时间序列算法120

    5.4.2 时间序列的预处理120

    5.4.3 平稳时间序列分析122

    5.4.4 非平稳时间序列分析124

    5.4.5 Python主要时序模式算法132

    5.5 离群点检测134

    5.5.1 离群点检测方法135

    5.5.2 基于模型的离群点检测方法136

    5.5.3 基于聚类的离群点检测方法138

    5.6 小结141

    实战篇

    第6章 电力窃漏电用户自动识别144

    6.1 背景与挖掘目标144

    6.2 分析方法与过程147

    6.2.1 数据抽取148

    6.2.2 数据探索分析148

    6.2.3 数据预处理151

    6.2.4 构建专家样本156

    6.2.5 模型构建157

    6.3 上机实验161

    6.4 拓展思考162

    6.5 小结163

    第7章 航空公司客户价值分析164

    7.1 背景与挖掘目标164

    7.2 分析方法与过程166

    7.2.1 数据抽取168

    7.2.2 数据探索分析168

    7.2.3 数据预处理169

    7.2.4 模型构建173

    7.3 上机实验177

    7.4 拓展思考178

    7.5 小结179

    第8章 中医证型关联规则挖掘180

    8.1 背景与挖掘目标180

    8.2 分析方法与过程181

    8.2.1 数据获取183

    8.2.2 数据预处理186

    8.2.3 模型构建190

    8.3 上机实验193

    8.4 拓展思考194

    8.5 小结194

    第9章 基于水色图像的水质评价195

    9.1 背景与挖掘目标195

    9.2 分析方法与过程195

    9.2.1 数据预处理197

    9.2.2 模型构建199

    9.2.3 水质评价201

    9.3 上机实验202

    9.4 拓展思考202

    9.5 小结203

    第10章 家用电器用户行为分析与事件识别204

    10.1 背景与挖掘目标204

    10.2 分析方法与过程205

    10.2.1 数据抽取206

    10.2.2 数据探索分析207

    10.2.3 数据预处理207

    10.2.4 模型构建217

    10.2.5 模型检验219

    10.3 上机实验220

    10.4 拓展思考221

    10.5 小结222

    第11章 应用系统负载分析与磁盘容量预测223

    11.1 背景与挖掘目标223

    11.2 分析方法与过程225

    11.2.1 数据抽取226

    11.2.2 数据探索分析226

    11.2.3 数据预处理227

    11.2.4 模型构建229

    11.3 上机实验235

    11.4 拓展思考236

    11.5 小结237

    第12章 电子商务网站用户行为分析及服务推荐238

    12.1 背景与挖掘目标238

    12.2 分析方法与过程240

    12.2.1 数据抽取242

    12.2.2 数据探索分析244

    12.2.3 数据预处理251

    12.2.4 模型构建256

    12.3 上机实验266

    12.4 拓展思考267

    12.5 小结269

    第13章 财政收入影响因素分析及预测模型270

    13.1 背景与挖掘目标270

    13.2 分析方法与过程272

    13.2.1 灰色预测与神经网络的组合模型273

    13.2.2 数据探索分析274

    13.2.3 模型构建277

    13.3 上机实验294

    13.4 拓展思考295

    13.5 小结296

    第14章 基于基站定位数据的商圈分析297

    14.1 背景与挖掘目标297

    14.2 分析方法与过程299

    14.2.1 数据抽取299

    14.2.2 数据探索分析299

    14.2.3 数据预处理301

    14.2.4 模型构建304

    14.3 上机实验308

    14.4 拓展思考309

    14.5 小结309

    第15章 电商产品评论数据情感分析310

    15.1 背景与挖掘目标310

    15.2 分析方法与过程310

    15.2.1 评论数据采集311

    15.2.2 评论预处理314

    15.2.3 文本评论分词320

    15.2.4 模型构建320

    15.3 上机实验333

    15.4 拓展思考334

    15.5 小结335

    展开全文
  • 为什么您的数据挖掘项目成果总是难以落地?或者数据挖掘的价值总是远远低于预期?无论您是项目管理者还是数据分析师,相信看完这篇文章,每个人都能找到一个属于自己的答案。本人先后在电力、军工、金融等行业担任...

    为什么您的数据挖掘项目成果总是难以落地?或者数据挖掘的价值总是远远低于预期?无论您是项目管理者还是数据分析师,相信看完这篇文章,每个人都能找到一个属于自己的答案。本人先后在电力、军工、金融等行业担任数据挖掘工程师,数据挖掘咨询顾问,有多年行业经验。从平时的工作中总结出以下几条数据挖掘项目成功的黄金准则,希望能帮助您真正将数据挖掘成果落到实处,给您的企业带来实实在在的价值。
    1、遵循数据挖掘分析标准流程
    数据挖掘项目具有周期长、复杂性高和不确定性高等特点,因此需要遵循一定的标准流程,这样不仅可以保证数据挖掘每一个阶段的工作内容有章可循,而且还可以保证最终的挖掘成果更加准确,更加有说服力。一般情况下,数据挖掘分析分为以下几个步骤:

    1. 业务理解,确定业务目标和数据挖掘目标、明确分析需求;
    2. 数据理解,收集原始数据、描述数据、探索数据、检验数据质量;
    3. 数据准备,选择数据、清洗数据、构造数据、整合数据、格式化数据;
    4. 建立模型,选择建模技术、参数调优、生成测试计划、构建模型;
    5. 评估模型,对模型进行较为全面的评价,评价结果、重审过程;
    6. 成果部署,分析结果落地形式。
      整个挖掘分析项目都要围绕这几个步骤来实施。有时两个步骤可以同时交替进行,例如,业务理解和数据理解有时可以同时进行;有时几个步骤需要迭代进行,例如,数据准备、建立模型和评估模型这三个步骤经常需要循环迭代多次,才能得到理想的模型。但是需要强调的是:六个步骤缺一不可!
      企业数据挖掘
      2、分析目标与业务价值目标紧密结合
      在数据分析前期,要做到充分沟通及理解业务规则、关注业务痛点、了解用户需求、换位思考,明确为什么要做挖掘分析,要达到一个什么业务目标,期待实现一个怎样的业务价值。这样才能保证后续的收集数据、确定分析主题、分析数据、分析结果应用等工作都能够围绕分析目标开展,保证最终能够从整体业务价值目标的角度去应用分析成果。
       企业数据挖掘成功之道
      3、业务与数据结合确定分析主题
      以解决业务问题为目标,以数据现状为基础,确定分析主题。前期要做好充分的准备,以业务问题为导向,以业务和数据梳理为重点,进行多轮讨论,分析主题避免过大,针对业务痛点,实现知现状、明原因、可预测、有价值。在规划了多个分析主题后,还必须从数据的满足度、业务的价值度、业务的紧急度、业务的复杂度等多个方面对于分析主题进行优先级确定,确保业务主题的可行性和价值性。
      4、良好的数据质量是基础
      高质量的数据挖掘成果必然依赖于高质量的数据,所以确定分析主题之后,要进行数据支撑情况的初步判断,确保数据的完整、真实、规范,避免中途发现数据质量或者数据范围不能支撑分析工作的情况发生。在这个过程中最忌讳只重视数据的“大”量级,而忽视了数据的全面性。全面的数据是指能够反映真实世界的数据其量已经达到可以从一定程度上反映事物的真实全貌的程度。就如同“瞎子摸象”,如果只使用一个人所采集的数据,即使数据量再大,也是无法反映大象的全貌,做出的判断也会出现严重的偏颇。
      5、项目范围边界要明确
      在立项之前,要明确分析项目范围并详细论证分析可行性,保证分析过程的清晰性,才能开始分析工作。简单说就是为挖掘分析项目界定一个工作边界,如何做、怎么样做、做到什么程度才能达成项目目标。项目范围对于挖掘分析项目尤为重要,因为挖掘分析工作相对来说是一个没有止境的工作,必须要有一个工作边界和衡量标准。
      6、高层重视及团队式协作
      挖掘分析项目必须要有公司高层的支持,或者项目的牵头人重视这个项目并且有能力调动相关部门去配合项目整体推进,这是项目进展的重要保障。分析团队还要有业务人员、数据分析人员,数据管理员和IT人员,多个角色的参与。业务人员参与前期需求讨化、分析主题的设计、分析过程中模型解释等工作,数据分析人员则负责需求分析、数据梳理、数据分析及模型优化工作。数据管理员最了解企业的数据,需要提供数据资产目录。IT人员需要对最终的分析成果进行封装,与企业的现有系统实现对接。
      数据挖掘平台
      7、多种分析方法结合
      分析过程中尽量运用多种分析方法,以提高分析的准确性和可靠性。例如,运用定性定量相结合的分析方法对于数据进行分析;融合交互式自助BI、数据挖掘、自然语言处理等多种分析方法;高级分析和可视化分析相结合等。
      8、高效的数据挖掘平台支撑
      工欲善其事,必先利其器,数据挖掘分析项目一定要有一款强大高效的数据挖掘平台作为支撑。SPSS、SAS、Alteryx、美林Tempo、Rapidminer、R、Python等这几种工具都是业界比较认可的数据分析产品。它们各有其优势,SPSS 较早进入国内市场,发展已经相对成熟,有大量参考书可供参考,操作上容易上手,简单易学。SAS由于其功能强大而且可以编程,很受高级用户的欢迎。Alteryx 工作流打包成应用,为小企业直接提供应用,地理数据分析功能强大。美林数据的Tempo大数据分析平台功能全面,企业级架构,算法功能更加强大,同时在挖掘分析和可视化分析相结合上具有明显优势。Rapidminer 易用性和用户体验做得很好,并且内置了很多案例用户可直接替换数据源去使用。R 是开源免费的,具有良好的扩展性和丰富的资源,涵盖了多种行业中数据分析的几乎所有方法,分析数据更灵活。Python,有各种各样功能强大的库,做数据处理很方便,跟MATLAB很像。
      9、分析结论尽量图表化
      经过严谨推导得出的结论,首先要精简明确,3-5条即可。其次要与业务问题结合,给出解决方案或建议方案。尽量图表化,要增强其可读性。

    基于Tempo平台的企业KPI分析报告
    某企业KPI分析报告

    挖掘分析项目过程中,除了以上几条准则,还要避免以下3种情况:

    1. 时间安排不合理
      在开始分析工作之前,一定要做一个明确的进度计划,时间分配的原则是:数据收集、整理及建模占70%,数据可视化展现及分析报告占25%,其他占5%。(数据的收集、整理和建模的过程,是反复迭代的过程)
    2. 数据源选择不合理
      一般企业中的数据来源有很多,SAP、TMS、CRM及各部门业务系统,每个渠道的数据各有特点。这时,应该慎重考虑从哪个渠道获取数据更加快捷有效。数据源选择不合理,不仅影响结论的可靠性,而且有返工的风险。
    3. 沟通不充分
      无论是分析人员内部的沟通还是与外部相关人员的沟通,都是至关重要的。与外部人员沟通不顺畅,可能造成前期需求不清,中间业务逻辑混乱,最终导致数据分析结果差强人意。与内部人员沟通效率低,可能造成分析进度滞后,分析工作开展不畅等诸多问题,直接影响分析效果。
      最后,无论对于数据分析师还是挖掘分析项目管理者,希望看完了这篇文章都会对于如何做一个成功数据挖掘项目或者改进当前数据挖掘项目质量能有所收获。
    展开全文
  • 有网友在知乎提问:「你用 Python 做过什么有趣的数据挖掘项目?」我最近刚开始学习 Python, numpy, scipy 等, 想做一些数据方面的项目,但是之前又没有这方面的经验。所以想知道大家都做过什么有趣的项目, 或者...

    有网友在知乎提问:「你用 Python 做过什么有趣的数据挖掘项目?」

    我最近刚开始学习 Python, numpy, scipy 等, 想做一些数据方面的项目,但是之前又没有这方面的经验。所以想知道大家都做过什么有趣的项目, 或者有什么好入手的方向推荐下。

    下面是何明科的分享:

    第零步:原点,大数据与价值

    大概一年多以前,和几个小伙伴均认同一个趋势:觉得通过技术手段获取网上越来越丰富的数据,并基于这些数据做分析及可视化,必能产生有价值的结果,帮助大家改善生活。(大数据被叫烂了,所以用低调的方式来解释我们的初心)

    第一步:开工,为基金服务

    恰巧和几个基金的朋友(包括对冲基金和 VC/PE 基金)聊到这个趋势,他们非常认同这个观点并愿意付费,认为可以用这种实时且定量的方式来跟踪一些上市公司或者私有公司旗下的产品,来确定谁是有价值的投资目标。于是立马获得订单并促使我们开干,因为考虑到 Python 灵活及各类爬虫库的优势,最终选用 Python 来做数据获取的主体架构;也有新潮的小伙伴使用 Go,同时用 Go 搭建了一个很酷的框架来制造分布式的智能爬虫,应对各种反爬策略。抓取数据主要来自于如下网站:

    各应用商店:获取 App 的下载量及评论

    大众点评及美团网:餐饮及各类线下门店消费及评价情况

    汽车之家及易车:汽车的相关数据

    58 及搜房;房屋租售数据

    新浪微博:用户的各种发言及舆论

    财经数据:雪球及各类财经网站

    宏观数据网站:天气、12306 火车、机票网站

    最初的产品纯粹是为基金服务。下图是在各个维度找出最有价值的 App,各种量级范围内在 30 天 /7 天增长最快及评价最好榜单。(顺便吹一下牛,我们这个榜单很早就发现小红书 App 的快速增长趋势以及在年轻人中的极佳口碑)

    下图是对某个 App 的下载量跟踪,帮着基金做尽职调查。

    下图是某上市公司的门店变化情况,帮着基金跟踪 TA 的增长情况。

    下图是国内各个机场的实时流量,帮着基金跟踪国内出行的实时情况,或许能从一个侧面反映经济是否正在走入下行通道。

    第二步:扩展思路,开源和分享

    为基金服务,虽然给钱爽快,但是也让方向越走越窄。首先,基金希望信息是独享的和封闭的,投资就是投资人之间的零和博弈,公开的信息就迅速会一钱不值,基金最在乎的就是信息的独享及提前量,所以各个基金都希望我们呈现的数据及分析结果能够独家。这样迅速让我们的方向收窄以及工作的趣味性降低,其次,毕竟对于基金而言,能分析的投资对象及方向是非常有限的。而且现阶段,大部分对冲基金里面的分析员的数据分析能力其实很弱:这些分析员里面能用 VBA 或者能在 Excel 里面使用矩阵及向量乘法的人几乎可以惊为天人;能写 offset 函数的人,就应该直接提拔了;大部分人停留在一个个数网页找数据的阶段。所以和他们起来十分费劲,除了提供一些粗暴的数据,并不能产生太有价值的结果。

    在这段迷茫期,本来充满激情的数据分析工作,让大家味如爵蜡,感觉自己变成了一个外包公司。不过互联网大法好,做技术做互联网的核心思路是分享和开源,我们很快回归到这一点。并且这一点最终让我们做出了改变。有些分析虽然基金不买单,但是对一般的老百姓、对一般的媒体是有价值的,于是我们试着把这些数据分析及结果写出来,发布到知乎上供大家参考。

    知乎是个好平台,坚持创作好内容迟早就会被发掘出来。很快一篇用数据分析黄焖鸡米饭为什么火遍全国的回答(黄焖鸡米饭是怎么火起来的? – 何明科的回答)被知乎日报采用了。

    这次被 “宠幸” 让团队兴奋不已,从而坚定了决心,彻底调整了整个思路,回到初心:不以解决基金关注的问题为核心,而以解决用户最关注的生活问题为核心。坚持以数据说话的套路,创作了许多点赞很多的文章并多次被知乎日报采用,并专注在如下的领域:

    还共享了一些和屌丝青年生活最相关的分析及数据。下图是深圳市早晨高峰时段某类人群出行的热点图,通过热点分析,试图找出这类人群的居住和上班的聚集区。

    下图反映了在各时间段在深圳科技园附近下车的人群密度。

    写这些报告,团队没有挣到一分钱,但是整个成就感和满意度大大上升。同时,在 Python 及各种技术上的积累也提高颇多,数据量级的积累也越发丰富,数据相关的各项技术也在不断加强。同时,顺势扩大了数据源:京东、淘宝等数据也纳入囊中。

    第三步:扩展客户

    在知乎上写这些报告,除了收获知名度,还收获意外之喜,一些知名品牌的消费品公司、汽车公司及互联网公司,主动找我们做一些数据抓取及分析。整个团队没有一个 BD,也从来不请客户吃饭。于是我们顺势做了如下的网站以及一个成熟的 Dashboard 框架(开发数据监控的 Dashboard 超有效率),目前主要监控和分析母婴、白酒、汽车及房地产四大行业,都是一些愿意花钱进行深度了解用户以及行业趋势的公司。收入自动上门,很开心!

    下图是抓取汽车之家的数据,做出 BBA(奔驰宝马奥迪)这三大豪华品牌的交叉关注度,帮助品牌及 4A 公司了解他们用户的忠诚度以及品牌之间迁移的难度。

    下图是抓取新浪微博的数据,分析广东白酒的消费场所

    下图是抓取新浪微博的数据,分析广东白酒和各类食品的相关度。

    除去为以上的品牌合作,我们数据风的文章也越来越受欢迎,曾经一周上了四次知乎日报。另外也有越来越多的知名媒体及出版社找到我们,虽然告知他们我们不写软文而只坚持按照数据结果来发表文章,他们依然表示欢迎。原来非五毛独立立场的数据风也能被媒体喜欢。自此,我们不断成为易车首页经常推荐的专栏。

    第四步:尝试功能化平台化产品

    降低与高大上基金的合作强度,转而与更接地气的各类品牌合作,让我们团队更贴近客户、更贴近真实需求。于是基于这些需求,我们开始尝试将之前在数据方面的积累给产品化,特别是能做出一些平台级的产品,于是我们开发出两款产品:第一款:选址应用选址是现在许多公司头疼的难题,以前完全是拍脑袋。因此我们开发出这样一套工具,帮助公司能够更理性更多维度得选址。下图,我们抓取多个数据源并完成拼接,根据用户的快递地址,勾画出某时尚品牌用户的住址,帮助其选址在北京开门店。

    下图,我们抓取多个数据源并完成拼接,根据大型超市及便利店与某类型餐馆在广州地区的重合情况,帮助某饮料品牌选定最应该进入的零售店面。

    第二款:数据可视化我们在工作中也深刻觉得以前制作图表和展示数据的方式太 low、太繁琐,我们希望去改变这个现状,于是开发了一套基于 Web 来制作图表的工具文图。远有 Excel/Powerpoint 对标,近有 Tableau 对标。下图是文图丰富的案例库及模板库。

    下图是使用界面及图表类型。

    下一步的工作:与微信的整合,一键生成适合于微信传播的截图以及公众号格式文章,便于在社交媒体的传播收集更多数据,目前已经覆盖 40 多家网站,涵盖衣食住行等多个方面将数据 SaaS 化和开源,便于各类公司及用户使用。(咨询投行等 Professional Service 人士一定会懂的,你们每年不知道要重复多少遍更新各类宏观微观的经济和行业数据,现在只需要调用 KPI)最后,希望有一天它能部分替代已经在江湖上混迹二三十年的 PowerPoint 及 Excel。

    第五步:……

    不可知的未来才是最有趣的。借用并篡改我们投资人的一句话:technology is fun, data is cool and science is sexy。初心未变,希望用数据用技术帮助更多的人生活得更美好。

    从文中,大家可以看到一个创业小团队艰辛的摸索过程。从一开始的一个想法,希望通过技术和科学改变世界,到碰巧能赚钱,到因为赚钱快而迷失了方向,到最后回归初心,做自己最喜欢的事情。

    展开全文
  • 最近参与了了一个日志和告警的数据挖掘项目,里面用到的一些思路在这里和大家做一个分享。  项目的需求是收集的客户系统一个月300G左右的的日志和告警数据做一个整理,主要是归类(Grouping)和关联(Correlation),...

      最近参与了了一个日志和告警的数据挖掘项目,里面用到的一些思路在这里和大家做一个分享。

        项目的需求是收集的客户系统一个月300G左右的的日志和告警数据做一个整理,主要是归类(Grouping)和关联(Correlation),从而得到告警和日志的一些统计关系,这些统计结果可以给一线支持人员参考。

        得到的数据主要分为两部分,一部分是告警的历史数据,这部分数据很少,只有50M左右,剩下的全部都是日志数据。日志数据大概有50多种不同类型,对应系统中不同的模块。每种类型的文件每天产生一个日志文件,所以总数大概是1500个左右的日志文件。文件大概都是这样的:A_2016-04-15.log, B_2016-04-15.log, ..., A_2016-05-14.log, B_2016-05-14.log。每个文件在10M-1G之间不等。

    1. 日志的模式挖掘

        通过查看日志,发现所有的log每一行基本都是类似这样的Pattern:

        YYYY-MM-DD hh:mm:ss [模块名] [具体日志]

        每类日志的模块名都是一样的,基本可以忽略。有价值的就是时间戳和具体日志。

        而且可以发现,很多日志只是极少部分动态内容不同,在代码中属于同一个位置的输出,这些数据后面我们会分为一类数据。比如:

        2016-04-26 00:30:38.795 55637   ResourceManager Free ram (MB): 244736

        2016-04-26 00:34:38.795 55637   ResourceManager Free ram (MB): 244748

        有某些类型日志每个时段都有出现,咨询后得知基本没有任何分析价值,这些日志后面我们会加入黑名单,不加分析。

    2. 日志的归类

        由于每类日志都有30个文件,每个文件基本都有100万行,我们的第一步工作就是去除上面提到的无用日志。去掉无用日志后,我们要分析的日志大概减少了30%。

        接着我们要做的就是每一行的日志进行归类(Grouping)。这里有很多的方法可以选择,比如K-means,但是我们这么多的日志,很难去定义一个合适的K。经过一番尝试后我们放弃了K-means。但是K-means的思想还是可以用的。最后我们使用的是启发式的方法来归类。

        首先定下的基本思路是: 对于每一类文件,我们分别做归类,最后再一起和告警文件做关联(Crrelation)。我们作了不同类别文件的日志肯定不在一类的假定。

        对于每一类文件的每一行日志,我们我们通过对具体日志的字符串的相似度进行归类,算法如下:

        1)初始化将最终类别数组设置为空,类别数组的每一行的格式是 [index] [类别里第一次出现的具体日志内容] [该类日志出现的所有时间形成的数组]

        2)初始化字符串相似度阈值,相似度超过阈值的字符串即为一类。项目里面我们相似度阈值取80%。

        3)初始化归类的时间间隔,在一个时间间隔内的相似日志仅仅记录一次时间。也就是说如果某类日志已经有这段时间的记录,再次在这段时间出现的类似日志将会被忽略。取的过大,后面关联时精确度降低,取的过小,后面关联时计算量会很大。项目里我们取10分钟作为日志间隔。也就是一天划分成了24*6个时间间隔。

        4)对于某一种类别, 对于每一行的具体日志我们去和该类别的最终类别数组的每一行的具体日志做相似度比较:

          a) 如果和最终类别里的某行具体日志的字符串的相似度超过了阈值,则这两个字符串即归为一类,仅仅把这个要分析的具体日志的时间点存入该类别,停止该行日志的分析。

          b) 如果和最终类别里的任何一行具体日志的字符串的相似度都低于阈值。则我们发现了一个新的类别。在最终类别里加入一行记录。并把该日志的时间间隔对应的点作为该类别的时间数组的第一条时间记录。

        5) 对于所有其他的类别,分别执行上面的第4步。得到所有类别的最终类别数组。最终我们的50多个类别数组一共只剩下100多M,每个数组平均有100多种类别。

        

        这个算法产生的类别数组中每一行是这样的内容:

        1  ResourceManager Free ram (MB): 244736   [[2016-04-26 00:30],[2016-04-26 10:40], ...] 

        上面的算法中,我们用到了字符串相似度算法。这里我们用到是python的字符串下相似度算法库:python-Levenshtein。计算相似度我们用了python-Levenshtein库的ratio函数,即莱文斯坦比。如果大家对python-Levenshtein的字符串相似度计算有兴趣,可以参考python-Levenshtein的官方文档:https://pypi.python.org/pypi/python-Levenshtein/0.12.0#id1

        

    3. 日志和告警的关联

        现在我们有了50多种日志的类别数据,每个类别也有在时间分布上的数据,同时,回到告警,每个告警也有在时间分布上的数据。现在我们可以在时间维度上做关联算法。

        我们的日志类别数组和告警在时间维度一共有30*24*6=4320个点。我们的目标是找到和每个告警在时间维度上关联度比较高的一组日志。这里我们采用的是基于余弦相似度的算法。我们选择了所有的和告警在时间维度上相似度超过80%的日志类别。这些类别作为最终的统计结果作为我们输出的一部分。

    4. 告警和告警的关联

        这部分工作主要是研究告警和告警之间的统计关系。主要是基于统计的在时间维度上的父子关系。

        由于告警数据较少,我们将时间间隔精确到1分钟。对于每一种告警,我们检查在该告警和其他告警在时间维度上的关系。我们检查3种情况。

        第一种情况是在相同时间间隔出现的兄弟告警和该告警的统计关系,我们选择在时间维度上和该告警相似度超过80%的所有告警,这些告警和该告警有时间上同步的关系,也就是这些告警统计上总是和该告警同时出现。

        第二种情况是在该告警出现前一分钟内的所有父亲告警和该告警的关系,我们选择在时间维度上和该告警相似度超过80%的所有告警,这些告警和该告警有时间上先后的关系,也就是这些告警统计上总是在该告警之前出现。

        第三种情况是在该告警出现后一分钟内的所有儿子告警和该告警的关系,我们选择在时间维度上和该告警相似度超过80%的所有告警,这些告警和该告警有时间上先后的关系,也就是这些告警统计上总是在该告警之后出现。

     

        以上就是对日志和告警数据挖掘的项目经验总结,希望对大家有所启发。

    展开全文
  • 基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例实践获得数据挖掘项目经验,同时快速领悟看似难懂的数据挖掘理论。读者在阅读过程中,应充分...
  • 本篇文章主要介绍内容:数据去噪,采样,特征工程数据去噪: 无论是数据挖掘的比赛也好,还是日常生活中的各种项目也好,我们拿到手的数据集含有噪声数据是很正常的。噪声会降低我们的数据质量,从而影响我们模型的...
  • 非常有用的实战经验,以及全程笔记,比赛经验代码分享,零基础到精通,完整的数据挖掘项目,下载即用,部署可私信,
  • (点击上方公众号,可快速关注)来源: 何明科www.zhihu.com/question/28975391/answer/82797746有网友在知乎提问:「你用 Python 做过什么有趣的数据挖掘项目?」我最近刚开始学习 Python, numpy, scipy 等, 想...
  • 有网友在知乎提问:「你用 Python 做过什么有趣的数据挖掘项目?」我最近刚开始学习 Python, numpy, scipy 等, 想做一些数据方面的项目,但是之前又没有这方面的经验。所以想知道大家都做过什么有趣的项目, 或者...
  • 基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例实践获得数据挖掘项目经验,同时快速领悟看似难懂的数据挖掘理论。读者在阅读过程中,应充分...
  • 数据挖掘

    千次阅读 2020-03-30 12:40:31
    数据挖掘 (计算机科学) ...数据挖掘通常与计算机科学有关,并通过统计、在线分析处理、情报检索、机器学习、专家系统(依靠过去的经验法则)和模式识别等诸多方法来实现上述目标。[1] 中文名 ...
  • 从零开始项目实战:从数据分析到数据挖掘 10年大厂工作经验,有IBM,花旗,...
  • 基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例实践获得数据挖掘项目经验,同时快速领悟看似难懂的数据挖掘理论。读者在阅读过程中,应充分...
  • 基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例实践获得数据挖掘项目经验,同时快速领悟看似难懂的数据挖掘理论。读者在阅读过程中,应充分...
  • 先说一说问题,不知道大家有没有这样的经验,反正我是经常碰到。 举例1,某些网站每隔几天就发邮件给我,每次发的邮件内容都是一些我根本不感兴趣的东西,我不甚其扰,对其深恶痛绝。 举例2,添加具有某功能的一个...
  • 微策略数据挖掘一面面试经验

    千次阅读 2015-09-24 16:59:16
    然后,他问了关于实习项目和之前的学校项目的内容,大致是让我自己描述项目背景和达成的效果,没有问比较tough的问题。接着,对于编程语言,他问了关于java和python的内存管理问题,我坦然说并不了解底层的一些东西...
  • 无论是数据挖掘的比赛也好,还是日常生活中的各种项目也好,我们拿到手的数据集含有噪声数据是很正常的。噪声会降低我们的数据质量,从而影响我们模型的效果。因此,对噪声的处理是必须的,这一点是众所周知的事情。...
  • 数据挖掘项目成功,除了有成熟、易用的产品,更重要是要有专业的咨询与实施团队。数据挖掘用什么软件?思迈特软件有丰富的数据挖掘实践经验,在不同的行业有很多成功的案例。 案例1:新冠病毒感染临床诊断 在疫情...
  • 基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例实践获得数据挖掘项目经验,同时快速领悟看似难懂的数据挖掘理论。读者在阅读过程中,应充分...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 425
精华内容 170
关键字:

数据挖掘项目经验