机器学习数学提要

挺不错的博客链接:
●《高数上下册》
●《概率论与数理统计浙大版》
●《数理统计学简史》陈希孺
●《矩阵分析与应用》张贤达
●《凸优化 (Convex Optimization)》-Stphen Boyd&Lieven Vandenberghe
●《统计学习方法》李航
●《PRML》

1、机器学习中的数学基础

  • Taylor展式的应用
  • 常见概率分布与共轭分布
  • 最大似然估计
  • 中心极限定理及其应用
  • 大数定理及其应用
  • Lagrange凸优化

2、Python及其数学/机器学习库的使用

  • 机器学习算法类别
  • 机器学习应用的一般流程
  • 解释器Python2.7与IDE:Anaconda/Pycharm
  • numpy/scipy/matplotlib/panda库的介绍和典型使用
  • 举例:SVD用于图像处理

3、回归

  • 线性回归
  • 高斯分布
  • Logistic回归
  • 最大似然估计
  • 梯度下降算法:BGD与SGD
  • 特征选择与过拟合

4、回归实践

  • 机器学习sklearn库介绍
  • Ridge回归、LASSO
  • Logistic/Softmax回归
  • 回归代码实现和调参
  • 数据可视化

5、决策树和随机森林

  • 熵、联合熵、条件熵、KL散度、互信息
  • 最大似然估计与最大熵模型
  • ID3、C4.5、CART详解
  • 决策树的评价
  • 预剪枝和后剪枝
  • Bagging
  • 随机森林

6、随机森林实践

  • 手写随机森林实践
  • 调用开源库函数完成随机森林
  • 数据结构的综合使用
  • gini系数

7、提升

  • 提升为什么有效
  • Adaboost算法
  • 加法模型与指数损失
  • 梯度提升决策树GBDT

8、xgboost

  • 自己动手实现GBDT
  • xgboost库介绍
  • Taylor展式与学习算法
  • xgboost应用于实践

9、SVM

  • 线性可分支持向量机
  • 软间隔的改进
  • 损失函数的理解
  • 核函数的原理和选择
  • SMO算法

10、SVM实践

  • libSVM代码库介绍
  • 原始数据和特征提取
  • 手写随机森林实践
  • 调用开源库函数完成SVM
  • SVM、Logistic回归、随机森林三者的横向比较

11、聚类

  • 各种相似度度量及其相互关系
  • K-means与K-Medoids及变种
  • AP算法/LPA算法及其应用
  • 密度聚类DBSCAN/DCluster(Science2014)
  • 谱聚类SC
  • 聚类评价和结果指标

12、聚类实践

  • 动手自己实现K-means
  • K-Means++算法原理和实现
  • 并查集的实践应用
  • 密度聚类的代码实现
  • 使用开源机器学习包完成聚类

13、EM算法

  • 最大似然估计
  • Jensen不等式
  • 朴素理解EM算法
  • 精确推导EM算法
  • EM算法的深入理解
  • 混合高斯分布

14、EM算法实践

  • 多元高斯分布的EM实现
  • 分类结果的数据可视化
  • EM与聚类的比较
  • 主题模型pLSA与EM算法

15、主题模型LDA

  • 贝叶斯学派的模型认识
  • 共轭先验分布
  • Dirichlet分布
  • Laplace平滑
  • Gibbs采样详解

16、LDA实践

  • 停止词和高频词
  • 动手自己实现LDA
  • LDA开源包的使用和过程分析
  • Metropolis-Hastings算法
  • MCMC
  • LDA与word2vec的比较

17、隐马尔科夫模型HMM

  • 概率计算问题
  • 前向/后向算法
  • HMM的参数学习
  • Baum-Welch算法详解
  • Viterbi算法详解

18、HMM实践

  • 动手自己实现HMM用于中文分词
  • 多个语言分词开源包的使用和过程分析
  • 文件数据格式UFT-8、Unicode
  • 停止词和标点符号对分词的影响
  • 前向后向算法计算概率溢出的解决方案
  • EM算法和MLE的优劣比较
  • 发现新词和分词效果分析

附赠:机器学习用于股票预测(综合)

你可以从一个由你熟悉的语言编写的库开始学习,然后再去学习其他功能强大的库。如果你是一个优秀的程序员,你会知道怎样从一种语言,简单合理地迁移到另一种语言。语言的逻辑都是相同的,只是语法和API稍有不同。

