您的位置:

gibbs采样和pca方法,gibbs抽样代码

本文目录一览:

什么是吉布斯采样算法

几个可以学习gibbs sampling的方法

1,读Bishop的Pattern Recognition and Machine Learning,讲的很清楚,但是我记得好像没有例子。

2,读artificial Intelligence,2、3版,都有。但是我没读过。

3,最方便的,查wiki,这个说的最清楚。

这里通俗点的解释一下。首先,什么是sampling。sampling就是以一定的概率分布,看发生什么事件。举一个例子。甲只能E:吃饭、学习、打球,时间T:上午、下午、晚上,天气W:晴朗、刮风、下雨。现在要一个sample,这个sample可以是:打球+下午+晴朗。。。

问题是我们不知道p(E,T,W),或者说,不知道三件事的联合分布。当然,如果知道的话,就没有必要用gibbs sampling了。但是,我们知道三件事的conditional distribution。也就是说,p(E|T,W),p(T|E,W),p(W|E,T)。现在要做的就是通过这三个已知的条件分布,再用gibbs sampling的方法,得到joint distribution。

具体方法。首先随便初始化一个组合,i.e. 学习+晚上+刮风,然后依条件概率改变其中的一个变量。具体说,假设我们知道晚上+刮风,我们给E生成一个变量,比如,学习-》吃饭。我们再依条件概率改下一个变量,根据学习+刮风,把晚上变成上午。类似地,把刮风变成刮风(当然可以变成相同的变量)。这样学习+晚上+刮风-》吃饭+上午+刮风。

同样的方法,得到一个序列,每个单元包含三个变量,也就是一个马尔可夫链。然后跳过初始的一定数量的单元(比如100个),然后隔一定的数量取一个单元(比如隔20个取1个)。这样sample到的单元,是逼近联合分布的。

我也是刚wiki到的,可能不完全正确,欢迎讨论:

zhangshiqihit@yahoo.com.cn

MCMC把妹法

声明:此方法建立在著名的 马尔可夫链蒙特卡洛 采样算法(MCMC)之上,并一改巴普诺夫把妹法和薛定谔把妹法的送餐设定,而是虚构了一个真实的故事场景,令学习者更加感同身受,可以说是一种更加科学的追女生方法。

正所谓得人心者得天下,送餐什么的太乃衣服了,懂得女生心理才是王道,下面我便将此法传授给大家。

话说....故事是这样展开的...网络上有一个很好的姑娘。正因为是很好的姑娘,所以她的追求者多呀,于是该选择谁作为伴侣便成了问题。终于有一天呢,她心生一计:“我应当选择一个最懂我的人,那什么样的人是最懂我的呢?当然是最了解我心情的吧”。于是呢,就在微博上发了一个英雄帖,内容如下:小女之心情,变换莫测,诡谲云涌,喜怒无常,可谓是风云变化几席上,蛟鼋出波澜杆前。然则每日有定值,为实数,知其概率密度,却不知其故也,今寻有识之士,可日得一心情值之概率密度,为期一载,知我心情之期望者,吾嫁之,白首不悔。

显然,这是一个十分棘手的问题,这是要通过我们自身的采样来估计姑娘心情值的概率分布呀...

这可真是太难了,许多的追求者因此望而却步...但是咱作为有(老)识(色)者(批)怎可轻言放弃,于是打算用科学的方法破解之。

你仔细分析了一番,发现这个问题相当于要知道小姐姐心情分布 的均值。但是吧,正所谓女人心海底针,瞎猜肯定是不行的了,于是你马上想到了一种通过随机抽样来近似解决计算问题的方法—— 蒙特卡洛 算法。

既然直接算不出来,那我可以根据 来进行随机采样,得到一个样本集 ,然后计算这个样本集的期望来近似不就可以了吗?

但是很显然,你想多了,基于 采样,你采样个屁呀,你懂少女心吗?还采样...

于是你又灵机一动,基于 马尔科夫链 能收敛到平稳分布这个性质,有了一个绝妙的想法:如果我们能够构造一个转移矩阵为P的马尔可夫链,使得该链的平稳分布恰好是 ,那么我们就可以从任何一个初始状态 出发,沿着转移矩阵转移,得到一个转移序列 ,如果在第 步已经收敛了,不就得到了 的样本 了吗?

正当你要着手设计这个状态转移矩阵的时候,不幸的又被现实给打脸了,你根本就不知道小姐姐每天的心情值的变化,而只知道某天某个心情值的概率密度而已... 这根本就不可能得出状态转移矩阵,况且,要是你连转移矩阵都知道了,那你直接可以就能算出稳定的概率分布了...

