澳门新葡亰信誉平台游戏TensorFlow 学习之三TensorBoard实战

by admin on 2020年4月22日

近段时间以来,机器学习领域内的进展已经催生出了很多激动人心的结果,其应用已经延展到了图像识别、语言翻译、医学诊断等许多领域。对研究科学家来说,随着机器学习系统的广泛应用,理解模型解读数据的方式正变得越来越重要。但是,探索数据的一大主要难题是数据往往具有数百个乃至数千个维度,这需要我们使用特别的工具才能研究调查清楚数据空间。

TensorBoard简介

TensorFlow
的计算过程其实是一个黑盒过程,为了便于使用者对TensorFlow程序的理解,调试和优化
,TensorFlow 提供TensorBoard
这套组件来支持对代码的可视化理解。TensorBoard
是一组Web应用组件;其主要的作用是用可视化的方式展示TensorFlow的计算过程和计算图的形态;

澳门新葡亰信誉平台游戏 1

作者介绍

为了实现一种更为直观的探索过程,谷歌今日布开源了一款用于交互式可视化和高维数据分析的网页工具
Embedding Projector,其作为 TensorFlow 的一部分,能带来类似 A.I.
Experiment 的效果(参阅:业界 | 谷歌推出 A.I.
Experiments:让任何人都可以轻松实验人工智能)。同时,谷歌也在
projector.tensorflow.org
放出了一个可以单独使用的版本,让用户无需安装和运行 TensorFlow
即可进行高维数据的可视化

TensorBoard可视化

TensorBoard
是通过读取TensorFlow的事件文件信息来进行可视化的。TensorFlow的事件文件包含的是tensorflow运行时的summary
data。

Ankit Gupta:数据科学家、IIIT
Allahabad研究助理,热爱解决复杂的数据挖掘问题、了解更多关于数据科学和机器学习算法,目前致力于预测软件缺陷的项目。

  • Embedding Projector 地址:

  • 可单独使用的版本:

  • 相关论文地址:

Summary Operations

Summary Operation提供了这样一些工具用来记录computational
graph的运行信息:
下面两个类提供了output 接口,用来将summary信息写到事件文件中去。

  • tf.summary.FileWriter
  • tf.summary.FileWriterCache

下面是一些Summary Operation

  • tf.summary.tensor_summary: Outputs a Summary protocol buffer with a
    serialized tensor.proto
  • tf.summary.scalar: Outputs a Summary protocol buffer containing a
    single scalar value
  • tf.summary.histogram: Outputs a Summary protocol buffer with a
    histogram
  • tf.summary.audio: Outputs a Summary protocol buffer with audio.
  • tf.summary.image: Outputs a Summary protocol buffer with images.
  • tf.summary.merge: This op creates a Summary protocol buffer that
    contains the union of all the values in the input summaries.
  • tf.summary.merge_all: Merges all summaries collected in the default
    graph

领英:

澳门新葡亰信誉平台游戏 2

生成summary 过程

  1. 首先创建需要进行收集summary data 的 computational
    graph,并且确定需要观察的节点。
    例如:假设在训练一个cnn去识别MNIST的数字的模型中,
    你可能需要记录learning rate,
    损失函数值的变化过程,这时你可以给输出learning
    rate的值和输出损失函数值的节点分别附加一个tf.summary.scalar操作。
  2. 合并summary Ops:
    tensorflow
    中的Operation不会做任何事情,直到有人去运行它,或者有其它的运行的Operation依赖于它的输出作为输入;而我们在第一步附加给compuatiaonal
    graph 节点上的summary operation 是一种相对于目标graph
    是外围的节点,他们并不被依赖,所以需要我们主动的去运行summary
    Operatiton;当然一个一个手动的去运行summary operation
    显然是很麻烦的,所以这一步需要用tf.summary.merge_all
    将所有的summary operation 合并成单个operation。
  3. 运行合并后的summary operation:
    运行summary operation将生成序列化的Summary protobuf object,
    之后将其传给 tf.summary.FileWriter , FileWrite 会将summary object
    写入到事件文件中去。
  4. 设置运行的频次:
    在模型的训练过程中往往都要进行多步迭代,我们可以在图每次计算一次时运行summary,
    但当次数迭代较多时这就没必要了,一般可以设置每训练多少步运行一次summary
    operation。

