Joiike's Blog

智客日记–专注于中文的现代化和国际化

Machine Learning Handbook

| 暂无评论

https://zhuanlan.zhihu.com/p/35265043

0 数据科学基础

课程要求:编程,算法设计,数据结构,微积分,多元微积分,泛函分析,泛函空间,线性代数,解析几何,概率论,数理统计,动力系统,离散数学,优化,统计物理,数据挖掘,机器学习,数据库,并行计算与分布式计算,版本控制,可视化,市场决策,商业智能等
数据挖掘定律:一个工程项目中,数据预处理过程经常会花费整个项目的50%-80%时间。
数据挖掘金句:有时候拥有更多的数据往往胜过一个好的模型。
1 机器学习基础

特征:就是输入变量,如房价预测问题中的房间数,总面积等数值,通常用{ x_1, x_2, …, x_N }表示。标签:就是我们要预测的事物,如房价预测问题中的房价,通常用变量y来表示。
特征工程:指的是将原始数据转换为特征矢量。
1. 传统特征提取方法包括尺度不变特征变换(SIFT)、加速鲁棒特征(SURF)、GIST、RANSAC、直方图方向梯度(HOG)、局部二元模式(LBP)、经验模式分解(EMD)、语音分析等。此外,支持向量机(SVM)、随机森林(RF)、主成分分析(PCA)、核主成分分析(KPCA)、线性判别分析(LDA)、Fisher判别分析(FDA)等很多学习算法也常被人们应用于分类和提取特征的任务。

  2. 在深度学习中,这些特征会被自动学习并在多个层上分层表示。

独热编码(one-hot encoding):用于将指定字符串值表示为一个二元矢量。在该矢量(与指定的字符串值对应)中,只有一个元素设为1,其他所有元素均设为0。
嵌入(embeddings):一种分类特征,以连续值特征表示。通常,嵌入是指将高维向量映射到低维空间。
可以采用以下两种方式之一来表示英文句子中的单词,英文NLP可以查看Python nltk库:

  1. 表示成包含百万个元素(高维度)的稀疏向量,其中所有元素都是整数。向量中的每个元素都对应一个单独的英文单词,该元素值表示相应单词在句子中出现的次数。由于单个英文句子包含的单词不太可能超过50个,因此向量中几乎每个元素都是0。少数非0元素为一个非常小的整数(通常为 1),该整数表示相应单词在句子中出现的次数。这就是上一词条的独热编码。

  2. 表示成包含数百个元素(低维度)的稠密向量,其中每个元素都包含一个介于0到1之间的浮点值。这是Word2Vec以及GloVe等算法中经常采用的表示。

中文处理不同于英文,可以查看Python jieba库。

特征组合(feature crosses):cross一词来源于cross product,指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。
样本:指的是数据的特定实例,通常用向量x表示。样本分有标签样本和无标签样本,有标签指的是同时包含特征和标签,无标签指的是只包含特征。
基本假设:

  1. 随机抽取独立同分布(i.i.d.)的样本

  2. 平稳分布,即分布不会随时间发生变化

  3. 始终从同一分布中抽样,包括训练集、验证集和测试集

数据清理
1. 缩放:将浮点特征值从自然范围转换为标准范围

  2. 处理极端离群值:取对数,添加阈值

  3. 清查:遗漏值,重复样本,不良标签,不良特征值

shuffling:打乱数据,每一次epoch之后shuffle一次数据,可以避免训练样本的先后次序影响优化的结果。
Curriculum Learning:给训练数据建立有意义的顺序。因为在有些问题上,给训练数据一个有意义的顺序,可能会得到更好的性能和更好的收敛。

模型:定义特征与标签之间的某种关系。
机器:不精确来讲,就是所构建的模型。
学习:简单来讲,就是拟合样本数据。在机器学习中,主要分监督学习,半监督学习,无监督学习(预测学习)和强化学习这四大类,另外还有一种迁移学习。监督学习中还分生成模型(generative)和判别模型(discriminative)。常用的机器学习算法有线性回归,逻辑回归,决策树,支持向量机,朴素贝叶斯,K最近邻算法,K均值算法,随机森林,降维,Bagging,GBDT以及AdaBoost算法等。
强化学习(Reinforcement Learning, RL):机器学习中的一个分支,看上去更像控制系统。RL特别擅长控制一只能够在某个环境下自主行动的个体(agent),通过和环境的互动,如sensory perception和rewards等,从而不断改进自身的行为。常用算法有多臂赌博机,Markov决策过程,动态规划,蒙特卡洛方法,Q-Learning,启发式搜索,蒙特卡洛树搜索和近似方法等。Richard S. Sutton的经典教材Reinforcement Learning: An Introduction是该领域的重要参考。
常用的降维技术包括
主成分分析(Principal Component Analysis, PCA):一种无监督学习技术。PCA通过某种线性投影,将高维的数据映射到低维的空间表示,并期望在所投影的维度上数据的方差最大。

