自学机器学习、数据挖掘的几点建议

简介: 自学机器学习、数据挖掘的几点建议

前言

背景:一直有朋友希望我能介绍下自学机器学习、数据挖掘的经历,然而当我认真回首研究生这两年半,发现浪掉的时间居多,学习的时间太少,积累还不够(虽然校招季收获比较多的数据挖掘相关offer,其实人脉、运气、面试经验等其他因素占了很大比重)。所以在此只能聊聊一些浅显的认识,各位姑妄听之。

本文受众:有兴趣自学机器学习、数据挖掘的学生或程序员(也欢迎科班研究生、业界大拿拍砖,多多提出批评建议,先行谢过)


如何利用资源

数据挖掘这个领域可供自学的资源很广泛:MOOC(网络公开课)及课程相关讲义、书籍、博客、paper等等。鉴于学习资源浩如烟海,对资源进行过滤是非常重要的,这里谈谈我对资源利用的几点看法:

1. 只用经典资源    对于公开课:参考果壳MOOC上学员的评价,coursera的学员讨论区;对于书籍:主要参考亚马逊(美国/中国)、豆瓣上的书评以及Google Scholar中的引用数,CSDN、当当、京东上的书评也可略做参考;对于博客:只看那几个大牛的个人博客或者专业的社区;对于论文:Google Scholar的引用数是重要指标,但当你要follow一个新领域时,建议先turtorial再自己看新论文、做评价(因为新论文的引用数一般都不高)

2. 通读和略读的取舍 在筛选出经典资源的基础上,对于公开课:入门级的课程要坚持上完,进阶的课程选择性听一听;对于书籍:砖头书当参考手册看(如 PRML、模式分类、统计学习理论、数据挖掘导论、数字图像处理、C++ Primer),实践书、小而美的导论书建议通读(如数学之美、统计学习方法、机器学习实战、推荐系统实践、半监督学习导论、applied predictive model、essential     C++)

我的自学之路

13年之前


数学类课程,只学过微积分、线性代数、信号处理,零碎地了解和使用过神经网络,不了解机器学习,只听说过模式识别(以为就是人脸识别),也正因为对模式识别的不了解,保研的时候放弃了中科院自动化所和计算所两位牛导伸出的橄榄枝,选择离家更近的浙大,读我自己不太感兴趣的控制理论,研究电路。。。现在想来仍是有些遗憾(但不后悔),所以准备读研但没确定方向的同学,一定要抓紧时间多了解研究方向,争取选择自己感兴趣的,让遗憾最小化

13年


1.入学前的暑假,在网易公开课上刷了Andrew Ng的《机器学习》(对应 stanford CS229,很老的课程,大概是09年的),那时候coursera还没火,果壳mooc也没创办。这个课程难度比现在coursera上Ng的同名课程要难一些,几乎全是公式推导,而且这门课的SVM是重点,但并未提及神经网络,后来coursera上Ng的课程则是基本删掉了SVM,加进去神经网络(也能理解,因为深度学习火起来了)。当时因为对优化理论、矩阵理论还不够了解,所以留下不少疑惑


2. 同样暑假,自学了C++,几乎是把《essential C++》从头看到尾,然后选了书中一些作业去实现,因为本科一直用C写嵌入式,所以这本书看得比较顺。这本书实乃Lippman的良心之作啊,短小精悍,建议配合他的另一本大部头《C++ primer》一起看,作为辅助阅读。虽然后来一直没怎么用到C++,不过看C++库的时候不至于看不懂了

3. 入学后在coursera上看了Ng的机器学习的神经网络部分,本来想再看下Hinton的《神经网络》,但要看自己研究领域的论文,就放弃了

4. 买了吴军的《数学之美》,科普性质的书,也有推导,深入浅出,引人入胜,非常棒,对搜索和NLP领域的算法有了较多认识

5. 买了李航的《统计学习方法》,纯推导,把几大类经典模型背后的理论刻画得淋漓尽致,看了之后对SVM的VC维理论、EM算法等有了深刻认识

