현재 t-SNE를 사용하여 고차원 데이터의 시각화를 조사하고 있습니다. 이진 및 연속 변수가 혼합 된 일부 데이터가 있으며 이진 데이터를 너무 쉽게 클러스터링하는 것처럼 보입니다. 물론 이것은 스케일 된 (0과 1 사이) 데이터에 대해 예상됩니다. 유클리드 거리는 이진 변수 사이에서 항상 가장 크거나 작습니다. t-SNE를 사용하여 혼합 이진 / 연속 데이터 세트를 어떻게 처리해야합니까? 이진 열을 삭제해야합니까? metric
우리가 사용할 수 있는 다른 것이 있습니까?
예를 들어이 파이썬 코드를 고려하십시오.
x1 = np.random.rand(200)
x2 = np.random.rand(200)
x3 = np.r_[np.ones(100), np.zeros(100)]
X = np.c_[x1, x2, x3]
# plot of the original data
plt.scatter(x1, x2, c=x3)
# … format graph
내 원시 데이터는 다음과 같습니다.
여기서 색상은 세 번째 피처 (x3)의 값입니다. 3D에서 데이터 포인트는 두 평면 (x3 = 0 평면 및 x3 = 1 평면)에 있습니다.
그런 다음 t-SNE를 수행합니다.
tsne = TSNE() # sci-kit learn implementation
X_transformed = StandardScaler().fit_transform(X)
tsne = TSNE(n_components=2, perplexity=5)
X_embedded = tsne.fit_transform(X_transformed)
결과 플롯과 함께 :
데이터는 물론 x3에 의해 클러스터됩니다. 내 직감은 이진 피처에 대한 거리 메트릭이 잘 정의되어 있지 않기 때문에 t-SNE를 수행하기 전에이를 제거해야한다는 점입니다. 이러한 피처는 클러스터 생성에 유용한 정보를 포함 할 수 있으므로 부끄러운 일입니다.