收藏一下大牛的数据挖掘学习经验

只是过来人,说点看法:

基础篇:

1. 读书《Introduction to Data Mining》,这本书很浅显易懂,没有复杂高深的公式,很合适入门的人。另外可以用这本书做参考《Data Mining : Concepts and Techniques》。第二本比较厚,也多了一些数据仓库方面的知识。如果对算法比较喜欢,可以再阅读《Introduction to Machine Learning》。

2. 实现经典算法。有几个部分:
a. 关联规则挖掘 (Apriori, FPTree, etc.)
b. 分类 (C4.5, KNN, Logistic Regression, SVM, etc.)
c. 聚类 (Kmeans, DBScan, Spectral Clustering, etc.)
d. 降维 (PCA, LDA, etc.)
e. 推荐系统 (基于内容的推荐,协同过滤,如矩阵分解等)
然后在公开数据集上测试,看实现的效果。可以在下面的网站找到大量的公开数据集:http://archive.ics.uci.edu/ml/

3. 熟悉几个开源的工具: Weka (用于上手); LibSVM, scikit-learn, Shogun

4. 到 https://www.kaggle.com/ 上参加几个101的比赛,学会如何将一个问题抽象成模型,并从原始数据中构建有效的特征 (Feature Engineering).

到这一步的话基本几个国内的大公司都会给你面试的机会。

进阶篇:

1. 读书,下面几部都是大部头,但学完进步非常大。
a.《Pattern Recognition and Machine Learning》
b.《The Elements of Statistical Learning》
c.《Machine Learning: A Probabilistic Perspective》
第一本比较偏Bayesian;第二本比较偏Frequentist;第三本在两者之间,但我觉得跟第一本差不多,不过加了不少新内容。当然除了这几本大而全的,还有很多介绍不同领域的书,例如《Boosting Foundations and Algorithms》,《Probabilistic Graphical Models Principles and Techniques》;以及理论一些的《Foundations of Machine Learning》,《Optimization for Machine Learning》等等。这些书的课后习题也非常有用,做了才会在自己写Paper的时候推公式。

2. 读论文。包括几个相关会议:KDD,ICML,NIPS,IJCAI,AAAI,WWW,SIGIR,ICDM;以及几个相关的期刊:TKDD,TKDE,JMLR,PAMI等。跟踪新技术跟新的热点问题。当然,如果做相关research,这一步是必须的。例如我们组的风格就是上半年读Paper,暑假找问题,秋天做实验,春节左右写/投论文。

3. 跟踪热点问题。例如最近几年的Recommendation System,Social Network,Behavior Targeting等等,很多公司的业务都会涉及这些方面。以及一些热点技术,例如现在很火的Deep Learning。

4. 学习大规模并行计算的技术,例如MapReduce、MPI,GPU Computing。基本每个大公司都会用到这些技术,因为现实的数据量非常大,基本都是在计算集群上实现的。

5. 参加实际的数据挖掘的竞赛,例如KDDCUP,或 https://www.kaggle.com/ 上面的竞赛。这个过程会训练你如何在一个短的时间内解决一个实际的问题,并熟悉整个数据挖掘项目的全过程。

6. 参与一个开源项目,如上面提到的Shogun或scikit-learn还有Apache的Mahout,或为一些流行算法提供更加有效快速的实现,例如实现一个Map/Reduce平台下的SVM。这也是锻炼Coding的能力。

到这一步国内的大公司基本是想哪去哪,而且待遇也不差;如果英语好,去US那边的公司难度也不大了。

其他大牛的经验总结:

A:

实际的项目中:

  1. 首先就是要明确你希望挖的东西能产生什么业务价值,而非用什么挖掘算法,那是手段,可以在后面再关注;要能够具体描绘你的挖掘目标、价值,以及挖掘成果的预期展现形式,说服力如何,等等;

  2. 其次,和相关的小伙伴讨论,为了挖出你想要的成果,需要利用到哪些数据?这些数据中,哪些是已经有的,哪些还得想办法去收集?其中是否有些数据根本是不可能收集到的?这些收集不到的数据对于你想挖的成果会有什么影响?如果是致命影响,直接导致你的挖掘成果缺乏说服力,那就此歇菜,另找其他方向吧。反之,则安排计划和资源,把能收集到的数据尽快收集起来;
  3. 再次,根据收集到的数据的特点和收集过程的质量情况,清洗收集到的数据;
  4. 根据挖掘目标的情况和收集到的数据的特点,制定挖掘规划,选择合适的挖掘算法;
  5. 然后,就开始挖吧;
  6. 第一轮挖完,看看成果如何?有道理吗?有说服力吗?大多数情况,你会发现,哦,晕,忘了应该把这几个因素考虑进去了,还应该加进去这几方面的数据才能看出来。好,继续转向第2步,继续收集数据、清洗、调算法/参数,挖出来后再评估,一般情况得这么循环N个回合;
  7. 马马虎虎出来个差不多靠谱、勉强能自圆其说的初胚,这个成果看上去像那么回事儿了。
  8. 总结一个说法(分析成果)出来,为了你的说法,把数据再针对性地洗上几遍,给出一个更加干净的分析成果,这个版本基本上有说服力了。
  9. 讲究一点的,再画个信息图什么的,图文并茂,就可以初步交作业了;
  10. 在真实的项目中,还有一步,就是选取重要的评估视角和指标,根据具体的业务特点,把你的分析过程做成每周/每日/每小时都能给个角度固定的分析报告的服务。
  11. 再往前一步,如果你对这块业务真的很熟的话,还可以针对不同类型的分析结果,能给出相应的建议应对措施(Action),这样这此挖掘的业务价值就真正明确了。你做的活儿也没有停留在“活儿”这个份儿上,而是决策支持这个级别上了。
  12. B:
  13. 不是高手,只谈点经验。
    有相关的数学积累,(数值)线性代数,统计(多元,贝叶斯),优化。把好书读读,PRML,ESL,把里面的公式推推,实验代码实现一下,涉及的文章细节读读。参加一些项目或比赛。

时间: 12-16

收藏一下大牛的数据挖掘学习经验的相关文章

【分享】数据挖掘学习资料免费下载

 Artificial Intelligence - Wiley - Data Mining - Concepts Models Methods and Algorithms - 2003.chm 8.4 MB  IEEE - Finding Patterns in Three Dimensional Graphs Algorithms and Applications to Scientific Data Mining.pdf 561.8 KB  Mining The Web - Discov

对前端初学的学习经验和个人见解

这篇文章仅仅针对我自己在学习过程中的一些经验和看法: 回忆来说,自己也算是半路出家,并喜欢上了前端,有一颗要做技术和艺术相结合的心,但是由于种种限制,如今还没有什么成果,我认为学习一个知识,一种技巧,出发点一定是自己要喜欢,并且在喜欢的途中你要慢慢的爱上它,越来越觉得学习前端技术有时候就像是在谈恋爱,刚开始是那种火热的情愫,疯狂的爱恋,前期总有一些使不完得劲,但是走着走着就会出现问题,人家都说女人心海底针,但是我感觉前端技术也是一样,又是后看似简单,但是又很复杂,看似一个简单的方法却能解决复杂的

我个人的Java学习经验(一家之言)

声明:本文只是我的个人经验之谈,或者连经验之谈都算不上,因为我觉得自己还是个新手,没有什么经验可谈,就算是我分享一下自己从开始学习Java到现在的一些心路历程吧,各位看官暂且看吧,欢迎交流.第一部分算是我与Java之间的故事,第二部分是我的个人学习经验和体会,不喜欢看故事的,直接看第二部分,谢谢! 第一部分: 作为一个学习Java的非计算机专业的学生,我觉得学习Java是有难度的,这种难度是因为我们不了解或者没有相关的学习经验而导致的,当然,与兴趣爱好也有分不开的联系.我是一个IT爱好者,由于不