于是你又绞尽脑汁的想啊想...

就在你一筹莫展的时候,突然灵光乍现,想起一个以前用常见分布采样来估计不常见分布的方法—— 接受拒绝采样 :比如我们难以对分布 进行采样,就先基于常见的好采样的分布 来进行采样,并选择一个常数 ,使得对于任意的 都有 ,然后就好办了...

如上图所示,我们要直接基于 采样很难,可以先构造这样的一个 , 随机采样到一个样本 , 然后再从均匀分布 上采样,得到一个值 , 如果 则拒绝,否则就接受这个样本 ... 重负这个过程,就可以得到一系列基于 随机抽样的样本,x_0, x_1,x_2,...

你兴致勃勃的采样了一个 去询问小姐姐相应的概率密度,打算大干一场... 却无奈的发现这个满足条件的 和 实在是不好选... 这少女的心思也太难猜了吧,于是你大叹了三声:孤为之奈何?孤为之奈何?孤为之奈何?

也许是上天垂帘你的执著,在你苦思冥想了几日不得其解之后,偶然的发现了一个定理:

定理:细致平稳条件 如果非周期马尔可夫链的转移矩阵 和分布 满足

则 是马尔可夫链的平稳分布,上式被称为细致平稳条件 (detailed balance condition)。

凭借你的数学直觉,发现这个定理是很显然的,这里的要求要比稳态向量的定义 要严格的多, 只是要求转出到其他所有状态的概率密度等于其他所有状态转入的概率密度。而细致平稳条件则要求针对任意两个状态之间的转入和转出概率密度都相等。

当然,数学证明也是很简单的,由细致平稳条件易得:

能够推出 是方程 的解,所以 是平稳分布。

我们用 表示转移矩阵 中的从状态 转到状态 的概率, 表示稳态向量,用 来表示处于状态 的概率,显然对于一个一般的状态转移矩阵 下的稳态向量 ,细致平稳条件是不满足的,即

因此,我们需要对马尔可夫链进行改造,使得细致平稳条件成立。比如我们引入一个 ,使得

那么 应该取啥呢?根据对称性,我们可以简单的取

这样一来上面的等式就成立了。于是我们改造之后的状态转移矩阵 , 而转移矩阵 的稳态向量则是 ,我们将其概率分布表示为 .

在构造 的过程中,我们引入的 称之为接受率,物理意义可以理解为在原来的马尔可夫链上,从状态 , 以 的概率跳转到状态 的时候,以 的概率接受这个跳转,以 的概率拒绝跳转。于是这个接受跳转的部分,以 的概率实现了转移,那么拒绝跳转的部分概率到哪里去了呢?我的理解是拒绝转移的这部分,都留给了 ,也就是转移到了当前的状态,只需要用1减去所有跳转到其他状态的概率即可。

整理一下上面的思路,便得到了原始的MCMC采样算法:

仔细观察上面的算法,容易发现这个算法存在一个问题:就是马尔可夫链在转移过程中的接受率 可能偏小,采样过程中拒绝了大量的转移,导致收敛到稳定状态的速度很慢。于是就有人想,有没有什么办法能够提高接受率呢?

根据细致平稳条件,

于是,

可见分子和分母同比例放大或缩小等式恒成立,所以我们只需要让分子和分母中较大的一个值放大到1,就可以将接受率提高到最大,也就是说让

于是,经过改造的MCMC采样算法就变成了教科书中最常见的 Metropolis-Hastings 算法:

到这里,我们的MCMC把妹法就算是大功告成了,我们可以用它来估计小姐姐心情值的概率分布:

显然,上面的值我们都是容易取到计算的, 也可以每日从小姐姐处获得。然后我们姑且取最后100天的均值方差作为姑娘心情分布的均值和方差大抵也所差无几了,如果假设前200多天已经收敛,那根据概率不等式,精度大概在0.1左右,已经是很好的估计了~

当你成功的运用MCMC把妹法估算出姑娘心情值分布之后,你将结果告诉了她,她计算并对比了一下自己记在自己小本子上的每日心情均值,和你给的差值尽然连1都不到,顿时感动的痛哭流涕,相见恨晚,扑向了你的怀抱,你从此过上了从此君王不早朝的幸福生活。

备注:实际上,上述的M-H采样有个很大的缺点,因为接受率的存在,在高维的情形下不容易收敛,而且一些高维数据的特征的联合分布很不好求,因此一种更好的MCMC采样方法是Gibbs采样,鉴于跟今天所讲的MCMC把妹法关系不大,改日单独再讲,到时把连接放这里... Gibbs采样