6. 选修了模式识别,教材用的是Duda的《模式分类》,一本砖头书,建议看前三章,主要涉及贝叶斯参数估计,另外LDA、PCA的推导也可以看看,讲的不错

7. 选修了英文版矩阵论,用的教材是老师的讲义,其实国内戴华的《矩阵论》就讲的非常好,国外的推荐看Roger的《Matrix analysis》(大部头,选择性看)

8. 买了《数据挖掘导论》(作者Ping-Ning Tan,不建议买Jiawei Han的那本),翻了翻,发现里面讲的算法大多已经了解了,讲的比较浅,适合入门,用来建立数据挖掘领域的知识体系结构

14年


1. 跟俩基友水了一下阿里的推荐算法大赛,是真的水,我跟另一个基友半途而废浪掉了,后来就剩队长一人苦苦坚持。。。


2. 选修了优化课程,自己课余读了读Forst的《Optimization_Theory and Practice》,偏应用一点,读完之后对理解LR、SVM等模型的优化方法,帮助非!常!大!

3. 买了Harrington的《机器学习实战》,开始接触python,同时买了张若愚的《Python科学计算》(后来证明没必要买,作者在网上放了网页版,方便索引和查找),Harrington这本书里的代码只调用了两个包:numpy,scipy,还有个matplotlib用来画图,然后造了一些算法的轮子。现在看来scikit-learn包已经包含了几乎所有常见算法,所以这本书看看代码、选几个实现一下就好,没必要从头到尾实现

4. 偶然接触了谱聚类,一发不可收拾,把领域相关的paper几乎扫了一遍,包括Ng2002年那篇、还有个很经典的turtorial,然后follow到了大神林达华的博客,看了他写的谱聚类与图论、马尔科夫链的联系,醍醐灌顶,自己用matlab实现了一下算法

5. 开始躲着老师在支付宝搬砖,一开始蛮无聊的,跟着数据分析师纯写SQL,后来接触了新业务,有向网络的关键节点发现,自然而然联想到之前搞过的谱聚类,于是啃了一本20多页的turtorial,得出结论:有向图的谱聚类不适合用在该业务。。。后来又有个业务,主管建议用半监督学习,于是啃了Xiaojin Zhu的《Introduction to semi-supervised learning》,以及周志华的一些讲义和论文。朱晓进(音译)的这本导论书简单易懂,一下子就让读者catch到了半监督方法的精髓(还有一本偏理论一点的Chapelle的《Semi-supervised learning》可作为扩展阅读)。后来自己在用Python实现算法的过程中,遇到一个不小的障碍,于是follow到了大神pluskid的博客,一下子解决了我的问题

15年


1. 买了项亮的《推荐系统实践》,大赞,国人难得有这样一本经典问世,虽然有瑕疵,但对于我等初学者来说,非常受益。读完之后对推荐系统用到的模型、整个知识体系都有深刻认识。用网上公开的数据集做了一个toy project


2. 看了下coursera上明尼苏达两位老师的《Recommender system》,简单易懂,很快pass完这门课


3. 把SVD++、Factorization machine相关的paper翻出来看了一遍,发现理论不难,而且早就有成熟的开源库了

4. 最近看到一本好书,Kuhn的《Applied predictive model》,正在看,偏应用,讲了很多trick,在正统的机器学习理论书上不太提及,但是实际非常有用。不过是用R写的,像我这样不会R的童鞋,跳过代码就好了,或者自己用Python实现以下

额外的补充


对上面提到的资源再做一个补充,有些我看过但是忘了何时看的,有些过于基础的我自己不太会看了,还有些是我还没来得及看的


1. 林轩田老师的《机器学习基石》和《机器学习技法》,在MOOC上评价相当高

2. Hinton的《神经网络》,我目前做的东西还不涉及深度学习,以后也许会follow

3. Vapnik的《Statistical Learning Theory》,实在是砖头书而且偏理论,国内有张学工老师的译本

4. Bishop的《PatternRecognitionandMachineLearning》,理由同上

5. Segaran的《Programming Collective Intelligence》,国内译本,叫《集体智慧编程》,蛮好的实践书,Python代码,适合入门,我暂时不需要了

