终于有人把数据挖掘讲明白了

终于有人把数据挖掘讲明白了01什么是数据挖掘数据挖掘(DataMining)应该是一门大家都听说过,但又不太容易说清楚的课程。在数据科学领域,乃至在更大的计算机科学领域,数据挖掘就好比山东蓝翔,大家不一定都知道挖…

大家好,又见面了,我是你们的朋友全栈君。

终于有人把数据挖掘讲明白了

终于有人把数据挖掘讲明白了

01

什么是数据挖掘

数据挖掘(Data Mining)应该是一门大家都听说过,但又不太容易说清楚的课程。在数据科学领域,乃至在更大的计算机科学领域,数据挖掘就好比山东蓝翔,大家不一定都知道挖掘机要怎么开,但一定都知道挖掘机技术到底哪家强。

不过,知名度高也未必全是好事,尤其是啤酒尿布的故事太经典,反而会让大家以为这活很“高端”,离自己太远,不会用也用不上。其实,很多人未必学过数据挖掘,甚至可能没有听过这四个字,但实际已经早就开始在进行数据挖掘。譬如说股民。

很多人说今年的行情很有希望,要去学炒股。学炒股就是学股市中的数据挖掘,流派很多,譬如说技术分析流,认为K线图或者其他什么图,和股市后市走势关系密切;价值投资流则认为,通过一整套考察公司的指标体系,才能更好地推测股票的未来价值;当然也有一些旁门左道,譬如说门口大妈流,就是看到门口卖菜的大妈开始谈论股票的时候,说明行情就见顶了,要赶紧抽身。不管你钟情哪种方法,所要做的事都非常类似,就是把从各种地方收集的信息,也就是“数据”,加以整理分析,挖掘出和你关心的对象的目标关系。

这样的例子还有很多,譬如数据挖掘非常非常常用的异常检测,别看这词挺学术,我举个例子大家肯定就知道了,体检。虽然这是个枸杞配啤酒的朋克养身时代,不过预防疾病还得靠体检。但是,体检的结果是一堆的指标项,是数值,但数值本身是不会告诉你身体有没啥毛病,得首先有一个标准区间,然后发现指标异常,接着还要建立指标和疾病之间的关联关系,完成了这些前期工作,最后才能通过体检告诉你身体是不是还能再战五百年。这些前期工作就是数据挖掘。说回我们的老本行计算机,异常就更多了,譬如说WEB日志,经常需要进行异常检测从而发现网络入侵。

这都是数据挖掘。不是按某本名叫《数据挖掘》的书的某某方法依样画葫芦才叫数据挖掘,正好相反,是大家在各种数据挖掘的实践中形成了一些方法和工具,大家都觉得很好用,研究人员就加以收集整理,理清条理形成体系,才最终诞生了“数据挖掘”这门课。

02

数据挖掘和机器学习、模式识别

当你真的开始去学数据挖掘,遇到的第一个问题很可能是犯迷糊。数据科学领域有三朵金花,分别是数据挖掘机器学习模式识别,而数据挖掘的知识体系,和同样非常热门的机器学习以及模式识别有很高的重合度,那种感觉,不是在同一赛道有三名选手,而更像是在三条赛道看到了同一名选手。当然,就我的意见,这三个名词究竟存在怎样的我心中有你你心中有Ta的复杂三角关系,其实一点也不影响学习,毕竟有位红帽白须的老爷爷曾经说过,小孩子才做选择,成年人当然是全都学。三角关系越是复杂,要学的内容越是分不清你我,总的学习成本反而会更低。

但是,问题确实存在,不管看着有多像,但毕竟是有三个词,加上“到底该学哪个”这类的问题常年盘踞提问排行榜,这里我还是想尝试先回答。首先要说的是,数据挖掘、机器学习和模式识别三者并不存在什么无法逾越的鸿沟,经常出现一个算法到处客串的情况,边界越来越模糊已经是肉眼可见的大趋势。就核心内容来看,机器学习主要是工具集,数据挖掘和模式识别,则是这套工具集的两块用武之地,所以,在学习数据挖掘和模式识别的课上,你不用意外,无论选用什么教材,肯定都会看到非常多机器学习的老面孔。