Gibbs分布

Gibbs分布是概率图模型的基础,在百度了一圈之后,发现大多数文章讲的都是物理方面的定义和应用,后来在百度百科上找到这样一句话:

假设有这样一个场景:抛两枚硬币A,B,二者不独立。硬币A动过手脚,正面向上(记为1)的概率是0.6,反面向上(记为0)的概率是0.4;硬币B,正面向上(记为1)的概率是0.5,反面向上(记为0)的概率是0.5(万能的抛硬币例子)。现今A、B两枚硬币的联合分布为:

AB两个随机变量,假设随机生成的序列为 ,然后从如下序列中进行随机采样(每次取连续两个),当数据量足够多时,可以观察到如下现象:

这样的采样方法虽然直观,但是当随机变量较多时不方便使用

假设 的条件分布为:

假设 的条件分布为:

然后执行如下采样流程:

当 足够大时,可以发现A,B的联合概率分布。

在下图中,紫色代表初始分布,黑色的四个圈代表联合分布。经过一段时间的迭代之后,可以看到紫色分布逐渐逼近黑色圆圈所代表的分布。

同样的,要求多参数的联合分布,只要执行如下流程即可。

如果两个随机变量相关程度很大,那么Gibbs采样的收敛速度将会非常慢,一般采取的方法是使用block方法,假设 具有很高的相关程度,那么可以采用如下方式寻找其联合分布:

人工智能一些术语总结

随着智能时代慢慢的到来,有一些基本概念都不知道真的是要落伍了,作为正在积极学习向上的青年,我想总结一份笔记,此份笔记会记录众多AI领域的术语和概念,当然,学一部分记录一部分,并且可能会夹杂着自己的一些理解,由于能力有限,有问题希望大家多多赐教。当然,由于内容太多,仅仅只是记录了中英名对照,有的加上了简单的解释,没加的后续大家有需求,我会慢慢完善~~。目录暂定以首字母的字典序排序。可以当作目录方便以后查阅~~建议收藏加点赞哈哈哈

------------------------------------------------这里是分割线--------------------------------------------------

A

准确率(accuracy)

分类模型预测准确的比例。

二分类问题中,准确率定义为:accuracy = (true positives +true negatives)/all samples

多分类问题中,准确率定义为:accuracy = correctpredictions/all samples

激活函数(activation function)

一种函数,将前一层所有神经元激活值的加权和 输入到一个非线性函数中,然后作为下一层神经元的输入,例如 ReLU 或 Sigmoid

AdaGrad

一种复杂的梯度下降算法,重新调节每个参数的梯度,高效地给每个参数一个单独的学习率。

AUC(曲线下面积)

一种考虑到所有可能的分类阈值的评估标准。ROC 曲线下面积代表分类器随机预测真正类(Ture Positives)要比假正类(False Positives)概率大的确信度。

Adversarial example(对抗样本)

Adversarial Networks(对抗网络)

Artificial General Intelligence/AGI(通用人工智能)

Attention mechanism(注意力机制)

Autoencoder(自编码器)

Automatic summarization(自动摘要)

Average gradient(平均梯度)

Average-Pooling(平均池化)

B

反向传播(Backpropagation/BP)

神经网络中完成梯度下降的重要算法。首先,在前向传播的过程中计算每个节点的输出值。然后,在反向传播的过程中计算与每个参数对应的误差的偏导数。

基线(Baseline)

被用为对比模型表现参考的简单模型。

批量(Batch)

模型训练中一个迭代(指一次梯度更新)使用的样本集。

批量大小(Batch size)

一个批量中样本的数量。例如,SGD 的批量大小为 1,而 mini-batch 的批量大小通常在 10-1000 之间。

偏置(Bias)

与原点的截距或偏移量。

二元分类器(Binary classification)

一类分类任务,输出两个互斥类别中的一个。比如垃圾邮件检测。

词袋(Bag of words/Bow)

基学习器(Base learner)

基学习算法(Base learning algorithm)

贝叶斯网络(Bayesian network)

基准(Bechmark)

信念网络(Belief network)

二项分布(Binomial distribution)

玻尔兹曼机(Boltzmann machine)

自助采样法/可重复采样/有放回采样(Bootstrap sampling)

广播(Broadcasting)

C

类别(Class)

所有同类属性的目标值作为一个标签。

分类模型(classification)

机器学习模型的一种,将数据分离为两个或多个离散类别。

收敛(convergence)