Github:

探索嵌入(embeddings)

launch Tensorboard

可以用下面两中方式启动tensorbord:

  • python -m tensorflow.tensorboard --logdir=path/to/log-directory
  • tensorboard --logdir=path/to/log-directory
    这里的logdir 指的是tf.summary.FileWriter
    写的事件文件的文件夹;如果logdir
    文件夹含有子文件夹,且这个子文件夹中含有不同的事件文件,Tensorboard
    也会对其进行可视话。当Tensorboard 启动好后,可以通过浏览器访问
    localhost:6006 去查看Tensorboard的可视化结果。

博客:

训练机器学习系统所需的数据一开始的形式是计算机无法直接理解的。为了将这些我们人类能够自然而然理解的东西(如:话语、声音或视频)翻译成算法能够处理的形式,我们会使用到嵌入(embeddings)——一种获取了数据的不同方面(即:维度
dimension)的数学向量表征。比如说,在一个语言嵌入中,相似的词会被映射到彼此相近的点。

TensorBoard: Embedding Visualization

前面我们介绍了tensorborad的流程和用法,这里我们介绍Tensorboard另外一个有用的功能,embedding
visuaslization,
其实质就是将高维的数据按照特定的算法映射到2维或者3维进行展示。

澳门新葡亰信誉平台游戏 3

TensorBoard 有一个内置的可是话工具叫做 Embedding
Projector,主要是为了方便交互式的展示和分析高维数据, embedding projector
会读取在模型文件中的embedings, 并且加载模型中任何2维的tensor。

Embedding Projector
默认的使用PCA将高维数据,映射到3维空间,但其也提供了t-SNE 用来做映射。

澳门新葡亰信誉平台游戏 4

创建embedding

需要这么三步来可视化embeddings:

  • 创建一个2维的tensor来记录embedding :
    embedding_var = tf.Variable(....)
  • 周期性的将模型变量保存在logdir 下面的checkpoint文件中

 saver = tf.train.Saver()
 saver.save(session, os.path.join(LOG_DIR, "model.ckpt"), step)
  • (可选)对embedding 附加元数据:
    如果你想对embedding
    的数据添加元数据(如标签,图片),你可以通过在log_dir文件夹下面保存一个projector_config.pbtxt指定元数据信息,或者通过python
    API
    例如:下面的projector_config.pbtxt为word_embedding附加一个存在logdir/metadata.tsv下的元数据:

 embeddings {
  tensor_name: 'word_embedding'
  metadata_path: '$LOG_DIR/metadata.tsv'
}

PCA:主成分分析(Principal Component Analysis)

降维的方法

元数据

通常,embeddings都会有附加元数据, 元数据必须在模型的checkpoint
外面用一个单独的文件保存。 元数据文件的格式是TSV格式的文件,
即用tab键分隔的文件,并且这个文件必须带有文件头;
一个具体的文件内容的例子:

WordtFrequency
Airplanet345
Cart241
...

需要注意的一点是元文件中数据的顺序必须和embedding tenor的顺序一致;

T-SNE:t-分布随机邻域嵌入(t-Distributed Stochastic Neighbor
Embedding)

Embedding Projector 提供了三种常用的数据降维(data dimensionality
reduction)方法,这让我们可以更轻松地实现复杂数据的可视化,这三种方法分别是
PCA、t-SNE 和自定义线性投影(custom linear projections):

图片元数据

如果你需要将图片数据附加到embeddings
上去,你需要将每个数据点代表的图片合成一张整的图片,这张图片叫做sprite
image。
生成完sprite image后,需要告诉Embedding projector 去加载文件:

  embedding.sprite.image_path = PATH_TO_SPRITE_IMAGE
 # Specify the width and height of a single thumbnail.
  embedding.sprite.single_image_dim.extend([w, h])

