首页 > 编程知识 正文

python狄拉克函数,狄拉克函数

时间:2023-12-26 22:40:32 阅读:322885 作者:OKBN

本文目录一览:

人工智能一些术语总结

随着智能时代慢慢的到来,有一些基本概念都不知道真的是要落伍了,作为正在积极学习向上的青年,我想总结一份笔记,此份笔记会记录众多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(词义消歧)

这门学科或将改变物理学研究

计算物理是以计算机为工具,以计算方法和计算软件为手段,以研究和发现物质结构及其运动规律为目的的一门学科 ,与理论物理和实验物理并列,是物理学发展的第三支柱。

计算物理的研究范围包括了物理学下属的所有子学科,从微观世界的基本粒子到广阔无垠的宇宙;从 s的超快事件,到大爆炸以来宇宙的一百多亿年的演变过程;从接近绝对零度的超冷原子,到上亿度的热核聚变和超高温天体。具体而言,包括宇宙学、高能物理、核物理、等离子体物理、凝聚态物理、光学、原子分子物理等二级学科所覆盖的所有内容。它在物理学的发展中发挥着不可或缺的作用。

计算物理是推动物理学及其应用发展的重要推动力。在过去的50 年里,计算机的硬件数量遵循摩尔定律发展,同时计算物理方法的研究也呈加速发展的态势,使得通过数值计算和模拟来 探索 与解决物理问题成为越来越有效的手段,在物理学的研究中发挥了重要作用。特别是近四十年来,计算物理发展十分迅速,解决了许多解析理论研究无法解决的问题,检验有效理论和近似成立的条件,定量比较理论与实验测量结果。同时,它还可以预测新的物理现象、物理效应、物理规律和新材料,实现复杂数据的可视化、实验的实时控制与分析。

计算物理在物理学研究中所发挥的作用,归纳起来主要有以下四点。

经过几百年的发展,物理学建立了非常系统的描述不同尺度下物理现象的理论框架,如描述星际尺度的广义相对论、描述宏观尺度下的麦克斯韦方程及牛顿力学、描述微观量子世界的薛定谔方程和狄拉克方程等,为 探索 和发现新的物理现象与规律奠定了基础。但是,针对非常复杂的物理系统,特别是量子多体相互作用系统,几乎不可能严格求解这些方程或由这些方程导出的新的方程或公式,并且在大多数情况下,甚至近似解析求解都变得非常困难。通过数值计算和模拟为解决这类问题提供了一个可靠的研究手段,甚至在很多情况下是唯一的手段。同时,通过系统的数值计算和模拟,也可以为检验各种近似方法和有效理论的可靠性提供大量有用的数据,改进近似方法,提高理论描述的适用性和准确性。

事实上,现代物理学的研究已经离不开计算机了。例如,在凝聚态物理、核物理和高能物理的多体量子问题研究中,由于系统的众多自由度之间存在强烈的相互作用,以微扰论为代表的理论方法不再适用,其他理论研究方法也有各种各样的局限性,如量子场论很难提供定量的结果。数值计算已经成为研究这方面问题的重要手段。通过数值计算,可以帮助我们建立清晰、直观的物理图像,定量揭示隐藏在各种物理模型背后的物理效应或规律,解决理论研究中遇到的关键问题。

在现代物理学相对成熟的各个分支里,许多理论中预言的物质形态在当前的条件下没有办法进行实验检验。人们可以首先构造模型,然后进行大规模计算,得到模型的性质,再与理论预期进行比较和调整,推动理论、计算和实验实现的共同进步。例如,凝聚态物理学中的拓扑序和任意子激发的材料实现与实验探测,在量子自旋液体和自旋冰中的分数化、物质场与演生规范场的耦合现象,去禁闭量子临界点和其与相互作用拓扑相变的对偶关系等问题对应的量子材料本身还处在寻找的阶段,而且其实验的要求也可能比较苛刻(极低温、高压、强磁场等)。然而,这些基础性问题中却蕴含着量子物质科学新范式的雏形。为了研究它们,计算物理起到配合甚至是引领实验物理的作用。人们可以在计算中进行可观测物理量的“测量”,然后告诉实验物理学家将来在实验实现时可能得到的实验结果,尤其是和已有材料的实验结果区别的地方。

