최신 차원 압축 방법 "UMAP"정보
7771 단어 Python3시각화uMapt-snescikit-learn
소개
안녕하세요!
여러분 차원 압축 수법이라고 하면 어떤 것을 생각해 봅니까?
PCA, Isomap, t-SNE 등입니다.
이 기사가 매우 잘 정리되어 있습니다.
고차원 데이터의 차원 축소 및 2차원 플롯 기법
오늘 소개하고 싶은 것은 UMAP이라는 차원 삭감 방법입니다.
논문이 arXiv에 2018년 2월 9일에 오른 방금의 기법입니다.
무려 t-SNE와 같은 정도의 차원 삭감을 몇 배의 속도로 할 수 있습니다.
논문에 대해서는, 리만 기하학과 대수 토폴로지를 배경으로 되어 있는 것 같기 때문에 차분히 읽어내고 나중에 정리하고 싶습니다.
흥미가 있는 분은 이쪽으로부터 부디
UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction
사용해 보자.
얼마나 빨리 도서관이 공개되었습니다.
일단 사용해 봅시다.
설치
pip3 install umap-learn
사용법은 기본적으로 scikit-learn과 동일합니다.
MNIST를 사용하여 t-SNE와 비교해 보았습니다.
t-SNE에 의한 멋있는 차원 압축 및 시각화
공식 GitHub에는 써 있습니다만,
from scipy.sparse.csgraph import connected_components
쓰지 않으면 오류가 발생합니다.
reduction.pyimport umap
from sklearn.datasets import load_digits
from scipy.sparse.csgraph import connected_components
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from sklearn.manifold import TSNE
import time
def main():
digits = load_digits()
digits.target = [float(digits.target[i]) for i in range(len(digits.target))]
# UMAP
start_time = time.time()
embedding = umap.UMAP().fit_transform(digits.data)
interval = time.time() - start_time
plt.scatter(embedding[:,0],embedding[:,1],c=digits.target,cmap=cm.tab10)
plt.colorbar()
plt.savefig('umap.png')
# t-SNE
plt.clf()
start_time2 = time.time()
tsne_model = TSNE(n_components=2)
tsne = tsne_model.fit_transform(digits.data)
interval2 = time.time() - start_time2
plt.scatter(tsne[:,0],tsne[:,1],c=digits.target,cmap=cm.tab10)
plt.colorbar()
plt.savefig('tsne.png')
print('umap : {}s'.format(interval))
print('tsne : {}s'.format(interval2))
if __name__ == "__main__":
main()
출력 결과가 여기입니다.
t-SNE
UMAP
UMAP 쪽이 보다 분명하게 나뉘어져 있는 인상이군요.
놀랍게도 실행 시간의 차이입니다.
umap : 5.383596897125244s
tsne : 34.21198582649231s
무려 나의 출력 결과에서는 6배 이상의 속도를 계측했습니다.
매우 흥미 롭습니다.
수학 복습을 하면서 논문을 읽고 해설 기사를 갱신하고 싶습니다.
Reference
이 문제에 관하여(최신 차원 압축 방법 "UMAP"정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/cheerfularge/items/27a55ebde4a671880666
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
얼마나 빨리 도서관이 공개되었습니다.
일단 사용해 봅시다.
설치
pip3 install umap-learn
사용법은 기본적으로 scikit-learn과 동일합니다.
MNIST를 사용하여 t-SNE와 비교해 보았습니다.
t-SNE에 의한 멋있는 차원 압축 및 시각화
공식 GitHub에는 써 있습니다만,
from scipy.sparse.csgraph import connected_components
쓰지 않으면 오류가 발생합니다.
reduction.py
import umap
from sklearn.datasets import load_digits
from scipy.sparse.csgraph import connected_components
import matplotlib.pyplot as plt
import matplotlib.cm as cm
from sklearn.manifold import TSNE
import time
def main():
digits = load_digits()
digits.target = [float(digits.target[i]) for i in range(len(digits.target))]
# UMAP
start_time = time.time()
embedding = umap.UMAP().fit_transform(digits.data)
interval = time.time() - start_time
plt.scatter(embedding[:,0],embedding[:,1],c=digits.target,cmap=cm.tab10)
plt.colorbar()
plt.savefig('umap.png')
# t-SNE
plt.clf()
start_time2 = time.time()
tsne_model = TSNE(n_components=2)
tsne = tsne_model.fit_transform(digits.data)
interval2 = time.time() - start_time2
plt.scatter(tsne[:,0],tsne[:,1],c=digits.target,cmap=cm.tab10)
plt.colorbar()
plt.savefig('tsne.png')
print('umap : {}s'.format(interval))
print('tsne : {}s'.format(interval2))
if __name__ == "__main__":
main()
출력 결과가 여기입니다.
t-SNE
UMAP
UMAP 쪽이 보다 분명하게 나뉘어져 있는 인상이군요.
놀랍게도 실행 시간의 차이입니다.
umap : 5.383596897125244s
tsne : 34.21198582649231s
무려 나의 출력 결과에서는 6배 이상의 속도를 계측했습니다.
매우 흥미 롭습니다.
수학 복습을 하면서 논문을 읽고 해설 기사를 갱신하고 싶습니다.
Reference
이 문제에 관하여(최신 차원 압축 방법 "UMAP"정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cheerfularge/items/27a55ebde4a671880666텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)