一.概念

t-SNE(t分布随机邻域嵌入)是一种用于探索高维数据的非线性降维算法。它将多维数据映射到适合于人类观察的两个或多个维度。
t-SNE主要包括两个步骤:第一、t-SNE构建一个高维对象之间的概率分布,使得相似的对象有更高的概率被选择,而不相似的对象有较低的概率被选择。第二,t-SNE在低维空间里在构建这些点的概率分布,使得这两个概率分布之间尽可能的相似(这里使用KL散度(Kullback–Leibler divergence)来度量两个分布之间的相似性)。

二.算法

step1:随机邻接嵌入(SNE)通过将数据点之间的高维欧几里得距离转换为表示相似性的条件概率而开始,数据点xi、xj之间的条件概率pj|i由下式给出:

其中σi是以数据点xi为中心的高斯方差。

step2:对于高维数据点xi和xj的低维对应点yi和yj而言,可以计算类似的条件概率qj|i

SNE试图最小化条件概率的差异。

step3:为了测量条件概率差的和最小值,SNE使用梯度下降法最小化KL距离。而SNE的代价函数关注于映射中数据的局部结构,优化该函数是非常困难的,而t-SNE采用重尾分布,以减轻拥挤问题和SNE的优化问题。

step4:定义困惑度

                       

算法计算对应的是条件概率,并试图最小化较高和较低维度的概率差之和,这涉及大量的计算,对系统资源要求高。t-SNE的复杂度随着数据点数量有着时间和空间二次方。

三.sklearn提供的API

与前几个流型降维算法一样,sklearn的manifold提供了t_sne方法TSNE

def __init__(self, n_components=2, perplexity=30.0,early_exaggeration=12.0, learning_rate=200.0, n_iter=1000,n_iter_without_progress=300, min_grad_norm=1e-7,metric="euclidean", init="random", verbose=0,random_state=None, method='barnes_hut', angle=0.5):self.n_components = n_componentsself.perplexity = perplexityself.early_exaggeration = early_exaggerationself.learning_rate = learning_rateself.n_iter = n_iterself.n_iter_without_progress = n_iter_without_progressself.min_grad_norm = min_grad_normself.metric = metricself.init = initself.verbose = verboseself.random_state = random_stateself.method = methodself.angle = angle

n_components  维度

perplexity 困惑度,最近邻的数目有关。更大的数据集通常需要更大的困惑。考虑选择一个值5到50岁之间。没什么卵用

early_exaggeration 控制原始空间中的自然簇紧凑程度,同样没什么卵用

learning_rate 学习速度,如果学习速度太高,数据看起来像是一个“球”。与最近邻近似等距。如果学习速度太低,大多数点看起来都是压缩的。范围[ 10,1000 ]

n_iter 迭代次数

n_iter_without_progress 无进展时最大迭代次数

min_grad_norm 梯度范数

metric 距离度量,默认欧式

init 初始化方式,据说选pca会比默认random更稳定,我也是颓了

random_state 随机种子

method  梯度计算算法

angle 角度

实例:还是以瑞士卷为例

import numpy as np
import operator
import matplotlib.pyplot as plt
from sklearn import datasets,decomposition,manifold
from itertools import cycle
from mpl_toolkits.mplot3d import Axes3D
def load_data():swiss_roll =datasets.make_swiss_roll(n_samples=1000)return swiss_roll[0],np.floor(swiss_roll[1])def T_SNE_neighbors(*data):X,Y=dataTSNE_SET=[manifold.TSNE(n_components=2,init='pca'),manifold.TSNE(n_components=2,init='random'),manifold.TSNE(n_components=2,learning_rate=1000),manifold.TSNE(n_components=2,learning_rate=10),]Name_SET=['init = pca learning_rate = 200','init = random learning_rate = 200','init = random learning_rate = 1000','init = random learning_rate = 10',]fig=plt.figure("t_sne",figsize=(8, 8))for i in range(4):tsne=TSNE_SET[i]X_r=tsne.fit_transform(X)ax=fig.add_subplot(2,2,i+1)ax.scatter(X_r[:,0],X_r[:,1],marker='o',c=Y,alpha=0.5) ax.set_title(Name_SET[i])  plt.xticks(fontsize=10, color="darkorange")  plt.yticks(fontsize=10, color="darkorange") plt.suptitle("t_sne")plt.show()X,Y=load_data()
fig = plt.figure('data')
ax = Axes3D(fig)
ax.scatter(X[:, 0], X[:, 1], X[:, 2],marker='o',c=Y)
T_SNE_neighbors(X,Y)

四.总结

t-SNE非线性降维算法通过基于具有多个特征的数据点的相似性识别观察到的簇来在数据中找到模式。其本质上是一种降维和可视化技术。另外t-SNE的输出可以作为其他分类算法的输入特征。
大多数情况下,t-SNE比PCA及其他降维算法效果更好,因为算法定义了数据的局部和全局结构之间的软边界。不过美中不足,其运算时间会远大于其他的降维算法。

