-
python爬虫之一名数据挖掘工程师给新人整理的入门资料
试听地址 https://www.xin3721.com/eschool/pythonxin3721/
四年前我一次听说数据挖掘这个词,三年前我学习了数据挖掘理论知识,两年前我做了几个与数据挖掘有关的项目,一年前我成为一名数据挖掘工程师,今天我把数据挖掘入门资料整理了一下,希望能够对新人有帮助。
一、python
推荐粗读《Head First Python》一书,该书浅显易懂,有C语言基础的人只需一天就能读完,并能够使用python进行简单编程。“Head First”系列的数都很适合初学者,我还读过《Head First 设计模式》和《Head First Statistics》,感觉都不错。不过后两本,我读得比较细也比较慢,毕竟当时是首次接触设计模式和统计学相关知识,书中很多东西对我而言都是全新的。而当我读《Head First Python》时,我已经掌握了C、C++、java等多种编程语言,所以再看python就觉得比较简单了。学任何一种编程语言,一定要动手练习。python的集成开发环境有很多,我个人比较青睐PyCharm。
用python做数据挖掘的人一般都会用到pandas数据分析包。推荐阅读《pandas: powerful Python data analysis toolkit》文档,其中《10 Minutes to pandas》这一节能让你轻松上手pandas。读了这一节你会知道怎么用一句话得到数据的一些基本统计量(每一列特征的均值、标准差、最大最小值、四分位点等),怎么简单地实现多条件的过滤,怎么将两张表按key连接,怎么将数据可视化。除了这篇文档,我还想推荐一本书《利用Python进行数据分析》,这本书和之前文档的主要内容差不多。可以书和文档交叉看,加深印象。与文档相比,书增加了数据应用等内容。与书相比,文档增加了与R、SQL对比等内容。即使是主题相同的章节,例如绘图,文档和书将知识组织起来的方式以及侧重点也有所不同。个人认为,文档和书都值得一看。
二、统计学
虽然我也粗读过统计学的几本书,但从易懂性来说,都没有学校老师给的ppt好,或者说自己看书比较困难,但是听老师讲课就很容易懂。所以,我建议有条件的同学能够选修统计学这门课,没条件的同学可以去网上找一些相关视频,配套书籍可以选择茆诗松的《概率论与数理统计》。另外,《Head First Statistics》一书可以用来预热。
学了统计学,你至少应该知道基本的抽样方法、偏差与方差的区别、怎样进行数据预处理、怎样整理和显示数据、数据分布的描述统计量有哪些、假设检验是用来做什么的、置信区间的概念、R-squared的含义等等。你需要了解各种图的作用和适用场景,常用图包括条形图、饼图、直方图、折线图、箱线图、散点图、雷达图等。你需要了解各种统计量的含义,常见统计量包括均值、方差、中位数、四分位数、加权平均数、偏态、峰态等。你需要了解一些重要的分布,比如正态分布、chi-square分布、t分布、F分布等。
三、机器学习和数据挖掘
机器学习资料首推吴恩达的《斯坦福大学公开课:机器学习课程》视频。这20集视频确实是好视频,但对初学者来说难度偏大。我有了一点机器学习方面的基础后,再去看该视频,还花了2.5倍的时间才基本看懂。每当我跟不上视频时,就会暂停或者回退,再仔细看看课件,所以看完视频花掉的时间是视频原时长的2.5倍。另外,周志华的《机器学习》和李航的《统计学习方法》可以作为机器学习入门书籍,经典教材《Pattern Recognition and Machine Learning》可以作为机器学习进阶书籍,而《机器学习实战》一书能手把手地教你怎么实现机器学习模型的底层算法(书中包含了大量的程序清单)。
数据挖掘方面,推荐Jiawei Han的《数据挖掘概念与技术》。该书比较容易读懂,内容广泛且实用性强,特别适合初学者。
四、其他资料和建议
除了系统化的学习专业知识,我们也可以每天吸收一些碎片化的知识。例如,Quora上有不少关于机器学习和数据挖掘的问答,其答案质量普遍高于知乎,有兴趣的同学可以常去Quora的机器学习相关版块逛逛。订阅好东西传送门的《机器学习日报》是一个不错的选择。每天从日报中挑选1~2篇文章读读,可以扩展自己的知识面,同时养成天天学习的好习惯。
从Quora和《机器学习日报》中获取的一些知识点:
随机森林模型不适合用稀疏特征。
测试集必须使用与训练集相同的方法进行预处理。
L1正则(特征选择)最小样本数目m与特征n呈log关系,m = O(log n) ;
L2正则(旋转不变)最小样本数目m与特征n呈线性关系,m = O(n) 。
标准的PCA是一种线性转换技术。
呈长尾分布的特征通常需要进行对数转换。
线性SVM适合小样本。
AUC适合作为类不平衡问题的衡量标准。
在nested k-foldcross validation中,“外层循环”的目的是模型评估,“内层循环”的目的是模型选择。
在样本数量较少的情况下,极大似然估计的效果比普通的最小二乘法差。
想干数据挖掘这一行,光有理论知识是不够的,我们还需要积累实战经验。对于学生来讲,可以跟着老师做项目,可以参加各种大数据竞赛,也可以去公司实习。如果是参加竞赛的话,一般比赛结束后,前几名的算法会公开。我们要特别关注一下他们的算法创新点,说不定在下一个项目中就能用上。
阿里巴巴第一届大数据竞赛前9名团队的算法创新点整理:
第九:
缺失值填充。
考虑了行为转移特征(例如曾经购买过该品牌,近期再次发生点击但尚未购买;近期从购物车转移到收藏夹)。
第八:
在LR模型中,用dummy coding的方法处理了所有的特征。
第七:
模型融合做得不错。分别用滑动窗口和固定窗口建模。再用LR进行一级模型融合,最后对第一级的预测结果进行平均融合。
第六:
对不同的用户-品牌类型进行了分类,并采取了不同的处理方法。
第五:
对正例采取上采样方式,负例采取下采样方式。
先用一个欠拟合的random forest初始化gbrt的残差,再用一个树的棵树不是很大的gbrt来训练,从而能够在相对短的时间内得到比用较大棵树的gbrt还要高一些的性能。
第四:
对特征进行Laplace平滑。
第三:
对数据进行归一化、分箱和去噪。
第二:
去除离群点。
第一:
用LR滤去超过80%的样本。
采用了神经网络算法。