物理学是一门实验科学,物理学规律是在大量实验积累的基础上通过逻辑思维总结发现的。理论物理独立于实验物理,成为物理学的一个分支学科,是物理学发展到相对较成熟阶段的产物。根据已有的物理规律,通过理论分析和推演,发现和预测新的物理现象与规律,是理论物理要解决的问题。在这个过程中,有时需要做一些假设或近似。在很多情况下,可能的选择会比较多,在做假设或近似时通常需要得到实验的帮助,以减少盲目性。此外,理论研究的结果也需要得到实验的检验。同样,实验研究也需要理论的帮助和指导。实验现象需要从理论上得到理解和解释,最后总结成规律,成为新的理论和实验研究的出发点。

毫无疑问,理论物理和实验物理的研究是密切联系在一起的。但要真正将两者密切联系在一起并不是一件容易的事,常常需要做非常复杂的定量计算和分析,离开计算物理是做不到的。计算物理为理论计算与实验测量结果的定量比较创造了条件,成为联通理论物理和实验物理的“桥梁”。一个理论是否正确,可以通过计算机模拟并与实验结果进行定量比较进行验证,而实验中的物理过程也可通过模拟加以理解,并帮助归纳,找出其中的规律。

计算物理方法及其应用具有精确度高、适用性强、可扩展、系统化及可持续性强等重要特点和优势,尤其适合研究极端条件下的物理问题,成为替代实验或减少实验成本的必要手段。其一,对于一些长周期或高成本的实验研究,通过大规模的科学计算对实验结果进行模拟,在初步掌握其规律性的基础上再制定更合理的实验方案,既可以减少直接进行实验研究的盲目性,也可以降低实验成本,缩短实验周期,增加成功率。其二,在一些极端条件下,如在500 GPa 以上的超高压、固体系统中1 mK 之下的极低温、50 T 以上的稳恒强磁场条件下,目前还很难或甚至不可能开展物理实验研究,用计算模拟代替物理实验是理解/发现这些极端条件下物理现象/规律的唯一手段。

计算模拟是再现客观物质世界运动规律的一种手段。由于设备、资源等观察能力的限制,仅用实验手段来研究某个物理现象往往不能获得其完整的信息。计算模拟利用现代计算机的大存储量和快速计算能力,重现系统内部运动的全过程,可以多考虑一些外部因素和内在因素、模拟动态转变、保持非线性特性、保留变系数特点、考虑较复杂的边界条件等,因此能恢复对客观事物更准确、全面的描述和模拟。同时,计算模拟不存在物理实验中的测量误差和系统误差,没有测试探头的干扰问题,可以比较自由地选取参数,构造区分系统不同物理特性的相图,比物理实验有更大的自由度和灵活性,并且没有安全性的限制。

计算物理之所以从理论物理中独立出来,不仅仅是因为计算物理能够算得快、算得准,为解决复杂问题提供了一种新的研究手段,更重要的是,它还提供了一种新的思维方式和语言。纯粹的理论推演在复杂的研究对象和海量数据面前往往束手无策,由于可能的选择太多,因此从理论上全面描述一个复杂系统几乎不可能。因此,对于复杂系统或现象的研究,以及在海量数据中发现新的物理规律和物理效应,计算思维成为一种不可或缺且有效的研究方式,具体表现在以下三个方面:其一,与实验物理一样,计算物理可以提供发现新的物理规律的模拟数据,这些模拟的数据虽然最终也需要得到实验的验证,但计算模拟由于速度快、准确性高,会大大减少时间成本和研究成本,加速发现新的物理现象和规律。其二,计算物理可以帮助我们分析实验结果,特别是高能物理等涉及海量数据的物理实验结果,实现大数据的可视化,并从大数据中找出关键的数据点,发现隐藏在数据中的规律,帮助发现新的物理现象和规律,并在此基础上建立理论框架、预测新的物理现象。其三,一些全新的物理学理论在建立的初期通常没有合适的实验系统可用来对其进行检验,如凝聚态物理学中的去禁闭量子临界现象、高能物理格点色动力学中关于新的粒子存在性的预测等,都可以通过设计合适的理论模型,然后进行大规模数值计算得到关于理论正确与否的认识,推动理论、模型甚至实验的共同发展。