再说模式识别。模式识别的重点在于两个字,识别,所以一般的应用形式都叫XX识别,譬如说现在大家都很熟的人脸识别,往大了说就是图像识别。除了图像,模式识别也研究其它各种数据形式,譬如音频类的语音识别,以及文本类的自然语言识别,当然,现在更习惯称之为自然语言理解。

最后回到我们今天的主角,数据挖掘。在写作时,我很想找到一条对数据挖掘的形式化定义,让大家能有一些具象的感觉,翻了很多资料,最后也只能宣告放弃。不过,这些资料虽然没有,我姑且取个交集,结论大概是所谓的数据挖掘,就是在各种数据之中,通过一定的方法和工具,挖掘发现感兴趣的知识。

归结来说,数据挖掘就是要解决三个问题,去哪挖、挖什么和怎么挖。下面我们就分三个部分分别介绍,数据挖掘是怎样思考这三个问题的。

03

去哪挖

数据挖掘数首先要解决的问题自然就是“数据”的问题,也就是去哪挖的问题。很多人也许觉得,这算个啥问题,数据挖掘数据挖掘,当然就是去有“数据”的地方挖。我听过一些数据挖掘的课程,也参加过一些数据挖掘的比赛,给我的一个很深的感觉就是,数据是现成的,它就摆在那里,看得见摸得着,你要做的就是上家伙削它。

真的是这样吗?不对。数据在哪里是一个非常值得花时间仔细思考的问题。很多书把数据挖掘称作数据掘金,这个比喻恰如其分,挖数据也好挖金子也罢,是不是可以随便找个什么地方盘腿坐下,只要一套组合技高水平地施展完毕,金子就能“哗”地蹦出地面?肯定不是。你要挖着金子,那个地方首先得有金子。在没金子的地方挖金子,不管再怎么努力,用什么方法工具,都不可能挖到金子,因为这叫缘木求鱼。

这个问题许多书本都不太爱展开,确实,数据挖掘和哈姆雷特差不多,一千个挖掘项目有一千种挖掘需求,怎么总结也很难避免落一个挂一漏万的结果。不过,前面我们说什么是数据挖掘的时候,举了学炒股做例子,不妨多说两句,也许可以给大家带来一点思考。

我们说炒股有很多流派,有技术分析流,有价值投资流,还有门口大妈流,这些流派要解决的都是同一个问题,后市走势问题,但是,到底什么才和后市走势相关、最好是密切相关呢?不同流派有不同看法,结果就是大家所选择要去挖掘的数据并不相同,技术分析流看的是K线图,价值投资流看的是公司运营情况,门口大妈流则选择去看门口大妈。我们假设一个极端的情况,假设K线图真的是像一些人说的,准确性还不如找猴子掷飞镖来得高,也就是K线图和后市走势实际没啥关系,那水平再高的大牛花再多的时间研究,最终也不可能从K线图中找出真正有价值的信息。

去哪挖?去有金子的地方挖。

04

挖什么

数据挖掘,挖的当然是数据了。不过,数据的形式有很多种。按数据类型来分,数据挖掘主要处理非依赖性数据和依赖型数据。非依赖性数据相对简单,也就是我们通常所说的“多维数据”,一条记录包括多个项目。这么说也许比较抽象,其实我们都见过,回忆一下填过的各种表格,譬如说报名表,需要填姓名、性别、年龄等等信息,这就是典型的多维数据

不过,想也知道,这些不同的项目,里面的数据格式是不尽相同的。譬如说姓名填写的是文本,性别通常是二选一,而年龄则是一个数字。在数据挖掘中,这些不同的格式也要区别对待。我看过一些数据挖掘的教材,把这些类型分得很细,充分体现了学术的严谨性。不过有些类型的名字起得太学术,还要对名字本身进行解释,这样文章篇幅就长了。这里我按经验整理,大致可以化为以下三种:

  • 连续型数据。连续型数据首先是数值数据,而“连续”是相对于“离散”而言的,数值序列中间不会出现中断或者跳跃,譬如说年龄、气温就是此类。

  • 离散型数据。离散型数据同样也是数值数据,简单来说就是“不连续”的数据。你可能会好奇,什么样的数据会不连续呢?很多,譬如说性别,我们用0表示女,1表示男,那性别这一栏就要么是0要么是1,中间不会有其它的值,这就是典型的离散数据。

  • 文本型数据。前面我们一直在强调数值数据,但文本型数据在自然环境中同样非常常见,譬如说姓名,又譬如说前面提到的门口大妈流,这些都是以文本形式存储的数据。不过众所周知,文本型数据是没法直接进行计算的,一般需要通过转换成向量来进行分析。