训练过程达到的某种状态,其中训练损失和验证损失在经过了确定的迭代次数后,在每一次迭代中,改变很小或完全不变。

凸函数(concex function)

一种形状大致呈字母 U 形或碗形的函数。然而,在退化情形中,凸函数的形状就像一条线。

成本(cost)

loss 的同义词。深度学习模型一般都会定义自己的loss函数。

交叉熵(cross-entropy)

多类别分类问题中对 Log 损失函数的推广。交叉熵量化两个概率分布之间的区别。

条件熵(Conditional entropy)

条件随机场(Conditional random field/CRF)

置信度(Confidence)

共轭方向(Conjugate directions)

共轭分布(Conjugate distribution)

共轭梯度(Conjugate gradient)

卷积神经网络(Convolutional neural network/CNN)

余弦相似度(Cosine similarity)

成本函数(Cost Function)

曲线拟合(Curve-fitting)

D

数据集(data set)

样本的集合

深度模型(deep model)

一种包含多个隐藏层的神经网络。深度模型依赖于其可训练的非线性性质。和宽度模型对照(widemodel)。

dropout 正则化(dropoutregularization)

训练神经网络时一种有用的正则化方法。dropout 正则化的过程是在单次梯度计算中删去一层网络中随机选取的固定数量的单元。删去的单元越多,正则化越强。

数据挖掘(Data mining)

决策树/判定树(Decisiontree)

深度神经网络(Deep neural network/DNN)

狄利克雷分布(Dirichlet distribution)

判别模型(Discriminative model)

下采样(Down sampling)

动态规划(Dynamic programming)

E

早期停止法(early stopping)

一种正则化方法,在训练损失完成下降之前停止模型训练过程。当验证数据集(validationdata set)的损失开始上升的时候,即泛化表现变差的时候,就该使用早期停止法了。

嵌入(embeddings)

一类表示为连续值特征的明确的特征。嵌入通常指将高维向量转换到低维空间中。

经验风险最小化(empirical risk minimization,ERM)

选择能使得训练数据的损失函数最小化的模型的过程。和结构风险最小化(structualrisk minimization)对照。

集成(ensemble)

多个模型预测的综合考虑。可以通过以下一种或几种方法创建一个集成方法:

设置不同的初始化;

设置不同的超参量;

设置不同的总体结构。

深度和广度模型是一种集成。

样本(example)

一个数据集的一行内容。一个样本包含了一个或多个特征,也可能是一个标签。参见标注样本(labeledexample)和无标注样本(unlabeled example)。

F

假负类(false negative,FN)

被模型错误的预测为负类的样本。例如,模型推断一封邮件为非垃圾邮件(负类),但实际上这封邮件是垃圾邮件。

假正类(false positive,FP)

被模型错误的预测为正类的样本。例如,模型推断一封邮件为垃圾邮件(正类),但实际上这封邮件是非垃圾邮件。

假正类率(false positive rate,FP rate)

ROC 曲线(ROC curve)中的 x 轴。FP 率的定义是:假正率=假正类数/(假正类数+真负类数)

特征工程(feature engineering)

在训练模型的时候,挖掘对模型效果有利的特征。

前馈神经网络(Feedforward Neural Networks/FNN )

G

泛化(generalization)

指模型利用新的没见过的数据而不是用于训练的数据作出正确的预测的能力。

广义线性模型(generalized linear model)

最小二乘回归模型的推广/泛化,基于高斯噪声,相对于其它类型的模型(基于其它类型的噪声,比如泊松噪声,或类别噪声)。广义线性模型的例子包括:

logistic 回归

多分类回归

最小二乘回归

梯度(gradient)

所有变量的偏导数的向量。在机器学习中,梯度是模型函数的偏导数向量。梯度指向最陡峭的上升路线。

梯度截断(gradient clipping)

在应用梯度之前先修饰数值,梯度截断有助于确保数值稳定性,防止梯度爆炸出现。

梯度下降(gradient descent)

通过计算模型的相关参量和损失函数的梯度最小化损失函数,值取决于训练数据。梯度下降迭代地调整参量,逐渐靠近权重和偏置的最佳组合,从而最小化损失函数。

图(graph)

在 TensorFlow 中的一种计算过程展示。图中的节点表示操作。节点的连线是有指向性的,表示传递一个操作(一个张量)的结果(作为一个操作数)给另一个操作。使用 TensorBoard 能可视化计算图。

高斯核函数(Gaussian kernel function)

高斯混合模型(Gaussian Mixture Model)

高斯过程(Gaussian Process)

泛化误差(Generalization error)

生成模型(Generative Model)

