使用 tSNE 可视化具有线性关系的数据是否有意义?

数据挖掘 可视化 线性回归 特纳
2022-02-23 14:00:06

我曾多次使用tSNE可视化高维数据进行聚类分析,当数据落入聚类时,它的效果一直很好。

但是,使用 tSNE 来可视化具有线性关系的数据集中的自变量是否有意义y=Xθ+b, 在哪里y是目标值和X是自变量(b 是偏差)?

据我了解 tSNE,它更多地用于捕获高维数据中的局部结构,因此它可能不适合可视化线性回归的数据 - 这是一个错误的假设吗?

1个回答

您的假设是正确的,结果通常具有误导性。

假设您的(线性相关)数据在某个范围内有缺失点:

线性相关数据的 3-d 图

与 t-SNE 相比,这两个数据子集将是两个不同的集群,即使它们位于相同的线性分布上:

t-SNE 转换数据

但是,如果您真的对这两个结构是分开的这一事实感兴趣,那么 t-SNE 是一个很好的可视化选择。

所以一个正确的答案应该是:这取决于你需要什么。

附言

这里用于此示例的代码:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from sklearn.manifold import TSNE

def function(x, y):
    return 4+3*x + 4*y

x1=np.random.rand(100)
x2=np.random.rand(100)+1.2
X=np.concatenate([x1, x2])
Y=0.5+2*X

Z=function(X, Y)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

ax.scatter(X, Y, Z, c='r', marker='o')
plt.show()

data=[]
for x, y, z in zip (X, Y, Z):
    data.append([x, y, z])

data_embedded = TSNE(n_components=2).fit_transform(data)


plt.scatter([x for x, y in data_embedded], [y for x, y in data_embedded], color='r')
plt.show()