223 Views
December 16, 25
スライド概要
次元圧縮
分類
クラスタリング
マテリアルズインフォマティクスチュートリアル
KNIMEによるマテリアルズ・ インフォマティクスハンズオン 第二回 2025/11/30版 木野日織 (きのひおり)
今回行うこと KNIMEワークフローのつくり方や回帰の知識 を既知として説明を行ないます。 今回は KNIMEを用いて • 回帰 • 次元圧縮 • 分類(classification) • クラスタリング(clustering) を物質データに対して行う。 分類ワークフロー例
教材ファイル Githubからインストールしたフォルダを{prefix}にインストールしたとする。 {prefix}以下には {prefix}/data/ --- 観測データファイル,新規データファイル {prefix}/data_calculated/ ---観測データファイル,新規データファイル (便宜上data/と分けてある。) {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 ②構造類型 ④元構造から生成→ (polytype) ⑤微小変異構造から生成 (polytype-番号) ③Behlerの二体対称性関数のパラメタを用いた変数名
次元圧縮を行うワークフロー 1. PCAを行うワークフロー 2. 多様体学習を行うワークフロー
次元圧縮を行うワークフロー 1. PCAを行うワークフロー 2. 多様体学習を行うワークフロー
PCAを行うワークフロー 03_01_PCA ⑤PCA変換関数の作成 ①CSVファイルの 読み込み ⑦可視化 ④可視化のための 色付け ②カラム選択 ③規格化 ⑥PCAの適用
PCA ③Z-score normalization ④ polytypeを選択 ①data_calculated¥Fe2_descriptor.csv を読み込む。 ⑤Fe-bcc, Fe-fcc, Fe-hcp が表示される。 ⑥Palettesの[Set1]を 例えば、選択する。 ②選択
PCA ③累積寄与率(96%) も表示される。 ② 2を選択。 ①選択
PCA Fe-bcc ①Color Managerの Node monitor Fe-fcc Fe-hcp ②6 次元の説明変数を、データの 96% の情報 量を保ちながら 2 次元に縮約して表示できた。 ③ Fe-bcc, Fe-fcc, Fe-hcpの表示領域が分かれて 表示された。
PCAの寄与率の評価 03_02_PCA_exp ①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すると値 が表示されます。 ②選択 何次元とると何%の累積寄与率か が表示された。
次元圧縮 多次元のデータをより低次元のデータに変換するための手法の一つ。 低次元への可視化例ワークフローを紹介しました。
次元圧縮を行うワークフロー 1. PCAを行うワークフロー 2. 多様体学習を行うワークフロー
多様体学習を用いた次元圧縮 03_03_ML ⑤MDSを用いた次元圧縮 ③規格化 ⑥MDS結果の 可視化 ①CSVファイ ルの読み込み ④可視化時の 色設定 ②使用するカ ラムの選択 ⑦t-SNEをもち いた次元圧縮 ⑧t-SNE結果の 可視化
多様体学習を用いた次元圧縮 変更部分
MDS ①二次元に次元圧縮す るには2とする ②Euclideanとする
t-SNE ①選択 ⑥乱数により結果が 大きく異なります。 ②二次元に次元圧縮 するには2とする。 ④Perplexity<データ数/3 とする。(利用するア ルゴリズムによる) ⑤乱数 ③Perplexity:次元圧縮時に使用する近接データ数。小さ いと少ない近接データ数を選択する。
目次 タスク1:次元圧縮ワークフロー タスク2:分類ワークフロー タスク3:クラスタリングワークフロー
分類(classification) 目的変数がカテゴリ変数である場合の予測値を得る問題です。 カテゴリ変数:数量的な意味を持たない変数です。 問題例) 1. ある閾値以上の性能値を示す材料かどうか。 目的変数:「ある閾値以上の性能値」と「ある閾値未満の性能値」 2. 結晶構造がBCC,FCC,HCP,MISC(それ以外)かどうか。 目的変数:BCC,FCC,HCP,MISC
分類 二値分類のロジスティック回帰 𝑓 𝑥 : 線形回帰モデル, 𝑤𝑖 :線形回帰モデルの係数 あるクラスと予測される確率 1 𝑃 𝑥Ԧ = 1 + exp(−𝑓 𝑥 ) 別なクラスと予測される確率は1 − 𝑃 𝑥Ԧ 𝑃 𝑥Ԧ O, 予測値 O, O, X, 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 hcp misc 評価指標 予測値 bcc fcc 8 0 1 5 3 2 1 2 hcp 6 6 misc 0 8 17 9 2 33 正答率(Accuracy)=(8+5+17+33)/103=0.61
分類評価指標 混同行列 個別評価指標 観測値 予測値 bcc fcc bcc fcc hcp 8 1 3 0 5 2 misc 1 2 hcp 6 6 17 9 misc 0 8 2 33 再現率(Recall):fcc再現率=5/(1+5+6+8)=0.25 適合率(Precision):fcc適合率=5/(5+2+2)=0.56 𝑅𝑒𝑐𝑎𝑙𝑙×𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑡𝑜𝑛 F1スコア=2 𝑅𝑒𝑐𝑎𝑙𝑙+𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛
分類評価指標 混同行列 個別評価指標 観測値 予測値 bcc fcc bcc fcc hcp 8 1 3 0 5 2 misc 1 2 hcp 6 6 17 9 misc 0 8 2 33 再現率(Recall):fcc再現率=5/(1+5+6+8)=0.25 適合率(Precision):fcc適合率=5/(5+2+2)=0.56 𝑅𝑒𝑐𝑎𝑙𝑙×𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑡𝑜𝑛 F1スコア=2 𝑅𝑒𝑐𝑎𝑙𝑙+𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛
分類評価指標 混同行列 個別評価指標 観測値 予測値 bcc fcc bcc fcc hcp 8 1 3 0 5 2 misc 1 2 hcp 6 6 17 9 misc 0 8 2 33 再現率(Recall):fcc再現率=5/(1+5+6+8)=0.25 適合率(Precision):fcc適合率=5/(5+2+2)=0.56 𝑅𝑒𝑐𝑎𝑙𝑙×𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑡𝑜𝑛 F1スコア=2 𝑅𝑒𝑐𝑎𝑙𝑙+𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 =2*0.25*0.56/(0.25+0.56)=0.35 分類モデルの指標(個別でなく全体の指標)と しては、例えば、加重平均を取る。
分類を行うワークフロー 多値問題のLogistic regressionを行うワークフロー (交差検定は行わず)一組の訓練データ・テスト データに分割する。
観測データ 単元素からなる物質の基底状態の結晶構造データ ファイル:{prefix}/data/ mono_structure_str.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)
分類ワークフロー 04_01_logistic_regression ⑤線形回帰 モデル係数 の表示 ⑧混同行列 ①CSVファイ ルの読み込 み ⑨分類モデ ル評価指標 値の表示 ②規格化 ③訓練・テ ストデータ への分割 ④logistic回 帰モデルの 作成 ⑥logistic回 帰モデルの 予測 ⑦回帰評価 指標の作成
分類ワークフロー ①data¥mono_structure_str.csv を選択。 ②Z-scoreを選択 ③ 70%、ランダムサ ンプリングを選択
分類ワークフロー ①crystal_structureを選択 ②hcpを選択 ③Reference category: 𝑤𝑘 を 評価しないクラスのこと ④Z, symbolを選択 ⑤残りのカラムが選 択される。
分類ワークフロー ①選択 1 𝑤𝑛 𝑛 ②n=1(Laplace), n=2(Gaussian) を選択可能 ③Cの値
分類ワークフロー [Node dialog]
分類ワークフロー 𝑤𝑏𝑐𝑐 下へスクロール 𝑤𝑚𝑖𝑠𝑐 𝑤𝑓𝑐𝑐 下へスクロール
分類ワークフロー ③crystal_structure ④Prediction(crystal_structure) ①指定していないと予測値カラム名は “Prediction (目的変数名)”となる。
混同行列の表示 [Node dialog] 混同行列 ③予測値 ①全部 選択 ②観測値
分類性能評価指標値 ④0割をしているなどで答えがNaN ③=F1-socre [Node dialog] ①選択 ②Show RowIDs ⑤Scorerでは個別目的値にしか表示されない。 データ全体の評価指標は加重平均などを用いる。 (KNIMEのScorerでは計算されない。)
ハイパーパラメタを変えて分類性能を確認する Regularization: Laplace Variance: 100 Regularization: Laplace Variance: 10 Regularization: Laplace Variance: 0.1
Logistic回帰の係数の可視化解析 追加 04_02_logistic_regression_coef ①回帰係数のTable Dataへの 変換 ②回帰係数の表示
Logistic回帰の係数の解析 ④Abs(Coef.(…))をbar表示にする。 ①Prior: Laplace, variance=25 ②Table formatの変換を行う。 Coef.(bcc)をAbs(Coef.(bcc)), …などと変換する。 (scriptは表示しない。) ③[下v]マークを押すと 表示形式の選択可能
Logistic回帰の係数 C=25での係数の絶対値が大きい説明変数を以下に記す。 ✓ |atomic_radius_calculated係数|が共通して大きい。 ✓ bccでは, |min_oxidization_state係数|が大きい。 ✓ Fcc, miscでは|p係数|が大きい 詳しく解析すると何かしら理由が分かるかもしれない。 しかし,これ以上は立ち入らない。
目次 タスク1:次元圧縮ワークフロー タスク2:分類ワークフロー タスク3:クラスタリングワークフロー
クラスタリング 教師データ(ラベル)が存在しないデータから構造やパターンを見つけ出す手法。 ① クラスタ間に関係が無い ② クラスタ間に関係がある 例)K-Means 例)階層クラスタリング データをk個のクラスタに分ける。 クラスタを階層的に分けます。 距離を用いる。 各クラスタの中心(セントロイド)はその クラスタ内の全データポイントの平均で計 算され、各データポイントは最も近いセン トロイドのクラスタに割り当てられます。 結果としてクラスタの中心から等方的な分 割になる。 距離を用いる。 全てのデータポイントを個々のクラスタと して始め、最も似ているクラスタを繰り返 し結合する。 データ間の距離と,クラスタ間の距離の2 つの距離定義がある。
クラスタリング 教師データ(ラベル)が存在しないデータから構造やパターンを見つけ出す手法。 クラスタ間に関係が無い クラスタ間に関係がある 例)k-Means 例)階層クラスタリング データをk個のクラスタに分ける。 クラスタを階層的に分けます。 距離を用いる。 各クラスタの中心(セントロイド)はその クラスタ内の全データ点の平均で計算され、 各データ点は最も近い中心のクラスタに割 り当てられます。 結果としてクラスタの中心から等方的な分 割になる。 距離を用いる。 全てのデータ点を個々のクラスタとして始 め、最も似ているクラスタを繰り返し結合 する。 このため,データ間の距離と,クラスタ間 の距離の2つの距離定義がある。
クラスタリングを行うワークフロー 1. kMeansによるクラスタリングを行うワークフロー 2. 階層クラスタリングを行うワークフロー
問題設定 次元圧縮で用いた鉄構造データ BCC,FCC,HCPの3つの構造がありました。 クラスタリングを行うとどうなるのか。
ワークフロー ④k-Meansクラ スタリング 05_01_kmeans ⑤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 ①出力: 2次元 ②Color by “Cluster” ③どれかを選択 • • 乱数0,1は二次元で見ると妥当でないクラスタリング をしている。 乱数2,3は一点異なっているが期待通りにクラスタリ ングできている。
PCAで二次元に次元圧縮してからkMeansクラスタリングを行う。 k-meansの乱数=0 k-meansの乱数=1 k-meansの乱数=2 k-meansの乱数=3 • 一点のみ人間の判断と異なるが、(先ほどと 同じ) • 乱数に依存しないクラスタリング結果
次元圧縮と正規化とクラスタリングの関係 高次元ではPCAの二次元で見た空間とは異なる。クラスタリング を妥当に行うことはより困難。 →次元圧縮と正規化を適切に行ったほうが妥当なクラスタリング が行える場合が多いようです。 分類問題も問題毎に次元圧縮と規格化を適切に使用すると性能が 向上する場合があります。
クラスタリングを行うワークフロー 1. kMeansによるクラスタリングを行うワークフロー 2. 階層クラスタリングを行うワークフロー
階層クラスタリングワークフロー 05_02_hierarchical_clustering ⑥樹構造に 変換 ①ファイル 読み込み ⑦図の表示 データインスタンスの 階層クラスタリング ②利用カラ ム選択 ③規格化 記述子の 階層クラスタリング ④距離行列 の作成 ⑤階層クラ スタリング 実行
階層クラスタリングワークフロー ②データインスタンス の階層クラスタリング ③記述子の 階層クラスタリング ①行列の転置
データインスタンスの階層クラスタリング ①data_calculated¥Fe2_descriptor.csv を読む ⑤Distance Selection: Euclidean ⑥選択 ③選択 ②選択 ④Z-score normalization ←⑦追加カラム名がDistance であることを確認
データインスタンスの階層クラスタリング ①Distance Matrix Calculateで作成し たカラム名 Distance ②Linkage type:デー タ間でなく、クラ スター間の距離を 定義。例えば、 Single linkageを選 択してください。 ④”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
階層クラスタリングの距離の選び方 Q.[Distances]の距離と[Hierarchical Clustering]の距離は どう選べば良いのでしょうか。 A.階層クラスタリングはinteractiveな手法です。 距離の選び方:解析者が見たい見え方になるように選 びます。 鉄結晶データの場合はBCC,FCC,HCP構造が最後に一つに なりました。これは解析者が見たい見え方です。 この見方の元に各構造やクラスタの詳細をデータ解析 学の観点で明らかにします。
記述子の階層クラスタリング 記述子 データインスタンス ① ② ③ データインスタンス 記述子 transpose データインスタンスの 階層クラスタリング ④ 記述子の 階層クラスタリング ?
記述子の階層クラスタリング ↑この赤線は図の赤線 Tableの転置 …残念ながらKNIMEでは長い名前が読み取れない。 ⇒説明変数間がどの程度類似しているかが分かる。
引用 単元素結晶:WikipediaとPymatgen 鉄結晶:Materials Project Database, Jörg Behler and Michele Parrinello, PRL 98, 14641 (2007).
今回行ったこと KNIMEを用いて • 回帰 • 次元圧縮 • 分類(classification) • クラスタリング(clustering) を物質データに対して行った。
以上です。 お疲れ様でした。