七、t-SNE

  1. TSNE类是scikit-learn提供的t-SNE模型,其原型为:

    1. class sklearn.manifold.TSNE(n_components=2, perplexity=30.0,
    2. early_exaggeration=12.0, learning_rate=200.0, n_iter=1000,
    3. n_iter_without_progress=300, min_grad_norm=1e-07, metric='euclidean', init='random',
    4. verbose=0, random_state=None, method=’barnes_hut’, angle=0.5)
    • n_components:一个整数,指定低维空间的维度。

    • perplexity:一个浮点数,指定了困惑度。该参数影响的是:对每个点,考虑其周围多少个邻居点。

      • 其取值范围通常在5~50 之间。
      • 对于较大的数据集,该参数通常较大。
      • t-SNE 对于该参数不是特别敏感,因此该参数不是特别重要。
    • early_exaggeration:一个浮点数,指定了早期对 七、t-SNE - 图1 放大的倍数。

      • 如果该数值较大,则相当于将高维空间中的点执行压缩。
      • t-SNE 对于该参数不是特别敏感,因此该参数不是特别重要。
    • learning_rate :一个浮点数,指定学习率。通常范围是在[10.0,1000.0]

      • 如果学习率过高,则降维之后的数据就像一个球体,每个点与它最近邻点的距离都几乎相等。
      • 如果学习率过低,则降维之后的数据看起来像是一个密集的压缩云,以及云外少量的异常点。
      • 如果代价函数陷入了局部极小值,则增加学习率会有帮助。
    • n_iter:一个整数,指定最大的迭代次数。

    • n_iter_without_progress:一个整数,在结束优化之前的、不在进度之内的最大迭代次数。主要用于初始化时的 early_exaggeration

    • min_grad_norm:一个浮点数,指定梯度的阈值。如果梯度小于该阈值,则优化过程停止。

    • metric:一个字符串或者可调用对象,指定距离的度量函数。

      • 如果是字符串,则它必须匹配 scipy.spatial.distance.pdistmetric 参数。
      • 如果是字符串'precomputed',则 X 必须是一个距离矩阵。
      • 如果是可调用对象,则它传入一对样本点返回一个距离值。
    • init:一个字符串或者numpy array,指定初始化策略。

      • 'random':使用随机初始化。
      • 'pca':使用PCA 初始化。它通常会更健壮。
      • 或者是一个形状为(n_samples,n_componets)array:直接初始化。
    • verbose:一个整数,指定日志输出的级别。

    • random_state : 一个整数或者一个RandomState实例,或者None。指定随机数种子。

    • method:一个字符串,指定梯度计算策略。

      • 'barnes_ht':使用Barnes-Hut 近似算法,它计算梯度的近似值,计算复杂度为 七、t-SNE - 图2
      • 'exact':计算梯度的精确值,计算复杂度为 七、t-SNE - 图3
    • angle:一个浮点数,用于method='barnes_ht' ,用于平衡速度和准确率。

      该参数在0.2-0.8 之间变化时,t-SNE 的结果不会发生太大的变化。

      • 如果该参数小于0.2,则计算时间会迅速增长。
      • 如果该参数大于0.8,则计算误差会迅速增长。
  2. 属性:

    • embedding_:一个形状为(n_samples,n_components) 的数组,给出了数据集在低维空间的表示。
    • kl_divergence_:一个浮点数,给出了优化后的KL 散度。
    • n_iter_:一个整数,给出了执行的迭代次数。
  3. 方法:

    • fit(X[, y]):训练模型。
    • fit_transform(X[, y]):训练模型,并返回训练数据集在低维空间中的表示。