计算模拟在拥有复杂多层次结构的系统的研究中还常常扮演沙盘推演的角色。在这里,系统的单元及其相互作用具有多个维度和特异性,已有的信息不足以给出完整的微观描述,特别是像生命体这类经历了亿万年进化且高度依赖其特定生存环境的体系。目前常用的方法是在现有的数据和知识基础上搭建简化模型,通过计算模拟重现系统的时空特性,再与实际观察相比较,对模型的架构及其参数加以改进,逐步推进对特定现象的认识。近年来,随着计算机运算速度和内存的大幅增加及Python 语言等面向对象的语言的推广,计算模拟可以用来搭建由多个过程组成的复合系统,为开展知识和信息量巨大的纳米功能器件、细胞内生命过程等挑战性课题提供了全新的手段,有望在能源材料、药物设计、人造细胞等领域发挥重要作用。

这些作用说明, 计算物理是一个能够并且已经在改变物理学研究范式的学科,可以大大缩短研究周期,并有可能在90% 甚至更高程度上取代传统的实验物理和理论物理研究。 同时,计算物理还可以降低物理学研究中发现新材料、新器件和新的物理现象的门槛,加快新的物理规律和物理效应发现步伐,推动物理与材料、信息、能源、化学、生命等学科的交叉融合及其应用发展。可以预期,未来计算物理在物理学的核心地位将越来越显著。

今日好书推荐

本书分析了计算物理学的学科发展任务和战略地位、学科的发展规律和态势;提出若干我国计算物理学发展亟待解决的基础科学问题及优先发展方向;针对制约计算物理学发展的关键政策问题,提出相应的资助机制和政策建议。

本书适合高层次的战略和管理专家、相关领域的高等院校师生、研究机构的研究人员阅读,是 科技 工作者洞悉学科发展规律、把握前沿领域和重点方向的重要指南,是 科技 管理部门重要的决策参考,同时也是 社会 公众了解计算物理学研究现状及趋势的权威读本。

Python语言下的机器学习库

Python语言下的机器学习库

Python是最好的编程语言之一,在科学计算中用途广泛:计算机视觉、人工智能、数学、天文等。它同样适用于机器学习也是意料之中的事。当然,它也有些缺点;其中一个是工具和库过于分散。如果你是拥有unix思维(unix-minded)的人,你会觉得每个工具只做一件事并且把它做好是非常方便的。但是你也需要知道不同库和工具的优缺点,这样在构建系统时才能做出合理的决策。工具本身不能改善系统或产品,但是使用正确的工具,我们可以工作得更高效,生产率更高。因此了解正确的工具,对你的工作领域是非常重要的。

这篇文章的目的就是列举并描述Python可用的最有用的机器学习工具和库。这个列表中,我们不要求这些库是用Python写的,只要有Python接口就够了。我们在最后也有一小节关于深度学习(Deep Learning)的内容,因为它最近也吸引了相当多的关注。

我们的目的不是列出Python中所有机器学习库(搜索“机器学习”时Python包索引(PyPI)返回了139个结果),而是列出我们所知的有用并且维护良好的那些。另外,尽管有些模块可以用于多种机器学习任务,我们只列出主要焦点在机器学习的库。比如,虽然Scipy包含一些聚类算法,但是它的主焦点不是机器学习而是全面的科学计算工具集。因此我们排除了Scipy(尽管我们也使用它!)。

另一个需要提到的是,我们同样会根据与其他科学计算库的集成效果来评估这些库,因为机器学习(有监督的或者无监督的)也是数据处理系统的一部分。如果你使用的库与数据处理系统其他的库不相配,你就要花大量时间创建不同库之间的中间层。在工具集中有个很棒的库很重要,但这个库能与其他库良好集成也同样重要。

如果你擅长其他语言,但也想使用Python包,我们也简单地描述如何与Python进行集成来使用这篇文章列出的库。