LDA:线性判别式分析(Linear Discriminant Analysis)

  • PCA 通常可以有效地探索嵌入的内在结构,揭示出数据中最具影响力的维度。

  • t-SNE 可用于探索局部近邻值(local
    neighborhoods)和寻找聚类(cluster),可以让开发者确保一个嵌入保留了数据中的所有含义(比如在
    MNIST 数据集中,可以看到同样的数字聚类在一起)。

  • 自定义线性投影可以帮助发现数据集中有意义的「方向(direction)」,比如一个语言生成模型中一种正式的语调和随意的语调之间的区别——这让我们可以设计出更具适应性的机器学习系统。

Graph的可视化:

TensorFlow 的computation graphs 一般都会比较复杂.
对其进行可视化能帮助人们理解和调试程序。
对图进行可视化,只需运行TensorBoard命令,并且点击graph
按件就可以看到了。
这里主要讲的一点是name scoping

介绍

澳门新葡亰信誉平台游戏 5

name scope

由于深度学习模型往往有成千上万个节点,在有限的空间中展示这么多细节是很不友好的,tensorflow
里面有个name scope 的机制,可以将一些variable 划到一个scope中去,
然后在展示graph的时候,在同一个name scope
都会被折叠进一个节点中去,用户可以自己去展开。
另外name scope 也类似java的包一样,解决了variable
命名的问题,这里就不细讲了。

在处理现实生活中的问题时,数据科学家经常会遇到数百列及以上的数据集,并通过这些大型数据集构建预测模型,这会是一个较复杂的工程。幸运的是有降维技术的存在,降维是数据科学中的一项重要技术,任何数据科学家都必须具备该技能。这项技能测试测试你掌握的降维技术知识,测试问题包括PCA、t-SNE和LDA等主题。在这里还有更具挑战性的比赛。

在一个拥有 3.5 万个电子邮件常用短语的语料库中,「see attachment」的 100
个最近的点到「yes」-「yeah」向量上(yes 在右,yeah
在左)的自定义线性投影

实战:基于CNN对mnist数字识别

import os
import tensorflow as tf
import sys
import urllib

if sys.version_info[0] >= 3:
    from urllib.request import urlretrieve
else:
    from urllib import urlretrieve

LOGDIR = '/tmp/mnist_tutorial/'
GITHUB_URL = 'https://raw.githubusercontent.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial/master/'

### MNIST EMBEDDINGS ###
mnist = tf.contrib.learn.datasets.mnist.read_data_sets(train_dir=LOGDIR + 'data', one_hot=True)
### Get a sprite and labels file for the embedding projector ###
urlretrieve(GITHUB_URL + 'labels_1024.tsv', LOGDIR + 'labels_1024.tsv')
urlretrieve(GITHUB_URL + 'sprite_1024.png', LOGDIR + 'sprite_1024.png')


# Add convolution layer
def conv_layer(input, size_in, size_out, name="conv"):
  with tf.name_scope(name):
    w = tf.Variable(tf.truncated_normal([5, 5, size_in, size_out], stddev=0.1), name="W")
    b = tf.Variable(tf.constant(0.1, shape=[size_out]), name="B")
    conv = tf.nn.conv2d(input, w, strides=[1, 1, 1, 1], padding="SAME")
    act = tf.nn.relu(conv + b)
    tf.summary.histogram("weights", w)
    tf.summary.histogram("biases", b)
    tf.summary.histogram("activations", act)
    return tf.nn.max_pool(act, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding="SAME")


# Add fully connected layer
def fc_layer(input, size_in, size_out, name="fc"):
  with tf.name_scope(name):
    w = tf.Variable(tf.truncated_normal([size_in, size_out], stddev=0.1), name="W")
    b = tf.Variable(tf.constant(0.1, shape=[size_out]), name="B")
    act = tf.nn.relu(tf.matmul(input, w) + b)
    tf.summary.histogram("weights", w)
    tf.summary.histogram("biases", b)
    tf.summary.histogram("activations", act)
    return act


