如何系统地学习数据挖掘?
信息安全公益宣传,信息安全知识启蒙。
加微信群回复公众号:微信群;QQ群:16004488
加微信群或QQ群可免费索取:学习教程
教程列表见微信公众号底部菜单
问题:如何系统地学习数据挖掘?
虽然是本科毕业,但是在看数据挖掘方面的算法理论时经常感觉一些公式的推导过程如天书一般,例如看svm的数学证明,EM算法..,感觉知识跳跃比较大, 是我微积分学的不好还是中间有什么好的教材补充一下,数据挖掘系统的学习过程是怎么样的,应该看那些书(中文最好)?
回答者:Han Hsiao,发现隐藏的价值
数据挖掘:What?Why?How?
这个问题思考了很久,作为过来人谈一谈,建议先看下以前的一些回答。
●什么是数据挖掘?
●怎么培养数据分析的能力?
●如何成为一名数据科学家?
磨刀不误砍柴工。在学习数据挖掘之前应该明白几点:
●数据挖掘目前在中国的尚未流行开,犹如屠龙之技。
●数据初期的准备通常占整个数据挖掘项目工作量的70%左右。
●数据挖掘本身融合了统计学、数据库和机器学习等学科,并不是新的技术。
●数据挖掘技术更适合业务人员学习(相比技术人员学习业务来的更高效)
●数据挖掘适用于传统的BI(报表、OLAP等)无法支持的领域。
●数据挖掘项目通常需要重复一些毫无技术含量的工作。
如果你阅读了以上内容觉得可以接受,那么继续往下看。
学习一门技术要和行业靠拢,没有行业背景的技术如空中楼阁。技术尤其是计算机领域的技术发展是宽泛且快速更替的(十年前做网页设计都能成立公司),一般人没有这个精力和时间全方位的掌握所有技术细节。但是技术在结合行业之后就能够独当一面了,一方面有利于抓住用户痛点和刚性需求,另一方面能够累计行业经验,使用互联网思维跨界让你更容易取得成功。不要在学习技术时想要面面俱到,这样会失去你的核心竞争力。
一、目前国内的数据挖掘人员工作领域大致可分为三类。
●1)数据分析师:在拥有行业数据的电商、金融、电信、咨询等行业里做业务咨询,商务智能,出分析报告。
●2)数据挖掘工程师:在多媒体、电商、搜索、社交等大数据相关行业里做机器学习算法实现和分析。
●3)科学研究方向:在高校、科研单位、企业研究院等高大上科研机构研究新算法效率改进及未来应用。
二、说说各工作领域需要掌握的技能。
(1).数据分析师
●需要有深厚的数理统计基础,但是对程序开发能力不做要求。
●需要熟练使用主流的数据挖掘(或统计分析)工具如Business Analytics and Business Intelligence Software(SAS)、SPSS、EXCEL等。
●需要对与所在行业有关的一切核心数据有深入的理解,以及一定的数据敏感性培养。
●经典图书推荐:《概率论与数理统计》、《统计学》推荐David Freedman版、《业务建模与数据挖掘》、《数据挖掘导论》、《SAS编程与数据挖掘商业案例》、《Clementine数据挖掘方法及应用 》、《Excel 2007 VBA参考大全》、《IBM SPSS Statistics 19 Statistical Procedures Companion》等。
(2).数据挖掘工程师
●需要理解主流机器学习算法的原理和应用。
●需要熟悉至少一门编程语言如(Python、C、C++、Java、Delphi等)。
●需要理解数据库原理,能够熟练操作至少一种数据库(Mysql、SQL、DB2、Oracle等),能够明白MapReduce的原理操作以及熟练使用Hadoop系列工具更好。
●经典图书推荐:《数据挖掘概念与技术》、《机器学习实战》、《人工智能及其应用》、《数据库系统概论》、《算法导论》、《Web数据挖掘》、《 Python标准库》、《thinking in Java》、《Thinking in C++》、《数据结构》等。
(3).科学研究方向
●需要深入学习数据挖掘的理论基础,包括关联规则挖掘 (Apriori和FPTree)、分类算法(C4.5、KNN、Logistic Regression、SVM等) 、聚类算法 (Kmeans、Spectral Clustering)。目标可以先吃透数据挖掘10大算法各自的使用情况和优缺点。
●相对SAS、SPSS来说R语言更适合科研人员The R Project for Statistical Computing,因为R软件是完全免费的,而且开放的社区环境提供多种附加工具包支持,更适合进行统计计算分析研究。虽然目前在国内流行度不高,但是强烈推荐。
●可以尝试改进一些主流算法使其更加快速高效,例如实现Hadoop平台下的SVM云算法调用平台--web 工程调用hadoop集群。
●需要广而深的阅读世界著名会议论文跟踪热点技术。如KDD,ICML,IJCAI,Association for the Advancement of Artificial Intelligence,ICDM 等等;还有数据挖掘相关领域期刊:ACM Transactions on Knowledge Discovery from Data,IEEE Transactions on Knowledge and Data Engineering,Journal of Machine Learning Research Homepage,IEEE Xplore: Pattern Analysis and Machine Intelligence, IEEE Transactions on等。
●可以尝试参加数据挖掘比赛培养全方面解决实际问题的能力。如Sig KDD ,Kaggle: Go from Big Data to Big Analytics等。
●可以尝试为一些开源项目贡献自己的代码,比如Apache Mahout: Scalable machine learning and data mining ,myrrix等(具体可以在SourceForge或GitHub.上发现更多好玩的项目)。
●经典图书推荐:《机器学习》 《模式分类》《统计学习理论的本质》《统计学习方法》《数据挖掘实用机器学习技术》《R语言实践》,英文素质是科研人才必备的《Machine Learning: A Probabilistic Perspective》《Scaling up Machine Learning : Parallel and Distributed Approaches》《Data Mining Using SAS Enterprise Miner : A Case Study Approach》《Python for Data Analysis》等。
三、以下是通信行业数据挖掘工程师的工作感受。
真正从数据挖掘项目实践的角度讲,沟通能力对挖掘的兴趣爱好是最重要的,有了爱好才可以愿意钻研,有了不错的沟通能力,才可以正确理解业务问题,才能正确把业务问题转化成挖掘问题,才可以在相关不同专业人才之间清楚表达你的意图和想法,取得他们的理解和支持。所以我认为沟通能力和兴趣爱好是个人的数据挖掘的核心竞争力,是很难学到的;而其他的相关专业知识谁都可以学,算不上个人发展的核心竞争力。
说到这里可能很多数据仓库专家、程序员、统计师等等都要扔砖头了,对不起,我没有别的意思,你们的专业对于数据挖掘都很重要,大家本来就是一个整体的,但是作为单独一个个体的人来说,精力有限,时间有限,不可能这些领域都能掌握,在这种情况下,选择最重要的核心,我想应该是数据挖掘技能和相关业务能力吧(从另外的一个极端的例子,我们可以看, 比如一个迷你型的挖掘项目,一个懂得市场营销和数据挖掘技能的人应该可以胜任。这其中他虽然不懂数据仓库,但是简单的Excel就足以胜任高打6万个样本的数据处理;他虽然不懂专业的展示展现技能,但是只要他自己看的懂就行了,这就无需什么展示展现;前面说过,统计技能是应该掌握的,这对一个人的迷你项目很重要;他虽然不懂编程,但是专业挖掘工具和挖掘技能足够让他操练的;这样在迷你项目中,一个懂得挖掘技能和市场营销业务能力的人就可以圆满完成了,甚至在一个数据源中根据业务需求可以无穷无尽的挖掘不同的项目思路,试问就是这个迷你项目,单纯的一个数据仓库专家、单纯的一个程序员、单纯的一个展示展现技师、甚至单纯的一个挖掘技术专家,都是无法胜任的)。这从另一个方面也说明了为什么沟通能力的重要,这些个完全不同的专业领域,想要有效有机地整合在一起进行数据挖掘项目实践,你说没有好的沟通能力行吗?
数据挖掘能力只能在项目实践的熔炉中提升、升华,所以跟着项目学挖掘是最有效的捷径。国外学习挖掘的人都是一开始跟着老板做项目,刚开始不懂不要紧,越不懂越知道应该学什么,才能学得越快越有效果。我不知道国内的数据挖掘学生是怎样学的,但是从网上的一些论坛看,很多都是纸上谈兵,这样很浪费时间,很没有效率。
另外现在国内关于数据挖掘的概念都很混乱,很多BI只是局限在报表的展示和简单的统计分析,却也号称是数据挖掘;另一方面,国内真正规模化实施数据挖掘的行业是屈指可数(银行、保险公司、移动通讯),其他行业的应用就只能算是小规模的,比如很多大学都有些相关的挖掘课题、挖掘项目,但都比较分散,而且都是处于摸索阶段,但是我相信数据挖掘在中国一定是好的前景,因为这是历史发展的必然。
讲到移动方面的实践案例,如果你是来自移动的话,你一定知道国内有家叫华院分析的公司(申明,我跟这家公司没有任何关系,我只是站在数据挖掘者的角度分析过中国大多数的号称数据挖掘服务公司,觉得华院还不错,比很多徒有虚名的大公司来得更实际),他们的业务现在已经覆盖了绝大多数中国省级移动公司的分析挖掘项目,你上网搜索一下应该可以找到一些详细的资料吧。我对华院分析印象最深的一点就是2002年这个公司白手起家,自己不懂不要紧,一边自学一边开始拓展客户,到现在在中国的移动通讯市场全面开花,的确佩服佩服呀。他们最开始都是用EXCEL处理数据,用肉眼比较选择比较不同的模型,你可以想象这其中的艰难吧。
至于移动通讯的具体的数据挖掘的应用,那太多了,比如不同话费套餐的制订、客户流失模型、不同服务交叉销售模型、不同客户对优惠的弹性分析、客户群体细分模型、不同客户生命周期模型、渠道选择模型、恶意欺诈预警模型,太多了,记住,从客户的需求出发,从实践中的问题出发,移动中可以发现太多的挖掘项目。最后告诉你一个秘密,当你数据挖掘能力提升到一定程度时,你会发现无论什么行业,其实数据挖掘的应用有大部分是重合的相似的,这样你会觉得更轻松。
四、成为一名数据科学家需要掌握的技能图。(原文:Data Science: How do I become a data scientist?)
人一能之,己十之;人十能之,己千之。果能此道矣,虽愚,必明;虽柔,必强。与君共勉。
以上,祝各位挖掘到自己的快乐和金矿:)
回答者:肖智博,做过几个项目
谢邀。
你的情况很正常,本科毕业的学生并不能完全看懂大部分算法的证明。本科学的概率论或者是统计学都是基础,而且我不得不说,这个基础很不牢固,我个人当初就是花了很多时间补那些当初本科课程里面没有讲但是后面研究很重要的“基础”知识。这么说吧,凡事当初概率论老师课上不讲的,后面研究都是有用的。因为本科的教育目的不是让所有人都读博士,所以老师对讲义内容的选取也是可以理解的,这个就需要你自己研究了。我之前回答过相关的问题,你可以去我的回答看。不过我觉得我之前的回答比较宽泛,并不一定能够完全回答你的问题。对于知识跳跃比较大的问题,没有好办法,你什么不会,就去看哪块。说起来很简单,其实挺耗费时间的,但是一旦踏实地学了进去,你的收获一定是大大的。另外一种可以稍微省力一些的方法是去搜索,现在有很多机器学习研究者会写一些浅显入门的内容,关于SVM的就有很多,你只要在Google里面搜一下,我想一定会找到很多图文并茂,深入浅出的内容的。
对于最后的括号内容(中文最好),我劝你放弃这个想法。虽然说现在教材出版已经很快了,但是教材这个东西都不是最新的内容,甚至是英文教材。教材都是把经典的方法讲出来,当作既成事实,而一本出名的英文教材翻译成中文,再出版发行,这里面的时间间隔是按年为单位计算的。另外,很遗憾的说,本土出版的、质量优秀、被业界公认的、原创数据挖掘教程还没有(till 2013年1月30日,说不定将来会有呢)。所以,放弃这个念头吧。
下面推荐一些资源供你参考。
●公开课。个人认为最好的系统学习机器学习和数据挖掘的方法是去参加公开课的学习。强烈推荐的是Andrew Ng的 Machine Learning课程,再coursera上有的,据说搜狐公开课也翻译了,不过没去搜狐看过,不知道翻译质量如何。除了Coursera之外,还有很多国外优秀大学的公开课平台供你选择。
●国外大学关于机器学习和数据挖掘课程的主页。比如Andrew Ng在coursera上Machine Learning的前身就是Stanford CS229。美国欧洲的知名大学都有机器学习课程,课程主页上都有详细的syllabus,还有非常多非常棒的资源提供。而且国外的课程内容都是会每年更新的,所以跟这种课程也能学到很多东西。具体有哪些,你可以自己搜一下,on the top of my head,CMU Andrew Moore的课程很老很经典,Eric Xing的课程很新很棒!Jerry Zhu的CS 731 Advanced Artificial Intelligence,还有 Stanford CS369M Algorithms for Massive Data Set Analysis。
●龙星计划。这个好像知乎上提的很少,大多数研究者也不太清楚。摘抄一下:龙星计划----计算机科学技术学术交流系列活动是一个杰出的海外华人教授回国系统讲授研究生课程的计划。由中国科学院资助,龙星计划委员会负责, 设在中国科学院计算技术研究所的龙星计划办公室提供日常服务。个人极力推崇的是2010年Eric Xing教授和Feifei Li教授在上海那期的机器学习课程,两位老师都非常负责任,内容极为翔实。听说2012年的内容也不错,网上也有视频,你可以找来听听。
哦,上面的内容都不是看书,具体看什么书,我之前也写过,你自己看一下我的回答吧。我不想每个回答里面都贴自己之前回答的链接。
回答者:Nemo
你选的入门书太难。
推荐http://www-users.cs.umn.edu/~kumar/dmbook/index.php
这本书相对于Jiawei Han的书来说,更合适入门。
回答者:关丹辉,For Data Science: http://www.datakit.cn
我尝试着回答一下。
数据挖掘本身就是算法模型、数据仓库等等各种乱七八糟的知识混杂而来的。所以,要想真的系统的学,难度非常大。
入门:
入门书籍我首推<数据挖掘导论>。这本书对于原理讲的还是非常切实的,不会有太多的数学公式,而且对于算法都提出了优缺点,使用场景,以及出了问题怎么办。尤其不错的是,把常用模型和高级话题分成连续的两个章节,很适合入门。但是,我非常强调一点:如果你打算学数据挖掘,那么这本书,你要从头开始看!你主动学习,就不能像在学校一样,指望别人划重点的学习,那样没用。在学习中,对于课后练习,一定要自己去做一做才能知道自己理解怎么样了,不会了就去咨询。网上也有参考答案,甚至你自己可以选择一些工具是实现各个模型看看。使用R语言、spss、sas都可以,我这里就不对比各个工具的选择了,兵器用着趁手就好。
进阶:
说实话,当你把入门级别过了,你就自然的发现自己哪儿需要加强了。补习一下数学和矩阵论的东西,参加一些公开课——这个时候,你已经在不自觉的分割数据挖掘为各个学科,并加以强化了。这个时候,你可以看很多书,发现很多有趣的问题,比如在数据挖掘导论中提到的很多模型,在机器学习中并没有,而机器学习中各个模型并非独立的,都是相互联系而统一的。这个时候,肖智博前辈提到的公开课,你都可以有选择的参与一下。各种书籍,有选择的阅读和深入。在进阶的过程中,也是你确定自己方向的过程。偏工程、偏应用、偏研究还是各种的,每一个方向都有不同的道路可以走。你的梦想,确定你的选择和方向,进而确定你的深度。有些人想能够很好的用sas实现就可以,有些人要自己去写代码,有些人要去开创新的天地。
高手:
我还在进阶中,所以以后的事情,以后再说吧。
回答者:bric,lzy
很难系统,你可以是搞计算机应用出道的,比如图像和视觉,也可以是数据库,当然你还可以是搞统计学和金融工程出道的,还可以是搜索等技术转向数据挖掘。由于方法在互相渗透,技术在不断融合,所以找到立足点处理数据就好了。