Scikit-LearnScikit Learn是我们在CB Insights选用的机器学习工具。我们用它进行分类、特征选择、特征提取和聚集。我们最爱的一点是它拥有易用的一致性API,并提供了很多开箱可用的求值、诊断和交叉验证方法(是不是听起来很熟悉?Python也提供了“电池已备(译注:指开箱可用)”的方法)。锦上添花的是它底层使用Scipy数据结构,与Python中其余使用Scipy、Numpy、Pandas和Matplotlib进行科学计算的部分适应地很好。因此,如果你想可视化分类器的性能(比如,使用精确率与反馈率(precision-recall)图表,或者接收者操作特征(Receiver Operating Characteristics,ROC)曲线),Matplotlib可以帮助进行快速可视化。考虑到花在清理和构造数据的时间,使用这个库会非常方便,因为它可以紧密集成到其他科学计算包上。

另外,它还包含有限的自然语言处理特征提取能力,以及词袋(bag of words)、tfidf(Term Frequency Inverse Document Frequency算法)、预处理(停用词/stop-words,自定义预处理,分析器)。此外,如果你想快速对小数据集(toy dataset)进行不同基准测试的话,它自带的数据集模块提供了常见和有用的数据集。你还可以根据这些数据集创建自己的小数据集,这样在将模型应用到真实世界中之前,你可以按照自己的目的来检验模型是否符合期望。对参数最优化和参数调整,它也提供了网格搜索和随机搜索。如果没有强大的社区支持,或者维护得不好,这些特性都不可能实现。我们期盼它的第一个稳定发布版。

StatsmodelsStatsmodels是另一个聚焦在统计模型上的强大的库,主要用于预测性和探索性分析。如果你想拟合线性模型、进行统计分析,或者预测性建模,那么Statsmodels非常适合。它提供的统计测试相当全面,覆盖了大部分情况的验证任务。如果你是R或者S的用户,它也提供了某些统计模型的R语法。它的模型同时也接受Numpy数组和Pandas数据帧,让中间数据结构成为过去!

PyMCPyMC是做贝叶斯曲线的工具。它包含贝叶斯模型、统计分布和模型收敛的诊断工具,也包含一些层次模型。如果想进行贝叶斯分析,你应该看看。

ShogunShogun是个聚焦在支持向量机(Support Vector Machines, SVM)上的机器学习工具箱,用C++编写。它正处于积极开发和维护中,提供了Python接口,也是文档化最好的接口。但是,相对于Scikit-learn,我们发现它的API比较难用。而且,也没提供很多开箱可用的诊断和求值算法。但是,速度是个很大的优势。

GensimGensim被定义为“人们的主题建模工具(topic modeling for humans)”。它的主页上描述,其焦点是狄利克雷划分(Latent Dirichlet Allocation, LDA)及变体。不同于其他包,它支持自然语言处理,能将NLP和其他机器学习算法更容易组合在一起。如果你的领域在NLP,并想进行聚集和基本的分类,你可以看看。目前,它们引入了Google的基于递归神经网络(Recurrent Neural Network)的文本表示法word2vec。这个库只使用Python编写。

OrangeOrange是这篇文章列举的所有库中唯一带有图形用户界面(Graphical User Interface,GUI)的。对分类、聚集和特征选择方法而言,它是相当全面的,还有些交叉验证的方法。在某些方面比Scikit-learn还要好(分类方法、一些预处理能力),但与其他科学计算系统(Numpy, Scipy, Matplotlib, Pandas)的适配上比不上Scikit-learn。但是,包含GUI是个很重要的优势。你可以可视化交叉验证的结果、模型和特征选择方法(某些功能需要安装Graphviz)。对大多数算法,Orange都有自己的数据结构,所以你需要将数据包装成Orange兼容的数据结构,这使得其学习曲线更陡。

PyMVPAPyMVPA是另一个统计学习库,API上与Scikit-learn很像。包含交叉验证和诊断工具,但是没有Scikit-learn全面。

深度学习尽管深度学习是机器学习的一个子节,我们在这里创建单独一节的原因是,它最新吸引了Google和Facebook人才招聘部门的很多注意。

TheanoTheano是最成熟的深度学习库。它提供了不错的数据结构(张量,tensor)来表示神经网络的层,对线性代数来说很高效,与Numpy的数组类似。需要注意的是,它的API可能不是很直观,用户的学习曲线会很高。有很多基于Theano的库都在利用其数据结构。它同时支持开箱可用的GPU编程。