def mnist_model(learning_rate, use_two_conv, use_two_fc, hparam):
  tf.reset_default_graph()
  sess = tf.Session()

  # Setup placeholders, and reshape the data
  x = tf.placeholder(tf.float32, shape=[None, 784], name="x")
  x_image = tf.reshape(x, [-1, 28, 28, 1])
  tf.summary.image('input', x_image, 3)
  y = tf.placeholder(tf.float32, shape=[None, 10], name="labels")

  if use_two_conv:
    conv1 = conv_layer(x_image, 1, 32, "conv1")
    conv_out = conv_layer(conv1, 32, 64, "conv2")
  else:
    conv1 = conv_layer(x_image, 1, 64, "conv")
    conv_out = tf.nn.max_pool(conv1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding="SAME")

  flattened = tf.reshape(conv_out, [-1, 7 * 7 * 64])


  if use_two_fc:
    fc1 = fc_layer(flattened, 7 * 7 * 64, 1024, "fc1")
    embedding_input = fc1
    embedding_size = 1024
    logits = fc_layer(fc1, 1024, 10, "fc2")
  else:
    embedding_input = flattened
    embedding_size = 7*7*64
    logits = fc_layer(flattened, 7*7*64, 10, "fc")

  with tf.name_scope("xent"):
    xent = tf.reduce_mean(
        tf.nn.softmax_cross_entropy_with_logits(
            logits=logits, labels=y), name="xent")
    tf.summary.scalar("xent", xent)

  with tf.name_scope("train"):
    train_step = tf.train.AdamOptimizer(learning_rate).minimize(xent)

  with tf.name_scope("accuracy"):
    correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(y, 1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    tf.summary.scalar("accuracy", accuracy)

  summ = tf.summary.merge_all()


  embedding = tf.Variable(tf.zeros([1024, embedding_size]), name="test_embedding")
  assignment = embedding.assign(embedding_input)
  saver = tf.train.Saver()

  sess.run(tf.global_variables_initializer())
  writer = tf.summary.FileWriter(LOGDIR + hparam)
  writer.add_graph(sess.graph)

  config = tf.contrib.tensorboard.plugins.projector.ProjectorConfig()
  embedding_config = config.embeddings.add()
  embedding_config.tensor_name = embedding.name
  embedding_config.sprite.image_path = LOGDIR + 'sprite_1024.png'
  embedding_config.metadata_path = LOGDIR + 'labels_1024.tsv'
  # Specify the width and height of a single thumbnail.
  embedding_config.sprite.single_image_dim.extend([28, 28])
  tf.contrib.tensorboard.plugins.projector.visualize_embeddings(writer, config)

  for i in range(2001):
    batch = mnist.train.next_batch(100)
    if i % 5 == 0:
      [train_accuracy, s] = sess.run([accuracy, summ], feed_dict={x: batch[0], y: batch[1]})
      writer.add_summary(s, i)
    if i % 500 == 0:
      sess.run(assignment, feed_dict={x: mnist.test.images[:1024], y: mnist.test.labels[:1024]})
      saver.save(sess, os.path.join(LOGDIR, "model.ckpt"), i)
    sess.run(train_step, feed_dict={x: batch[0], y: batch[1]})


def make_hparam_string(learning_rate, use_two_fc, use_two_conv):
  conv_param = "conv=2" if use_two_conv else "conv=1"
  fc_param = "fc=2" if use_two_fc else "fc=1"
  return "lr_%.0E,%s,%s" % (learning_rate, conv_param, fc_param)


def main():
  # You can try adding some more learning rates
  for learning_rate in [1E-4]:

    # Include "False" as a value to try different model architectures
    for use_two_fc in [True]:
      for use_two_conv in [True]:
        # Construct a hyperparameter string for each one (example: "lr_1E-3,fc=2,conv=2)
        hparam = make_hparam_string(learning_rate, use_two_fc, use_two_conv)
        print('Starting run for %s' % hparam)

        # Actually run with the new settings
        mnist_model(learning_rate, use_two_fc, use_two_conv, hparam)


if __name__ == '__main__':
  main()

共有582人参加该测试,以下问题涉及理论到实践的方方面面。

谷歌的博客写道:

总结

本文主要介绍了如下内容:

  • tensorboard 是什么及其左右
  • tensorboard 如何进行可视化
  • tensorboard 进行embedding 可视化
  • tensorboard 对graph进行可视化
  • 最后以一个完整的例子演示了上面所讲的内容,这个例子是完整可以运行的。

澳门新葡亰信誉平台游戏 6

Embedding Projector
网站包括一些可供试玩的数据组。我们也让用户更容易使用它并与其他人共享他们的嵌入(仅需点击左边的

publish *按钮)。我们希望 Embedding Projector
能有效帮助研究社区探索并调节他们的机器学习应用,也让所有人更好地理解机器学习算法如何解读数据。如果对
Embedding Projector
细节有兴趣,请阅读我们的论文。祝你在嵌入的世界里玩得开心!*

Reference

  • https://www.tensorflow.org/get_started/summaries_and_tensorboard
  • https://github.com/tensorflow/tensorflow/blob/r1.1/tensorflow/tensorboard/README.md
  • https://github.com/mamcgrath/TensorBoard-TF-Dev-Summit-Tutorial

如果错过测试,可以在这里参加测试。

以下是论文摘要:

综合成绩

澳门新葡亰信誉平台游戏 7

以下是分数的分布,这将有助于评估自己的表现:

摘要:嵌入在机器学习领域,比如推荐系统、NLP
以及许多其他应用领域中很常见。研究人员和开发者常常需要探索某个具体嵌入的属性,并找到分析嵌入的方法以将它们视觉化。我们为交互式可视化和嵌入的诠释工作推出了
Embedding Projector 这款工具。

澳门新葡亰信誉平台游戏 8

原文链接:Open sourcing the Embedding Projector: a tool for visualizing
high dimensional
data

你可以访问并查看自己的分数,以下是关于分配的一些统计数据。

编译:机器之心

总体分布

平均得分:19.52

得分中位数(按顺序排列的中间值):20

模型得分:19

澳门新葡亰信誉平台游戏 9

有用资源

初学者指导学习降维的技巧

R&Python主成分分析实用指南

R-Python实现的t-SNE算法综合指南

问题和答案

1)想象一下,机器学习中有1000个输入特征和1个目标特征,必须根据输入特征和目标特征之间的关系选择100个最重要的特征。你认为这是减少维数的例子吗?