五.相关学习资源

http://lvdmaaten.github.io/tsne/

http://jmlr.org/papers/volume9/vandermaaten08a/vandermaaten08a.pdf

https://yq.aliyun.com/articles/70733

人工智障学习笔记——机器学习(15)t-SNE降维相关推荐

  1. 人工智障学习笔记——机器学习(16)降维小结

    机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映射函数 f : x->y,其中x是原始数据点的表达,目前最多使用向量表达形式. ...

  2. 人工智障学习笔记——机器学习(4)支持向量机

    一.概念 支持向量机(Support Vector Machine),简称SVM.是常见的一种判别方法.在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别.分类以及回归分析. SVM的主要思 ...

  3. 人工智障学习笔记——机器学习(9)最大期望算法

    一.概念 最大期望算法,也就是著名的em算法,他起源于一条dog 没错,就是这个 好吧不扯蛋了,em算法(Expectation Maximization Algorithm,又译期望最大化算法),是 ...

  4. 人工智障学习笔记——机器学习(5)朴素贝叶斯

    一.概念 1.1贝叶斯定理:假设H[1],H[2]-,H[n]互斥且构成一个完全事件,已知它们的概率P(H[i]),i=1,2,-,n,现观察到某事件A与H[1],H[2]-,H[n]相伴随机出现,且 ...

  5. 人工智障学习笔记——机器学习(3)决策树

    一.概念 决策树(Decision Tree)是一种十分常用的分类方法.也是监督学习的一种,是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可 ...

  6. 人工智障学习笔记——机器学习(2)线性模型

    一.概念 线性模型:就是线性的模型. 其实我在网上搜了很久,想用一句话能够简单易懂的表达出这个概念,但是确实不知道该怎么组织语言.不过相信有一些数学基础的同学应该是能明白的. 我们可以这样认为,世界上 ...

  7. 人工智障学习笔记——机器学习(1)特征工程

    一.概念 学习过Machine Learning的一定听过这句话:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已. 所谓特征工程,做的就是[ 最大限度地从原始数据中提取特征点以供算法 ...

  8. 人工智障学习笔记——机器学习(12)LDA降维

    一.概念 LDA:Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant).与PCA一样,是一种线性降维算法.不同于PCA只会选择数据 ...

  9. 人工智障学习笔记——机器学习(11)PCA降维

    一.概念 Principal Component Analysis(PCA):主成分分析法,是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,即把原先的n个特征用 ...

最新文章

  1. 以太网未识别的网络win10_工业以太网典型应用、常见故障、冗余网络技术及实例...
  2. 上汽接入Momenta飞轮,成为中国第一个落地RoboTaxi的车企
  3. 华为阅读下载的文件在哪里找_华为手机还要天天清理内存?1键关闭这2个设置,手机用到2035年...
  4. Golang连接使用MySql5.7数据库完整步骤
  5. modbus地址扫描_西门子PLC通信编程MODBUS通信举例
  6. vuex模块化 怎么引用state_vue 组件如何调用 vuex 模块中的getters
  7. 量子保密通信技术基本原理
  8. java随机答题器_Advanced Random Auto Clicker免费版下载-多合一随机自动答题器 v4.21 免费版 - 安下载...
  9. CC2652RB硬件I2C读取FXOS8700CQ加速度传感器
  10. python打印什么意思,python语句:print(*[1,2,3]),是什么意思?
  11. adm怎么下bt连接_【使用教程】序列模式——福禄克BT系列电池测试仪
  12. 蓝牙也宽带 诺基亚3230蓝牙共享宽带教程(内网用户设置或网关无响应的解决)
  13. RK3566和S905X3/S905X4对比哪个好?
  14. 优麒麟20.10 wifi 开关打不开解决方案
  15. 杂类--------文字型码表(备份)
  16. 【若依RuoYi短信验证码登录】汇总
  17. 【代码随想录】数组刷题
  18. SMARTS操作指南(9):变量与表单
  19. QK对中断的特殊处理
  20. 解释一下浏览器解析HTTP的过程

热门文章

  1. 1 MM配置-企业结构-定义-定义评估级别
  2. linux配置erp访问端口_让远程Windows系统访问本地Linux打印机
  3. layui多文件上传讲解_layui d多文件上传(示例代码)
  4. Ubuntu 20.04 安装 .deb 文件报 failed to install file: not supported
  5. pycharm在创建py文件时如何自动注释
  6. OpenGL:freeglut ERROR: Function <glutCreateWindow> called without first calling ‘glutInit‘.
  7. 剖析Caffe源码之Net---Net构造函数
  8. Linux下监视NVIDIA的GPU使用情况
  9. 基于python的聊天软件的设计与实现_Python基于TCP实现会聊天的小机器人功能示例...
  10. Ubuntu如何启动Pycharm