这篇文章咱们主要来讲讲Machine Learning和Time Series Analysis的学习路线以及我对于学习Machine Learning的一些感想和体悟(再次友情提醒:我本人也只是一名普通的学生党,并不是什么机器学习的大牛,抱着与大家切磋交流的心态写下此文,还望专业的朋友批评指正,也欢迎大家在评论区留下自己的问题与观点~

机器学习Machine Learning

机器学习这几年可谓是火遍千家万户,只要是个在读大学生,很难没听说过Machine Learning和Deep Learning的大名,但是很多学生私底下喜欢自学机器学习,但是其实只是喜欢调用某些API函数和库函数来实现某种比较简单的结果。这样其实也无可厚非,但是私以为,对于机器学习的学习要从理论推导开始,所有的数学及计算机类学科的学习一定要发于理论,适于应用,止于创新,想在Machine Learning这条路上走得比较长远或者说真正想学会Machine Learning的思想还是要满足以下几个条件:

  1. 拥有一定的数学基础,不一定很扎实,但是起码要有
  2. 拥有一定的编程基础,初步掌握Python/R/C++等即可
  3. 最好掌握一定的算法以及数据结构

许多想上手Machine Learning的小白可能误以为机器学习不就是将某个算法套用到Data上去得到某些结果的过程吗,这个说法不完整,机器学习其实包含数据预处理模型学习模型评估模型预测四个步骤,每个步骤又可以分为若干零星的小步骤,如下图所示:
image.png
至于“如何入门学习机器学习”,这边推荐一个我特别钦佩的一篇文章,也是来自CMU的一位大神写的(你永远可以相信CMU的学生!),链接如下:
CMU大神机器学习入门建议:微调:如何用3个月零基础入门「机器学习」?

推荐学习路线

以下是我推荐的几个能找到的比较好的Machine Learning学习资源(从上至下按照“初步了解——兴趣培养——理论推导——实际应用”这条主线):

一、Coursera吴恩达机器学习系列课程

第一个是吴恩达老师的机器学习基础课程。该课程讲得十分通俗易懂,数学小白也基本能懂,主要是从实际例子出发,介绍机器学习是怎么运用的,能解决什么问题,比较适合新手入门了解机器学习的使用以及培养对于Machine Learning的兴趣。
吴恩达机器学习课程链接:[中英字幕]吴恩达机器学习系列课程_哔哩哔哩_bilibili

二、机器学习中的数学(全集)—— 石溪

第二个是一位清华大学计算机科学与技术硕士开的一个关于机器学习数学基础的CSDN专栏,可以学习下Machine Learning涉及到的一些数学基础知识(付费)(注意下这个专栏只是帮助我们重拾大学里学习过的一些数学基础同时引入部分课本中没有涉及到但是ML需要的数学知识,所以还是需要学习者有学习过微积分、最优化方法概率统计与随机过程线性代数的基础,这个专栏不太适合基础不扎实的机器学习初学者)。
机器学习中的数学:机器学习中的数学(全集)_机器学习数学基础系列专栏-CSDN博客

三、Stanford-CS229(强力推荐)

大名鼎鼎的CS229,这个B站上就有视频,可以配合Lecture notes一起食用。
CS229B站视频:https://www.bilibili.com/video/BV1JE411w7Ub?from=search&seid=6301855083560474937&spm_id_from=333.337.0.0
Additional Information:http://cs229.stanford.edu/syllabus.html#opt

四、huhuai008的机器学习白板推导

第四个是B站shuhuai008的机器学习白板推导,比较注重机器学习的数学推导过程,也是需要一定的数学基础。还有就是推荐两本书《统计学习方法》与《An Introduction to Statistical Learning》,后者中文译作《统计学习导论——基于R应用》,这本书现在还有大佬写了Python版,Github链接:GitHub - hardikkamboj/An-Introduction-to-Statistical-Learning: This repository contains the exercises and its solution contained in the book “An Introduction to Statistical Learning” in python.
B站白板推导视频链接:【机器学习】【白板推导系列】【合集 1~23】_哔哩哔哩_bilibiliwww.bilibili.com/video/BV1aE411o7qd?from=search&seid=18092731080522728905
还有B站上shuhuai008的Machine Learning视频还有配套的笔记,Github链接如下:
GitHub - tsyw/MachineLearningNotes: My personal notes
B站ISL链接:统计学习(机器学习)入门(统计学习导论配套视频)中英字幕_哔哩哔哩_bilibili

五、呆呆的猫CSDN博客——机器学习实战专栏

专栏链接:(87条消息) 机器学习实战_呆呆的猫的博客-CSDN博客
这个专栏介绍了机器学习中最基础的一些技巧如回归、支持向量机、决策树等,且每篇都写得很详细,所以我觉得很适合希望把每个基础概念都学习清楚的新手们。

推荐书籍与公众号

统计学习书单

统计学习不是统计学,但是确实是基于统计学的一种学习方法。相对于机器学习,统计学习可能更加理论化一些(毕竟和统计学挂钩),可能会设计到比较多的公式推导等等。这里推荐一些关于Statistical Learning的书单,希望能帮助到大家:

  1. 李航的《统计学习方法》:国内难得的好书。
  2. 《Introduction to Statistical Learning》:大名鼎鼎的ISL,原书是基于R应用的,现在也有基于Python应用的版本,介绍了验证方法、压缩估计和回归、分类相关方法。
  3. 《Elements of Statistical Learning》:大名鼎鼎的ESL,和ISL十分相似,只是此书事无巨细,数学推导会特别特别多。

    Python机器学习书单

    当然,Machine Learning毕竟是一门应用型课程,不上手怎么行。所以建议在学习过程中配合Python自己上手实操一下,有助于理解与记忆,这里推荐几本Python机器学习路线的书(从上至下逐步深入,越上面越偏Python基础,越下面越偏机器学习实战):

  4. 《Python编程:从入门到实践》:介绍列表字典元组以及迭代对象等Python基础知识,是Python入门极力推荐的第一本书。

  5. 《利用Python进行数据分析》:引导读者学习Numpy、Pandas、Matplotlib、Seaborn等Python数据科学相关库,为机器学习奠定基础。
  6. 《Python机器学习》(英文版:《Machine Learning with Python》):通过Scikit-learn和Tensorflow引导读者进行机器学习乃至深度学习算法的学习与编程。
  7. 《机器学习实战——基于Scikit-learn和Tensorflow》:学习内容与《Python机器学习》类似,最后还有一章讲Reinforcement Learning强化学习的。

知乎链接:怎么自学python,大概要多久?
如果只是入门学习,比较建议使用VSCode或者Jupyter Notebook进行编程,Jupyter Notebook是一个基于 Web 的交互式计算笔记本环境,可以集代码、结果图与Markdown笔记与一体,是Python数据科学家的必会工具,选择VScode则是因为其是一款轻小的代码编辑器;如果是需要在工作中创建完整的Python工程项目,建议使用集成开发环境Pycharm

机器学习相关公众号

我本人对于Machine Learning也比较感兴趣,所以花在机器学习上的时间也比较多,这边再推荐下我本人比较喜欢的几个关于机器学习的公众号把:

  • 机器学习初学者:主要结合Python代码介绍机器学习的一些算法
  • 专知:提供很多机器学习、数据分析与信息处理方面相关英文书籍的pdf版,强烈推荐关注
  • Python数据科学:与专知类似,也可以关注
  • Python数据之道:主要是介绍如何使用Python处理数据的(Python数据科学)
  • pythonic生物人:主要围绕Python/R介绍各种数据可视化的方法

    从机器学习到深度学习

    image.png
    作为工科生,其实入门机器学习并不难,但是如果越往深处学习,一旦进阶到深度学习部分,工科生课程本科期间教授的那些课程知识就不足以支撑Deep Learning的学习了,这时候需要自学随机过程、数据结构等课程,所以还是一个任重而道远的过程。想入门Deep Learning的童鞋可以参考《Neural Networks and Deep Learning》,作者是Michael Nielsen,这个讲义是当时我们学校做深度势能的一个学长推荐给我的:
    《Neural Networks and Deep Learning》链接:Neural networks and deep learning
    这份讲义全文很长,全书分为六个chapter,以识别MINST手写数字集为主线,从(sigmoid)perceptron感知机讲起,过渡到neural networks,介绍了stochastic gradient descent和backpropagation算法,再到deep neural networks,在书的最后介绍了下deep learning中的convolutional neural networks(卷积神经网络)。而且是用英文写的,这也是锻炼英语阅读能力的一个机会。
    如果不习惯英语阅读的小伙伴可以看这份讲义:零基础入门深度学习(1) - 感知器 - 作业部落 Cmd Markdown 编辑阅读器 (zybuluo.com)

    理论与实践相结合

    手撕Python机器学习

    手撕Python机器学习链接:Python手撕算法
    image.png
    还有一点很重要的就是——理论与实践相结合。只会使用Python调用函数或者只知道某个Machine Learning算法的数学推导都是远远不够的,初学时一定要结合数学知识和Python编程来实现某些算法,这样子理解才会深刻(就像上面这个专栏一样),最好还能找一些实际的项目来做,能培养机器学习方面的工程能力。纸上得来终觉浅,绝知此事要躬行。

    天池/Kaggle竞赛

    为了防止练就一身屠龙之术,还是建议真枪实战地干一番。这里推荐在参加天池学习赛前了解下XGBOOST和LightGBM(基本上这两个在天池竞赛上用得最多,还有GBDT:https://zhuanlan.zhihu.com/p/87885678
    天池学习赛——二手车交易价格预测(零基础入门数据挖掘):https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12281978.0.0.6802593at8KK10&postId=95422

    CodeCademy_Projects

    还有一个特别好的上手的地方就是CodeCademy_Pro,CodeCademy真的除了贵和慢没有其他的缺点,其应该说是开创了一种非常适合代码学习的方式:读instruction&写programming,上面最近新开了Projects这个部分,非常适合有机器学习理论基础或者实践基础的同学去进行一定的实操。
    Breast Cancer Classifier:https://www.codecademy.com/projects/practice/knn-project
    Heart Failure Classification:https://www.codecademy.com/projects/practice/classification-neural-networks-project

    时间序列分析Time Series Analysis

    传统时间序列分析方法

    image.png
    时间序列分析是一门对于想走信息通信、量化金融、生物信息等方向的同学来讲是一门挺重要的课程,也是一门很有意思的课程,个人建议在掌握一定的数学基础之上再入手,下面是时间序列中一些重要的概念、方法以及模型:

  • 平稳性检验:使用ADF等分析Time Series是否平稳,如果不平稳需要使用差分回归使之平稳

  • 白噪声检验:分析Time Series是否是白噪声序列,也就是是否是纯随机序列,如果是则失去分析意义,可以立即停止分析;如果不是,那就继续接下来的分析
  • 模型拟合与模型检验:使用AR\MA\ARMA\ARIMA对Time Series进行拟合,并使用残差图、检验Ljung Box检验、过度拟合等方式判断拟合模型的准确性
  • 模型预测:使用拟合好的Time Series模型进行预测
  • 重要概念:单位根检验ADF\自相关图ACF\偏自相关图PACF\拖尾\截尾\残差分析Residual Analysis\AR\MA\ARMA\ARIMA\SARIMA\Holt-Winters\Ljung Box检验\过度拟合等

首先跟上面Machine Learning一样,我还是注重于“初步了解——兴趣培养——理论推导——实际应用”这条主线,所以希望从培养兴趣出发,初步了解可以看这个UP主的视频,这个UP主还有很多其他的Time Series Analysis的入门视频,都很不错;接下来就是数学理论推导与实际应用,着重推荐北大数院李东风老师的Time Series Analysis的数学讲义及R语言时间序列分析
TS入门视频:时间序列分析的基本思路与步骤(入门级,新手必看!!!)_哔哩哔哩_bilibili
TS视频:时间序列模型检验的基本思路与步骤(入门级,新手必看!!!)_哔哩哔哩_bilibili
北大数院李东风老师链接:北京大学数学科学学院李东风2020年秋季学期课程主页www.math.pku.edu.cn/teachers/lidf/course/index.htm
最后还是希望大家可以将理论与实践相结合,使用Python跟着下面这篇文章实际操作一下,只要把Time Series的基础概念了解清楚,认认真真跟着下面这篇文章做一遍的话,从工程的角度来说已经算是成功入门Time Series Analysis辣:
链接:【Python】时间序列分析完整过程_jho9o5的博客-CSDN博客_python 时间序列

深度学习时间序列分析方法

image.png
以上的方法都是一些比较传统的时间序列分析方法,然而这些年Machine Learning和Deep Learning大火,许多优秀的新型时间序列分析方法层出不穷,下面这个链接是一位博主整理好的这些年有关时间序列预测、聚类分类等问题的目录,感兴趣的童鞋们可以看看:
深度学习时间序列分析实战链接:原理+论文+实战:60篇由浅入深的时间序列预测/分类教程汇总Constant dripping wears the stone-CSDN博客时间序列预测论文
对于Time Series Analysis实在感兴趣的童鞋门也可以去参加相关的竞赛来培养自己这方面的学习热情与知识应用,像数学建模竞赛、心电图信号分类竞赛等。Time Series Analysis不仅包含传统的知识与应用如AR\ARMA\ARIMA、ADF、白噪声检验等,也包含机器学习的一些新知识如RNN、Long Short Term Memory神经网络等,而且使用的语言也可以是Matlab\Python\R等,所以也可以和我上面提及的Machine Learning的学习联系起来一起学习(什么是知识体系,这就是知识体系嗷!)

最后总结

这篇文章主要就机器学习以及时间序列分析的学习路线与学习资源进行了分享。其实在学习过程中我们还会碰到许许多多的问题,例如某软件编译环境始终配置不好、缺乏相关的数学知识基础等等,所以更多的问题还是需要我们自己在学习过程中自己去寻找相关的解决办法,要相信办法总比困难多!而且学习的资源终归只是学习的一部分,无论身处何处,学习的主体终究是人,所以持之以恒的学习态度和不断改进的学习方法才是学习的终极奥义,希望大家都能成为更优秀的人!