PyLearn2还有另外一个基于Theano的库,PyLearn2,它给Theano引入了模块化和可配置性,你可以通过不同的配置文件来创建神经网络,这样尝试不同的参数会更容易。可以说,如果分离神经网络的参数和属性到配置文件,它的模块化能力更强大。

DecafDecaf是最近由UC Berkeley发布的深度学习库,在Imagenet分类挑战中测试发现,其神经网络实现是很先进的(state of art)。

Nolearn如果你想在深度学习中也能使用优秀的Scikit-learn库API,封装了Decaf的Nolearn会让你能够更轻松地使用它。它是对Decaf的包装,与Scikit-learn兼容(大部分),使得Decaf更不可思议。

OverFeatOverFeat是最近猫vs.狗(kaggle挑战)的胜利者,它使用C++编写,也包含一个Python包装器(还有Matlab和Lua)。通过Torch库使用GPU,所以速度很快。也赢得了ImageNet分类的检测和本地化挑战。如果你的领域是计算机视觉,你可能需要看看。

HebelHebel是另一个带有GPU支持的神经网络库,开箱可用。你可以通过YAML文件(与Pylearn2类似)决定神经网络的属性,提供了将神级网络和代码友好分离的方式,可以快速地运行模型。由于开发不久,就深度和广度上说,文档很匮乏。就神经网络模型来说,也是有局限的,因为只支持一种神经网络模型(正向反馈,feed-forward)。但是,它是用纯Python编写,将会是很友好的库,因为包含很多实用函数,比如调度器和监视器,其他库中我们并没有发现这些功能。

NeurolabNeuroLab是另一个API友好(与Matlabapi类似)的神经网络库。与其他库不同,它包含递归神经网络(Recurrent Neural Network,RNN)实现的不同变体。如果你想使用RNN,这个库是同类API中最好的选择之一。

与其他语言集成你不了解Python但是很擅长其他语言?不要绝望!Python(还有其他)的一个强项就是它是一个完美的胶水语言,你可以使用自己常用的编程语言,通过Python来访问这些库。以下适合各种编程语言的包可以用于将其他语言与Python组合到一起:R - RPythonMatlab - matpythonJava - JythonLua - Lunatic PythonJulia - PyCall.jl

不活跃的库这些库超过一年没有发布任何更新,我们列出是因为你有可能会有用,但是这些库不太可能会进行BUG修复,特别是未来进行增强。MDPMlPyFFnetPyBrain如果我们遗漏了你最爱的Python机器学习包,通过评论让我们知道。我们很乐意将其添加到文章中。

学Python有前途么?

毋庸置疑,Python前景很广阔。首先,对应岗位多。Python被称为编程语言中的万能胶水,这是一门应用面很广的语言,被广泛的用在Web开发、运维自动化、测试自动化、数据挖掘等多个行业和领域。

无论是国内的百度、字节跳动、阿里巴巴、腾讯、华为还是国外的谷歌、NASA、YouTube、Facebook、工业光魔、红帽等都在用Python完成各种各样的任务。其次,市场需求大。从最新Python招聘岗位需求来看,Python工程师的岗位需求量巨大,并且岗位需求量还在呈现上涨的趋势。全国Python岗位需求量接近10W个。最后,薪资水平。目前初级Python工程师薪资待遇就达10-15K,而随着开发年限的增加,Python开发者薪资呈直线上升的变化趋势,工作8年的Python薪资攀升至25K左右。此外,国家也在加大培养Python人才。国务院发布《新一代人工智能发展规划》,人工智能正式纳入国家发展战略,并且已经有数个省份将Python纳入到高考体系,国家计算机二级考试新增 “ Python 语言程序设计”科目。总的来说,Python是很有前途的,符合时代发展的大方向,感兴趣的小伙伴,可以放心大胆的去尝试。关于Python培训的更多相关知识,建议到千锋教育进行更详细的了解,目前,千锋教育已在北京、深圳、上海、广州、郑州、大连等20余个核心城市建立直营校区,等待你的随听。

python sympy怎样把狄克拉函数定义出来

from sympy import DiracDelta

即导入了狄拉克函数,可以送入一个变量求解,如:

DiracDelta(2)

输出0。

10X单细胞(10X空间转录组)降维分析之UMAP