线性判别分析(Linear Discriminant Analysis, LDA):又称为Fisher Linear Discriminant,是一种有监督的线性降维算法,不同于NLP领域的LDA(具体见第5部分序列模型)。与PCA保持数据信息不同,LDA是为了使得降维后的数据点尽可能地容易被区分,即使得变换后的数据点保持类内尽可能接近,类间尽可能分开。

流形学习(Manifold Learning):假设数据是均匀采样于一个高维欧氏空间中的低维流形,流形学习就是从高维采样数据中恢复低维流形结构,即找到高维空间中的低维流形,并求出相应的嵌入映射,以实现维度约化或数据可视化。它是从观测到的现象中去寻找事物的本质,找到产生数据的内在规律。流形学习包括

        MDS(Multidimensional Scaling)

            Isomap:来自Joshua B Tenenbaum和John Langford等人发表于Science 2000的论文A Global Geometric Framework for Nonlinear Dimensionality Reduction。

        LLE(Locally Linear Embedding):来自发表于Science 2000的论文Nonlinear Dimensionality Reduction by Locally Linear Embedding。

        Laplacian Eigenmaps:来自Partha Niyogi发表于Neural Computation 2003的论文Laplacian Eigenmaps for dimensionality reduction and data representation,此外,还可以关注Xiaofei He(何晓飞)的相关研究。

        Hessian Eigenmaps:来自David Donoho发表于PNAS 2003的论文Hessian eigenmaps: Locally linear embedding techniques for high-dimensional data。

        LTSA(Local tangent space alignment):来自Zhenyue Zhang(张振跃)和Hongyuan Zha(查宏远)发表于SIAM Journal on Scientific Computing 2005的论文Principal Manifolds and Nonlinear Dimension Reduction via Local Tangent Space Alignment以及Hongyuan Zha和Zhenyue Zhang发表于SIAM Review 2009的论文Spectral Properties of the Alignment Matrices in Manifold Learning。

        MVU (Maximum variance unfolding)

        S-Logmaps

t-SNE:来自Geoffrey E. Hinton发表于JMLR 2008的论文Visualizing Data using t-SNE。

  1. 高斯过程(Gaussian Process, GP):可以当作是一种机器学习算法。GP利用点与点之间同质性的度量作为核函数(即,协方差函数),从而利用输入的训练数据来预测未知点的值。
    问题如下:函数f(x)在n个点处采样,并得到一组有噪声的函数度量值{f(x_i) = y_i± \sigma_i, i = 1, ..., n}。假设给定这些可用样本,且f̂为一些候选函数,我们能否估计出f = f̂的概率?
    
    贝叶斯法则:
    

P(f = \hat{f}|{y}) = \frac{P({y}|f = \hat{f}) P(f = \hat{f})}{P({y})}

    在GP方法中,上面右式中两个分子都服从多元正态/高斯分布。模型可以选择多元高斯分布的具体参数来达到良好的拟合度,但特征的正态族假设对于解决数学问题是必不可少的。

假设I:测量值y关于f̂是独立的并且服从高斯分布

P({y}|f = \hat{f}) = \prod_{i=1}^n \frac{1}{\sqrt{2 \pi \sigma_i^2}} \exp{(-\frac{(y_i – \hat{f}(x_i))^2}{2 \sigma_i^2})}

假设II:假设先验概率p(f = f̂)的公式。我们将注意力集中在一组数据点{ x_i: i=1, …, N}上,其中前n个点是已被抽样的点,剩下的(N-n)个点是其他位置的测试点,即我们用来估计f函数联合统计数据的点。接下来,简单地假设这些点服从f的多元正态分布,由协方差矩阵Σ来控制,由此得到

p(f(x_1), …, f(x_N)) \sim \frac{1}{\sqrt{(2 \pi)^N |\Sigma|}}\exp{(-\frac{1}{2}\sum_{ij=1}^N f(x_i) \Sigma_{ij}^{-1} f(x_j))}

        这里,我们已经默认上面正态分布的均值是零。这是为了简便起见:如果非零均值合适,那么可以与均值相加分析,或者从原始f中减去非零均值使新的分布均值为零。

        这里,假设一个简单的Σ