•R Project for Statistical Computing:这是一个开发环境,采用一种近似于Lisp的脚本语言。在这个库中,所有你想要的与统计相关的功能都通过R语言提供,包括一些复杂的图标。CRAN(你可以认为是机器学弟的第三方包)中的机器学习目录下的代码,是由统计技术方法和其他相关领域中的领军人物编写的。如果你想做实验,或是快速拓展知识,R语言都是必须学习的。但它可能不是你学习的第一站。

WEKA:这是一个数据挖掘工作平台,为用户提供数一系列据挖掘全过程的API、命令行和图形化用户接口。你可以准备数据、可视化、建立分类、进行回归分析、建立聚类模型,同时可以通过第三方插件执行其他算法。除了WEKA之外, Mahout是Hadoop中为机器学习提供的一个很好的JAVA框架,你可以自行学习。如果你是机器学习和大数据学习的新手,那么坚持学习WEKA,并且全心全意地学习一个库。

Scikit Learn:这是用Python编写的,基于NumPy和SciPy的机器学习库。如果你是一个Python或者Ruby语言程序员,这是适合你用的。这个库很用户接口友好,功能强大,并且配有详细的文档说明。如果你想试试别的库,你可以选择Orange。

Octave:如果你很熟悉MatLab,或者你是寻求改变的NumPy程序员,你可以考虑 Octave。这是一个数值计算环境,与MatLab像是,借助Octave你可以很方便地解决线性和非线性问题,比如机器学习算法底层涉及的问题。如果你有工程背景,那么你可以由此入手。

BigML:可能你并不想进行编程工作。你完全可以不通过代码,来使用 WEKA那样的工具。你通过使用BigMLS的服务来进行更加深入的工作。BigML通过Web页面,提供了机器学习的接口,因此你可以通过浏览器来建立模型。

挑选出一个平台,并且在你实际学习机器学习的时候使用它。不要纸上谈兵,要去实践!

Video Courses视频课程

很多人都是通过视频资源开始接触机器学习的。我在YouTube和VideoLectures上看了很多于机器学习相关的视频资源。这样做的问题是,你可能只是观看视频而并不实际去做。我的建议是,你在观看视频的时候,应该多记笔记,及时后来你会抛弃你的笔记。同时,我建议你将学到的东西付诸实践。

坦白讲,我没有看见特别合适初学者的视频资源。视频资源都需要你掌握一定的线性代数、概率论等知识。Andrew Ng在斯坦福的讲解可能是最适合初学者的,下面是我推荐的一些视频资源。

Stanford Machine Learning斯坦福的机器学习课程:可以在Coursera上观看,这门课是由 Andrew Ng讲解的。只要注册,你可以随时观看所有的课程视频,从Stanford CS229 course下载讲义和笔记。这门课包括了家庭作业和小测试,课程主要讲解了线性代数的知识,使用Octave库。

Caltech Learning from Data加利福尼亚理工学院的数据分析课程:你可以在edX上学习这门课程,课程是由Yaser Abu-Mostafa讲解的。所有的课程视频和资料都在加利福尼亚理工学院的网站上。与斯坦福的课程类似,你可以根据自己的情况安排学习进度,完成家庭作业和小论文。它与斯坦福的课程主题相似,关注更多的细节和数学知识。对于初学者来说,家庭作业可能稍有难度。

Machine Learning Category on VideoLectures.Net网站中的机器学习目录:这是个很容易令人眼花缭乱的资源库。你可以找出比较感兴趣的资源,并且深入学习。不要纠结于不适合你的视频,或者对于感兴趣的内容你可以做笔记。我自己会一直重复深入学习一些问题,同时发现新的话题进行学习。此外,在这个网站上你可以发现是这个领域的大师是什么样的。

“Getting In Shape For The Sport Of Data Science” – 由Jeremy Howard讲授:这是与机器学习竞赛者的对话,他们是一些实践中的R语言用户。这是非常珍贵的资源,因为很少有人会讨论研究一个问题的完整过程和究竟怎样做。我曾经幻想过在网上找到一个TV秀,记录机器学习竞赛的全过程。这就是我开始学习机器学习的经历!

Overview Papers综述论文