非依赖型数据最大特点就是各个数据项彼此独立,相互之间没有依赖关系,不会“牵一发而动全身”,所以操作难度相对较低。

说完了非依赖型数据,再说说依赖型数据,所谓的“依赖”,也就是数据项之间存在某种关联变化的关系,数据挖掘将这种关系又具体分为隐式依赖关系和显示依赖关系,二者的区别在于前者的依赖比较含蓄,后者更加赤果果。但我觉得两者边界十分模糊,这里只说“依赖”究竟是怎么一回事。

数据挖掘将依赖型数据分为以下三种:

  • 序列数据。序列数据是可以再细分的,包括连续型序列数据和离散型序列数据,但它们的特点都是明显存在着上下文依赖关系,譬如说最常见的时序数据,也就是时间序列数据。这是一种连续型的序列数据,上一个时间片和下一个时间片存在着显式或隐式的依赖关系。我们在前面已经介绍了一种序列数据,K线图。K线图是典型的时序数据,大家一般认为,行情的当前走势和未来走势是存在着某种依赖关系的,细分来说,是隐式依赖关系。

  • 空间数据。空间数据通常就是坐标数据,最容易联想到地理位置坐标,也就是经纬度,但“坐标”的应用非常广泛,譬如说宏观经济的各种指标,不同的国家通过逻辑编码,同样可以构成坐标。就我的经验,空间数据经常和时间密切关联,形成某种轨迹性质的图像,也叫时空数据,和时序数据可能会存在交集。

  • 图数据。图是计算机科学中很常用的一种数据结构,经常用来表示几个节点之间的关系,而在我们生活中也经常能看到各种“关系图”,所以,图数据自然也是一种典型的依赖型数据,而且往往是显示依赖关系。

05

怎么挖

怎么挖是数据挖掘的重点内容,有很多道工序,每一道工序展开又能是一整套方法体系。总的来说,数据挖掘有三大块工序,数据采集、数据预处理和数据分析。

先说这个数据采集吧,在很多人的直觉中,“数据”就是一个文件,它就岁月静好地躺在那里,你写程序去读了就好,许多数据比赛也强化了这一印象。但实际上,数据可能产生于多个不同的地方,譬如说类型完全不同的传感器,又譬如说各种不同的Web网站,火了很久还将火很久的大数据,就是从Web开始的。Web数据有最大的特点就是“大”,动不动就说我几秒产生多少个T的数据,到底有多大不要问,问就是海量。那海量数据采哪些怎么采、怎么存储、流式数据怎么分析,每一步都是一个问题,都需要你需要想各种办法。完成数据采集,将各种所需数据存入数据库,这就形成了数据仓库。这是数据挖掘的基础。

数据预处理主要是特征提取和数据清洗,包括了对原始数据进行类型转换、缺失值填补、将文本数据数据化向量化、缩放标准化等等等等。数据预处理将直接决定数据的最终质量,对挖掘结果产生十分显著的影响,有非常多的经验和技巧,完全可以再写一篇文章。

最后才是数据分析。我刚学的时候,以为“数据挖掘”就是数据分析,相信很多朋友都有过同样的误会,现在知道了,需要经历前面的千山万水才能走到这一步。但是,虽然在流程上,数据分析是最后一步,但这是最核心的一步,最终能挖到金子还是钻石,还得靠这一步。在另一方面,到了数据分析阶段,任务的背景相对就淡化了,而问题的共性明显增加,根据不同的问题积累的工具和方法,也更加容易形成“套路”。所以,数据分析自然也是数据挖掘作为一门课程的重点章节。

