想学数据分析(人工智能)需要学哪些课程
本文转自:
RobinShen利益相关:楼主以应用数学和运筹学的背景转到博士德国海德堡大学机器学习、计算机视觉这俩个数据分析(人工智能)的分支里来,希望对想入门数据科学和人工智能的朋友们有点借鉴作用。
首先如果对人工智能、数据科学还不是很了解的同学,可参考以下综述:大话“人工智能、数据科学、机器学习”--综述-知乎专栏
先说点宽泛的、上纲上线的东西。(要干货的可以直接跳至后半部分)机器学习,大数据这些新兴专业,是随着工业界与日俱增的需求而随之出现的(中国最近批准了第一批试点的几十所高校开设数据科学专业)。其实任何专业都是这样一个需求导向的过程,包括微电子,计算机,还有什么房地产专业。。你说几十年前你们听说过这些专业么?自然科学如数学、物理、化学、生物长盛不衰,是有其道理的,这也是为什么我们初高中我们都在学这些东西。而某些专业,也会随着市场需求的锐减而减少甚至消失。这些专业名词在刚出现的时候往往是“凭空造诣”或者是强加术语,然而知识是需要积累的,不是凭空出现的,也就证明了如大数据、机器学习这样的东西,其实是科研圈已经研究或者已用了很多年了,然后市场需求强烈,为了顺应市场需求,大批学校争相决定开这个专业,于是喊一帮教授或院士过来拍板,这个专业需要哪些基础课程,我们就把这些基础课放进来,这也是我下面的回答要强调的。(因此“需要学哪些课程”这个问题最好的答案,就是去一个名校的数据科学或机器学习项目里看课程设置,这里我推荐一下UCL的MachineLearningMsc)
本文要讲的,不包括数据库那个方向的大数据。简单的说,原理和基础都在数学这边,当然有很多偏应用和软件使用的课程,这些直接大街上报个培训班就能学会的技术含量不那么高的东西,不在我的讨论范围内。我要讨论的,是如何系统的学习,然后自己能编出这些处理大数据的程序或软件,我想,这才能称为一个合格的数据科学家。
好了,下面是干货。(已经过多次私人留学咨询中,多个高校数据科学/人工智能硕士项目的先修课程验证)
1,线性代数(矩阵表示和运算)是基础中的基础,以及微积分(求导,极限);2,数据处理当然需要编程了,因此C/C++/Python任选一门(推荐Python,因为目前很多库和Library都是用python封装),数据结构可以学学,让你编程更顺手更高效,但是编程不是数据处理的核心,相对而言算法还来的重要一些,因此建议再上一门算法课。当然了,楼主所在的图像处理界,熟练使用matlab或者opencv是必要条件,但是again他们只是工具,业余时间自学,多练练就没问题。有同学一直提问用R行不行,楼主补充一点,用什么编程语言很大部分取决于你的核心算法会调用什么已有的库函数,比如楼主的科研里面核心算法往往是MIP问题需要调用Cplex库函数,因此C/C++/Python/Java这些和Cplex接口良好的语言都可以拿来用,这时候R就别想了。另外往往图像处理界一些open-source的code都用Python写的,因此需要用到这些code的话,当然写Python直接调用比较方便咯。
3,Mid-level的课程,概率论+统计(很多数据分析建模基于统计模型),线性规划+凸优化(或者只学一门叫numericaloptimization,统计到最后也还是求解一个优化问题,当然也有纯优化模型不用统计模型的),MachineLearning(其实机器学习,通篇都是在讲用一些统计和优化来做clustering和classification这俩个人工智能最常见的应用),学到这里,你基本就会发现,学这一门课中间会穿插着很多其他课的内容。恩,知识总是相通的嘛,特别是这些跨专业的新兴学科,都是在以往学科的基础上由社会需求发展而来。学到这里,其实你已经能看懂并且自己可以编写机器学习里面很多经典的案例了,比如regression,clustering,outlierdetection。
关于优化类课程的综述,欢迎关注我的专栏:[运筹帷幄]大数据和人工智能时代下的运筹学-知乎专栏运筹学(最优化理论)如何入门?-知乎
4,再高阶的课程,就是比较specific的课程了,可以看你做的项目或者以后的concentration再选择选修,比如:ProbabilisticGraphicalModels(概率图模型),NolinearOptimization(非线性优化),IntegerProgramming(整数规划),计算机视觉,模式识别,视频追踪,医学图像处理,增强学习,深度学习,神经网络,自然语言处理,网络信息安全,等等等等。再比如有用偏微分方程做图像处理的(比较小众),那么这时候你肯定要去学一下偏微分方程了,大都是以科研为主导的。科研嘛,为了发文章,就是要尝试前人没尝试过的方法,万一效果不错呢,就是一篇好paper了,对吧。
注意这里是偏机器学习或计算机视觉的,如果是自然语言处理,那么还要修一些语言学(句法等结构)的基础课。
正如我说的,学到Mid-level,就已经具备绝大部分理论基础了。然后做几个实际项目,就能上手然后就可以“吹嘘”自己是搞数据科学的,就能找到一份工作了。要读Phd搞科研,那么高阶课程必不可少,而且同一个topic你需要上好几门课,并且你博士的课题,很可能只是一本书中一个章节里面一小节里讲的算法,去改进他。比如,楼主的博士课题就是regression+clustering+segmentation。
至于书目,没有特别推荐的,但是建议看英文原版。另外直接翻墙Youtube看视频课程,很多国际知名教授都很无私地把自己上课的视频放在youtube上免费学习(搜索我上面列出的科目名字)。如果确实要楼主推荐,那就推荐海德堡大学历史上最年轻的教授Fred的机器学习视频(我基本都看过):https://www.youtube.com/playlist?list=PLuRaSnb3n4kSgSV35vTPDRBH81YgnF3Dd
另外一个教授给你上课的时候,开头一般是会推荐书给你的(如果你确实喜欢看书的话)。当然了,翻墙是楼主suppose你们需要拥有的基本生存技能。(注:以下再推荐一些视频,受之以渔。多为graduatecourse,仅作演示目的)
1, MachineLearningbyProf.NandodeFreitas,此视频是其在UBC时13年所录,后来跳槽去牛津计算机系了。https://www.youtube.com/playlist?list=PLE6Wd9FR--EdyJ5lbFl8UuGjecvVw66F6
2, DeeplearningatOxford2015 byProf.NandodeFreitas,跳槽到牛津所录。https://www.youtube.com/playlist?list=PLE6Wd9FR--EfW8dtjAuPoTuPcqmOV53Fu
3, ProbabilisticGraphicalModelsbyDaphneKoller,斯坦福大学计算机系教授https://www.youtube.com/playlist?list=PL50E6E80E8525B59C另外还有一些付费的学习网站,如Coursera,优点是结课后可以拿分数和证书,并且很多世界名校的教授在上面开课。---------------------------------------------------------------------------再罗嗦一下解决一个实际大数据问题的一般流程。比如一个生物医学公司找到我,要求我做一个视频里面celltracking的项目。(一帧既为一张图片,假设500*500=25w像素,一个video算它1000帧,总共250million像素,可以算大数据了吧?)具体流程:数学建模--设计算法--用任意编程语言编写算法(其中会涉及到数据结构,即如何搭建程序使程序更加高效)--导入视频数据到算法里得出结果--根据结果的好坏改进算法甚至模型(如此往复)。
这里我强调一下数学建模的重要性,为何要数学建模呢?的确很多naive的算法完全不需要建立在数学模型之上,比如clustering里面经典的EM算法,是一个iterativemethod,基本一眼就能看出算法的思路然后编程实现,所以称之为naive。那么基于数学模型上的算法有何妙处呢?答案是一个好的数学模型,往往是被研究了几十甚至几百年的学科,比如图论,很多性质都已经被研究得很透彻可以直接使用。回到我的这个例子,celltrancking,我可以建立一个networkflow(网络流)的模型(其实也是基于图论的模型),那么这个networkflow模型,是一个被研究了很久的领域,因此我可以直接使用很多很多已知的好定理或算法来服务我的问题。另外很多时候,经典的数学模型里面已有很多经典的算法,比如networkflow基于里的maxflow/mincuttheorem的算法,如果能在其基础上做改进,等于站在巨人的肩膀。因此这就是数学建模的重要之处。往往同一个问题,从不同的角度去看可以有千百种数学建模方法,而不同的数学模型差别往往巨大,而数学建模又是解决一个实际问题的第一步,在这基础上才考虑算法和数据结构设计。因此,数学基础在我看来是重中之重,也是我推荐学习的课程的核心。当然了,计算机系出生的朋友,数学这个层面学习得不是很深,比较偏向于算法的设计和实现,是另外一个侧重点。先码到这,有时间再更新。关于入行后就业前景(包括第三条运筹学--算法工程师),参见:国内(全球)TOP互联网公司、学术界超高薪的揽才计划有哪些?-知乎中国计算机视觉的前途在哪?机器视觉工程师又何去何从?-知乎关于我对最优化理论在咨询行业的应用,参见DataScience/Analytics出身,可以在咨询行业做些什么?-RuobingShen的回答
《人工智能导论》教学大纲(含课程思政内容)
05
教学内容和课时安排(含课程思政内容)
(一)课程学时分配
(二)课程思政参考内容
(三)课程教学内容与重点难点
第1章人工智能导引
教学目的:了解人工智能的概念、学习人工智能的目的和意义、应用;了解人工智能的分支。
教学内容:人工智能的概念、应用场合;人工智能的分支。
重点难点:重点是了解人工智能的分支,难点是人工智能各个分支之间的关系。
第2章Python基础知识
教学目的:了解Python在不同环境下的安装;熟练使用python的基本编程,包括各种数据结构;掌握第三方模块的安装和使用,文件的读写;掌握NumPy包的熟练使用;掌握Python的绘图基础。
教学内容:编程基础(列表、元组及字典、基本语句;函数);模块的安装与使用;文件的读写;NumPy的使用;Python的绘图基础。
重点难点:重点是使用Python进行相关的编程,如NumPy的编程,绘图基础等。难点是使用NumPy进行较为复杂的开发与绘图。
第3章机器学习初步
教学目的:了解机器学习的概念、其与人工智能的关系、机器学习的分类;了解数据预处理与特征工程,包括数据清洗、数据变化、过滤、特征工程;熟练使用Sklearn包;熟练使用回归分析。掌握聚类的基本原理与常见的聚类算法。
教学内容:机器学习及其工作流程;机器学习的分类;数据预处理与特征工程;Sklearn库的使用;逻辑回归分类和线性回归预测;聚类的原理与K-Means聚类算法。
重点难点:重点是机器学习的流程与Sklearn的实践。难点是聚类算法及其调优。
第4章自然语言处理
教学目的:了解自然语言处理的概念;掌握文本分词与词汇还原的方法;掌握文本分块与词袋模型;熟练使用TF-IDF算法,并据此构建文档类别预测器。
教学内容:自然语言处理的概念;文本分词与词汇还原;文本分块与词袋模型;文档类别预测;语义分析器;主题模型。
重点难点:重点是文本分词及其文档类别判断的方法。难点是语义分析器的理解与实现。
教学目的:了解处理语音信号的方式,可视化处理的过程;掌握处理语音信号的的相关技术;能够独立建立一个英文的语音识别系统。
教学内容:处理语音信号;可视化音频信号;音频信号从时域转换到频域;生成音频信号的方法;提取语音特征;构建语音识别系统。
重点难点:重点是语音特征的提取策略和方法;难点是构建语音识别系统,尤其是适当结合深度学习机制进行语音信号的识别。
第6章计算机视觉
教学目的:了解什么是计算机视觉,掌握安装流行的计算机视觉库—OpenCV。了解利用帧间差分法检测视频中的移动部分。掌握使用色彩空间和背景差分法来跟踪对象,使用CAMShift算法来构建一个目标跟踪器,并学习光流的基本知识。熟悉人脸检测的相关概念,构造一个人脸检测和跟踪器。
教学内容:计算机视觉的概念;OpenCV介绍;视频中移动物体检测方法;目标跟踪器的构建;基于光流的跟踪;Harr级联和积分图;人脸检测与跟踪。
重点难点:重点是熟悉基于OpenCV进行的各种视觉处理方法,为进一步深入视觉学习奠定基础。难点是人脸检测和跟踪,尤其是复杂的场景,如戴口罩情况下。
第7章人工神经网络
教学目的:了解什么是人工神经网络,熟悉如何建立人工神经网络;了解感知器,掌握基于感知器构建一个分类器;掌握单层和多层神经网络;掌握循环神经网路。
教学内容:神经网络的概念;建立和训练人工神经网络;感知器;构建单层人工神经网络和多层人工神经网络;循环人工神经网络;构建光学字符识别引擎。
重点难点:重点是熟悉构建单层、多层以及循环神经网络;难点是神经网络的使用,如利用神经网络来构建一个光学自负识别引擎。
第8章强化学习与深度学习
教学目的:掌握强化学习的概念及其表现;了解深度学习以及卷积神经网络;熟练使用卷积神经网络构建简单的应用。
教学内容:强化学习的概念;深度学习的概念;卷积神经网络;利用卷积神经网络建立图像分类器。
重点难点:重点是深度学习及其使用;难点是利用卷积神经网络进行实际的应用开发,尤其是其可解释性问题是需要学生简单了解的。
第9章区块链
教学目的:了解区块链的基本概念;掌握区块链和人工智能的关系;了解如何利用人工智能技术对区块链进一步优化。
教学内容:区块链概念;人工智能与区块链;在区块链中使用朴素贝叶斯;优化区块链。
重点难点:重点是区块链概念的理解,产生的原因的深入分析;难点是如何充分的利用区块链技术进行多方向(领域)融合的设计与开发,包括在教育领域、知识产权保护等等。
第10章人工智能算法
教学目的:了解人工智能常用的启发式算法;掌握其基本的思想方法;掌握遗传算法、模拟退火算法、蚁群算法等。
教学内容:启发式搜索算法;遗传算法;模拟退火算法;蚁群算法。
重点难点:重点是掌握典型的启发式算法,如遗传算法、模拟退火等;难点是这些算法优化的特定目标和适用的场景;同时,也希望同学能够探索一些其它的启发式算法,并进一步比较分析,这也是本章的另一个难点。
06
课程教学方法
本课程教学采用以多媒体教学为主,以板书为辅的教学方式,并加强图示教学和实例教学以增强学生的学习兴趣并加深学生对重点知识以及理论与实际工程问题相结合的理解。
1、教师课堂讲授:基本概念和核心知识内容的传授,由主讲教师完成。
2、课堂讨论:要求学生以小组的形式对所学的知识点进行现场讨论。
3、MOOC:对课程的一些知识点采用国内外知名专家学者的视频公开课进行知识的传授。
4、SPOC:对于授课难点问题尤其是实际运用的问题时,采用翻转课堂的形式积极引导学生的参与意识,提高学生的创新能力。
5、学生/项目组讲授/表达:学生小组讨论,对于常识性的知识点的表达,提高学生的沟通和表达能力。
07
课程学习资源
1.教材
《人工智能导论(Python版)微课视频版》
ISBN:978-7-302-57239-8
作者:姜春茂
定价:49元
|学习资源|
500分钟视频、PPT课件、示例源码、习题答案。返回搜狐,查看更多