1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Appleが出したembedding-atlas可視化ツールを使ってみた

Last updated at Posted at 2025-07-12

はじめに

こんにちは、しゅんです。いつも記事を読んでいただきありがとうございます。今回は、Apple が先日公開した埋め込み(embedding)可視化ツール Embedding Atlas を試してみたレポートです。

公式 README:Embedding Atlas

Embedding Atlas is a tool that provides interactive visualizations for large embeddings. It allows you to visualize, cross-filter, and search embeddings and metadata.

Features

  • 🏷️ Automatic data clustering & labeling
    Interactively visualize and navigate overall data structure.

  • 🫧 Kernel density estimation & density contours
    Easily explore and distinguish between dense regions of data and outliers.

  • 🧊 Order-independent transparency
    Ensure clear, accurate rendering of overlapping points.

  • 🔍 Real-time search & nearest neighbors
    Find similar data to a given query or existing data point.

  • 🚀 WebGPU implementation (with WebGL 2 fallback)
    Fast, smooth performance (up to few million points) with modern rendering stack.

  • 📊 Multi-coordinated views for metadata exploration
    Interactively link and filter data across metadata columns.

  • 公式デモ
    https://apple.github.io/embedding-atlas/demo/

  • 公式ドキュメント
    https://apple.github.io/embedding-atlas/

Embedding Atlasとは?

Embedding Atlas は、高次元ベクトルデータ(埋め込み)をブラウザで対話的に可視化できるツールです。
Apple の研究チームが arXiv で論文発表もしており、WebGPU の高速レンダリングに加えて、クラスタリングや密度推定、Nearest Neighbors 検索、複数ビュー連動などの分析機能をワンストップで提供します。

公式の使い方ドキュメント

インストールと起動

1. Python CLI

pip install embedding-atlas
embedding-atlas your_data.parquet

Parquet 形式のテーブル(行:埋め込みベクトル+メタデータ)を指定するだけで、ブラウザ GUI が立ち上がります。

2. Jupyter ウィジェット

from embedding_atlas.widget import EmbeddingAtlasWidget
EmbeddingAtlasWidget(df, x="proj_x", y="proj_y", text="label")

Notebook 内に埋め込みビューが埋め込まれます。

3. Web コンポーネント(npm)

npm install embedding-atlas

React/Svelte などに <EmbeddingAtlas …/> として組み込めます。

サンプル1:Iris データでお試し

まずは手軽な Iris データセット(150 サンプル、4 次元)で動作確認。

Iris → UMAP → Parquet 変換

make_iris.py
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
import umap

# ① Iris データを読み込む
data = load_iris()
X = data.data  # (150,4)

# ② DataFrame 作成 + ラベル
df = pd.DataFrame(X, columns=[f"x{i}" for i in range(4)])
df["label"] = pd.Categorical.from_codes(data.target, data.target_names)

# ③ UMAP で 2D 投影
reducer = umap.UMAP(n_neighbors=15, min_dist=0.1, random_state=42)
proj = reducer.fit_transform(X)  # (150,2)
df["proj_x"], df["proj_y"] = proj[:,0], proj[:,1]

# ④ Parquet 出力
df.to_parquet("iris_with_proj.parquet", index=False)
print("✅ iris_with_proj.parquet を出力しました")

Embedding Atlas で可視化

embedding-atlas iris_with_proj.parquet \
  --x proj_x --y proj_y --text label

Iris の 3 品種がきれいにクラスタリングされました。


サンプル2:Kaggle “NeurIPS – Ariel Data Challenge 2025” データ

1,100 惑星規模のスペクトルデータを可視化。

前処理+UMAP 変換スクリプト

#!/usr/bin/env python3
# make_NeurIPS_Ariel_Data_2025.py

import os
import pandas as pd
import umap

# ファイルパス
STAR_INFO = "/Volumes/data/kaggle_dataset/ariel-data-challenge-2025/train_star_info.csv"
WAVELENGTHS = "/Volumes/data/kaggle_dataset/ariel-data-challenge-2025/wavelengths.csv"
TRAIN_CSV = "/Volumes/data/kaggle_dataset/ariel-data-challenge-2025/train.csv"
OUT_PQ = "ariel_embeddings.parquet"

# メタデータ読み込み
star_info = pd.read_csv(STAR_INFO, index_col="planet_id")

# wavelengths.csv の先頭行を波長配列として取得
wl_df = pd.read_csv(WAVELENGTHS)
wavelengths = wl_df.iloc[0].values  # (283,)

# train.csv 読み込み
train = pd.read_csv(TRAIN_CSV, index_col="planet_id")
flux_cols = train.columns.tolist()   # 全 283 列
X = train[flux_cols].values          # (1100,283)

# UMAP 投影
reducer = umap.UMAP(n_neighbors=20, min_dist=0.1, random_state=42)
proj = reducer.fit_transform(X)      # (1100,2)

# DataFrame 結合
col_names = [f"flux_{w:.3f}" for w in wavelengths]
df = pd.DataFrame(X, columns=col_names, index=train.index)
df = df.join(star_info, how="left")
df["proj_x"], df["proj_y"] = proj[:,0], proj[:,1]

# Parquet 出力
df.to_parquet(OUT_PQ)
print(f"{OUT_PQ} を出力しました (shape={df.shape})")

可視化

embedding-atlas ariel_embeddings.parquet \
  --x proj_x --y proj_y --text planet_id

サンプル3:CHB-MIT EEG データ(44セッション & ウィンドウ分割)

(次回の記事にします)


まとめ

Embedding Atlas は「行=埋め込み+メタデータ」の Parquet さえ用意できれば、
– 数百万点でも高速に描画
– 自動クラスタリング/密度推定/最近傍探索
– メタデータ連携ビューでフィルタ&カラー
がノーコードに近いレベルで使えます。

データサイエンスや研究、ダッシュボードへの組み込みなど、多彩な用途でぜひお試しください!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?