数据挖掘都归纳了哪些问题呢?主要包括分类问题、聚类问题、关联模式挖掘、关联模式和异常检测这四个大类,了解机器学习的朋友肯定很有亲切感,分类问题和聚类问题是机器学习最经典的两大类问题,这就是数据挖掘为什么会看到机器学习的内容。这四个问题还可以细分,譬如经典的啤酒尿布,就是关联模式问题下的频繁项挖掘问题。这些问题都有对应的算法,不同的环境下又有不同的应对方法。

这部分内容很多,是数据挖掘的重头戏,我推荐两本书,一本是韩家炜教授的《数据挖掘:概念与技术》,这是数据挖掘领域知名度最高、也是最经典的一本教材,大家肯定不陌生。另一本则是新出的《数据挖掘:原理与实践》,分为“基础篇”和“进阶篇”,篇幅上就明显增加,而且新书都有一个优点,补充了对新热点的介绍,如怎样挖掘图数据和社交网站数据,可以通过阅读本书追踪数据挖掘的最新进展。

 

 

作者简介:

莫凡,网名木羊同学。娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。

 

终于有人把数据挖掘讲明白了

扫码关注作者

 

 

RECOMMEND

推荐阅读

 

终于有人把数据挖掘讲明白了

01

《数据挖掘:原理与实践(基础篇)》 

终于有人把数据挖掘讲明白了

作者[美] 查鲁·C. 阿加沃尔

译者:王晓阳、王建勇、禹晓辉、陈世敏

推荐理由

大数据和人工智能时代的数据挖掘教材和工具书。从四个“超级问题”出发,不仅详解数据挖掘的基础知识,而且还介绍高级数据类型,结合复杂多样的实际数据环境,探讨数据挖掘的应用场景和使用方法。

本书中文版分为基础篇和进阶篇。基础篇(包括原书的第1-13章)详细介绍了针对数据挖掘的四个主要问题(聚类、分类、关联模式挖掘和异常分析)的各种解决方法、用于文本数据领域的特定挖掘方法,以及对于数据流的挖掘应用。

 

终于有人把数据挖掘讲明白了

02

《数据挖掘:原理与实践(进阶篇)》 

终于有人把数据挖掘讲明白了

作者:[美] 查鲁·C. 阿加沃尔

译者:王晓阳、王建勇、禹晓辉、陈世敏

推荐理由

大数据和人工智能时代的数据挖掘教材和工具书。从四个“超级问题”出发,不仅详解数据挖掘的基础知识,而且还介绍高级数据类型,结合复杂多样的实际数据环境,探讨数据挖掘的应用场景和使用方法。

进阶篇(包括原书的第14-20章)主要讨论了用于不同数据领域(例如时序数据、序列数据、空间数据、图数据)的特定挖掘方法,以及重要的数据挖掘应用(例如Web数据挖掘、排名、推荐、社交网络分析和隐私保护)。

终于有人把数据挖掘讲明白了

03

《数据挖掘导论(原书第2版)》

 

终于有人把数据挖掘讲明白了

作者:[美]陈封能、迈克尔·斯坦巴赫等

译者:段磊 张天庆 等

推荐理由

陈封能领衔编写的数据挖掘经典畅销教材新版

斯坦福大学、密歇根州立大学、明尼苏达大学、得克萨斯大学等知名高校的数据挖掘课程教材。从基础概念和算法的角度介绍数据挖掘所使用的主要原理与技术。

 

终于有人把数据挖掘讲明白了

04

《数据挖掘:概念与技术(原书第3版)》 

终于有人把数据挖掘讲明白了

作者:(美)Jiawei Han、Micheline Kamber、Jian Pei 

译者:范明、孟小峰

推荐理由

数据挖掘领域最具里程碑意义的经典著作,完整全面阐述该领域的重要知识和技术创新。

引入了许多算法和实现示例,全部以易于理解的伪代码编写,适用于实际的大规模数据挖掘项目。讨论了一些高级主题,例如挖掘面向对象的关系型数据库、空间数据库、多媒体数据库、时间序列数据库、文本数据库、万维网以及其他领域的应用等。全面而实用地给出用于从海量数据中获取尽可能多信息的概念和技术。