遗传算法(Genetic Algorithm/GA)

吉布斯采样(Gibbs sampling)

基尼指数(Gini index)

梯度下降(Gradient Descent)

H

启发式(heuristic)

一个问题的实际的和非最优的解,但能从学习经验中获得足够多的进步。

隐藏层(hidden layer)

神经网络中位于输入层(即特征)和输出层(即预测)之间的合成层。一个神经网络包含一个或多个隐藏层。

超参数(hyperparameter)

连续训练模型的过程中可以拧动的「旋钮」。例如,相对于模型自动更新的参数,学习率(learningrate)是一个超参数。和参量对照。

硬间隔(Hard margin)

隐马尔可夫模型(Hidden Markov Model/HMM)

层次聚类(Hierarchical clustering)

假设检验(Hypothesis test)

I

独立同分布(independently and identicallydistributed,i.i.d)

从不会改变的分布中获取的数据,且获取的每个值不依赖于之前获取的值。i.i.d. 是机器学习的理想情况——一种有用但在现实世界中几乎找不到的数学构建。

推断(inference)

在机器学习中,通常指将训练模型应用到无标注样本来进行预测的过程。在统计学中,推断指在观察到的数据的基础上拟合分布参数的过程。

输入层(input layer)

神经网络的第一层(接收输入数据)。

评分者间一致性(inter-rater agreement)

用来衡量一项任务中人类评分者意见一致的指标。如果意见不一致,则任务说明可能需要改进。有时也叫标注者间信度(inter-annotator agreement)或评分者间信度(inter-raterreliability)。

增量学习(Incremental learning)

独立成分分析(Independent Component Analysis/ICA)

独立子空间分析(Independent subspace analysis)

信息熵(Information entropy)

信息增益(Information gain)

J

JS 散度(Jensen-ShannonDivergence/JSD)

K

Kernel 支持向量机(KernelSupport Vector Machines/KSVM)

一种分类算法,旨在通过将输入数据向量映射到更高维度的空间使正类和负类之间的边际最大化。例如,考虑一个输入数据集包含一百个特征的分类问题。为了使正类和负类之间的间隔最大化,KSVM 从内部将特征映射到百万维度的空间。KSVM 使用的损失函数叫作 hinge 损失。

核方法(Kernel method)

核技巧(Kernel trick)

k 折交叉验证/k 倍交叉验证(K-fold cross validation)

K - 均值聚类(K-MeansClustering)

K近邻算法(K-Nearest NeighboursAlgorithm/KNN)

知识图谱(Knowledge graph)

知识库(Knowledge base)

知识表征(Knowledge Representation)

L

L1 损失函数(L1 loss)

损失函数基于模型对标签的预测值和真实值的差的绝对值而定义。L1 损失函数比起 L2 损失函数对异常值的敏感度更小。

L1 正则化(L1regularization)

一种正则化,按照权重绝对值总和的比例进行惩罚。在依赖稀疏特征的模型中,L1 正则化帮助促使(几乎)不相关的特征的权重趋近于 0,从而从模型中移除这些特征。

L2 损失(L2 loss)

参见平方损失。

L2 正则化(L2regularization)

一种正则化,按照权重平方的总和的比例进行惩罚。L2 正则化帮助促使异常值权重更接近 0 而不趋近于 0。(可与 L1 正则化对照阅读。)L2 正则化通常改善线性模型的泛化效果。

标签(label)

在监督式学习中,样本的「答案」或「结果」。标注数据集中的每个样本包含一或多个特征和一个标签。在垃圾邮件检测数据集中,特征可能包括主题、发出者何邮件本身,而标签可能是「垃圾邮件」或「非垃圾邮件」。

标注样本(labeled example)

包含特征和标签的样本。在监督式训练中,模型从标注样本中进行学习。

学习率(learning rate)

通过梯度下降训练模型时使用的一个标量。每次迭代中,梯度下降算法使学习率乘以梯度,乘积叫作 gradient step。学习率是一个重要的超参数。

最小二乘回归(least squares regression)

通过 L2 损失最小化进行训练的线性回归模型。

线性回归(linear regression)

对输入特征的线性连接输出连续值的一种回归模型。

logistic 回归(logisticregression)