6. 大牛的博客,除了上面说的林达华、pluskid,还有jerrylead,LeftNotEasy,注意,不要被一个叫“研究者July”的人坑了!不懂的搜知乎对他的评价

7. 问答社区,首推 Stackexchange,其次 Quora,还有知乎


目前的遗憾

1. 没有真正坚持过一个比赛,对比赛中常用的trick,比如造特征、模型融合等,不是很熟练

2. 没有真正上线过一个实际项目,所以实践能力还有待提高

最后我想说的是,虽然网上有很多对如何自学机器学习、数据挖掘话题的讨论,但本文是我基于我自己认识,一字一句写完的,若有雷同之处,希望各位包涵,也希望提出批评指正意见,毕竟作为一个自学者,难免有理解不当之处。


目录
相关文章
|
3月前
|
机器学习/深度学习 自然语言处理 算法
【数据挖掘】金山办公2020校招大数据和机器学习算法笔试题
金山办公2020校招大数据和机器学习算法笔试题的解析,涵盖了编程、数据结构、正则表达式、机器学习等多个领域的题目和答案。
87 10
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
【数据挖掘】2022年深信服科技机器学习工程师笔试
总结了深信服科技机器学习工程师笔试中的几道题目及其解答,涉及数据结构、机器学习评估指标和过拟合缓解方法等内容。
92 1
|
2月前
|
机器学习/深度学习 数据采集 算法
数据挖掘和机器学习算法
数据挖掘和机器学习算法
|
3月前
|
机器学习/深度学习 存储 人工智能
【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
本文是关于2022-2023年知能科技公司机器学习算法工程师岗位的秋招笔试题,包括简答题和编程题,简答题涉及神经网络防止过拟合的方法、ReLU激活函数的使用原因以及条件概率计算,编程题包括路径行走时间计算和两车相向而行相遇时间问题。
69 2
【数据挖掘】2022年2023届秋招知能科技公司机器学习算法工程师 笔试题
|
3月前
|
机器学习/深度学习 自然语言处理 算法
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 历史笔试详解
文章汇总并解析了百度机器学习/数据挖掘工程师/自然语言处理工程师历史笔试题目,覆盖了多分类任务激活函数、TCP首部确认号字段、GMM-HMM模型、朴素贝叶斯模型、SGD随机梯度下降法、随机森林算法、强连通图、红黑树和完全二叉树的高度、最长公共前后缀、冒泡排序比较次数、C4.5属性划分标准、语言模型类型、分词算法、贝叶斯决策理论、样本信息熵、数据降维方法、分箱方法、物理地址计算、分时系统响应时间分析、小顶堆删除调整等多个知识点。
41 1
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 历史笔试详解
|
3月前
|
机器学习/深度学习 人工智能 算法
【数据挖掘】2022年2023届秋招奇虎360机器学习算法工程师 笔试题
本文提供了奇虎360公司2022年秋招机器学习算法工程师岗位的笔试题内容,包括选择题和编程题,涉及概率统计、数据结构、机器学习、计算机组成原理等多个领域。
91 5
|
3月前
|
机器学习/深度学习 算法 数据挖掘
【数据挖掘】2022年2023届秋招宏瓴科技公司机器学习算法工程师 笔试题
关于宏瓴科技有限公司2022-2023年秋招机器学习算法工程师岗位的笔试题目及作者个人对部分题目的解答尝试,涉及贝叶斯误差和贝叶斯最优分类器的概念、贝叶斯误差的重要性和估算方法,以及如何有效利用训练集和测试集进行深度学习模型训练的数据集划分策略。
52 4
|
3月前
|
机器学习/深度学习 自然语言处理 算法
【数据挖掘】百度机器学习-数据挖掘-自然语言处理工程师 2023届校招笔试详解
百度2023届校招机器学习/数据挖掘/自然语言处理工程师笔试的题目详解
76 1
|
4月前
|
机器学习/深度学习 数据采集 算法
数据挖掘和机器学习算法
数据挖掘和机器学习算法
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
基于数据挖掘与机器学习揭秘脱发主因
基于数据挖掘与机器学习揭秘脱发主因