UMAP ,全称uniform manifold approximation and projection,统一流形逼近与投影,是基于黎曼几何和代数拓扑的理论框架结构构建的。在处理大数据集时,UMAP优势明显,运行速度更快,内存占用小。Etienne Becht等人2019年在Nature Biotechnology上发表一篇文章将其应用在生物学数据上并阐述了UMAP在处理单细胞数据方面的应用和优势。

如果你不知道tSNE是什么,它是如何工作的,也没有读过2008年的革命性的van der Maaten Hinton原稿,可以参考我的那文章 10X单细胞(10X空间转录组)降维分析之tSNE(算法基础知识) 。尽管tSNE对一般的单细胞基因组学和数据科学产生了巨大的影响,但人们普遍认为它有一些缺点,这些缺点很快将得到解决。( tSNE的缺点在上次分享的文章中也做过详细的介绍 )。

看看上面的图,我想说的是 t分布应该提供全局距离信息,因为它们将高维空间中相距较远的点推到低维空间中更远的点。

然而,这种良好的意愿被成本函数(KL-divergence)的选择所扼杀,我们将在后面看到其原因。

(1),可以显著降低计算时间高维图像由于求和或集成是一个代价高昂的计算过程。想想马尔可夫链蒙特卡罗(MCMC)它基本上是试图近似地计算在贝叶斯规则的分母上的积分(UMAP使用最近邻居的数量而不是perplexity)

(2)定义perplexity, UMAP则定义了没有log2函数的最近邻居k的个数,即:

UMAP使用稍微不同的高维概率对称

symmterization是必要的因为UMAP融合在一起的点与本地不同的指标(通过参数ρ),它可能发生图A和B节点之间的重量不等于B之间的权重和节点。为什么UMAP使用这种对称而不是tSNE使用的对称还不清楚。我将在下一篇文章(从头开始编写UMAP)中展示我对不同的对称化规则的实验,这并没有使我相信这是如此重要的一步,因为它对最终的低维嵌入式产生了很小的影响。

UMAP使用曲线族1 / (1+a*y^(2b))在低维中建模距离概率,不是完全的学生t分布,但非常非常相似,请注意再次没有应用标准化:

其中,对于默认UMAP超参数a≈1.93,b≈0.79(实际上,对于min_dist = 0.001)。在实践中,UMAP从非线性最小二乘拟合到带有min_dist超参数的分段函数中找到a和b:

为了更好地理解曲线族1 / (1+a*y^(2b))的行为,让我们画出不同a和b的曲线:

我们可以看到曲线族对参数b非常敏感,在大的参数b处,在小的参数y处,曲线族形成了一种高峰。这意味着在UMAP超参数min_dist之下,所有的数据点都是同样紧密相连的。由于Q(Y)函数的行为几乎像一个Heaviside阶跃函数,这意味着UMAP为所有在低维空间中相互靠近的点分配了几乎相同的低维坐标。min_dist正是导致在UMAP维数降低图中经常观察到的超密集集群的原因。

为了演示如何准确地找到a和b参数,让我们展示一个简单的分段函数(其中高峰部分是通过min_dist参数定义的),并使用函数族1 / (1+a y^(2b))通过优化来拟合它。curve_fit来自Scipy Python库。作为拟合的结果,我们得到了函数1 / (1+a y^(2b))的初值a和初值b。

由于我们需要知道交叉熵的梯度,以便以后实现梯度下降,让我们快速计算它。忽略只包含p(X)的常数项,我们可以将交叉熵重新写一下,并将其微分如下:

图拉普拉斯、谱聚类、拉普拉斯Eignemaps、扩散图、谱嵌入等,实际上是指将矩阵分解和邻接图方法结合起来解决降维问题的同一种有趣的方法。在这种方法中,我们首先构造一个图(或knn图),然后通过构造拉普拉斯矩阵用矩阵代数(邻接矩阵和度矩阵)将其形式化,最后分解拉普拉斯矩阵,即求解特征值分解问题。

我们可以使用scikit-learn Python库,并使用spectralembedded函数在演示数据集(即与癌症相关的成纤维细胞(CAFs) scRNAseq数据)上轻松地显示初始的低维坐标:

最后,UMAP使用随机梯度下降(SGD)代替常规梯度下降(GD),如tSNE / FItSNE,这既加快了计算速度,又减少了内存消耗。