A.是

B.不是

解答:

2)[真或假]没有必要有一个用于应用维数降低算法的目标变量。

A.真

B.假

解答:

LDA是有监督降维算法的一个例子。

3)在数据集中有4个变量,如A,B,C和D.执行了以下操作:

步骤1:使用上述变量创建另外两个变量,即E = A + 3 * B和F = B + 5 * C +
D。

步骤2:然后只使用变量E和F建立了一个随机森林模型。

上述步骤可以表示降维方法吗?

A.真

B.假

解答:

因为步骤1可以用于将数据表示为2个较低的维度。

4)以下哪种技术对于减少数据集的维度会更好?

A.删除缺少值太多的列

B.删除数据差异较大的列

C.删除不同数据趋势的列

D.都不是

解答:

如果列的缺失值太多,那么可以删除这些列。

5)[真或假]降维算法是减少构建模型所需计算时间的方法之一。

A.真

B.假

解答:

降低数据维数将花费更少的时间来训练模型。

6)以下哪种算法不能用于降低数据的维数?

A.t-SNE

B. PCA

C. LDA

D.都不是

解答:

所有算法都是降维算法的例子。

7)[真或假] PCA可用于在较小维度上投影和可视化数据。

A.真

B.假

解答:

有时绘制较小维数据非常有用,可以使用前两个主要分量,然后使用散点图可视化数据。

