机器学习原理笔记整理. Gitbook地址https://shunliz.gitbooks.io/machine-learning/content/
前半部分关注数学基础,机器学习和深度学习的理论部分,详尽的公式推导。
后半部分关注工程实践和理论应用部分
如果您觉得这个资料还不错,您也可以打赏一下。
- 前言
- 第一部分 数学基础
- 第一章 数学分析
- 常用函数
- 牛顿法
- 梯度下降
- 最小二乘
- 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
- 凸优化
- 数值计算
- 第二章 概率论和统计
- 统计学习方法概论
- 最大似然估计
- 蒙特卡罗方法
- 马尔科夫链
- MCMC采样和M-H采样
- Gibbs采样
- 第三章 线性代数和矩阵
- LAPACK
- 特征值与特征向量
- 第二部分 机器学习
- 第四章 机器学习基础
- 机器学习库(numpy,scikit)
- 机器学习库(Pandas,pySpark)
- 机器学习库(tensorflow, keras)
- 模型度量
- 交叉验证
- 生成模型和判别模型
- 机器学习中的距离
- 机器翻译模型度量
- 机器学习库(tensorflow, keras)
- 第六课:数据清洗和特征选择
- PCA
- ICA
- One-hot编码
- scikit-learn PCA
- 线性判别分析LDA
- 用scikit-learn进行LDA降维
- 奇异值分解(SVD)原理与在降维中的应用
- 局部线性嵌入(LLE)原理
- scikit-learn LLE
- spark特征选择
- Spark特征提取
- 异常数据监测
- 数据预处理
- 特征工程
- 第七课: 回归
- 1. 线性回归
- 10.最大熵模型
- 11.K-L散度
- 坐标下降和最小角
- 线性回归小结
- Logistic回归
- Logistic回归小结
- SoftMax回归
- 第九课:决策树
- ID3
- C4.5
- CART
- 总结
- 实现代码
- 第十三课:SVM
- 感知机模型
- 线性SVM
- 软间隔最大化模型
- 核函数
- SMO算法原理
- SVM回归
- scikit-learn SVM
- 支持向量机高斯核调参
- SVM代码实现
- 集成学习
- Adaboost原理
- scikit-learn Adaboost
- 梯度提升树(GBDT)
- scikit GBDT
- Bagging与随机森林
- XGBOOST
- scikit-learn 随机森林
- 第十五课:聚类
- K-Mean
- KNN
- scikit-learn KNN
- KNN 代码
- scikit-learn K-Means
- BIRCH聚类算法原理
- scikit-learn BIRCH
- DBSCAN密度聚类算法
- scikit-learn DBSCAN
- 谱聚类(spectral clustering)原理
- scikit-learn 谱聚类
- 近邻传播算法
- 混合高斯模型
- 关联分析
- 典型关联分析(CCA)原理
- Apriori算法原理
- FP Tree算法原理
- PrefixSpan算法原理
- Spark FP Tree算法和PrefixSpan算法
- 推荐算法
- 矩阵分解协同过滤推荐算法
- SimRank协同过滤推荐算法
- Spark矩阵分解推荐算法
- 分解机(Factorization Machines)推荐算法原理
- 美团推荐算法
- MapReduce ItemCF
- 基于标签的用户推荐系统
- 10种传统机器学习算法,阿里工程师总结
- 第十七课:EM算法
- 第十九课:贝叶斯网络
- 朴素贝叶斯
- scikit-learn朴素贝叶斯
- 朴素贝叶斯实际应用
- 朴素贝叶斯代码
- 变分贝叶斯推断
- 第二十一课:LDA主题模型
- 第二十三课:隐马尔科夫模型HMM
- HMM前向后向算法评估观察序列概率
- 鲍姆-韦尔奇算法求解HMM参数
- 维特比算法解码隐藏状态序列
- 用hmmlearn学习隐马尔科夫模型HMM
- 马尔科夫蒙特卡洛
- 条件随机场CRF
- 从随机场到线性链条件随机场
- 前向后向算法评估标记序列概率
- 维特比算法解码
- 第三部分 深度学习
- 深度学习层
- 核心层
- 卷积层
- 池化层
- 局部连接层
- 循环层
- 嵌入层
- 合并层
- 高级激活层
- 归一化层
- 噪声层
- 层包裹
- 自定义层
- 第二十五课:深度学习
- 基本概念
- 深度神经网络(DNN)模型与前向传播算法
- 深度神经网络(DNN)反向传播算法(BP)
- 反向传播
- 反向传播2
- DNN损失函数和激活函数的选择
- 深度神经网络(DNN)的正则化
- 参考文献
- 第二十六课 卷积神 经网络(Convolutional Neural Netowrk)
- 卷积神经网络(CNN)模型结构
- 卷积神经网络(CNN)前向传播算法
- 卷积神经网络(CNN)反向传播算法
- 对抗生成网络(Generative Adversarial Networks)
- GAN原理
- InfoGAN
- DCGAN
- VAE
- 受限波尔兹曼机
- RBM code
- DBN
- RBM原理
- RNN
- Bidirectional RNNs
- Deep (Bidirectional) RNNs
- LSTM模型与前向反向传播算法
- 随时间反向传播(BPTT)算法
- 循环神经网络(RNN)模型与前向反向传播算法
- 自动编码器
- 堆叠降噪自动编码器
- 降噪自动编码器
- sparse自动编码器
- Keras自动编码器
- word2vec
- CBOW与Skip-Gram模型基础
- 基于Hierarchical Softmax的模型
- 基于Negative Sampling的模型
- 强化学习
- Q-Learning
- 梯度下降策略优化推导
- 策略网络
- bandit算法
- 蒙特卡洛树搜索
- 多臂赌博机(Multi-arm Bandits)
- 马尔可夫决策过程MDP
- 动态编程
- 蒙特卡洛方法
- 时序差分学习
- A3C算法
- Multi-steps bootstraping
- Planning and Learning with Tabular Methods
- DQN
- Policy Gridient
- Actor Critic
- DDPG (Deep Deterministic Policy Gradient)
- PPO(Proximal Policy Optimization )
- Alpha-Beta剪枝算法详解
- 进化算法
- 遗传算法
- 进化策略
- NEAT
- 自然语言处理
- 文本挖掘的分词原理
- HashTrick
- TF-IDF
- 中文文本挖掘预处理
- 英文文本挖掘预处理
- 潜在语义索引(LSI)
- 非负矩阵分解(NMF)
- LDA基础
- LDA求解之Gibbs采样算法
- LDA求解之变分推断EM算法
- scikit-learn LDA主题模型
- 语音识别
- GMM-HMM
- 目录
- 第四部分 学习资源
- 机器学习
- 强化学习
- 自然语言处理
- 深度学习
- 流行网络结构
- mobilenet
- ResNet
- 并行学习
- 美团并行学习实践
- AI应用
- 美团外卖AI技术
- 美团推荐排序
- AutoML在推荐系统应用
- 参考
- AI领域国内创业公司
机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。
机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性。
根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域,有几种主要的学习方式。将算法按照学习方式分类是一个不错的想法,这样可以让人们在建模和算法选择的时候考虑能根据输入数据来选择最合适的算法来获得最好的结果。
在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,如对防垃圾邮件系统中“垃圾邮件”“非垃圾邮件”,对手写数字识别中的“1“,”2“,”3“,”4“等。在建立预测模型的时候,监督式学习建立一个学习过程,将预测结果与“训练数据”的实际结果进行比较,不断的调整预测模型,直到模型的预测结果达到一个预期的准确率。监督式学习的常见应用场景如分类问题和回
归问题。常见算法有逻辑回归(Logistic Regression)和反向传递神经网络(Back Propagation Neural Network)
在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。常见算法包括Apriori算法以及K-Means算法。
在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(Graph Inference)或者拉普拉斯支持向量机(Laplacian SVM.)等。
在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning以及时间差学习(Temporal difference learning)
在企业数据应用的场景下, 人们最常用的可能就是监督式学习和非监督式学习的模型。 在图像识别等领域,由于存在大量的非标识的数据和少量的可标识数据, 目前半监督式学习是一个很热的话题。 而强化学习更多的应用在机器人控制及其他需要进行系统控制的领域。
根据算法的功能和形式的类似性,我们可以把算法分类,比如说基于树的算法,基于神经网络的算法等等。当然,机器学习的范围非常庞大,有些算法很难明确归类到某一类。而对于有些分类来说,同一分类的算法可以针对不同类型的问题。这里,我们尽量把常用的算法按照最容易理解的方式进行分类。
回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法。回归算法是统计机器学习的利器。在机器学习领域,人们说起回归,有时候是指一类问题,有时候是指一类算法,这一点常常会使初学者有所困惑。常见的回归算法包括:最小二乘法(Ordinary Least Square),逻辑回归(Logistic Regression),逐步式回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)以及本地散点平滑估计(Locally Estimated Scatterplot Smoothing)
基于实例的算法常常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配。因此,基于实例的算法常常也被称为“赢家通吃”学习或者“基于记忆的学习”。常见的算法包括 k-Nearest Neighbor(KNN), 学习矢量量化(Learning Vector Quantization, LVQ),以及自组织映射算法(Self-Organizing Map , SOM)
正则化方法是其他算法(通常是回归算法)的延伸,根据算法的复杂度对算法进行调整。正则化方法通常对简单模型予以奖励而对复杂算法予以惩罚。常见的算法包括:Ridge Regression, Least Absolute Shrinkage and Selection Operator(LASSO),以及弹性网络(Elastic Net)。
决策树算法根据数据的属性采用树状结构建立决策模型, 决策树模型常常用来解决分类和回归问题。常见的算法包括:分类及回归树(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 随机森林(Random Forest), 多元自适应回归样条(MARS)以及梯度推进机(Gradient Boosting Machine, GBM)
贝叶斯方法算法是基于贝叶斯定理的一类算法,主要用来解决分类和回归问题。常见算法包括:朴素贝叶斯算法,平均单依赖估计(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。
基于核的算法中最著名的莫过于支持向量机(SVM)了。 基于核的算法把输入数据映射到一个高阶的向量空间, 在这些高阶向量空间里, 有些分类或者回归问题能够更容易的解决。 常见的基于核的算法包括:支持向量机(Support Vector Machine, SVM), 径向基函数(Radial Basis Function ,RBF), 以及线性判别分析(Linear Discriminate Analysis ,LDA)等
聚类,就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。
关联规则学习通过寻找最能够解释数据变量之间关系的规则,来找出大量多元数据集中有用的关联规则。常见算法包括 Apriori算法和Eclat算法等。
人工神经网络算法模拟生物神经网络,是一类模式匹配算法。通常用于解决分类和回归问题。人工神经网络是机器学习的一个庞大的分支,有几百种不同的算法。(其中深度学习就是其中的一类算法,我们会单独讨论),重要的人工神经网络算法包括:感知器神经网络(Perceptron Neural Network), 反向传递(Back Propagation), Hopfield网络,自组织映射(Self-Organizing Map, SOM)。学习矢量量化(Learning Vector Quantization, LVQ)
深度学习算法是对人工神经网络的发展。 在近期赢得了很多关注, 特别是百度也开始发力深度学习后, 更是在国内引起了很多关注。 在计算能力变得日益廉价的今天,深度学习试图建立大得多也复杂得多的神经网络。很多深度学习的算法是半监督式学习算法,用来处理存在少量未标识数据的大数据集。常见的深度学习算法包括:受限波尔兹曼机(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷积网络(Convolutional Network), 堆栈式自动编码器(Stacked Auto-encoders)。
像聚类算法一样,降低维度算法试图分析数据的内在结构,不过降低维度算法是以非监督学习的方式试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者用来简化数据以便监督式学习使用。常见的算法包括:主成份分析(Principle Component Analysis, PCA),偏最小二乘回归(Partial Least Square Regression,PLS), Sammon映射,多维尺度(Multi-Dimensional Scaling, MDS), 投影追踪(Projection Pursuit)等。
集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。这是一类非常强大的算法,同时也非常流行。常见的算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆叠泛化(Stacked Generalization, Blending),梯度推进机(Gradient Boosting Machine, GBM),随机森林(Random Forest)。