>100 Views
December 16, 25
スライド概要
線形回帰手法紹介
KNIMEの紹介
タスク1:初めてのワークフロー
タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー
タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー
タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
マテリアルズインフォマティクスチュートリアル
KNIMEによるマテリアル ズ・インフォマティクスハ ンズオン 第一回 2025/11/30版 木野日織 (きのひおり)
想定受講者と目的 想定受講者: 今回の目的 KNIMEの初心者 機械学習手法の初心者 下のワークフローを理解・作成できるようにな ること KNIMEのワークフロー例
目次 線形回帰手法紹介 KNIMEの紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
機械学習と回帰手法とは 機械学習: コンピュータがデータから自動的にルー ルやパターンを学ぶ手法のこと。 コンピュータに経験から学ぶ能力を持た せることで、データを解析し、予測や決 定を行う。 回帰の目的: 1.予測:未知のデータに対して目的変数 の値を予測する。 2.関係性の理解:各説明変数の重要性や、 説明変数の値が目的変数に与える影響の 度合いを理解する。 回帰: 連続変数データ間の関係を数学的な関数(方 程式)を使って表現する方法の一つ。 ChatGPTの答えに加筆
連続変数の予測手法 目的: 変数𝑥から変数𝑦を予測する,つまり, Ԧ 𝑦=𝑓(𝑥),もしくは Ԧ 𝑦~𝑓(𝑥) Ԧ となる 関数𝑓 を求める。 解法 1. 演繹法:原理から𝑦を評価する関数を得る。 方程式がある世界の予測。例)運動方程式, シュレディンガー方程式 2. 帰納法:観測データ(𝑥, Ԧ 𝑦)から新規𝑥Ԧ に対し て𝑦を評価する関数を得る。 いつ使う? 1. 方程式が存在しない場合。 2. 方程式を解くのに時間がかかるので短 時間に解きたい場合。 回帰は𝑦, 𝑥は連続変数,に対して適用される。 Ԧ ここで, • 𝑦:目的変数 • 𝑥:説明変数,デスクリプタ(descriptors) Ԧ と呼ばれる。
観測データと新規データ 新規データ: 𝑥に欠けが無い行列 Ԧ 観測データ:欠けが無い行列 𝑥Ԧi サイズN ID 𝒙𝟏 𝒙𝟐 ID1 𝑥11 ID2 𝑥21 𝑥Ԧ 𝑛𝑒𝑤 i サイズP … 𝒙P 𝒚 ID 𝒙𝟏 𝒙𝟐 𝑥12 𝑥1P 𝑦1 ID1 𝑥11 𝑥22 𝑥2P 𝑦2 ID2 𝑥21 … IDN … 𝒙P 𝒚 𝑥12 𝑥1P 𝑦1𝑛𝑒𝑤 𝑥22 𝑥2P 𝑦2new … 𝑥𝑁1 𝑥𝑁2 𝑥𝑁P 𝑦~𝑓 𝑥Ԧ となる関数𝑓 𝑦𝑁 ID𝑁 𝑛𝑒𝑤 𝑥𝑁new 1 𝑥𝑁new 2 𝑥𝑁new P 𝑦𝑁new 𝑛𝑒𝑤 𝑦𝑖𝑛𝑒𝑤 ~𝑓 𝑥Ԧ𝑖𝑛𝑒𝑤
線形回帰 解法: 𝑥𝑖0 = 1とすると,関数系は 線形回帰: 𝑃 データ間の関係を直線(または高次元空間では 平面や超平面)で表現する手法。 𝑦 = 𝑤𝑝 𝑥𝑝 𝑝=0 𝑃 𝑦 = 𝑤𝑝 𝑥𝑝 + 𝑤0 と書ける。具体的にデータをあらわに書くと 𝑝=1 観測データ(𝑥Ԧ𝑖 , 𝑦𝑖 ),(𝑖 = 1,2, . . 𝑁)から 𝑤0 , 𝑤1 , 𝑤2, … 𝑤𝑃 が得られる。 𝑤𝑝 :(線形回帰モデルの)係数(coefficients) 𝑤0 :(線形回帰モデルの)切片(intercept) 利点: 回帰モデルの意味が分かりやすい。 1 𝑦1 𝑦2 = 1 ⋮ 1 𝑥11 𝑥21 𝑥31 … … … 𝑤0 𝑤1 ⋮ 𝑦Ԧ = 𝑋𝑤 つまり,N=P+1として変数の数を合わせると 𝑤 = 𝑋 −1𝑦Ԧ して解けるはず。
線形回帰モデル解法 問題点: 処方箋: 線形回帰モデルでどう書けるのか解析者は知らな い,更に観測値には誤差がある。 与えた説明変数の線形モデルのみではyが 観測値とモデルの予測値の二乗誤差(残差)を 最小化する。つまり,コスト関数 𝑁 1 𝑦1 𝑦2 = 1 ⋮ 1 𝑥11 𝑥21 𝑥31 … … … 𝑤0 𝜖1 𝑤1 + 𝜖2 , ⋮ ⋮ 𝜖𝑖 は未知数を含めた式になるはず。 𝑁 𝐿 = 𝜖𝑖2 = 𝑦𝑖 − 𝑓 𝑥Ԧ𝑖 𝑖 2 𝑖 を最小にすることで𝑤𝑝 を計算する。 𝐿の値が小さいほど、モデル当てはめが良い= モデルがデータを良く説明(フィット)して いる,とする。 逆行列で無理やり解くわけにはいかない。 この際に,最適な説明変数はあらかじめ不明 なのでできるだけ多くの説明変数を用いるこ とがよく行われる。
共線性への対応 この際に,最適な説明変数はあらかじめ不明 なのでできるだけ多くの説明変数を用いるこ とがよく行われる。 事実: 共線性の影響を受けた線形モデルは|𝑤𝑝 |が大きい ことが多い。つまり,1程度の大きさのyを101- 100と計算している。 処方箋: 問題点: 説明変数サイズPが多いと数値的不安定性や, (多重)共線性の影響を受けやすくなる。 罰則項を取り入れる。 コスト関数に𝑤𝑝 の大きさの制限を加えて最小化 する。 𝑁 1 𝐿= 𝑦𝑖 − 𝑓 𝑥Ԧ𝑖 2𝑁 𝑖 定義(再): N:データインスタンス数 P:説明変数の種類数 2 + 𝛼 𝑤𝑝 𝑛 𝑝 意味:なるべく𝑤𝑝 の大きさを揃える。 n=1: Lasso n=2: Ridge回帰 α(ハイパーパラメタ):の決め方は後で示す。
LassoとRidge回帰 Ridge回帰 処方箋: w2 罰則項を取り入れる。 コスト関数に𝑤𝑝 の大きさの制限を加えて最小化 する。 𝑁 1 𝐿= 𝑦𝑖 − 𝑓 𝑥Ԧ𝑖 2𝑁 𝑖 2 + 𝛼 𝑤𝑝 第二項の Contour 𝑛 𝑝 意味:なるべく𝑤𝑝 の大きさを揃える。 n=1: Lasso n=2: Ridge回帰 第一項の Contour 第一項のみ の最適値 w1 第二項のみ の最適値 𝑤1 ≠ 0, 𝑤2 ≠ 0 Lasso w2 α(ハイパーパラメタ):の決め方は後で示す。 特徴: 1. 𝑤𝑝 の解が一つ。(Xの共線性の影響を受けない。) 2. Lassoは説明変数選択を同時に行う。 3. Lassoは𝑤𝑝 に0が多い場合はN<Pでも妥当な一意な解が 求まる。 w1 𝑤2 = 0,説明変数選択
回帰評価指標 よく用いられる回帰評価指標 𝑁 1 MSE = 𝑦𝑖 − 𝑓 𝑥Ԧ𝑖 𝑁 2 ←𝐿の第一項 𝑦 2 の単位 𝑖 RMSE = 小さい 程妥当 𝑀𝑆𝐸 yと同じ単位 にする。 𝑁 MAE = 1 |𝑦𝑖 − 𝑓 𝑥Ԧ𝑖 | 𝑁 𝑖 𝑁 σ 𝑖 𝑦𝑖 − 𝑓 𝑥Ԧ𝑖 𝑅2 = 1 − σ𝑁 ത 2 𝑖 𝑦𝑖 − 𝑦 どの程度“目的変数=予測値”なのか? 2 無次元 1以下の値を取る。 大きい 程妥当
未知データへの対応 以下は面倒なので 𝑥を𝑥 Ԧ と書く。 問題: 予測の本来の目的は訓練データ以外の未知データ に対して回帰モデル𝑓を用いて予測すること。 定量的な評価はどう行うのか? 本来行いたいことは? ①観測データで𝑓(𝑥)を作成する。 ②未知データで𝑓(𝑥)の回帰性能指標を評価する。 →しかし,未知データは回帰モデル作成時に存在しな いので評価不能。 代案: 1. 観測データを訓練データとテストデータに分ける。 観測データ分離方法: 1. 観測データを一組の訓練データ(train)とテ ストデータ(test)に分ける。 2. 観測データを複数の訓練データとテスト データに分ける。= 交差検定を行う。 2. ③訓練データで予測モデルを作成する。 3. ④テストデータに適用して回帰性能を評価する。 観測 データ 未知データ ① 𝑓(𝑥) ② 観測データ 訓練データ Training data テストデータ Test data ③ 𝑡𝑟𝑎𝑖𝑛④ 𝑓 (𝑥)
未知データへの対応 代案: 1. 観測データを訓練データとテストデータに分ける。 観測データ分離方法: 1. 観測データを一組の訓練データとテスト データに分ける。 2. 観測データを複数の訓練データとテスト データに分ける。 1. 交差検定を行う。 2. ③訓練データで予測モデルを作成する。 3. ④テストデータに適用して回帰性能を評価する。 観測データ 訓練データ Training data 𝑆𝑐𝑜𝑟𝑒 𝑡𝑟𝑎𝑖𝑛 テストデータ Test data ③ 𝑡𝑟𝑎𝑖𝑛④ 𝑓 (𝑥) 𝑆𝑐𝑜𝑟𝑒 𝑡𝑒𝑠𝑡 Score=mean squared error, root mean squared error, mean absolute error,𝑅 2 ,…
交差検定 五分割(五回交差検定)の場合 𝒙 𝑦 𝒙1 𝑦1 𝒙𝟐 𝑦2 𝒙𝟑 𝑦3 𝒙𝟒 𝑦4 𝒙𝟓 𝑦5 𝒙𝟔 𝑦6 𝒙7 𝑦7 𝒙8 𝑦8 𝒙9 𝑦9 𝒙10 𝑦10 𝒙11 𝑦11 訓練 データ #1 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝐿の 最適化 𝑡𝑟𝑖𝑎𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑓 ( 𝑥) Ԧ 1234 1245 𝑓2345 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓1345 (𝑥) Ԧ 𝑓1235 (𝑥) Ԧ #2 回帰 モデル #3 テスト データ #1 #4 評価 指標値 test scoretest score1𝑡𝑒𝑠𝑡 scoretest scoretest 4 2 score3 5 #5 #2 #3 #4 #5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙 𝑦 𝒙1 𝑦1 𝒙𝟐 𝑦2 𝒙𝟑 𝑦3 𝒙𝟒 𝑦4 𝒙𝟓 𝑦5 𝒙𝟔 𝑦6 𝒙7 𝑦7 𝒙8 𝑦8 𝒙9 𝑦9 𝒙10 𝑦10 𝒙11 𝑦11 訓練 データ #1 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝐿の 最適化 𝑡𝑟𝑖𝑎𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑓 ( 𝑥) Ԧ 1234 1245 𝑓2345 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓1345 (𝑥) Ԧ 𝑓1235 (𝑥) Ԧ #2 回帰 モデル #3 テスト データ #1 #4 評価 指標値 test scoretest score1𝑡𝑒𝑠𝑡 scoretest scoretest 4 2 score3 5 #5 #2 #3 #4 #5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙 𝑦 𝒙1 𝑦1 𝒙𝟐 𝑦2 𝒙𝟑 𝑦3 𝒙𝟒 𝑦4 𝒙𝟓 𝑦5 𝒙𝟔 𝑦6 𝒙7 𝑦7 𝒙8 𝑦8 𝒙9 𝑦9 𝒙10 𝑦10 𝒙11 𝑦11 訓練 データ #1 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝐿の 最適化 𝑡𝑟𝑖𝑎𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑓 ( 𝑥) Ԧ 1234 1245 𝑓2345 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓1345 (𝑥) Ԧ 𝑓1235 (𝑥) Ԧ #2 回帰 モデル #3 テスト データ #1 #4 評価 指標値 test scoretest score1𝑡𝑒𝑠𝑡 scoretest scoretest 4 2 score3 5 #5 #2 #3 #4 #5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙 𝑦 𝒙1 𝑦1 𝒙𝟐 𝑦2 𝒙𝟑 𝑦3 𝒙𝟒 𝑦4 𝒙𝟓 𝑦5 𝒙𝟔 𝑦6 𝒙7 𝑦7 𝒙8 𝑦8 𝒙9 𝑦9 𝒙10 𝑦10 𝒙11 𝑦11 訓練 データ #1 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝐿の 最適化 𝑡𝑟𝑖𝑎𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑓 ( 𝑥) Ԧ 1234 1245 𝑓2345 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓1345 (𝑥) Ԧ 𝑓1235 (𝑥) Ԧ #2 回帰 モデル #3 テスト データ #1 #4 評価 指標値 test scoretest score1𝑡𝑒𝑠𝑡 scoretest scoretest 4 2 score3 5 #5 #2 #3 #4 #5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙 𝑦 𝒙1 𝑦1 𝒙𝟐 𝑦2 𝒙𝟑 𝑦3 𝒙𝟒 𝑦4 𝒙𝟓 𝑦5 𝒙𝟔 𝑦6 𝒙7 𝑦7 𝒙8 𝑦8 𝒙9 𝑦9 𝒙10 𝑦10 𝒙11 𝑦11 訓練 データ #1 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝐿の 最適化 𝑡𝑟𝑖𝑎𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑓 ( 𝑥) Ԧ 1234 1245 𝑓2345 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓1345 (𝑥) Ԧ 𝑓1235 (𝑥) Ԧ #2 回帰 モデル #3 テスト データ #1 #4 評価 指標値 test scoretest score1𝑡𝑒𝑠𝑡 scoretest scoretest 4 2 score3 5 #5 #2 #3 #4 #5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙 𝑦 𝒙1 𝑦1 𝒙𝟐 𝑦2 𝒙𝟑 𝑦3 𝒙𝟒 𝑦4 𝒙𝟓 𝑦5 𝒙𝟔 𝑦6 𝒙7 𝑦7 𝒙8 𝑦8 𝒙9 𝑦9 𝒙10 𝑦10 𝒙11 𝑦11 訓練 データ #1 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝐿の 最適化 𝑡𝑟𝑖𝑎𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑓 ( 𝑥) Ԧ 1234 1245 𝑓2345 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓1345 (𝑥) Ԧ 𝑓1235 (𝑥) Ԧ #2 回帰 モデル #3 テスト データ #1 #4 評価 指標値 test scoretest score1𝑡𝑒𝑠𝑡 scoretest scoretest 4 2 score3 5 #5 #2 #3 #4 #5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙 𝑦 𝒙1 𝑦1 𝒙𝟐 𝑦2 𝒙𝟑 𝑦3 𝒙𝟒 𝑦4 𝒙𝟓 𝑦5 𝒙𝟔 𝑦6 𝒙7 𝑦7 𝒙8 𝑦8 𝒙9 𝑦9 𝒙10 𝑦10 𝒙11 𝑦11 訓練 データ #1 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝐿の 最適化 𝑡𝑟𝑖𝑎𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑓 ( 𝑥) Ԧ 1234 1245 𝑓2345 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓1345 (𝑥) Ԧ 𝑓1235 (𝑥) Ԧ #2 回帰 モデル #3 テスト データ #1 #4 評価 指標値 test scoretest score1𝑡𝑒𝑠𝑡 scoretest scoretest 4 2 score3 5 #5 #2 #3 #4 #5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙 𝑦 𝒙1 𝑦1 𝒙𝟐 𝑦2 𝒙𝟑 𝑦3 𝒙𝟒 𝑦4 𝒙𝟓 𝑦5 𝒙𝟔 𝑦6 𝒙7 𝑦7 𝒙8 𝑦8 𝒙9 𝑦9 𝒙10 𝑦10 𝒙11 𝑦11 訓練 データ #1 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝐿の 最適化 𝑡𝑟𝑖𝑎𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑓 ( 𝑥) Ԧ 1234 1245 𝑓2345 (𝑥) Ԧ 𝑡𝑟𝑎𝑖𝑛 𝑡𝑟𝑎𝑖𝑛 𝑓1345 (𝑥) Ԧ 𝑓1235 (𝑥) Ԧ #2 回帰 モデル #3 テスト データ #1 #4 評価 指標値 test scoretest score1𝑡𝑒𝑠𝑡 scoretest scoretest 4 2 score3 5 #5 #2 #3 #4 #5 ave(scoretest ), stddev(scoretest ) 同同同ave(score𝑡𝑟𝑎𝑖𝑛 ), stddev(scoretrain)も評価可能。
交差検定に対する疑問 Q. 何分割すればいいですか? Q. 五回交差検定では回帰モデルが𝑓1(𝑥), Ԧ 𝑓2(𝑥), Ԧ … , 𝑓5(𝑥) Ԧ と五つ得られますが,このうちどの回帰モデルを選択す るのでしょうか。 A. 決まりはない。10分割がよく用いられる。 A. 交差検定は回帰性能評価指標により妥当な予測が可 能であることを判定し、最適なハイパーパラメタを求め るための手法です。 例えば、Scikit-learnライブラリでは最適なハイパーパラ メタを求め、すべての観測データを用いて回帰モデルを 学習し直します。 大規模データに対するニューラルネットワークモデル では訓練データで学習してテストデータでモデル性能 を評価し、訓練データで学習したモデルをそのまま使 う。
予測モデルの適用 値を生成した未知データを新規データと呼ぶことに する。 ⑤新規データに対して予測モデルで予測値を得る。 →本来は新規データに対する適用がモデル作成の目 的です。 テストデータ 訓練データ ③ 𝑓 ④ 𝑡𝑟𝑎𝑖𝑛 (𝑥) ⑤ 訓練データ、テストデータに分割して回帰モデル の予測性能を評価しましたが、現実的には,外挿 領域では妥当に予測できるか分からない。 新規データ
ハイパーパラメタの選択方法 典型的的な振る舞い RMSE RMSE 𝑅𝑀𝑆𝐸 𝑡𝑒𝑠𝑡 𝑅𝑀𝑆𝐸 𝑡𝑒𝑠𝑡 𝑅𝑀𝑆𝐸 𝑡𝑟𝑎𝑖𝑛 𝑅𝑀𝑆𝐸 𝑡𝑟𝑎𝑖𝑛 α 訓練データに過度 αの選択値 に学習=過学習 α αの選択値 𝑅 2 は大きいほど妥当な回帰モデルなので上下が逆になる。
過学習への対応 y データと予測値 青点線:全データ点で多少一致しなくても,なめらか に変化する関数。←回帰モデルとしてこういう関数を 期待している。 過学習の場合 ●観測データ x 赤実線:全データ点では一致するが観測データ点以外 では大きく変化する。→未知データに対して大きく変 化する値を得る。過学習したモデル。
過学習への対応 処方箋: y 1. 重回帰分析 説明変数を選択することで過学習を避ける。 p値,t値などの統計的指標を用いる。 と言われてはいます。 2. 訓練データとテストデータへの分割 ハイパーパラメタを決定する。 データと予測値 ●訓練データで回帰モデル を作成して, ◯テストデータで回帰性能 を評価する。 bad good x y データと予測値 bad good x 観測データから穴埋め問題 に直して最適化することで 全体的になめらかに変化す る関数を得る。
データ規格化 ID 特定の問題でなく、一般的な関数で回帰問題を実行可能 とするために、モデルへの入力データは規格化している ことが期待されている。 𝑥𝑎 𝑥𝑏 𝑥𝑐 𝑦 規格化例 • Z-score normalization: 𝑥 –𝜇 𝜎 ここで𝜇はデータの平均値、𝜎は標準偏差。 𝑥’ = • Min-max normalization: 𝑥 − 𝑥min 𝑥’ = 𝑥𝑚𝑎𝑥 − 𝑥𝑚𝑖𝑛 𝑥min, xmax同観測データの最小値、最大値。 線形変換なので規格化関数の逆変換も容易に実行できる。 • • 多くの場合は説明変数のカラム毎 に規格化関数を作成する。(画像 などでは説明変数全体で規格化す る場合もある。) 目的変数に対しては場合により規 格化する。
回帰予測モデル作成の全体の流れ 回帰予測モ デル作成 観測生デー タの取得 実験観測生 データの取 得 計算観測生 データの取 得 説明変数へ の変換 なし 回帰予測モ デル学習 あり 全データを用 データ規格 化 hyperparameter の選択 訓練データ・ 訓練データ テストデー テストデータ への分割 で回帰モデ タで回帰性 ル作成 能の評価 一組の訓練 複数 の訓練 データ ・ データ・テス テス トデー タへの 分 トデータへの 分割する Scikit-learn式 割し 、訓練 ・テス ト の役 割を交 互に入 れ 替え る いて回帰モデ ルの作成 交差検定
以下では回帰モデル学習、性能評価指標計算 を実際にKNIMEで行う。
目次 線形回帰手法紹介 KNIMEの紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
KNIMEとは?(1) KNIME(ナイム)は、GUI を使ってノードをつなぐことで、データ処理・分析・機械学 習ワークフローを構築・実行できるオープンソースの分析プラットフォームです。 hyperparameterの設定 Lasso ファイルを読み込む 交差検定 回帰評価指標 Hyperparameter vs 回帰評価指標 図:交差検定でLassoを行い、回帰性能評価指標を出力するワークフロー例
KNIMEとは?(2) KNIME(ナイム)は、GUI を使ってノードをつなぐことで、データ処理・分析・機械学 習ワークフローを構築・実行できるオープンソースの分析プラットフォームです。 • (特に)ユーザー作成のノードはドキュメントが詳細ではない。 • 入出力の意味が分からないことも多い。特にFlow variableは理解しにくい。 →少々敷居が高い。
KNIME 5.x での大きな変更点 KNIME 5 系列(2023.2.28~)では、従来の KNIME 4.x までの UI と比較して、 ◆ Modern UI の導入 • 5.x では KNIME Modern UI が標準となり、全体的にインターネットやLLMの情報が古い・事実と異なる ことがある。 ◆ 可視化ノードがまだ発展途上(多くの可視化ノードで複数の色が出ない。) →インターネットやLLMの情報が事実と異なることがある。 →KNIME AI AssistantはKNIMEのversionを理解するかもしれない。 →他社LLMに質問するときはKNIMEのversionを合わせて尋ねること。 本ハンズオンの説明は KNIME 5.8.0 Modern UI を基準に記述 している。
KNIME main window Application tabs Workflow editor Node dialog Side panel navigation Mini map Node monitor
Side panel navigation Description Node repository Space explorer AI Assistant Workflow monitor
KNIME ノードの説明 Node を選択すると、Side panel のdescriptionに説明が出ます。 ②選択 ③選択されたNode の説明の表示 ①選択 有料ソフトではないので、 説明に多くを期待しない こと。
入出力の説明 Data(表データ、モデル、…)とFlow variable(ハイパーパラメタやオプション)があります。 Data Flow variable Flow variableは全 部書かれているわ けではないことが ある。
KNIMEのノード 使えるノードがかなり多い。→多すぎてアイコングループからの選択が困難。 更に、標準でインストールされていないパッケージが多数ある。 こちらで作成したワークフローから話を始める。 →利用時に自動的にインストールが始まる。 要:インターネット環境
インターネットからのノード・パッケージ Proxy設定 (私は動作を試していない。)
KNIME workflowのデータの流れ ✓ ノードを線で繋ぐ。 ✓ データの流れは左から右へ そして、黒線だけでなく、赤線もある。
KNIME workflowの二通りのデータの流れ ✓ 必須: 黒データの繋がり Flow variablesの繋がり • Optional: Flow variableの繋がり (ハイパーパラメタ、 その他制御変数) モデルの繋がり Tableデータの繋がり
KNIMEの2通りのデータ 、●で繋ぐ:Tableデータ 特徴1 特徴2 特徴3 目的変数 変数名 値 変数1 値1 変数2 値2 変数3 値3 Flow variableを含む。 相互変換可能な場合もある。 ■で繋ぐ:Object データ(表形式データでない) • • • • • 規格化関数 回帰モデル 分類モデル Sparkライブラリ関係ノード … Modelが多い。 Sparkライブラリが使う特殊なデータ 形式もある。
Flow variableの有用性 慣れると、ノードに直接値を書くよりも Flow variableであえて書くことで、 どの変数を変えたのかを強調でき、 理解させやすくなる。
目次 線形回帰手法紹介 KNIMEの紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
教材ファイル Githubからインストールしたフォルダを{prefix}にインストールする。 {prefix}以下には {prefix}/data/ --- 観測データファイル,新規データファイル {prefix}/data_generated/ --- 作成されるデータの保存場所 {prefix}/workflow/ --- ワークフロー保存場所 サブフォルダが存在するはず。
タスク1 いきなり回帰モデル作成は行ないません。 KNIMEを使うのが初めてのはずなのでまずはKNIMEに慣れて頂きます。 ファイルを開いて中身を表示する。 を行う。 A) 観測データをファイルから取得する。 B) 観測データを表で表す。 C) 観測データを図で表す。
観測データ 観測データ 最初は何が起きるはずのか分かるトイモデルデータを用いる。 トイモデル 説明変数:x1 = x, x2=𝑥 2 , …, x6 =sin(x) 目的変数:y = sin(x)+小さなノイズ から生成した。 右図で “.” 観測データファイル({prefix}/data/x15_sin.csv) [0:5]まで50点。 “●”新規データファイル({prefix}/data/x15_sin_new.csv) [5:6]で10点。 [-2.5:2.5]まで拡大。 1 0 -1 テスト データ
タスク1 A&B いきなり回帰モデル作成は行ないません。 KNIMEを使うのが初めてのはずなのでまずはKNIMEに慣れて頂きます。 ファイルを開いて中身を表示する。 を行う。 A) 観測データをファイルから取得する。 B) 観測データを表で表す。 C) 観測データを図で表す。
新規ワークフロー作成(1) ③押す ①初めて起動すると 作業ディレクトリの設定があ ると思います。 レポジトリを展開したディレ クトリに設定してください。 (②作業ディレクトリは “…Menu:Switch Workspace“で 変更可能。) ④Local spaceの 選択 ②作業ディレ クトリの選択 ⑤選択
新規ワークフロー作成(2) ①名前を書く。 (後で変更可能) ②押す。
新規ワークフロー画面 ①選択 ②アイコンを選択し てdrag & drop。
基本的な三つのKNIME ノード状態 ノードの下に状態を表す信号機が付いている。 赤色 Not configured 緑色 Executed 黄色 ConfiguredまたはIdle 線をつなぐ、 Configureを行う。 もしくは、[Apply]を 押す。 この他にExecuting(青色)状態がある。 [Execute]を押す、 もしくは、 を押す (Configure =Executeの場 合もある。)
ワークフロー作成中 ③signal が赤色 ①Workflow editor が表れる ②Mini mapが表 れる ③注意: 手の印を選択している とワークフローを編集 出来ません。
Node選択つづき Table Viewノー ドと接続したい。 ①Tableと記載し [return] ノードが多すぎ るので、… ②Tableに関連し たノードが表示 される。 ③Table Viewを Workflow editor にdrag & dropす る。
Node選択つづき ①Table Viewア イコンが表示 される。 ②CSV Readerの右側 を Table Viewの左側 に drag & dropする。 ③線で繋がる。
CSV Readerの設定ウインドウ ①クリック
CSV Readerの設定 Windows11の場合 ① Push ②ファイルx15_sin.csv を選択
入力ファイル x15_sin.csv “,”切り、カラム名あり、行のindexなし。
CSV Readerの設定 ①Setting tabに なっていること を確認 ②CSVの中身が読 み込まれた。
CSV Readerの設定(データ型) ③型が違っていたらダブル クリックで型選択可能 ①Transformationを 選択 ②x1からyまですべて[D] Number (float)であること を確認 ③この場合は [D]Number (Float)と[S]String のみ選択可能
CSV Readerの設定(header, row ID) If no row IDs, add them
CSV Readerの設定完了 ①2つのノードの signalが黄色である はず。
CSV Readerの実行 拡大 ①選択する。 ②そのまま ノード上にマ ウスを置く。 ③ノードの上 に3つの表示 が現れる。
CSV Readerの実行 ②もしくは、 Executeを押す ①▷を押す ③もしくは、 ▷Executeを押す
CSV Reader実行結果 ①signalが 緑色へ ③Table Viewはま だ黄色のまま。 ②CSVファイルの中身が 読み込まれた。
Table Viewの設定 拡大 ①Table Viewの選 択。 ②Includesで表示する 変数(全部)選択
Table Viewの実行 ②▷が現れるの で、▷を押す ②または、 Executeを押す ①Table Viewの選 択。そのまま Table View上のマ ウスを置く。 ④または、 Executeを押す。 ③または、 ▷Executeを押す。
実行後のワークフロー ①signalがす べて緑色に ②データの中身が 表示される。
全部のワークフローの実行 ①一度に全部実行す ることも可能
詳細に見たい…(1) ①クリック
詳細に見たい…(2) 今の場合は、 ①CSV Readerを選 択して ②を押しても 中身が表示さ れる。 (“Table“でな く”二重□”の 方を押す。)
表示型 Standard double Alphaの表示型を 選択中 標準では0.0001 が表示されない。 Percentage Full precision Bars Default
タスク1C ファイルを開いて中身を表示する。 を行う。 A) B) C) 観測データをファイルから取得する。 観測データを表で表す。 観測データを図で表す。
タスク1C ①Scatter Plotを配置し、 CSV Readerと繋ぐ ③Node dialogを操作する ②Scatter Plotを 選択 ③ x 軸変数を選択 ④ y 軸変数を選択 ⑦Open in new windowを押す ⑤実行する。 ⑥図が表示される。
タスク1C
CSVファイルを表示するワークフロー ファイル:01_read_csv ③図示する。 ①CSVファイルを読み込む ②Tableの値を表示する。
補足説明 少し高度な内容です。
KNIME ノードの設定(1) 設定方法はノードによりバラバラ 方法1.新規ウインドウを開いて設定する。 方法2.Node dialogで設定する。 Flow variableの設定 方法1.Node dialogで設定する。 方法2.ノードを右クリックでConfigureを選択し、別ウインドウを開く。
KNIME ノードの設定(1) 方法1. 別windowを 開く形 [Node dialog] New window ①押す ②ダブルクリック
KNIME ノードの設定(2) 方法2. Node dialogで設定する形 ②[Node dialog]が表れる ①ノード 選択
KNIME ノードのFlow variableの設定(1) Node dialog、ウインドウ(まとめてDialog)に Flow variableの設定がある・ない場合がある。
DialogにFlow variableの設定がある場合(1) [Node dialog] [Node dialog] “flow variable”により 設定されている表示。
DialogにFlow variableの設定がある場合(2) 選択 選択 Right click New window この場合alphaのみflow variableで設 定していることが表示される。
DialogにFlow variableの設定がある場合(3) [Node dialog] Corresponding flow variables ✓ alpha • fit_intercept • max_iter ①点線部分 にマウスを 置くと ②Flow variable表 示が表れ、Flow variableの選択が できる。 ?にも名前の明確 な対応関係は書い ていない。
DialogにFlow variableの設定がある場合(4) [Node dialog] ㇾ ㇾ ㇾ こちらも名前 の明確な対応 関係は書いて いない。
DialogにFlow variableの表示がないノード [Spark Linear Regression Leaner]の例 Dialog(左図)にFlow varaibleの アイコン がないノード もある。 多くの場合、(右図)のFlow variableの設定が優先される。 更に、対応関係の説明がない。 (このため機械学習手法を知ら ないとうまく操作ができな い。)
目次 線形回帰手法紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
タスク2 全観測データを用いた線形回帰モデル作成 Sin(x)はテイラー展開できるので, 1. 𝑓 𝑥 = sin 𝑥 + w0 2. 𝑓 𝑥 = σ 𝑤𝑖 𝑥𝑖 + w0 3. もしくは両者が混じったモデル が妥当な回帰モデルであるはず。 線形回帰でどんなモデルが得られるでしょうか。
線形回帰モデル作成 以下の過程を行う。 A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデルを作成する。 D) 正規化された観測データに対して線形回帰モデルを用い て予測値を得る。 E) 評価指標値を得る。 F) 結果を可視化する。 回帰ライブラリが 「説明変数は同程度大きさ のである」 ことを仮定しているために 必要。
タスク2 ① ② ③ ④ ⑤ ⑥ ⑦ 02_01_linear_regression_all_data 観測データをファイルから読み込む。 観測データを正規化する。 正規化された観測データで線形回帰モデルを作成する。 正規化された観測データに対して線形回帰モデルを用いて 予測値を得る。 評価指標値も得る。 結果を可視化する。 回帰係数の表示 ⑦ ⑥ ③ ① ② ④ ⑤
タスク2 ①観測データをファイルか ら読み込む。 x15_sin.csvを選択 ②観測データを正規化す る。 Excludes: y Includes: x1 … sinx Normalization method: z-scoreを選択
タスク2 ②Target: y ①正規化された観 測データで線形回 帰モデルを作成す る。 ③Include: x1 … sinx を選択。
タスク2 ①正規化された観測データに対して線形回帰モデル を用いて予測値を得る。 ②上では指定していないが、 予測カラム名はPrediction (目的変数名)と なる。
タスク2:回帰性能評価指標 [Node Monitor] ①Preference column: y ②Predicted column: Prediction (y)
タスク2:結果の可視化 ①Horizontal dimension: y ②Vertical dimension: Prediction (y)とする。
変数選択 同同同𝑓 𝑥 = 𝑤0 + sin(𝑥)を選択できないのか? 回帰と同時に変数選択も行うLassoを使ってみます。 𝑁 1 𝐿 = 𝑦𝑖 − 𝑓 𝑥Ԧ𝑖 𝑁 𝑖 2 + 𝛼 𝑤𝑝 1 𝑝 タスク2で作成したワークフローをそのまま使います。
Lassoを行うワークフロー 残念ながら、Sklearn Lasso Regression Learner (labs)は回帰係数が表示されません。 このためSparkライブラリを用いる別ワークフローを用います。
回帰係数を出力するワークフロー ⑤回帰係数 02_02_spark_linear_regression_all_data ⑥訓練に対する回帰モデル評価指標 ⑧SparkデータからTable データへの変換 ⑨テストデータの予測 結果の可視化 ①CSVファイルの読み込み ④Sparkデータの規格化 ②Spark Data環境の設定 ③TableデータをSparkデータ形式 への変更 ④Spark線形回帰 モデルの作成 ⑦ Spark線形回帰モ デルでの予測 ⑩Sparkデータでのテス トデータに対する回帰 モデル評価指標の計算
回帰係数を出力するワークフロー ①何か適当にワー クフロー毎に名前 を書く。 ②どこかに設定する。
回帰係数を出力するワークフロー ①Manual Selectionを選択 ②yを選択 ③x1…sinxを 選択 ④Z-score Normalizationを選択
回帰係数を出力するワークフロー ①Target column: yを選択 ②Manual Selectionを選択 ③yを選択 ④x1…sinxを 選択 ⑤Squared Errorを選択 ⑥Standardize features を選択しない。 ⑦Lasso (L1)を選択する。 ⑧ Regularization parameterを書く。
回帰係数を出力するワークフロー ①切片も用いる。
回帰係数を出力するワークフロー ①上では指定していないが、予測値 は’Prediction(予測カラム名)’となる。
回帰係数を出力するワークフロー ① Reference column: y Predicted column: Prediction (y) とする。
回帰係数を出力するワークフロー
Hyperparamterの値を設定する。 Regularization parameter の値を設定する。
Hyperparameterの値を変える。 Lasso, alpha=0.0001 Lasso, alpha=0.05 Lasso, alpha=1.0 αを大きくすると,予測値が定数になる。
Hyperparameterの値を変える。 Lasso, alpha=0.0001 Lasso, alpha=0.05 Lasso, alpha=1.0
Hyperparameterの値を変える。 Lasso, alpha=0.0001 Lasso, alpha=0.05 中程度のαで𝑓 𝑥 = 𝑤0 + wsin sin(𝑥)同同同同同同同 Lasso, alpha=1.0
目次 線形回帰手法紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
タスク3 観測データを用いた回帰モデルの作成と評価でなく, 訓練データとテストデータに分けたLasso回帰モデルの作 成と評価を行う。
タスク3 ワークフロー ④Lassoモデルの作成 02_03_lasso_train_test_split ⑤予測値を加 えたTable ①CSVファイル の読み込み ②規格化 ③訓練・テスト データの分割 ④Lassoモデル を用いたテス トデータ予測 値作成 ⑥Testデータの 回帰評価指標値
Table Partitioner
タスク3 ワークフロー 訓練データが全体の70% (テストデータが全体の30%) ランダムにサンプリング
タスク3 ワークフロー ①y, y_pred を確認 評価指標値 ①予測値のカラム名を確認。
タスク3’ 交差検定
予測モデル作成と新規データへの適用 タスク3’:「観測データから線形回帰モデルを作成して,新規データの予測値を得る。」を 行う。 そのために,以下の過程を行う。 A)観測データをファイルから読み込む。 B)観測データで交差検定により正規化関数を内部に持つあるハイパーパラメタの回帰予 測モデルを作成し予測値と回帰性能を得る。 C)全観測データを用いて正規化関数を内部に持つあるハイパーパラメタの線形回帰モデ ルを作成する。 D)新規データをファイルから読み込む。 E)新規データに対して正規化関数を内部に持つあるハイパーパラメタの線形回帰モデル を用いて予測する。 F)結果を可視化する。
予測モデル作成と新規データへの適用 タスク3’:「観測データから線形回帰モデルを作成して,新規データの予測値を得る。」を 行う。 そのために,以下の過程を行う。 A)観測データをファイルから読み込む。 B)観測データで交差検定により正規化関数を内部に持つあるハイパーパラメタの回帰予 測モデルを作成し予測値と回帰性能を得る。 C)全観測データを用いて正規化関数を内部に持つあるハイパーパラメタの線形回帰モデ ルを作成する。 D)新規データをファイルから読み込む。 E)新規データに対して正規化関数を内部に持つあるハイパーパラメタの線形回帰モデル を用いて予測する。 F)結果を可視化する。
タスク3’AB ④Lassoモデルの作成 02_04_lasso_CV ⑥可視化 ⑦回帰評価指 標値の作成 ①CSV ファイル の読み込 み ②規格化 ③交差検 定の開始 ⑤Lassoモデルを 使った予測 ⑥交差検定の まとめ ⑧予測値を含 めたTable
タスク3’AB ④目的変数、目 的変数の予測値 カラムを設定す る。 ①5回交差検定 ②ランダムサンプリング ③ランダムサンプリング の乱数を固定する場合
タスク3’AB ④目的変数、目 的変数の予測値 カラムを設定す る。 ①5回交差検定 ②ランダムサンプリング ③ランダムサンプリング の乱数を固定する場合
タスク3’AB ②全体の性能評価指標が表示される。 ①各回のMSEが表示される。 (ただしsquared errorのみ)
予測モデル作成と新規データへの適用 タスク3’:「観測データから線形回帰モデルを作成して,新規データの予測値を得る。」を 行う。 そのために,以下の過程を行う。 A)観測データをファイルから読み込む。 B)観測データで交差検定により正規化関数を内部に持つあるハイパーパラメタの回帰予 測モデルを作成し予測値と回帰性能を得る。 C)全観測データを用いて正規化関数を内部に持つあるハイパーパラメタの線形回帰モデ ルを作成する。 D)新規データをファイルから読み込む。 E)新規データに対して正規化関数を内部に持つあるハイパーパラメタの線形回帰モデル を用いて予測する。 F)結果を可視化する。
タスク3’CDEFの追加 02_05_lasso_CV_new_data ①新規データ ファイルの読 み込み 追加部分 ②既存の規格 化関数の適用
タスク3’CDEFの追加 ③先ほどと同じ設定 ①x15_sin_new.csvを選択 ②Normalizer■と ■Normalizer(Apply) を接続 ④予測値カラム名を確認
タスク3’CDEFの追加 新規データへの予測値がy_predカラムに含まれる。 この新規データは観測値(y)が含まれるので、「答え合わせ」ができる。
タスク3’CDEFの追加 ①y vs y_predの図 ②新規データに対する性能評価指標値
モデルを保存してあとで用いる場合 ①書き込み側のファイル名 それぞれ同じ ファイルを用 いること ②読み込み側のファイル名
Hyperparameterを最適化するワークフロー Flow variableを使うとhyperparameterの自動最適化も可能です。 02_10_lasso_opt_hyperparameter_linearly 02_11_lasso_opt_hyperparameter_table Tableに変数値を書く形。 始点、終点、刻み幅を指定する形。(線形変化のみ)
目次 線形回帰手法紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
観測データ 希土類Co合金の磁気相転移温度𝑇𝐶 の文献データ 組成式:ReaCob 希土類(Re) ファイル:{prefix}/data/ReCo_Tc_descriptor.csv 説明変数 希土類(Re)元素: 原子番号 (カラム名 Z) d,f 軌道の電子配置期待値 (f4,d5) その射影量 (4f, S4f, J4f,(g-1)J4f, (2-g)J4f) 構造由来説明変数 : 希土類元素の体積あたり数密度 (C_R) Co の体積あたり数密度 (C_T) 元素あたりの体積(vol_per_atom) (構造はAtomWorkから取得し加工済み。) 目的変数:磁気相転移温度𝑇𝐶 polytype
線形回帰モデルを用いた解析ワークフ ロー 02_20_spark_inear_regression_train_test ⑥hyperparameterの設定 (flow variableとして) ⑧回帰係数の表示 ⑦Spark線形回帰モデルの作成 ⑨訓練データへの回帰性能評価 ⑩Spark線形回帰モデルの予測 ⑪SparkデータのTableへ の変換 ①CSVファイルの 読み込み ②Sparkデータ環 境の設定 ⑫テストデータ 予測値の可視化 ③Sparkデータ への変換 ④Sparkデータ の規格化 ⑤Sparkデータの訓練・ テストデータへの変換 ⑬Sparkデータの回帰モ デル評価指標の作成
線形回帰モデルを用いた解析ワークフ ロー data/ReCo_Tc_descriptor.csv Z-score normalization Ridge(L2)回帰 Alpha=0.01 Partition 1を70% “Use random_seed”で乱数を変え、訓練/ テストのデータを変えても、𝑅2同0.9に なる。
線形回帰係数の解析 ②追加 ①追加 ③ abs($Coef.$) ④ abs coef
線形回帰係数の解析 ①クリックして大きい順(↓) でソートする
線形回帰係数の解析 C_R vs Tc 回帰係数:負 C_T vs Tc 回帰係数:正 Vol_per_atom vs Tc 回帰係数:負
コメント 論文では,妥当な予測モデルが作れたことで終わる場合が 多いが、 本来は、モデル作成は新規データに対して使うためにある。
本日行ったこと 1. 観測データから線形回帰予測関数を作成して, 2. 新規データの予測値を求める。 希土類Co磁石材料への適用 (と書いておかないと物質適用が無いとアンケートで書かれるので。) をKNIMEを用いて行った。
今回は以上で終了です。