8)最常用的降维算法是PCA,以下哪项是关于PCA的?

1.PCA是一种无监督的方法

2.它搜索数据具有最大差异的方向

3.主成分的最大数量<=特征能数量

4.所有主成分彼此正交

A. 1和2

B. 1和3

C. 2和3

D. 1、2和3

E. 1、2和4

F.以上所有

解答:

9)假设使用维数降低作为预处理技术,使用PCA将数据减少到k维度。然后使用这些PCA预测作为特征,以下哪个声明是正确的?

A.更高的“k”意味着更正则化

B.更高的“k”意味着较少的正则化

C.不知道

解答:

较高的k导致较少的平滑,因此能够保留更多的数据特征,从而减少正则化。

10)在相同的机器上运行并设置最小的计算能力,以下哪种情况下t-SNE比PCA降维效果更好?

A.具有1百万项300个特征的数据集

B.具有100000项310个特征的数据集

C.具有10,000项8个特征的数据集

D.具有10,000项200个特征的数据集

解答:

t-SNE具有二次时空复杂度。

11)对于t-SNE代价函数,以下陈述中的哪一个正确?

A.本质上是不对称的。

B.本质上是对称的。

C.与SNE的代价函数相同。

解答:

SNE代价函数是不对称的,这使得使用梯度下降难以收敛。对称是SNE和t-SNE代价函数之间的主要区别之一。

12)想像正在处理文本数据,使用单词嵌入表示使用的单词。在单词嵌入中,最终会有1000维。现在想减小这个高维数据的维度,这样相似的词应该在最邻近的空间中具有相似的含义。在这种情况下,您最有可能选择以下哪种算法?

A. t-SNE

B. PCA

C. LDA

D.都不是

解答:

t-SNE代表t分布随机相邻嵌入,它考虑最近的邻居来减少数据。

13)[真或假] t-SNE学习非参数映射。

A.真

B.假

解答:

t-SNE学习非参数映射,这意味着它不会学习将数据从输入空间映射到地图的显式函数。从该网站获取更多信息。

14)以下对于t-SNE和PCA的陈述中哪个是正确的?

A.t-SNE是线性的,而PCA是非线性的

B.t-SNE和PCA都是线性的

C.t-SNE和PCA都是非线性的

D.t-SNE是非线性的,而PCA是线性的

解答:

选项D是正确的。从此处获取说明

15)在t-SNE算法中,可以调整以下哪些超参数?

A.维度数量

B.平稳测量有效数量的邻居

C.最大迭代次数

D.以上所有

解答:

选项中的所有超参数都可以调整。

16)与PCA相比,t-SNE的以下说明哪个正确?

A.数据巨大时,t-SNE可能无法产生更好的结果。

B.无论数据的大小如何,T-NSE总是产生更好的结果。

C.对于较小尺寸的数据,PCA总是比t-SNE更好。

D.都不是

解答:

17)Xi和Xj是较高维度表示中的两个不同点,其中Yi和Yj是较低维度中的Xi和Xj的表示。

1.数据点Xi与数据点Xj的相似度是条件概率p。

2.数据点Yi与数据点Yj的相似度是条件概率q。

对于在较低维度空间中的Xi和Xj的完美表示,以下哪一项必须是正确的?

A.p= 0,q= 1

B.p

C.p= q

D.P> q

解答:

两点的相似性的条件概率必须相等,因为点之间的相似性必须在高维和低维中保持不变,以使它们成为完美的表示。

18)LDA的以下哪项是正确的?

澳门新葡亰信誉平台游戏 10

A.LDA旨在最大化之间类别的距离,并最小化类内之间的距离

B. LDA旨在最小化类别和类内之间的距离

C. LDA旨在最大化类内之间的距离,并最小化类别之间的距离

D.LDA旨在最大化类别和类内之间的距离

解答:

19)以下哪种情况LDA会失败?

A.如果有辨识性的信息不是平均值,而是数据的方差

B.如果有辨识性的信息是平均值,而不是数据方差

