-- Views
December 16, 25
スライド概要
次元圧縮
分類
クラスタリング
マテリアルズインフォマティクスチュートリアル
KNIMEによるマテリアル ズ・インフォマティクスハ ンズオン 第二回 2025/11/30版 木野日織 (きのひおり)
今回行うこと 第一回目のワークフローのつくり方や回帰 の知識を既知として説明を行ないます。 今回は Orange Data Miningを用いて • 回帰 • 次元圧縮 • 分類(classification) • クラスタリング(clustering) を物質データに対して行う。 分類ワークフロー例
教材ファイル githubからインストールしたフォルダを{prefix}にインストールする。 {prefix}以下には {prefix}/data/ --- 観測データファイル,新規データファイル {prefix}/data_generated/ --- 作成されるデータの保存場所 {prefix}/workflow/ --- ワークフロー保存場所 サブフォルダが存在するはず。
目次 タスク1:次元圧縮ワークフロー タスク2:分類ワークフロー タスク3:クラスタリングワークフロー
次元圧縮 多次元のデータをより低次元のデータに変換するための手法の一つ。 利点: 手法例 1. ノイズの除去: 圧縮プロセス中に無関係 な特徴やノイズが取り除かれる。この ため機械学習の性能が向上する場合が ある。また,説明変数をまとめること で,説明変数数を減らす。 代数的な構造(共分散)を用いる手法 例: PCA 2. データ視覚化: 人間が理解できる次元 (2Dまたは3D)にデータを変換するこ とで、データパターンや構造を視覚化 できます。 データ間の距離を用いる手法 例:多様体学習
主成分分解(PCA) 分布の長軸から順に座標変換した変数の組み合わせ(変数 軸)を選ぶ。各軸は直交する。 𝑥2 PCA2 PCA1 主成分が大きい次元(変換された 説明変数)から利用する。 主成分の値から ある次元の寄与率 累積寄与率(=ある次元までの主 成分の和/全部の主成分の和) が評価できる。 𝑥1
多様体学習 データ間の距離をなるべく保持するように次元圧縮を行う。 MDS: 全距離を用いた多様体学習。 t-SNE: 近距離のみを用いた多様体学習 など ① 多次元空間 ② データ間の距離行列 ③低次元空間
観測データ 鉄構造データ ファイル:{prefix}/data/Fe2_descriptor.csv 21データインスタンス materials projectから取得した鉄のFCC,BCC,HCP構造を 1. 長周期構造に変換し。 2. 原子位置に微小変異を加え, 3. Behlerの二体対称性関数を用いて説明変数に変換した。 このデータには目的変数は存在しません。 説明変数: Behlerの二体対称性関数のパラメタを用いた変数名 a0.70_rp2.40, a0.70_rp3.00, a0.70_rp3.60, a0.70_rp4.20, a0.70_rp4.80, a0.70_rp5.40 目的変数ではないが, 元構造データ:FCC,BCC,HCP を記載。
多次元データの可視化 問題:多次元データをどう可視化する? 次元圧縮して2次元、3次元に変換して可視化する。 今回は2次元に変換して可視化する。
観測データファイル ① 元構造名+ID ③元構造から生成→ ④微小変異構造から生成 ②構造類型
PCAを行うワークフロー ⑤PCA変換関数の作成 ①CSVファイルの 読み込み選択 ④可視化のための 色付け ②カラム選択 ③規格化 ⑤可視化 ④PCAの適用
PCA ③Z-score normalization ④ polytypeを選択 ①data_calculated¥Fe2_descriptor.csv を読み込む。 ⑤Fe-bcc, Fe-fcc, Fe-hcp が表示される。 ⑥Palettesの[Set1]を 例えば、選択する。 ②選択
PCA ①選択 ② 2を選択。 累積寄与率 (96%)も 表示される。
PCA Fe-bcc Fe-fcc Fe-hcp 6 次元の説明変数を、データの 96% の情報量 を保ちながら 2 次元に縮約して表示できた。
PCAの寄与率の評価 ①Pythonを用いた寄与率の計算 追加 ②寄与率の可視化
PCAの寄与率の評価 import knime.scripting.io as knio import pandas as pd import numpy as np df = knio.input_tables[0].to_pandas() N = df.shape[0] rank = [i for i in range(1,N+1)] values = df.iloc[:,0].values total = np.sum(values) ratio = values / total cumulative = np.cumsum(ratio) # 出力データフレーム作成 df_out = pd.DataFrame({ "principal component index": rank, "explained variance ratio": ratio, "cumulative explained variance": cumulative }) knio.output_tables[0] = knio.Table.from_pandas( df_out )
PCAの寄与率の評価 ①Principal component index ③hoverすると値 が表示されます。 ②選択 何次元とると何%の累積寄与率か が表示された。
多様体学習を用いた次元圧縮 ⑤MDSを用いた次元圧縮 ③規格化 ⑥可視化 ①CSVファイ ルの読み込み ④可視化時の 色設定 ②使用するカ ラムの選択 ⑦t-SNEをもち いた次元圧縮 ⑧可視化
多様体学習を用いた次元圧縮 変更部分
MDS ①二次元に次元圧縮す るには2とする ②Euclideanとする
MDS ①選択 ②二次元に次元圧縮 するには2とする。 乱数により結果が大 きく異なります。 PCAより異なる polytype間が分離して いるように見える (かもしれない)。 ③Perplexity<データ数/3 とする。(利用するア ルゴリズムの場合) ④乱数 Perplexity:次元圧縮時に使用する近接データ数。小さい と少ない近接データ数を選択する。
目次 タスク1:次元圧縮ワークフロー タスク2:分類ワークフロー タスク3:クラスタリングワークフロー
分類(classification) 目的変数がカテゴリ変数である場合の予測値を得る問題です。 カテゴリ変数:数量的な意味を持たない変数です。 問題例) 1. ある閾値以上の性能値を示す材料かどうか。 目的変数:「ある閾値以上の性能値」と「ある閾値未満の性能値」 2. 結晶構造がBCC,FCC,HCPかどうか。 目的変数:BCC,FCC,HCP
分類 二値分類のロジスティック回帰 𝑓 𝑥 : 線形回帰モデル, 𝑤𝑖 :線形回帰モデルの係数 あるクラスと予測される確率 1 𝑃 𝑥Ԧ = 1 + exp(−𝑓 𝑥 ) 別なクラスと予測される確率は1 − 𝑃 𝑥Ԧ 確率 予測値 O, O, X, O, X, X しきい値0.5 データインスタンス 線形関数𝑓(𝑥)に対して、 Ԧ 罰則項を含む 1 𝐿𝑐𝑙𝑠 = C σ𝑖 −𝑦𝑖 log 𝑃 𝑥𝑖 − 1 − 𝑦𝑖 log 1 − 𝑃 𝑥𝑖 + 𝑛 𝑤 𝑛 を最小化する。σ𝑖 は和の規格化を含む。 Cはハイパーパラメタで,妥当な分類モデルになるように選択す る。
分類 多値分類 multinomial logistic regression(多項ロジスティック回帰) 全クラスの確率の合計が 1 でクラス 𝑘 の確率が計算できる 以下の確率を考える。 exp 𝑤𝑘𝑇 𝑥 𝑃 𝑦=𝑘𝑥 = 𝐾 σ𝑗 exp(𝑤𝑗𝑇 𝑥) ここで 𝑤𝑘 :クラス k の係数ベクトル 𝑥:説明変数 Kクラスあると、K-1個の𝑤𝑘 を同時に学習する。 (𝑃(𝑦 = 𝐾|𝑥) = 1 − σ𝐾−1 𝑗=1 𝑃(𝑦 = 𝑗|𝑥)だから。) 予測値 C1 C1 C2 C2 C3 C3 確率 𝑃(𝑘 = 3|𝑥) 𝑃(𝑘 = 2|𝑥) 𝑃(𝑘 = 1|𝑥) データインスタンス
分類評価指標 混同行列 評価指標 観測値 予測値 bcc fcc bcc fcc hcp misc 8 1 3 1 0 5 2 2 hcp 6 6 17 9 misc 0 8 2 33 正答率(Accuracy)=(8+5+17+33)/103=0.61
分類評価指標 観測値 混同行列 個別評価指標 予測値 bcc fcc hcp misc bcc 8 0 6 0 fcc 1 5 6 8 hcp 3 2 17 2 misc 1 2 9 33 再現率(Recall):fcc再現率=5/(1+5+6+8)=0.25 適合率(Precision):fcc適合率=5/(5+2+2)=0.56 𝑅𝑒𝑐𝑎𝑙𝑙×𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑡𝑜𝑛 F1スコア=2 𝑅𝑒𝑐𝑎𝑙𝑙+𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛
分類評価指標 観測値 混同行列 個別評価指標 予測値 bcc fcc hcp misc bcc 8 0 6 0 fcc 1 5 6 8 hcp 3 2 17 2 misc 1 2 9 33 再現率(Recall):fcc再現率=5/(1+5+6+8)=0.25 適合率(Precision):fcc適合率=5/(5+2+2)=0.56 𝑅𝑒𝑐𝑎𝑙𝑙×𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑡𝑜𝑛 F1スコア=2 𝑅𝑒𝑐𝑎𝑙𝑙+𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛
分類評価指標 観測値 混同行列 個別評価指標 予測値 bcc fcc hcp misc bcc 8 0 6 0 fcc 1 5 6 8 hcp 3 2 17 2 misc 1 2 9 33 再現率(Recall):fcc再現率=5/(1+5+6+8)=0.25 適合率(Precision):fcc適合率=5/(5+2+2)=0.56 𝑅𝑒𝑐𝑎𝑙𝑙×𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑡𝑜𝑛 F1スコア=2 𝑅𝑒𝑐𝑎𝑙𝑙+𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 分類モデルの指標(個別でなく全体の指標)と しては、例えば、加重平均を取る。
観測データ 単元素からなる物質の基底状態の結晶構造データ ファイル:{prefix}/data/ mono_structure_descriptor_Orange.csv 説明変数 min_oxidation_state, max_oxidation_state: min. and max of oxidation state Row, group: row or group of the periodic table s p d f: valence electrion occupation atomic_radius_calculated: calculated atomic radius X(chi), IP, EA : electronegativity, ionization potential, electron affinity 目的変数 1.bcc (blue) 2.fcc (green) 3.hcp (red) 4.misc (black)
分類ワークフロー ⑤線形回帰 モデル係数 の表示 ⑧混同行列 ①CSVファイ ルの読み込 み ⑨分類モデ ル評価指標 値の表示 ②規格化 ③訓練・テ ストデータ への分割 ④logistic回 帰モデルの 作成 ⑥logistic回 帰モデルの 予測 ⑦回帰評価 指標の作成
分類ワークフロー ①data¥mono_structure_str.csv を選択。 ②Z-scoreを選択 ③ 70%、ランダムサ ンプリングを選択
分類ワークフロー ①crystal_structureを選択 ②Z, symbolを選択 ③残りのカラムが選 択される。
分類ワークフロー ①選択 1 𝑤𝑛 𝑛 ②n=1(Laplace), n=2(Gaussian) を選択可能 ③Cの値
分類ワークフロー [Node dialog]
分類ワークフロー 𝑤𝑏𝑐𝑐 下へスクロール 𝑤𝑚𝑖𝑠𝑐 𝑤𝑓𝑐𝑐 下へスクロール
Logistic Regression Learner Reference category: hcpとしていたので 𝑤𝑏𝑐𝑐 , 𝑤𝑓𝑐𝑐 , 𝑤𝑚𝑖𝑠𝑐 を求めていた。
混同行列の表示 [Node dialog] 混同行列 ③予測値 ①全部 選択 ②観測値 fccと予測された データインスタン スがない。
分類ワークフロー ③crystal_structure ④Prediction(crystal_structure) ①指定していないと予測値カラム名は “Prediction (目的変数名)”となる。
分類性能評価指標値 ④0割をしているなどで答えがNaN [Node dialog] ①選択 ②Show RowIDs ③=F1-socre ④Scorerでは個別目的値にしか表示されない。 データ全体の評価指標は加重平均などを用いる。 (KNIMEのScorerでは計算されない。)
ハイパーパラメタを変えて分類性能を確認す る Regularization: Laplace Variance: 100 Regularization: Laplace Variance: 10 Regularization: Laplace Variance: 0.1
Logistic回帰の係数の解析 追加 ①回帰係数Tableの変換 ②回帰係数の表示
Logistic回帰の係数の解析 Abs(Coef.(…))をbar表示にする。 ①Prior: Laplace, variance=25の場合 ②Table formatの変換を行う。 Coef.(bcc), Abs(Coef.(bcc)), …などと変換する。
Logistic回帰の係数 C=25での係数の絶対値が大きい説明変数を以下に記す。カッコ内が符号を含めた値。 |atomic_radius_calculated係数|が共通して大きい。 bccでは, |min_oxidization_state係数|が大きい。 Fcc, miscでは|p係数|が大きい など。 詳しく解析すると何かしら理由が分かるかもしれない。 しかし,これ以上は立ち入らない。
目次 タスク1:次元圧縮ワークフロー タスク2:分類ワークフロー タスク3:クラスタリングワークフロー タスク4:Orangeにおける欠損データの補間ワークフロー タスク5:Orange CSVファイルへの変換ワークフロー
クラスタリング 教師データ(ラベル)が存在しないデータから構造やパターンを見つけ出す手法。 ① クラスタ間に関係が無い ② クラスタ間に関係がある 例)K-Means 例)階層クラスタリング データをk個のクラスタに分ける。 クラスタを階層的に分けます。 距離を用いる。 各クラスタの中心(セントロイド)はその クラスタ内の全データポイントの平均で計 算され、各データポイントは最も近いセン トロイドのクラスタに割り当てられます。 結果としてクラスタの中心から等方的な分 割になる。 距離を用いる。 全てのデータポイントを個々のクラスタと して始め、最も似ているクラスタを繰り返 し結合する。 データ間の距離と,クラスタ間の距離の2 つの距離定義がある。
クラスタリング 教師データ(ラベル)が存在しないデータから構造やパターンを見つけ出す手法。 クラスタ間に関係が無い クラスタ間に関係がある 例)k-Means 例)階層クラスタリング データをk個のクラスタに分ける。 クラスタを階層的に分けます。 距離を用いる。 各クラスタの中心(セントロイド)はその クラスタ内の全データ点の平均で計算され、 各データ点は最も近い中心のクラスタに割 り当てられます。 結果としてクラスタの中心から等方的な分 割になる。 距離を用いる。 全てのデータ点を個々のクラスタとして始 め、最も似ているクラスタを繰り返し結合 する。 このため,データ間の距離と,クラスタ間 の距離の2つの距離定義がある。
問題設定 次元圧縮で用いた鉄構造データ BCC,FCC,HCPの3つの構造がありました。 クラスタリングを行うとどうなるのか。
ワークフロー ④k-Meansクラ スタリング ⑤PCAを用い た次元圧縮 ①CSVファ イルの読 み込み ⑦可視化 ⑥色追加 ⑪可視化 ②使用カラムの 選択 ⑩色追加 ③規格化 ⑧PCAを用い た次元圧縮 ⑨k-Meansクラ スタリング
ワークフロー ①元の次元でkMeansクラスタリン グをする。 ②PCAで次元圧縮し てからk-Meansクラ スタリングをする。
ワークフロー bcc,fcc,hcpの3グループが あると知っているため。 ⑥クラスタ数=3 ⑦乱数を設定 ②data_calculated¥Fe2_descriptor.csv を選択する。 ①今は使用しない。 ⑧選択 ③選択 ③選択 ⑤Z-score normalization
ワークフロー k-meansの乱数=0 k-meansの乱数=1 k-meansの乱数=2 k-meansの乱数=3 ①Color by “Cluster” ②どれかを選択 • • 乱数0,1は二次元で見ると妥当でないクラスタリング をしている。 乱数2,3は期待通りにクラスタリングできている。
PCAで二次元に次元圧縮してからk-Means クラスタリングを行う。 k-meansの乱数=0 k-meansの乱数=1 k-meansの乱数=2 k-meansの乱数=3 • 乱数に依存しないクラスタリング結果 • 一点のみ人間の判断と異なる。
次元圧縮と正規化とクラスタリングの関 係 高次元ではPCAの二次元で見た空間とは異なる。クラスタリング を妥当に行うことはより困難。 →次元圧縮と正規化を適切に行ったほうが妥当なクラスタリング が行える場合が多いようです。 分類問題も問題毎に次元圧縮と規格化適切に使用すると性能が向 上する場合があります。
クラスタリング 教師データ(ラベル)が存在しないデータから構造やパターンを見つけ出す手法。 クラスタ間に関係が無い クラスタ間に関係がある 例)k-Means 例)階層クラスタリング データをk個のクラスタに分ける。 クラスタを階層的に分けます。 距離を用いる。 各クラスタの中心(セントロイド)はその クラスタ内の全データポイントの平均で計 算され、各データポイントは最も近いセン トロイドのクラスタに割り当てられます。 結果としてクラスタの中心から等方的な分 割になる。 距離を用いる。 全てのデータ点を個々のクラスタとして始 め、最も似ているクラスタを繰り返し結合 する。 データ間の距離と,クラスタ間の距離の2 つの距離定義がある。
階層クラスタリングワークフロー ④木構造に 可視化 ⑤図の表示 データインスタンスの 階層クラスタリング ①利用カラ ム選択 ②規格化 記述子の 階層クラスタリング ③距離行列 の作成 ③階層クラ スタリング 実行
階層クラスタリングワークフロー ①データインスタン スの階層クラスタリ ング ②行列の転置 ③記述子の 階層クラスタリン グ
データインスタンスの階層クラスタリン グ ①data_calculated¥Fe2_descriptor.csv を読む ④Distance Selection: Euclidean ⑤選択 ②選択 ②選択 ③Z-score normalization ⑥追加カラム名がDistanceで あることを確認
データインスタンスの階層クラスタリン グ ①Distance Matrix Calculateで作成し たカラム名 Distance ④”Create image at output”を選択 ③選択 ②何かを選択
データインスタンスの階層クラスタリン グ ↑この赤線は図の赤線 全てのデータ点を個々のクラスタとして始め、最も 似ているクラスタを繰り返し結合する。 ①図の縦軸は距離の値:下から上へ値が大きくなる。 ②ある距離でそれまで下側にあった二つのクラス ターを一つのクラスタに結合した。 ③bcc,fcc,hcpクラスタがそれぞれ,大きな距離で初 めて一つになる。 ④ bcc,fcc,hcpに合ったクラスタリングが行えている。 hcp bcc fcc
Linkageの説明 Linkageの説明 Linkage type: • Single Linkage • Average Linkage • Complete Linkage が選択可能 Single linkage: 2つのクラスタのうち、最も近い要素同士の距 離を用いてクラスタ間距離を計算する。 Average linkage: 2つのクラスタに含まれる全ての要素間距離の 平均をクラスタ間距離として計算する。 Complete linkage: 2つのクラスタのうち、最も遠い要素同士の距 離をクラスタ間距離として計算する。
Linkageの説明 Single Linkage Average Linkage ✓ Linkageにより図が異なる。 Complete Linkage
階層クラスタリングの距離の選び方 Complete Linkageのbcc部分を拡大 Q.[Distances]の距離と[Hierarchical Clustering] の距離はどう選べば良いのでしょうか。 A.階層クラスタリングはinteractiveな手法で す。 距離の選び方:解析者が見たい見え方にな るように選びます。 鉄結晶データの場合はBCC,FCC,HCP構造が最 後に一つになりました。これは解析者が見 たい見え方です。この見方の元に各構造や クラスタがどれだけ近いのかをデータ解析 学の観点で明らかにすることができます。 ① ② ③ 相対的に ①bcc_09,00が距離が近い構造。 ②bcc_02,11が元構造のbccに最も距離が近い構造。 ③bcc_08, 03が②の構造の次に元構造のbccに近い構造
記述子の階層クラスタリング データインスタンス 記述子 データインスタンス 記述子 transpose データインスタンスの 階層クラスタリング 記述子の 階層クラスタリング
記述子の階層クラスタリング ↑この赤線は図の赤線 Tableの転置 …残念ながらKNIMEでは長い名前が読み取れない。
引用 単元素結晶:WikipediaとPymatgen 鉄結晶:Materials Project Database, Jörg Behler and Michele Parrinello, PRL 98, 14641 (2007).
今回行ったこと Orange Data Miningを用いて • 回帰 • 次元圧縮 • 分類(classification) • クラスタリング(clustering) を物質データに対して行った。
以上です。 お疲れ様でした。