终于有人把数据挖掘讲明白了

京东开学季大促限时5折

点击阅读全文进入大促专题囤书吧

终于有人把数据挖掘讲明白了

欢迎加入计算机专业读者群一起学习

扫码备注“黑皮书”,否则不予通过

终于有人把数据挖掘讲明白了

扫码关注【图书小编辑】视频号

每天来听华章哥讲书

终于有人把数据挖掘讲明白了

更多精彩回顾

书讯 | 3月书讯 | 此时已莺飞草长,爱的书正在路上…

资讯 | DB-Engines 2月数据库排名:三霸主集体“亮红灯”?小众数据库不可小觑

书单 | 股市绿油油,牛年基金热还会持续吗?不妨看书学习一下

干货 | 一个关键字提升ClickHouse 1.6倍聚合性能

收藏 | 计算机系统漫游:贯穿计算机系统所有方面的重要概念

赠书 | 【第44期】平均月薪 21.8k、中国开发者占比最高,揭晓 Go 语言真实现状!

终于有人把数据挖掘讲明白了

终于有人把数据挖掘讲明白了

点击阅读全文购买

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150236.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 自学编程的妙方法,直接省了几万块钱报班,不收藏就可惜了!

    自学编程的妙方法,直接省了几万块钱报班,不收藏就可惜了!答应我,别再做无用功了,好方法都在这里了!

  • 【10】进大厂必须掌握的面试题-版本控制面试

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 Q1。什么是版本控制? 这可能是您在面试中最容易遇到的问题。我的建议是首先给出版本控制的定义。它是一个记录一段时间内…

  • executescalar mysql_ExecuteScalar

    executescalar mysql_ExecuteScalar这两个答案和一点点思考使我想到了一个接近答案的东西。首先再澄清一下:该应用程序是用C#(2.0+)编写的,并使用ADO.NET与SQLServer2005进行通信。镜像设置是托管主体和镜像的两个W2k3服务器以及托管作为监视器的快速实例的第三个服务器。这样做的好处是,故障转移对于使用数据库的应用程序几乎是透明的,它将对某些连接引发错误,但从根本上讲一切都会很好地进行。是的,我们得到了奇怪的误报…

  • java面试不会怎么办_【必须录用】面试遇到不会回答的问题,该怎么办?

    java面试不会怎么办_【必须录用】面试遇到不会回答的问题,该怎么办?一.前言今天给大家讲讲面试过程当中最长遇到的窘境,也是最能体现一个候选人临场应变能力的地方,那就是当我们在面试的过程当中,遇到的问题回答不上来的时候,该怎么办。二.误区在开始讲解之前,先纠正一个误区,那就是对于一场面试而言,最后的结果好坏并不完全取决于面试当中的问题是否都回答了上来。能不能录取和是否回答出所有问题并没有直接的联系。换句话说,我自己经历过的,无论是面试也好,还是面别人也罢,问题没…

  • 老板口中的一区二区是什么意思?[通俗易懂]

    老板口中的一区二区是什么意思?[通俗易懂]不少作者对SCI期刊有所耳闻,但是对于SCI期刊的级别划分就不清楚了,有的作者看了评职晋升的要求后有了疑问,比如有的要求发表SCI一区期刊。比如某大学教授职称评审就要求以第一作者在《Science》、《Cell》等顶级杂志上发表学术论文1篇;或以第一作者在SCI一区期刊上发表学术论文X篇;或以第一作者在SCI二区及以上期刊发表学术论文X篇。那很多人就搞不清楚什么是SCI一区期刊、二区期刊了。

  • spring 整合 mybatis原理

    spring 整合 mybatis原理SqlSessionFactoryBean的创建1.SqlSessionFactoryBean这个类实现了三个接口,一个是InitializingBean,另一个是FactoryBean,还有就是ApplicationListener接口。下面说明一下实现了这三个接口的,有什么作用InitializingBean接口:实现了这个接口,那么当bean初始化的时候,spring就会调用该接口的实现…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号