34 Rate this article:
No rating

IDLを使った天体分類事例:SVMによる銀河・恒星・クエーサー識別

IDLで完結する機械学習ワークフロー

IDLには機械学習ライブラリが標準搭載されており、データの前処理から学習・評価までをIDLのみで行うことができます。
今回の事例では、Sloan Digital Sky Survey (SDSS) のDR14に含まれる5バンド光度(紫外から赤外)と赤方偏移を特徴量として使用し、銀河・恒星・クエーサーの3クラス分類に取り組みました。
データのシャッフルには IDLmlShuffle、正規化には IDLmlVarianceNormalizer を用い、さらにIDLmlPartitionで学習とテストデータを8:2に分割しています。 このように、天体データ解析で必要な処理がスクリプトの流れとして自然に記述できる点がIDLの魅力です。

SVMによる分類とその精度

分類モデルにはRBFカーネルを用いた IDLmlSupportVectorMachineClassification を使用し、Train メソッドで学習を行います。
学習後は IDLmlTestClassifier によって精度と混同行列を評価できます。今回のSDSSデータセットでは、 95%以上の精度で対象天体の分類が行えることを確認しました。
天体分類では、特徴量数が多くない場合でもSVMが高い性能を発揮し、初期解析の段階で結果を素早く得たい場面に適しています。


; データのシャッフル
IDLmlShuffle, data, labels

; 正規化処理
Normalizer = IDLmlVarianceNormalizer(data)
Normalizer.Normalize, data

; モデルの学習用とテスト用に分割
Part = IDLmlPartition({train:80, test:20}, data, labels)

; モデルの定義と学習
Classifier = IDLmlSupportVectorMachineClassification(nAttributes, uniqueLabels)
Loss = Classifier.Train(part.train['data'], LABELS=part.train['labels'])

; 学習済みモデルの評価
confMatrix = IDLmlTestClassifier(Classifier, part.test['data'], $
                        part.test['labels'], ACCURACY=accuracy, COLUMN_TOTALS=trues)

可視化と応用可能性

IDLの利点は、分類結果の可視化まで同じ環境で完結できる点です。この特性を活かし、特徴量のヒートマップやヒストグラム、混同行列をすぐに描画できるため、誤分類点の傾向や特徴量空間の分布を直感的に理解できます。
研究の探索フェーズで試行錯誤を繰り返す際、環境を切り替えることなく解析を進められることは大きなメリットです。
本事例は、IDLを使った天文データ解析における機械学習の有効性を示す好例であり、応用範囲もさらに広がっていくと考えています。

実行サンプル
IDLを使った天体分類事例:SVMによる銀河・恒星・クエーサー識別