先介绍一下本人背景。本人美本top 30统计学在读,即将进修哥伦比亚大学data science硕士学位。在大二那年决定往人工智能领域发展,便开始了我的big data学习之旅。
随着近几年人工智能行业的崛起,数据挖掘、编程等领域逐渐成为高薪行业的代名词。越来越多的人开始将目光投向大数据处理。在正式介绍学习方法等干货之前,我们需要先弄懂大数据和数据挖掘之间的关系。简单来说,大数据就是很多数据的集合,而数据挖掘data mining是与之平行的,利用人工智能、机器学习、统计学和数据库的交叉方法在相对大型的数据集中发现模式的计算过程。这一领域中有很多AI,deep learning和机器学习的知识点融合在一起,学习难度也是较大。
接下来我会分为基础、理论和实践三大板块为大家详细讲解数据挖掘的学习,相信大家通过我的介绍,一定能做到快速入门!
一、学前基础
如果不对其前提条件进行介绍的话,数据挖掘可能会显得很可怕。对于大部分人来说,虽然这个领域不需要你成为一个专业的数学家或资深的程序员来学习,不过对于这些领域的核心技能还是需要掌握的。关于学前的基础,大致可以分为三类:
线性代数和微积分→原始算法研究需要有线性代数和多变量微积分,尤其是导数,链式和乘积规则的基础。而针对于这部分,很多大学内的高数课程都有涉及到。作为英语中这些数字运算的定义和名称的一种补充,大家也可以去YouTube找很多国外大学的公开课,如Essence of linear algebra - YouTube。
统计学→了解统计学,特别是贝叶斯概率,对许多数据挖掘算法来说是必不可少的。不管是自然语言处理还是数据挖掘,最重要的事情就是把基础知识搞清楚。在这里,我所说的基础知识是指对于概率和线性代数等概念浅层的理解。概率论和统计学入门Introduction to Probability - The Science of Uncertainty是我使用时觉得不错的一个资源。
Python→编程可以说是数据挖掘一大基础,没有编程就无法学习数据挖掘。如果说前面的数学知识是基础的话,Python和R就像接下来战斗需要使用到的武器。我个人在学习的时候主要使用R语言,搭配Datacamp学起来真的很方便。针对刚入门的人,我会更推荐Python,操作简单也好上手。关于编程部分,我建议大家花几个月时间同时学习Python代码和不同的数据挖掘概念。因为在后面你会发现很多情况下你会同时需要它们。而在学习Python代码的同时,大家可以练习使用一些数据科学工具,如Jupyter和Anaconda,主要了解它们的用途以及为什么要使用它们。关于程序语言的学习,网上的资源有很多,coursera和网易公开课都有很多可以选择。
二、理论
在有了一定数学基础后,就可以开始阅读一些教材了,以便了解数据挖掘的理论知识。个人建议从一些关于人工智能的基本介绍性书籍开始,不要直接跳到花哨的书籍。很多人都推荐的西瓜书,在我看来其实不太适合入门学习,难度较大;而且像数据挖掘这样多元的,且实践大于理论的领域来说,单单从书本获得的理论知识,往往不能满足于实际生活的应用。
要想成为数据科学的专家,往往需要尽可能多的去探索、研究其他领域的内容,建立一个完整的知识体系;因为很多内容都是相通的,有了一定知识储备后,对于日后的学习也能更好的理解。下面给大家推荐几套我学习时使用的教材:
贪心学院这套课程,是面向泛AI、AI群体提供专业的系列课程,整套课程将以上提及的内容根据难易程度分为基础和进阶两个阶段。这套课程吸引我的其中一点就是它涵盖的知识面广。不仅涉及了AI领域内的深度学习、NLP,机器学习,还有很多更细的分支。其中机器学习中的基本算法如分类算法、集成算法、聚类算法、降维算法等,在这套课程内也有大篇幅重点讲解。
课程是以幻灯片的形式一页页呈现,从实用性上来说,由于是近几年的课程,课程的内容比较新,讲解也很通俗易懂,展示也做到了图文并茂。这套课程视频教学简单易懂,不过个人在使用的时候,可能因为是线上课,感觉课程内互动性差一点。遇到问题需要课下找助教或老师询问。
也由于是线上上课,购买之后随时可以使用,还是比较适合时间不好分配的上班族或者像我这样的学生进行使用。每节课程中还会配有一定的题目,帮助大家巩固知识点概念。我自己在做这些题目的时候,感受很好的是,这些题目的设定与每小节的课程内容结合的很好,能做到即时的巩固,也能为后面的学习做铺垫。
教学团队
在使用这套课程之前,我自己也对比了很多家,分析下来还是觉得贪心科技AI的师资力量靠谱些。虽然是近几年刚创建的团队,但其教研人员都是有着丰富的业内经历和教学经验。课程的核心团队由海内外AI专家组建而成,多位合伙人及主讲老师都是业内资深工程师,并多次在ICML、AAAI、IJCAI、ICDM等会议发表数十篇论文,被数百次引用。我在上这节课的时候的导师就是亚马逊的工程师,李文哲老师。他对于每一个问题的讲解都十分细致,尤其是遇到运算问题,都会一步步手写出具体公式。除此之外,他还经常会举一反三,举出同样类型的例子,加深我们的记忆。
课程内容
贪心科技这套课程可以说是很全面地涵盖了我上面提到的关于数据科学的各种概念,如随机森林、逻辑回归、线性回归等。通过将机器学习放进人工智能的大框架里学习,能帮助学生更好的理解一些概念,将所学知识串联起来,掌握综合性的技能。
中级课程的核心内容均围绕机器学习,并通过案例的实战来加深对技术的理解。该课程的主要重点是转移学习的好处,利用已经训练好的、非常成功的模型,如Resnet-34或Restnet-50,以很高的精确度在短时间内学习新任务。例如,在计算机视觉方面,它就像一个成功的模型,在复杂的视觉输入上已经非常准确(如Imagenet),并使用它来处理你手头的具体任务。这是通过fastai库实现的,它是Python中Pytorch的一个层,简化了一些在构建深度神经网络时使用的不太受约束的自由形式的方法,并使之系统化。
随着课程的进行,其复杂性也在不断增加。在你已经能够训练出一个性能良好的模型之后,这套课程提供了清晰的方法来挖掘背后的代码,并提出了图表和插图来解释幕后发生的事情。
我非常喜欢的一个部分就是它让我在Excel中调出了一个电子表格,并画出了代表模型的输入、参数和预测的表格,同时展示了如何在电子表格中训练一个基本的神经网络层! 这就像揭开神经网络的盖子,看着它的变化,发现如何最好地得出准确的预测。
对每个人来说,只要对矩阵代数有一定的了解,就能很好地掌握它的内容,除了具有指导性的特点外,做这些作业也能从中收获很多。
贪心科技这套课程就为无编程经验者提供了Python基础的内容,作为一个没有什么编程基础的统计学生,这也节省了不少我课下补习代码的时间,大大提高了我的学习效率。Python部分这套课程运用人机互动的形式讲授知识,将一个一个知识点融入练习中,对于知识的掌握和熟练帮助很大,对于我的启发也很大。上完这套Python课,我最大的收获就是拥有了新的看待计算机的角度。在学习贪心科技AI这套课程之前,我也是计算机重度使用者,但是我从来没发现原来它还可以帮我们做更多事,这也让对计算机编程很反感的我渐渐开始对这一领域产生了好感。
像我之前提及的必不可缺的python基础,在这套教材里也有涵盖。为了那些无编程经验者,除了理论性的内容之外,贪心科技AI还提供了多个机器学习领域代表性案例,如广告点击率预测、情感分析项目、信用卡欺诈预测、零售场景用户分层、意图识别等,供学生参考练习。
在这个代码已经成为大势所趋的时代下,掌握一门编程语言对于人工智能领域的学习可以说是至关重要的。在这里我比较推荐大家学习Python,这也是我入门学习的第一种语言。Python上手快,操作也很简单,比较适合入门学习。
课程设置
以我当时上的中级课程为例,该课程共分为十五章,每章根据知识点不同又会划分为几个小节。课程设置及形式比较系统全面,每个小节时间都不长,只有几分钟,一节课下来只需要2小时,这样的时长设置,不会让人感到枯燥乏味,也容易坚持。随着我完成越来越多的学习关卡,完成一个又一个的作业,不知不觉中就积累了很多编程知识,现在也能自己做出一些实用的小程序了,可以说贪心科技AI课程带我走进了人工智能的世界。
课后
课后的练习根据难易程度和知识点的不同有所区分,如身高体重预测、A股股价预测、客户是否开设定期银行账户预测、成绩是否及格预测、判断新闻真实性等项目,每一个练习的都是不同的知识点,学生可以在jupyter上自己进行代码的编写,还能得到助教一对一的反馈,及时纠正错误。
除了课程中提供的练习和案例,这套课程课后还配有github使用权限和专门的系统进行学习、练习。我在进行数据科学学习时,就经常会从github上找各种大神的代码和他们新开发的新奇的程序,如随机文章生成器等,这些内容完全可以拿来当成是实践项目进行练习。有时候遇到棘手的问题,我也会上去发帖求助。总之github对于人工智能领域的学生和职场人都是一个不可多得的好资源。
这套教材总体来说还是比较简单易懂的。在同样浏览了中、高级课程之后,个人感觉不足的是,进阶课程难度较大。有相关数据挖掘及数据分析背景的人可能会觉得刚开始的内容过于基础,而进阶部分,尤其是高级,则会有些吃力。
这套课程也是网上教学,一个大课程下分成很多的小部分,在coursera、edx等学习网站上可以找到。课程主要介绍分析数据和建立模型的各种方法,在上课过程中还可以锻炼与人沟通和工作的能力。在整个课程中,我们使用R语言,并同时学习R、统计概念和数据分析的技术。举例来说,我暑假上的这节CS501的课涵盖了很多数据调查的关键技巧,如数据处理、清理、采样、管理、探索性分析、回归和分类、预测和数据通信并通过应用先进的统计学、建模和编程技能,得出预测性的见解。
总的来说,这三个月的学习很有趣,但在这过程中,我也发现了自己基础的不足。作为一个统计专业并且有一些编程基础的学生,我本以为自己对于数据的处理和建模应该是能信手拈来的。可这套课程的难度远超出我的想象。因为之前的学习比较基于理论,接触实例不多,所以在接触像这类对实例进行深入分析并利用一系列连续和离散数学工具的练习的项目就会有些应付不过来。这套课程为理解、预测和决策提供了一个定量框架,几乎涉及生活的方方面面,从交通信号灯的计时,到疾病传播的控制,从资源管理,到体育领域等等。可以肯定的是,上完这套课,你也会跟我一样,有一种柳暗花明后充实的感觉,并且技能也会得到很大程度的提升。
除了这些课程,哈佛还提供了相应线上的证书项目,一共四节课,总时长约为2年。这个项目旨在教授学生如何通过应用先进的统计学、建模和编程技能,得出预测性的见解,获得数据挖掘和计算技术的深入知识,并为从产品设计到金融等一系列行业发掘出重要的问题和情报。
虽然与Andrew Ng的课程相比,这个项目对数据挖掘强调内容较少,但你会得到更多关于从数据收集到分析的整个数据科学工作流程的练习。像我之前提及的,对于数据挖掘极其相关领域要尽可能多的掌握、了解。所以相对于系统性地学习,这套课程能帮助你拥有一个整体的框架概念,并拓展很多数据科学领域的知识。不足的是,这套教材目前只有英文资源,且难度较高。
这套教材也是很多人推荐的,它是2017年推出的,内容较新,可以免费使用,Coursera上线之后我也慕名有去体验过。我个人在学习时使用的是斯坦福大学的版本,不是Coursera的。这两个版本相比较之下,Coursera的课程内容比斯坦福的CS229更简单,对于数学基础的要求也更低。Coursera版本的课程几乎没有涉及很多概率分布、线性优化、平滑处理等机器学习相关的数学知识;反之,吴恩达通过各种举例代入的讲解,让人工智能变得更加通俗易懂,虽然梯度、矩阵等的内容显得十分复杂,但是后期用python都可以代入得出结果,这样简单实用的设置,也受到了很多入门者的喜爱。不过这也是这套课程受争议的地方,很多人认为对于数学知识讲解过于浅显,不足以打好机器学习的基础。
吴恩达本人是斯坦福大学计算机科学系和电气工程系的客座教授,他也是在线教育平台Coursera的创始人之一。这套教材在网易有中文版资源,课程的形式也是像PPT一样并且附上吴恩达本人的笔记。整体来说内容浅显易懂,处于初级-中级难度。比较适合入门学习。这套还配有课后作业和测试,保证了一定的练习量,但只限于Cousera课程,且编程作业需要在Jupyter上完成。其次,由于是较新的教材,了解并真正使用过的人不一定很多,所以在学习过程中遇到问题时,需要自己查阅资料解决。
这套教材还有一个特点就是其内容设置的是自下而上的偏理论式讲解。这些课程的一个很强的优点是每一个编程练习都有Jupyter中的Python代码模板。在几乎所有的课程中,吴恩达都带来了一些在该领域取得巨大声誉的人,如Geoff Hinton, Yoshua Bengio, Ian Goodfellow, Andrej Karpathy等。他们的讲座对于机器学习非常具有启发性,大家感兴趣的可以去听一听。
三、实践经验
一旦完成了以上的两步,就可以开始在现实世界数据上应用这些概念啦。一个没有经验的数据科学家可能会训练一个模型,一旦准确率达到某个高百分比,就把它运送到生产中去,而无视在这样做的时候所做的不正确的假设。所以,知道什么时候模型是过拟合的,什么时候有虚假的相关性,需要有扎实的理论理解和经验。针对这一部分,我个人的建议是尽早开始练习,但要从小项目做起。实施简单的算法,如线性回归、梯度下降、k-means聚类、k-nearest neighbors和naïve Bayes,然后再进行更高级的操作。在使用库之前,试着对每个算法都做一次。只有这样,才能完全理解它们真正的工作方式。在这里也推荐一个叫Kaggle的平台,这里面的数据集都是真实的,会让你感觉到数据科学是如何在现实世界中使用的。Kaggle上还会有各种竞赛,根据其奖励分为不同类型。知识、工作、这些比赛很适合初学者,你也可以在其中找到很多如何获得好成绩的文章和样本解决方案。
总结
总的来说,数据挖掘的学习只要遵循上面提及的步骤,先拥有一定的基础和背景知识,再从理论到实际操作慢慢过渡,就能熟练掌握这一技能啦。在这个过程中,找到适合自己的教材也是很重要的。希望大家能根据我上面的分享找到适合自己的学习方式及课程,早日实现自己的职业理想!