将 sigmoid 函数应用于线性预测,在分类问题中为每个可能的离散标签值生成概率的模型。尽管 logistic 回归常用于二元分类问题,但它也用于多类别分类问题(这种情况下,logistic回归叫作「多类别 logistic 回归」或「多项式 回归」。

对数损失函数(Log Loss)

二元 logistic 回归模型中使用的损失函数。

损失(Loss)

度量模型预测与标签距离的指标,它是度量一个模型有多糟糕的指标。为了确定损失值,模型必须定义损失函数。例如,线性回归模型通常使用均方差作为损失函数,而 logistic 回归模型使用对数损失函数。

隐狄利克雷分布(Latent Dirichlet Allocation/LDA)

潜在语义分析(Latent semantic analysis)

线性判别(Linear Discriminant Analysis/LDA)

长短期记忆(Long-Short Term Memory/LSTM)

M

机器学习(machine learning)

利用输入数据构建(训练)预测模型的项目或系统。该系统使用学习的模型对与训练数据相同分布的新数据进行有用的预测。机器学习还指与这些项目或系统相关的研究领域。

均方误差(Mean Squared Error/MSE)

每个样本的平均平方损失。MSE 可以通过平方损失除以样本数量来计算。

小批量(mini-batch)

在训练或推断的一个迭代中运行的整批样本的一个小的随机选择的子集。小批量的大小通常在10 到 1000 之间。在小批量数据上计算损失比在全部训练数据上计算损失要高效的多。

机器翻译(Machine translation/MT)

马尔可夫链蒙特卡罗方法(Markov Chain Monte Carlo/MCMC)

马尔可夫随机场(Markov Random Field)

多文档摘要(Multi-document summarization)

多层感知器(Multilayer Perceptron/MLP)

多层前馈神经网络(Multi-layer feedforward neuralnetworks)

N

NaN trap

训练过程中,如果模型中的一个数字变成了 NaN,则模型中的很多或所有其他数字最终都变成 NaN。NaN 是「Not aNumber」的缩写。

神经网络(neural network)

该模型从大脑中获取灵感,由多个层组成(其中至少有一个是隐藏层),每个层包含简单的连接单元或神经元,其后是非线性。

神经元(neuron)

神经网络中的节点,通常输入多个值,生成一个输出值。神经元通过将激活函数(非线性转换)应用到输入值的加权和来计算输出值。

归一化(normalization)

将值的实际区间转化为标准区间的过程,标准区间通常是-1 到+1 或 0 到 1。例如,假设某个特征的自然区间是 800 到 6000。通过减法和分割,你可以把那些值标准化到区间-1 到+1。参见缩放。

Numpy

Python 中提供高效数组运算的开源数学库。pandas 基于 numpy 构建。

Naive bayes(朴素贝叶斯)

Naive Bayes Classifier(朴素贝叶斯分类器)

Named entity recognition(命名实体识别)

Natural language generation/NLG(自然语言生成)

Natural language processing(自然语言处理)

Norm(范数)

O

目标(objective)

算法尝试优化的目标函数。

one-hot 编码(独热编码)(one-hotencoding)

一个稀疏向量,其中:一个元素设置为 1,所有其他的元素设置为 0。。

一对多(one-vs.-all)

给出一个有 N 个可能解决方案的分类问题,一对多解决方案包括 N 个独立的二元分类器——每个可能的结果都有一个二元分类器。例如,一个模型将样本分为动物、蔬菜或矿物,则一对多的解决方案将提供以下三种独立的二元分类器:

动物和非动物

蔬菜和非蔬菜

矿物和非矿物

过拟合(overfitting)

创建的模型与训练数据非常匹配,以至于模型无法对新数据进行正确的预测

Oversampling(过采样)

P

pandas

一种基于列的数据分析 API。很多机器学习框架,包括 TensorFlow,支持 pandas 数据结构作为输入。参见 pandas 文档。

参数(parameter)

机器学习系统自行训练的模型的变量。例如,权重是参数,它的值是机器学习系统通过连续的训练迭代逐渐学习到的。注意与超参数的区别。

性能(performance)

在软件工程中的传统含义:软件运行速度有多快/高效?

在机器学习中的含义:模型的准确率如何?即,模型的预测结果有多好?

困惑度(perplexity)

对模型完成任务的程度的一种度量指标。例如,假设你的任务是阅读用户在智能手机上输入的单词的头几个字母,并提供可能的完整单词列表。该任务的困惑度(perplexity,P)是为了列出包含用户实际想输入单词的列表你需要进行的猜测数量。

流程(pipeline)

机器学习算法的基础架构。管道包括收集数据、将数据放入训练数据文件中、训练一或多个模型,以及最终输出模型。

Principal component analysis/PCA(主成分分析)

Precision(查准率/准确率)

Prior knowledge(先验知识)

Q

Quasi Newton method(拟牛顿法)

R

召回率(recall)

回归模型(regression model)

一种输出持续值(通常是浮点数)的模型。而分类模型输出的是离散值。

正则化(regularization)

对模型复杂度的惩罚。正则化帮助防止过拟合。正则化包括不同种类:

L1 正则化

L2 正则化

dropout 正则化

early stopping(这不是正式的正则化方法,但可以高效限制过拟合)

正则化率(regularization rate)

一种标量级,用 lambda 来表示,指正则函数的相对重要性。从下面这个简化的损失公式可以看出正则化率的作用:

minimize(loss function + λ(regularization function))

提高正则化率能够降低过拟合,但可能会使模型准确率降低。

表征(represention)

将数据映射到有用特征的过程。

受试者工作特征曲线(receiver operatingcharacteristic/ROC Curve)

反映在不同的分类阈值上,真正类率和假正类率的比值的曲线。参见 AUC。

Recurrent Neural Network(循环神经网络)

Recursive neural network(递归神经网络)

Reinforcement learning/RL(强化学习)

Re-sampling(重采样法)

Representation learning(表征学习)

Random Forest Algorithm(随机森林算法)

S

缩放(scaling)

特征工程中常用的操作,用于控制特征值区间,使之与数据集中其他特征的区间匹配。例如,假设你想使数据集中所有的浮点特征的区间为 0 到 1。给定一个特征区间是 0 到 500,那么你可以通过将每个值除以 500,缩放特征值区间。还可参见正则化。

scikit-learn

一种流行的开源机器学习平台。网址:。

序列模型(sequence model)

输入具有序列依赖性的模型。例如,根据之前观看过的视频序列对下一个视频进行预测。

Sigmoid 函数(sigmoid function)

softmax

为多类别分类模型中每个可能的类提供概率的函数。概率加起来的总和是 1.0。例如,softmax 可能检测到某个图像是一只狗的概率为 0.9,是一只猫的概率为 0.08,是一匹马的概率为 0.02。(也叫作 full softmax)。

结构风险最小化(structural risk minimization/SRM)

这种算法平衡两个目标:

构建预测性最强的模型(如最低损失)。

使模型尽量保持简单(如强正则化)。

比如,在训练集上的损失最小化 + 正则化的模型函数就是结构风险最小化算法。更多信息,参见 。可与经验风险最小化对照阅读。

监督式机器学习(supervised machine learning)

利用输入数据及其对应标签来训练模型。监督式机器学习类似学生通过研究问题和对应答案进行学习。在掌握问题和答案之间的映射之后,学生就可以提供同样主题的新问题的答案了。可与非监督机器学习对照阅读。

Similarity measure(相似度度量)

Singular Value Decomposition(奇异值分解)

Soft margin(软间隔)

Soft margin maximization(软间隔最大化)

Support Vector Machine/SVM(支持向量机)

T

张量(tensor)

TensorFlow 项目的主要数据结构。张量是 N 维数据结构(N 的值很大),经常是标量、向量或矩阵。张量可以包括整数、浮点或字符串值。

Transfer learning(迁移学习)

U

无标签样本(unlabeled example)

包含特征但没有标签的样本。无标签样本是推断的输入。在半监督学习和无监督学习的训练过程中,通常使用无标签样本。

无监督机器学习(unsupervised machine learning)

训练一个模型寻找数据集(通常是无标签数据集)中的模式。无监督机器学习最常用于将数据分成几组类似的样本。无监督机器学习的另一个例子是主成分分析(principal componentanalysis,PCA)

W

Word embedding(词嵌入)

Word sense disambiguation(词义消歧)

无监督第一节:PCA 详细介绍及 kernal PCA ,probabilistic PCA

主成分分析(Principal Component Analysis,PCA)是非常经典的降维算法,属于无监督降维,做机器学习的应该都有所了解。但是,除了基本的PCA推导和应用之外,还有SparsePCA、KernelPCA、TruncatedSVD等等,另外PCA和特征值、奇异值的关系以及SparsePCA和字典学习(Dict Learning,Lasso)的关系等等,也是比较有趣的事情。

PCA是一种线性的降维方法,并且是利用 正交变换 作为映射矩阵,主要步骤是:对于一个高维空间的数据样本 ,利用正交矩阵 将样本映射到低维空间 ,其中dn 起到了降维的作用。

那么PCA该如何选择矩阵 A_{nd}呢?

1.为什么要最大方差?

考虑下面数据样本为二维的情形,即n = 2,在Figure 1中,数据样本呈现椭圆分布,我们现在要把二维降为一维d = 1,相当于是选择一个单位向量 ,将 所有的数据点投影到这个向量上来,如图中所示,画出的四个红色带箭头的线条代表的是候选向量,那么要选哪一个作为最优的呢?

PCA的假设偏好是:数据在低维空间越分散越好。假设我们选择了上图中朝向为左上方的向量,那么将数据点全部投影到这个方向上面,那么就会导致数据点都“拥挤”在了一起,对后续分类或其它任务造成了很不友好的影响。所以,PCA选的是图中朝向右上方比较粗的那个作为最合适的 [图片上传失败...(image-8aef14-1586173690384)] ,这样得到的映射后的数据点很分散,对后续任务有利。

我们想要最大化方差,通过一个单位向量w使得投影到这个向量的值方差最大,达到分散的效果。(选择单位向量的原因是我们只关心其方向,并不关心其大小。

其中 。

其中投影数据的方差:

其中S是数据的协方差矩阵,定义为

想要投影数据的方差最大,必须对 增加限制,这里的限制就是 为单位向量。

通过引入拉格朗日方法:

上式对 求导后得到:

这表明 是S的一个特征向量,如果上式左乘 得到

上式中可以看出,方差的值为特征值,当 为特征值 对应的特征向量。想要最大时,需要 最大。

PCA的应用:

1.数据压缩

2.数据预处理

3.数据可视化

可以先通过采样方式,计算采样矩阵的的特征值和特征向量。用采样矩阵的特征值和特征向量还原原矩阵。

引入潜在变量z,对应主成分的子空间,其服从高斯分布。z的先验分布时服从标准正态分布。

同样以潜在变量z为条件,观测变量x的条件概率服从正态分布

我们可以从生成式的观点来看概率PCA模型,具体来说就是D维观测变量x 由M维潜在变量z的一个线性变换,附加一个高斯噪声来获得。即

其中 是一个D维0均值高斯分布的噪声变量,协方差为 。

其中

对似然函数求导,得到

带到上式中得到:

其中S为协方差矩阵。

之后通过EM算法来求解W矩阵。

由于PCA时线性变换,往往具有较大的局限性。在SVM中 使用核方法来替换标量积,将这种方法应用到PCA中,得到一个非线形的推广。

考虑之前的推导结果:

其中x进行0均值标准化,那么

考虑到一个M维特征空间的一个非线性变换 , 将每个数据点 投影到 上,我们可以得到特征空间的协方差矩阵为:

特征向量展开为:

这样我们可以得到C的特征向量是由 ,... 组成的。

用核函数 来表示,带入上式,左右两端同时乘以 可以得到

用矩阵形式来表示为:

同时去掉一个K

求解下面的特征值方程:

下一步我们只要求出K即可。

经过推导可以得到

可以根据K求出特征向量 .

下一节中将讲解求解PCA的另一个视角SVD。

reference:

3.

4.

采样方法

拒绝采样,又叫接受/拒绝采样(Accept-Reject Sampling)。对于目标分布p(x),选取一个容易采样的参考分布q(x),使得对于任意x都有,则可以按如下过程进行采样:

逆变换采样

均匀法

在平时生成随机数的时候,实际上用的就是均匀采样,主要是掌握线性同余法。

拒绝采样,重要性采样

在高维空间中,拒绝采样和重要性重采样经常难以寻找合适的参考分布,采样效率低下(样本的接受概率小或重要性权重低),此时可以考虑马尔可夫蒙特卡洛(Markov Chain Monte Carlo,MCMC)采样

从名字看,MCMC采样法主要包括两个MC,即蒙特卡洛法(Monte Carlo)和马尔可夫链(Markov Chain)。蒙特卡洛法是指基于采样的数值型近似求解方法,而马尔可夫链则用于进行采样。MCMC采样法基本思想是:针对待采样的目标分布,构造一个马尔可夫链,使得该马尔可夫链的平稳分布就是目标分布;然后,从任何一个初始状态出发,沿着马尔可夫链进行状态转移,最终得到的状态转移序列会收敛到目标分布,由此可以得到目标分布的一系列样本。在实际操作中,核心点是如何构造合适的马尔可夫链,即确定马尔可夫链的状态转移概率,这涉及一些马尔可夫链的相关知识点,如时齐性、细致平衡条件、可遍历性、平稳分布等

Gibbs Sampling解决了什么问题

对于高维的情形,由于接受率a的存在(通常a 1), 以上 Metropolis-Hastings 算法的效率不够高。能否找到一个转移矩阵Q使得接受率a=1呢?

不需要接受率了,根据细致平稳分布。

对数据进行重采样,使原本不均衡的样本变得均衡