MOOC《数据科学》学习体验

约翰霍普金斯大学在Coursera开设的专项课程《数据科学》(Data Science),或许是最火爆赚钱的MOOC课程了(参见2015-02-11:【快报】Coursera数据科学专项课程已经赚了350万美元!)。
课程共有9门课,每课4周时长,每月开班,免费或$29;全部9门课完成后还有毕业项目,8周时长,每年开设3次,交专项课程费用后参加($290,全部9门+毕业项目)。
课程清单(目前前4门课已有中文字幕)
1 数据科学家的工具箱
2 R语言程序开发
3 获取和整理数据
4 探索性数据分析
5 可重复性研究
6 统计推断
7 回归模型
8 实用机器学习
9 数据产品开发
数据课程毕业项目

借用某书的命名方法,此课程可称之为《数据科学及其R实现》:以R及其周边应用为工具,分专题讲述“数据科学”的整个流程。
这是入门级课程,对于有编程基础的非IT人员也适用。事实上3位教师都是生物统计专业的,应该是以R为工具做统计分析、机器学习、可视化展示等等。从科学研究的“可重复性”角度,教师比较偏爱非图形界面(命令行)的工具。

今年春节后,用4个月时间完成了9门课,很辛苦,但也很有收获,了解了数据科学的基本方法与理念,学习了R语言及若干工具。
作为一个在DOS时代学过编程的人,对命令行界面倒也不陌生。但作为一个统计学盲,全英文学课程中大量的统计知识实在抓狂,只能借一堆中文书自学,才算混将过去。最终能坚持下来,也说明课程还不是那么难。当然从同学互批作业看,也有同学隔几个月重修,结果还是不如人意。
最后,实际感受:学是学完了,但要能自主使用,还有相当长的路要走。
昨日自己结束了全部课程,虽然本月修的最后二门课的成绩要下周才会出来,通过应该没有悬念。在此分享本课程体验如下。

一、选课
9门课程间有依赖关系(Coursera Johns Hopkins Specialization in Data Science course dependency information),通常按顺序选没有问题。但如果同时选多门课,特别需要注意第7门“回归模型”以第6门“统计推断”为先修知识,如果没有统计基础,两门课不宜同一时间段选。

二、时间安排
有些MOOC课程是完全自主安排时间的。本系列则是在课程开始时一次性发布所有课程资料,按周设定测验与作业的提交截止时间。
除第1门入门课外,其他每周课时标明为4-9小时或7-9小时。如此看一周多选几门课似乎问题不大,实际还要考虑更多情况:
1、学习时间,依赖于学习者的原有基础。有几门课大量涉及统计学知识,没有相应基础的话,需要时间就会大大增加。如我这样的统计学白痴,借了好几本中文书看,才勉强跟上,需要付出大量额外时间。另外R语言本身,单靠听课对于完成作业也是远远不够的。
2、作业时间。除每周正常学习、测验(Quiz)外,每门课还会有一到二次课程项目(作业),单完成作业就可能需要数小时。课程作业通常在第三周(有一门课竟然第一周就有作业),同时修几门课,时间叠加起来就比较难应付了。又由于R本身作为开源软件、使用各色人等制作的安装包(package),提示出错找原因、解决也需要额外时间。某次作业因读入文件数据不完整导致出不了正确结果,各种折腾,最后才弄明白应当如何正确解决因中文环境所致的问题。
3、作业提交时间(天朝特有的网络问题)。作业以提交到Amazon AWS和GitHub居多,一个点击即可完成上传,对我们来说却是一定要预留足够时间的。本人最悲摧的一次,前晚同步不到GitHub,原本依常规次日一早推几次就行的,却不料直到当天下午2点才最终成功。如果不是提早一天完成了作业,截止期限早就过了,20-40%的分数没了,这门课就只有重修了。【70分通过,90分优秀】

三、学习过程
1、听课和自学
看视频、PPT是主要学习方式,PPT会提供大量参考资料,包括维基百科(对文科教师是不可思议的了)。在测验、作业中会遇到老师根本就没讲过的内容,需要搜索、自学。更有一门课我完全听不懂,正好除了通常的PPT外还提供有教材,于是完全不看视频直接自学教材+中文图书。
课程推荐RStudio中的swirl包确实是交互学习的好工具,多门课程有对应的学习包,载入学习后还可加分,真可谓一举两得。
2、课程论坛(Forum)
遇到R代码运行出错或者不明白的问题,实际感受是搜索引擎多半不如课程论坛。课程论坛针对性强,更有助教(Community TA)及时跟进解决问题,不会出现无助的情况。应该说Coursera或本系列课程在此点上做得相当好。
3、每周测验(Quiz)
最终成绩约60%来自测验。测验通常是选择题。本系列都允许做三次,取成绩最好的一次。有时候,再做时供选择的答案会改变,结果正确选项几乎是昭然若揭——外国老师永远不明白,对于深谙考试规则的中国学生,这根本就是在送分。
4、作业的互评与自评(Peer-evaluate & Self-evaluate)
最终成绩约40%来自课程作业。作业基本上由同学互评(评4位,未完成扣20%)。真是很好的学习机会,尤其对我这样比较初级的学习者,总是能够发现做得很好的作业,以及老师课上没有讲过的知识点。
有一门课有自评。在评过同学作业后再重温自己作业,对自己的评分自然会更客观。
5、英语
前几门课有中文字幕,好像到第4门课后面部分就没有了。希望有中文字幕的越来越多,这样对授课内容的理解会更好。
不过单是字幕解决不了所有问题,因为作业还是要用英语写的,另外论坛提问自然也是用英语。更有同学互评时,还有可能要求写10个甚至50个词的评语。
好消息是需要自己写的文字不多,作业内容中代码与作图为多。并且评分时,也不会因为语言原因而降低得分。

四、墙
无所不在的墙,不知道浪费了我们多少宝贵时光。除前述上传作业的情况外,还有更简单的:太长的链接老师会给个短网址,goo.gl的,不先找个还原网站就不知道访问哪里。
并且,课程中涉及的一些内容无法正常实现。比如GoogleViz,比如交互图形rChart中嵌入的Google代码,……。当然课程中老师们都很贴心地提供有替代选项,虽然功能不尽相同,但不至于因此完不成课程。

附本人课程项目3个
机器学习:由运动数据推测运动方式
说明:
1、用Knitr由R Markdown文件生成的HTML5文件,带R代码运行结果
2、文首没有摘要,完全忘了“可重复性研究”课程作业强调的格式
3、最佳模型应该是随机森林,只因数据量较大、预测变量太多,电脑竟然拖不动、N久出不了结果,无奈以70%准确率的lda模型交差
照猫画虎的小应用,图个热闹
说明:
1、使用shiny做的app
2、评估同学作业后学到不少,界面做了更新,主要是分页、加了简介
– 介绍前述shiny应用功能与用法的PPT
说明:
1、用RStudio Presentation生成,5页HTML5幻灯片,使用默认模板(比较丑)、只改了页面切换方式
2、末页图片由R代码直接生成