C.如果有辨识性的信息是数据的均值和方差

D.都不是

解答:

20)PCA和LDA的以下比较哪些是正确的?

  1. LDA和PCA都是线性变换技术

  2. LDA是有监督的,而PCA是无监督的

  3. PCA最大化数据的方差,而LDA最大化不同类之间的分离,

A. 1和2

B. 2和3

C. 1和3

D.只有3

E. 1、2和3

解答:

21)当特征值大致相等时会发生什么?

A. PCA将表现出色

B. PCA将表现不佳

C.不知道

D.以上都没有

解答:

当所有特征向量相同时将无法选择主成分,因为在这种情况下所有主成分相等。

22)以下情况中PCA的效果好吗?

1.数据中的线性结构

2.如果数据位于曲面上,而不在平坦的表面上

3.如果变量以同一单元缩放

A. 1和2

B. 2和3

C. 1和3

D. 1、2和3

解答:

23)当使用PCA获得较低维度的特征时会发生什么?

1.这些特征仍然具有可解释性

2.特征将失去可解释性

3.特征必须携带数据中存在的所有信息

4.这些特征可能不携带数据中存在的所有信息

A. 1和3

B. 1和4

C. 2和3

D. 2和4

解答:

当获取较低维度的特征时,大部分时间将丢失一些数据信息,您将无法解释较低维的数据。

24)想象一下,在高度和重量之间给出以下散点图**

澳门新葡亰信誉平台游戏 11

选择沿哪个轴捕获最大变化的角度?

A.〜0度

B.〜45度

C.〜60度

D.〜90度

解答:

选项B的数据的差异可能最大。

25)以下哪个选项是真的?

1.在PCA中需要初始化参数

2.在PCA中不需要初始化参数

  1. PCA可以被困在局部最小问题

  2. PCA不能被困到局部最小问题

A. 1和3

B. 1和4

C. 2和3

D. 2和4

解答:

PCA是一个确定性算法,它不具有初始化的参数,并且不像大多数机器学习算法那样具有局部最小问题。

问题26背景

以下快照显示了两个特征与类别信息的散点图,还可以看到PCA和LDA的方向。

澳门新葡亰信誉平台游戏 12

26)以下哪种方法会导致更好的类别预测?

A.建立PCA分类算法(PCA方向的主成分)

B.建立LDA分类算法

C.不知道

D.都不是

解答:

如果目标是对这些点进行分类,PCA投影只会带来更多的危害——大多数蓝色和红色点将重叠在第一个主成分上,这样会混淆分类器。

27)在图像数据集上应用PCA时,以下哪个选项是正确的?

1.它可以用于有效地检测可变形物体。

2.仿射变换是不变的。

3.它可用于有损图像压缩。

4.阴影不是不变的。

A. 1和2

B. 2和3

C. 3和4

D. 1和4

解答:

28)在哪种条件下,SVD和PCA产生相同的投影结果?

A.当数据为零时

B.当数据均值为零时,

C.两者总是相同

D.都不是

解答:

当数据具有零均值向量时二者会相同,否则在进行SVD之前必须首先对数据进行中心处理。

问题背景29

考虑2维空间中的3个数据点:、、。

澳门新葡亰信誉平台游戏 13

29)这些数据的第一个主成分是什么**

1.[√2/2,√2/2]

2.(1 /√3,1 /√3)

3.([-√2/ 2,√2/ 2])

4.(-1 /√3,- 1 /√3)

A. 1和2

B. 3和4

C. 1和3

D. 2和4

解答:

第一个主要组成部分是v = [√2/ 2,√2/ 2]T,请注意,主成分应该被归一化。

30)如果通过主成分[√2/2,√2/2]T将原始数据点投影到1维子空间中,他们在1维子空间中的坐标是什么?

A.、

B.、

C.、

D.、

解答:

投影后三点的坐标应为z1 = [-1,-1] [√2/2,√2/2]T= –
√2,同理可得z2=0,z3 = √2。