如果你并不习惯阅读科研论文,你会发现论文的语言非常晦涩难懂。一篇论文就像是一本教科书的片段,但是论文会介绍一个实验或者是领域中其他的前沿知识。然而,如果你准备从阅读论文开始学习机器学习的话,你还是可以找到一些很有意思的文章的。

The Discipline of Machine Learning机器学习中的规则:这是由Tom Mitchell编著的白皮书,其中定义了机器学习的规则。Mitchell在说服CMU总裁为一个百年内都存在的问题建立一个独立的机器学习部门时,也用到了这本书中的观点。

A Few Useful Things to Know about Machine Learning:这是一篇很好的论文,因为它以详细的算法为基础,又提出了一些很重要的问题,比如:选择特征的一般化,模型简化等。

我只是列出了两篇重要的论文,因为阅读论文会让你陷入困境。

Beginner Machine Learning Books给机器学习初学者的书

关于机器学习的书有很多,但是几乎没有为初学者量身定做的。什么样的人才是初学者呢?最有可能的情况是,你从另外一个完全不同的领域比如:计算机科学、程序设计或者是统计学,来到机器学习领域。那么,大部分的书籍要求你有一定的线性代数和概率论的基础。

但是,还有一些书通过讲解最少的算法来鼓励程序员学习机器学习,书中会介绍一些可以使用工具、编程函数库来让程序员尝试。其中最有代表性的书是:《Programming Collective Intelligence》,《Machine Learning for Hackers》,《Hackersand Data Mining: Practical Machine Learning Tools and Techniques》(Python版, R版, 以及Java版)。如果感到迷惑的话,你可以选择其中一本开始学习。

Programming Collective Intelligence: Building Smart Web 2.0 Applications:这本书是为程序员写的。书中简略介绍相关理论,重点以程序为例,介绍web中的实际问题和解决办法。你可以买来这本书,阅读,并且做一些练习。

Machine Learning for Hackers (中文版:机器学习:实用案例解析 ):我建议你在阅读了《Programming Collective Intelligence》一书之后,再阅读这本书。这本书中也提供了很多实践练习,但是涉及更多的数据分析,并且使用R语言。我个人很喜欢这本书!

•Machine Learning: An Algorithmic Perspective:这本书是《Programming Collective Intelligence》的高级版本。它们目的相同(让程序员开始了解机器学习),但是这本书包括一些数学知识,参考样例和phython程序片段。如果你有兴趣的话,我建议你在看完《Programming Collective Intelligence》之后来阅读这本书。

数据挖掘:实用机器学习工具与技术(英文版·第3版) :我自己是从这本书开始了解机器学习的,那时是2000年这本书还是第一版。我那时是Java程序员,这本书和WEKA库为我的学习和实践提供了一个很好的环境。我通过这样的平台和一些插件,实现我的算法,并且真正开始实践机器学习和数据挖掘的过程。我强烈推荐这本书,和这样的学习过程。

Machine Learning(中文版:计算机科学丛书:机器学习 ):这是一本很老的书,包括了一些规则和很多参考资料。这是一本教科书,为每个算法提供了相关讲解。

有一些人认为那些经典的机器学习教科书很了不起。 我也赞同,那些书的确非常好。但是,我认为,对于初学者来说,这些书可能并不合适。

Further Reading 继续阅读

在写这篇文章时,我认真思考了相关问题,同时也参考了其他人推荐的资料,以确保我没有遗漏任何重要参考资料。为了确保文章的完整性,下面也列出了一些网上流行的,可以供初学者使用的材料。.

A List of Data Science and Machine Learning Resources:这是一份仔细整理的列表。你可以花一些时间,点击链接,仔细阅读作者的建议。值得一读!

•What are some good resources for learning about machine learning Why:这个问题的第一个答案令人吃惊。每次我阅读这篇文章的时候,都会做好笔记,并且插入新的书签。答案中对我最有启发的部分是机器学习课程列表,以及相应的课程笔记和问答网站。

Overwhelmed by Machine Learning: is there an ML101 book:这是StackOverflow上的问题。并且提供了一系列机器学习推荐书籍。Jeff Moser提供的第一个答案是很有用的,其中有课程视频和讲座的链接。

你可能感兴趣的:(机器学习,机器学习,数学,优化,统计学)