现在让我们简要地讨论一下为什么他们说tSNE只保留数据的局部结构。可以从不同的角度来理解tSNE的局部性。首先,我们有σ参数Eq。(1)本地数据点集这样互相“感觉”。因为成对欧几里得距离衰减指数的概率,在小的σ值,它基本上是零遥远的点(大型X)和快速增长仅为最近的邻居(小X)。相比之下,在大的σ,遥远而近点的概率成为限制可比和σ→∞,概率就等于1为所有任何一对点之间的距离,即成为等距点。

有趣的是,如果我们扩大成对欧几里得距离的概率高维度成泰勒级数在σ→∞,我们会在第二近似幂律:

关于两两欧几里得距离的幂律类似于多维定标法(MDS)的成本函数,MDS是通过保存每对点之间的距离来保存全局距离,而不管它们是相距很远还是很近。一个可以解释这个大的σtSNE远程数据点之间的相互作用,所以是不完全正确的说tSNE只能处理当地的距离。然而,我们通常会受到perplexity有限值的限制,Laurens van der Maaten建议perplexity的取值范围在5到50之间,尽管在局部信息和全局信息之间可能会有一个很好的折衷,那就是使用平方根≈N^(1/2)来选择perplexity,其中N为样本量。相反的极限,σ→0,我们最终的极端“局部性”高维概率的行为类似于狄拉克δ函数的行为。

另一种理解tSNE“局部性”的方法是考虑KL-divergence函数。假设X是高维空间中点之间的距离Y是低维空间中点之间的距离

根据kl -散度的定义:

方程(9)的第一项对于X的大小都是趋近于0的,对于X的大小也是趋近于0的,因为指数趋近于1,而log(1)=0。对于大X,这一项仍然趋近于0因为指数前因子趋近于0的速度快于对数趋近于负无穷。因此,为了直观地理解kl散度,只考虑第二项就足够了:

这是一个看起来很奇怪的函数,让我们画出KL(X, Y)

这个函数的形状非常不对称。如果点在高维度X之间的距离很小,指数因子变成1和对数项行为日志(1 + Y ^ 2)这意味着如果Y是在低维空间的距离大,将会有一个大的惩罚,因此tSNE试图减少Y在小X为了减少罚款。相反,对于高维空间中的长距离X, Y基本上可以是0到∞之间的任何值,因为指数项趋于0,并且总是胜过对数项。因此,在高维空间中相距遥远的点,在低维空间中可能会相互靠近。因此,换句话说,tSNE并不能保证高维空间中相距较远的点在低维空间中会保持较远的距离。然而,它确实保证了在高维空间中相邻的点在低维空间中保持相邻。所以tSNE不是很擅长远距离投射至低维,所以它只保留本地数据结构提供了σ不去∞。

与tSNE不同,UMAP使用交叉熵(CE)作为成本函数,而不是KL-divergence

这导致了地方-全球结构保护平衡的巨大变化。在X的小值处,我们得到了与tSNE相同的极限,因为第二项由于前因子和对数函数比多项式函数慢的事实而消失:

因此,为了使惩罚规则最小化,Y坐标必须非常小,即Y→0。这与tSNE的行为完全一样。但是,在大X的相反极限,即X→∞时,第一项消失,第二项的前因子为1,得到:

这里,如果Y很小,我们会得到一个很大的惩罚,因为Y在对数的分母上,因此,我们鼓励Y很大,这样,对数下的比率就变成了1,我们得到零惩罚。因此,我们在X→∞处得到Y→∞,所以从高维空间到低维空间的整体距离保持不变,这正是我们想要的。为了说明这一点,让我们绘制UMAP CE成本函数:

在这里,我们可以看到图的“右”部分看起来与上面的kl散度曲面非常相似。这意味着在X低的时候,为了减少损失,我们仍然想要Y低。然而,当X很大时,Y的距离也要很大,因为如果它很小,CE (X, Y)的损失将是巨大的。记住,之前,对于KL (X, Y)曲面,在X很大的情况下,我们在高Y值和低Y值之间没有差别,这就是为什么CE (X, Y)代价函数能够保持全局距离和局部距离。