\Sigma_{ij} \equiv \sigma^2 \exp{(-\frac{(x_i – x_j)^2}{2 l^2})}

后验概率:使用块(符号),其中0对应采样点,1对应测试点,测试点的边缘分布为

p(\mathbf{f}1|{y}) = \mathcal{N}(\Sigma{10} \frac{1}{\sigma^2 I_{00} + \Sigma_{00}} \cdot \mathbf{y}, \Sigma_{11} – \Sigma_{10} \frac{1}{\sigma^2 I_{00} + \Sigma_{00}} \Sigma_{01})

        其中,

\begin{equation} \sigma^2I_{00} = \left( \begin{array}{ccccc} \sigma_1^2 & 0 & 0 & \dots & 0\ 0 & \sigma_2^2 & 0 & \dots & 0\ 0 & 0 & \sigma_3^2 & \dots & 0\ 0 & 0 & \dots & \sigma_{n-1}^2 & 0\ 0 & 0 & 0 & \dots & \sigma_n^2 \end{array} \right) \end{equation}

               以及

\mathbf{y}^T \equiv (y_1, …, y_n).

    更多细节,推荐Carl E. Rasmussen和Christopher K. I. Williams的专著Gaussian Processes for Machine Learning。

PAC(Probably Approximately Correct)可学习性:机器学习中数学分析的一种框架,由图灵奖得主Leslie Valiant于1984年提出。Shai Shalev-Shwartz和Shai Ben-David于2014年的新著Understanding Machine Learning: From Theory To Algorithms值得推荐。
VC(Vapnik–Chervonenkis)维:最初由Vladimir Vapnik和Alexey Chervonenkis提出。Vladimir Vapnik还是SVM算法的提出者,目前任职于Facebook AI Research。一般来讲,VC维越大,学习能力就越强,学习也越复杂。VC维的证明涉及PAC learning以及大量的集中不等式(concentration inequalities)。目前还有将VC维用于深度学习的研究,但需谨慎看待。
多任务学习(Multi-Task Learning, MTL):一种归纳迁移机制,主要目标是利用隐含在多个相关任务的训练信号中的特定领域信息来提高泛化能力,多任务学习通过使用共享表示并行训练多个任务来完成这一目标。一言以蔽之,多任务学习在学习一个问题的同时,可以通过使用共享表示来获得其他相关问题的知识。归纳迁移是一种专注于将解决一个问题的知识应用到相关的问题的方法,从而提高学习的效率。比如,学习行走时掌握的能力可以帮助学会跑,学习识别椅子的知识可以用到识别桌子的学习,我们可以在相关的学习任务之间迁移通用的知识。
端到端学习(end-to-end learning):不同人有不同的定义,但大体上可以理解为用一个任务来搞定所有相关的任务,即提供从数据流、算法选择和参数调整、算法相关硬件直到结果可视化等完整解决方案的整个过程。
A/B测试:一种统计方法,用于将两种或多种技术进行比较,通常是将当前采用的技术与新技术进行比较。
A/B测试不仅旨在确定哪种技术的效果更好,而且还有助于了解相应差异是否具有显著的统计意义。A/B测试通常是采用一种衡量方式对两种技术进行比较,但也适用于任意有限数量的技术和衡量方式。

回归:可以预测连续值,如房价或用户点击率。
线性回归:权重概念与“斜率”相同,偏差概念与“纵轴截距”相同

y = \sum_{i=1}^N w_i x_i + b

softmax:逻辑回归中sigmoid函数的一种泛化,常用于逻辑回归中的多分类问题用以代替logistic函数。
P(y_i=k|\textbf{X}) = \frac{e^{\beta_k x_i}}{\sum_{j=1}^K e^{\beta_j x_i}}

分类:预测离散值,如某个电子邮件是垃圾邮件还是非垃圾邮件。
训练:通过有标签样本来学习(确定)所有权重和偏差的理想值。
偏差与方差(bias and variance)
偏差描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据。
方差描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,数据的分布越分散。

损失:就是对于糟糕预测的惩罚。也就是说,损失是一个数值,表示对于单个样本而言模型预测的准确程度。如果模型的预测完全准确,则损失为零,否则损失会较大。训练模型的目标是从所有样本中找到一组平均损失“较小”的权重和偏差。
经验风险最小化:检查多个样本并尝试找出可最大限度减少损失的模型这一过程就叫经验风险最小化。
minimize(Loss(Data|Model))

发表评论

*为必填字段!