Flex布局的学习经验

做为css布局的又一种新方式,Flex拥有极强的使用效果,相比原来的float,position对元素样式的操作更加简洁,本文是我的一点学习经验和心得吧,如有错误以及不足之处,请多多指点. 好进入正题吧,首先借用阮一峰大神的一副图片: 再来说说flex的几个属性吧: 一.容器属性 1.flex-direction : row | row-reverse | column | column-reverse; 这个属性是定义元素在主轴上的排列顺序的,也就是上面的(main axis) row:元素在

Android学习经验分享

最近一直在学习安卓,一直以来都是通过自学和博客园的一些文章来进行学习.这里写下点个人学习安卓的感想与感悟. 一  为什么学习安卓 首相,个人比较喜欢手机上的各种App,觉得像我这样的人手机app粉丝也不再是少数.而在ios和Android分割的天下,显然Android所占的群众比是远多于ios的. 其次,本人临近毕业,将来想寻求一份关于移动开发的工作,而java方向的Android正和和本人的意愿相合. 最后一点,也是很客观的一点.虽然ios的开发者的薪金要高于Android,但是Android

CSS浮动(float)属性学习经验分享

作为一名前端开发的初学者,CSS的布局定位无疑成为了一个难点,这两天通过看一些博客的技术分享和自己的反复实践,大概领悟到了一些float的“门道”. 下面就通过一些例子来归纳总结一下我所学到的浮动特性: (一)浮动元素对其兄弟元素是标准流元素的影响: 现在假定HTML文档中从上到下有3个块元素A.B.C 1.现设定A.C为标准流中的元素,B设为float:left (注:为了更直观地显示,设B的透明度为0.5,B是在C上方的) 由此可见:将B设为浮动元素后,B脱离了标准文档流,浮于其上方,因此他

数据挖掘学习第一天2017/02/28

先写一写我的学习经历吧,本科是在一个三本学校,学的计算机科学与技术专业,并不是因为所谓的兴趣才选择了这个专业,只是觉得可能以后计算机会比较热门,没有什么远大的目标,农村出来的我只是想以后让爸妈不那么辛苦.不过家里虽都是辛苦钱,但是生活还算是小康.大学就是按部就班的上课,成绩中等,每天抱着以后要好好学习,成为计算机大牛的梦想,得过且过的度过了我的大学四年.坚持完成的唯一一件大事就是坚持考了本校的研究生,成为了一个本一学校的研究生. 沾沾自喜了一段时间,又开始计划自己研究生期间成为大牛的梦想,研究生

程序的学习过程和学习经验分享

每天,都会有人在微博上私信我,问我关于学习和成长的问题.这种问题我一般都不会回复某个j,毕竟每个人的情况不一样,每个人对待事物的性格也不一样,我不能夸下海口的说,你看某本书几个月就能如何如何,我能做的多数时候只是鼓励鼓励,其次我也从不认为我已经成长到一个多高的境界上,让我去给别人做指导,我还是当之有愧的. 但是,有时候看到大家私信我的时候,确实是处于一种很痛苦或是需要帮助的状态上. 最近晚上有空,就想写写自己从第一次接触程序,到一路颠簸学到今天的一些故事和经验,希望对大家有所帮助. 学习的三个阶

收藏:Javascript 脚本的调试经验

随着用JavaScript编程的深入,你会开始理解那些JavaScript给出的不透明错误信息.一旦你理解了你常犯的一般性错误,你就会很快知道怎样避免它们,这样你写的代码中的错误将越来越少.编程实际上是一种能随着时间不断飞快进步的技术.但是不管变得多么熟练,你仍然要花一些时间调试你的代码.如果你做过家庭作业,或有过JacaScript编程经验,你会知道相当多的时间是花在调试上.这很正常 - 这只是编程者必须做的事之一.实际上,按照大量的研究,程序员平均百分之五十的时间花在解决代码中的错误. 关键