我们知道UMAP是速度比tSNE担忧)时大量的数据点,b)嵌入维数大于2或3,c)大量环境维度的数据集。在这里,让我们试着了解UMAP要优于tSNE来自于数学和算法实现。

tSNE和UMAP基本上都包含两个步骤:

然而,我注意到UMAP的第一步比tSNE快得多。这有两个原因:

接下来,UMAP实际上在第二步中也变得更快了。这种改善也有几个原因:

在这篇文章中,我们了解到尽管tSNE多年来一直服务于单细胞研究领域,但它有太多的缺点,如速度快、缺乏全球距离保存。UMAP总体上遵循了tSNE的哲学,但是引入了一些改进,例如另一个成本函数和缺少高维和低维概率的标准化。

除了运行速度快,内存占用小等特点,UMAP在处理细胞学数据时还有一个大的优势,就是可以反映细胞群体之间分化的连续性和组织性。下面将通过文献中的数据【2】来为大家详细讲解。

对同一组数据分别进行tSNE和UMAP降维,该数据为多达30万个从8种不同组织富集得到的T细胞和NK细胞的样本,并使用Phenograph聚类把细胞分为6大类,每种颜色代表一种细胞。从图中可以看出,UMAP和tSNE都可以较好地把不同类别的细胞分开。但tSNE倾向于把相同细胞群划分为更多的群,如图显示,黑色圈中CD8 T细胞,在tSNE结果中,群数更多,距离更远。

同样这组数据用组织来源对UMAP和t-SNE图上细胞的进行颜色区分,可以观察到一个有意思的现象。与UMAP相比,t-SNE更加倾向于根据它们的来源来分离总体细胞。而 UMAP则会兼顾细胞群的类别和来源来排列,如图中在CD4 T细胞和CD8 T细胞群内,细胞的排列与来源也会有一定的规律性,都是大致从脐带血(CB)和外周血单核细胞(PBMC),到肝脏(Liver)和脾脏(Spleen),最后到一端的扁桃或另一端的皮肤(Skin)、肠道(Gut)和肺(Lung)。

通过驻留记忆T细胞标志物CD69/CD103、记忆T细胞标志物CD45 RO和naïve T细胞标志物CCR7表达群的分布,可以观察到UMAP可以展示出T细胞连续的分化阶段。而tSNE结果中,这些群之间也是连续的,但是却没有非常明显的沿轴结构。同样的现象也在造血细胞系统中被观察到。由此可见, UMAP在大数据集的处理时可以展现细胞集群的连续性。

对三组数据(Samusik、Wong、Han_400k)分别进行数据随机降低至100-200,000之间不同的数量级,形成小数据集。纵轴为小数据集与原始数据集的相关性,代表降维方法在不同数据量上的可重复性。UMAP表现最好,数据集越大,优势越明显。

下图是UMAP和t-SNE对一套784维Fashion MNIST高维数据集降维到3维的效果的比较。

虽然这两种算法都表现出强大的局部聚类并将相似的类别分组在一起,但UMAP还将这些相似类别的分组彼此分开。另外,UMAP降维用了4分钟,而多核t-SNE用了27分钟。

UMAP的两个最常用的参数:n_neighbors 和 min_dist,它们可有效地用于控制最终结果中局部结构和全局结构之间的平衡。

最重要的参数是 n_neighbors ,近似最近邻居数。它有效地控制了UMAP局部结构与全局结构的平衡,数据较小时,UMAP会更加关注局部结构,数据较大时,UMAP会趋向于代表大图结构,丢掉一些细节。

第二个参数是 min_dist,点之间的最小距离。此参数控制UMAP聚集在一起的紧密程度,数据较小时,会更紧密。较大的值会更松散,而将重点放在保留广泛的拓扑结构上。

t-SNE和UMAP大部分的表现非常相似,但以下示例明显例外:宽而稀疏的cluster中有密集的cluster(如下图所示)。UMAP无法分离两个嵌套的群集,尤其是在维数较高时。

UMAP在初始图形构造中局部距离的使用可以解释该算法无法处理情况的原因。由于高维点之间的距离趋于非常相似(维数的诅咒),所以可能会因此将其混合在一起。

算法很难,所以懂的人才显得牛

天行健,君子以自强不息

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。