31)对于投影数据为((√2),(0),(√2))。现在如果在二维空间中重建,并将它们视为原始数据点的重建,那么重建误差是多少?

A. 0%

B. 10%

C. 30%

D. 40%

解答:

重建误差为0,因为所有三个点完全位于第一个主要分量的方向上或者计算重建;

32)LDA的思想是找到最能区分两类别之间的线,下图中哪个是好的投影?

澳门新葡亰信誉平台游戏 14

A.LD1

B.LD2

C.两者

D.都不是

解答:

问题33背景

PCA是一种很好的技术,因为它很容易理解并通常用于数据降维。获得特征值λ1≥λ2≥•••≥λN并画图。

澳门新葡亰信誉平台游戏 15

看看f如何随着M而增加,并且在M = D处获得最大值1,给定两图:

澳门新葡亰信誉平台游戏 16

33)上述哪个图表显示PCA的性能更好?其中M是主要分量,D是特征的总数。

A.左

B.右

C.任意A和B

D.都不是

解答:

如果f渐近线快速到达1,则PCA是好的;如果第一个特征值较大且其余较小,则会发生这种情况。如果所有特征值大致相等,PCA是坏的。

34)以下哪个选项是真的?

A. LDA明确地尝试对数据类别之间的差异进行建模,而PCA没有。

B.两者都试图模拟数据类之间的差异。

C.PCA明确地试图对数据类别之间的差异进行建模,而LDA没有。

D.两者都不试图模拟数据类之间的差异。

解答:

35)应用PCA后,以下哪项可以是前两个主成分?

1.(0.5,0.5,0.5,0.5)和(0.71,0.71,0,0)

2.(0.5,0.5,0.5,0.5)和(0,0,-0.71,0.71)

3.(0.5,0.5,0.5,0.5)和(0.5,0.5,-0.5,-0.5)

4.(0.5,0.5,0.5,0.5)和(-0.5,-0.5,0.5,0.5)

A. 1和2

B. 1和3

C. 2和4

D. 3和4

解答:

对于前两个选择,两个向量不是正交的。

36)以下哪一项给出了逻辑回归与LDA之间的差异?

1.如果类别分离好,逻辑回归的参数估计可能不稳定。

2.如果样本量小,并且每个类的特征分布是正常的。在这种情况下,线性判别分析比逻辑回归更稳定。

A. 1

B. 2

C. 1和2

D.都不是

解答:

参考该视频

37)在PCA中会考虑以下哪个偏差?

澳门新葡亰信誉平台游戏 17

A.垂直偏移

B.正交偏移

C.两者

D.都不是

解答:

总是将残差视为垂直偏移,正交偏移在PCA的情况下是有用的

38)假设正在处理10类分类问题,并且想知道LDA最多可以产生几个判别向量。以下哪个是正确答案?

A. 20

B.9

C. 21

D. 11

E. 10

解答:

LDA最多产生c-1个判别向量,可以参考此链接获取更多信息。

问题39背景

给定的数据集包括“胡佛塔”和其他一些塔的图像。现在要使用PCA和最近邻方法来构建一个分类器,可以预测新图像是否显示“胡佛塔”。该图给出了输入的训练图像样本

澳门新葡亰信誉平台游戏 18

39)为了从“特征脸”算法获得合理的性能,这些图像将需要什么预处理步骤?

1.将塔对准图像中相同的位置。

2.将所有图像缩放或裁剪为相同的大小。

A. 1

B. 2

C. 1和2

D.都不是

解答:

40)下图中主成分的最佳数量是多少?

澳门新葡亰信誉平台游戏 19

A. 7

B. 30

C. 40

D.不知道

解答:

可以在上图中看到,主成分的数量为30时以最小的数量得到最大的方差。

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《40 Must know Questions to test a data scientist on
Dimensionality Reduction techniques》,作者:Ankit
Gupta,译者:海棠,审阅:李烽,附件为原文的pdf。

文章为简译,更为详细的内容,请查看原文

附件下载:40 Must …[].1493010059.pdf

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图