831 Views
December 16, 25
スライド概要
線形回帰手法紹介
KNIMEの紹介
タスク1:初めてのワークフロー
タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー
タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー
タスク4:材料特徴量データを用いた線形回帰予測モデルを作成するワークフロー
pdfは正しく表示されますが、docswell上スライドでは一部文字化けしています。
マテリアルズインフォマティクスチュートリアル
KNIMEによるマテリアルズ・ インフォマティクスハンズオン 第一回 2025/11/30版 木野日織 (きのひおり)
想定受講者と目的 想定受講者: 今回の目的 KNIMEの初心者 機械学習手法の初心者 下のワークフローを理解・作成できるようにな ること KNIMEの線形回帰モデルの例
目次 線形回帰手法紹介 KNIMEの紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
機械学習と回帰手法とは 機械学習: コンピュータがデータから自動的にルー ルやパターンを学ぶ手法のこと。 コンピュータに経験から学ぶ能力を持た せることで、データを解析し、予測や決 定を行う。 回帰の目的: 1.予測:未知のデータに対して目的変数 の値を予測する。 2.関係性の理解:各説明変数の重要性や、 説明変数の値が目的変数に与える影響の 度合いを理解する。 回帰: 連続変数データ間の関係を数学的な関数(方 程式)を使って表現する方法の一つ。 ChatGPTの答えに加筆
連続変数の予測手法 目的: 変数𝑥から変数𝑦を予測する,つまり, Ԧ 𝑦=𝑓(𝑥),もしくは Ԧ 𝑦~𝑓(𝑥) Ԧ となる 関数𝑓 を求める。 解法 1. 演繹法:原理から𝑦を評価する関数を得る。 方程式がある世界の予測。例)運動方程式, シュレディンガー方程式 2. 帰納法:観測データ(𝑥, Ԧ 𝑦)から新規𝑥Ԧ に対し て𝑦を評価する関数を得る。 いつ使う? 1. 方程式が存在しない場合。 2. 方程式を解くのに時間がかかるので短 時間に解きたい場合。 回帰は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𝑁 𝑛𝑒𝑤 𝑥𝑁new1 𝑥𝑁new2 𝑥𝑁newP 𝑦𝑁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 𝑦Ԧ して解けるはず。
線形回帰モデル解法 問題点: 処方箋: データインスタンス数はN=P+1では無い。𝑁 ≫ 𝑃 であるのが普通。 観測値とモデルの予測値の二乗誤差(残差)を 最小化する。つまり,コスト関数(損失関数) 観測データには誤差があるのが普通なので、与え た説明変数の線形モデルのみではyが 1 𝑥11 … 𝑤0 𝑦1 𝜖1 𝑦2 = 1 𝑥21 … 𝑤1 + 𝜖2 , ⋮ ⋮ ⋮ 1 𝑥31 … 𝜖𝑖 は未知数を含めた式になるはず。 𝑁 𝑁 𝐿 = 𝜖𝑖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 score1𝑡𝑒𝑠𝑡 scoretest scoretest scoretest 2 score3 4 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 score1𝑡𝑒𝑠𝑡 scoretest scoretest scoretest 2 score3 4 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 score1𝑡𝑒𝑠𝑡 scoretest scoretest scoretest 2 score3 4 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 score1𝑡𝑒𝑠𝑡 scoretest scoretest scoretest 2 score3 4 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 score1𝑡𝑒𝑠𝑡 scoretest scoretest scoretest 2 score3 4 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 score1𝑡𝑒𝑠𝑡 scoretest scoretest scoretest 2 score3 4 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 score1𝑡𝑒𝑠𝑡 scoretest scoretest scoretest 2 score3 4 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 score1𝑡𝑒𝑠𝑡 scoretest scoretest scoretest 2 score3 4 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 観測データから穴埋め問題 に直してhyperparameterを 最適化することで全体的に なめらかに変化する関数を 得る。
データ規格化 これは実行ソフトに対応するために必要な過程。 回帰モデル作成関数は、特定の問題でなく、様々なデータに対 して回帰問題を実行可能とするように作成されています。 このため、回帰モデルを訓練する関数への入力データは規格化 していることが期待されている。 ID 𝑥𝑎 𝑥𝑏 𝑥𝑐 𝑦 規格化例 • Z-score normalization: 𝑥 –𝜇 𝑥’ = 𝜎 ここで𝜇はデータの平均値、𝜎は標準偏差。 • Min-max normalization: 𝑥 − 𝑥min 𝑥𝑚𝑎𝑥 − 𝑥𝑚𝑖𝑛 𝑥min , xmax は観測データの最小値、最大値。 𝑥’ = 線形変換なので規格化関数の逆変換も容易に実行できる。 • • 多くの場合は説明変数のカラム毎に規格化関 数を作成する。また、画像などでは説明変数 全体で規格化する場合もある。 目的変数に対しても、場合により規格化する。
回帰予測モデル作成の全体の流れ 回帰予測モ デル作成 観測生デー タの取得 実験観測生 データの取 得 計算観測生 データの取 得 説明変数へ の変換 なし 回帰予測モ デル学習 あり Scikit-learn式 データ規格 化 hyperparameter の選択 全データを用 いて回帰モデ ルの作成 訓練データ・ テストデータ への分割 訓練データ で回帰モデ ル作成 テストデー タで回帰性 能の評価 一組の訓練 データ・テス トデータへの 分割する 複数の訓練データ・ テストデータへの分 割し、訓練・テスト の役割を交互に入れ 替える 交差検定
以下では回帰モデル学習、性能評価指標計算 を実際にKNIMEで行う。
目次 線形回帰手法紹介 KNIMEの紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
KNIMEとは?(1) KNIME(ナイム)は、GUI を使ってノードをつなぐことで、データ処理・分析・機械学 習ワークフローを構築・実行できるオープンソースの分析プラットフォームです。 hyperparameterの設定 Lasso ファイルを読み込む 一組の訓練デー タ・テストデー タへの分割 回帰評価指標 Hyperparameter vs 回帰 評価指標の数値表示 図:一組の訓練データ・テストデータへの分割でLassoを行い、回帰性能評価指標を出力するワークフロー例
KNIMEとは?(2) KNIME(ナイム)は、GUI を使ってノードをつなぐことで、データ処理・分析・機械学 習ワークフローを構築・実行できるオープンソースの分析プラットフォームです。 • Good: ユーザー作成のノードがknime hubに多数ある。 • Bad:(特に)ユーザー作成のノードはドキュメントが詳細ではない。 入出力の意味が分からないことも多い。特にFlow variableは理解しにくい点。 →少々敷居が高い。 しかし、慣れると多機能であることが分かる。 また、有用さ・ユーザーの多さからサードパーティーのノード群も販売されている。
KNIME 5.x での大きな変更点 KNIME 5 系列(2023.2.28~)では、従来の KNIME 4.x までの UI と比較して、 Modern UI の導入 • 5.x では KNIME Modern UI が標準となった。 ノードが整理され一部の有用なノードが無くなった。 可視化ノードがまだ発展途上 多くの可視化ノードで複数の色が出ない。シンボルの大きさが変わらない。 5.x系になりインターネットやLLMの情報が事実と異なることが多々ある。 LLMに質問するときはKNIMEのversionを合わせて尋ねる必要がある。 (KNIME の有料LLM (KNIME AI Assistant)があり、versionを明示しなくても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のノード 1.使えるノードがかなり多い。 →多すぎてアイコングループからの選択が困難。 →Nodesのサーチをして探す。 2.更に、標準でインストールされていないパッケージが多数ある。 3.最初の例以外は、こちらで作成したワークフローから話を始める。 ワークフロー利用時に標準でインストールされていないパッケージは自動的にインストー ルが始まる。 要:インターネット環境
インターネットからのノード・パッケージのダウンロード Proxy設定 (私は動作を試していない。)
KNIME workflowの処理の流れ ✓ 矢印で分かる通り、処理の流れは左から右へ そして、矢印はないが赤線も左から右へです。
KNIME workflowの二通りの処理の流れ ✓ 必須: 黒データの繋がり Flow variablesの繋がり • Optional: Flow variableの繋がり (ハイパーパラメタ、 その他制御変数) モデルの繋がり Tableデータの繋がり
KNIMEの2通りのデータ 、●で繋ぐ:Tableデータ 特徴1 特徴2 特徴3 ■ ■ ■…で繋ぐ:Object データ(表形式データでない) 目的変数 変数名 値 変数1 値1 変数2 値2 変数3 値3 • • • • • Flow variableを含む。 相互変換可能 規格化関数 回帰モデル 分類モデル Sparkライブラリ関係ノード … Modelが多い。 Sparkライブラリが使う特殊なデータ 形式もある。 相互変換可能な場合もある。
Flow variableの有用性 Flow variableは最初は面倒。 しかし、慣れると、ノードに直接値を書くよりも Flow variableとしてあえて該当Nodeと分けて書くことで、 どの変数を変えたのかを強調でき、 理解しやすく・させやすくなる。
目次 線形回帰手法紹介 KNIMEの紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
教材ファイル Githubからインストールしたフォルダを{prefix}にインストールしたとする。 {prefix}以下には {prefix}/data/ --- 観測データファイル,新規データファイル {prefix}/data_calculated/ ---観測データファイル,新規データファイル (便宜上data/と分けてある。) {prefix}/workflow/ --- ワークフロー保存場所 サブフォルダが存在するはず。
タスク1 いきなり回帰モデル作成は行ないません。 KNIMEを使うのが初めてのはずなのでまずはKNIMEに慣れて頂きます。 ファイルを開いて中身を表示する。 を行う。 A) 観測データをファイルから取得する。 B) 観測データを表で表す。 C) 観測データを図で表す。
観測データ 観測データ 最初は何が起きるはずのか分かるトイモデルデータを用いる。 トイモデル 説明変数:x1 = x, x2=𝑥 2 , …,x5=𝑥 5 , 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) 観測データを図で表す。
KNIMEのLocal space KNIMEのワークフローはlocal PC上ではLocal Spaceとして指定したフォルダ内に置かれる。 最初の起動時に Workspace(Local Space)選択 ダイアログが表示 後で、Menu→Switch workspaceでも変更可能 window右上のMenu→Switch workspace
新規ワークフロー作成(1) ①押す ②Local spaceの 選択 ③選択
新規ワークフロー作成(2) ①名前を書く。 (後で変更可能) ②押す。
新規ワークフロー画面 ①選択 ②アイコンを選択し てdrag & drop。
ワークフロー作成中 ③signal が赤色 ①Workflow editor が表れる ②Mini mapが表 れる ④注意: 手の印を選択している とワークフローを編集 出来ません。
基本的な三つのKNIME ノード状態 ノードの下に状態を表す信号機が付いている。 ①赤色 Not configured ③緑色 Executed ②黄色 ConfiguredまたはIdle 線をつなぐ、 Configureを行う。 もしくは、[Apply]を 押す。 ④この他にExecuting(青色)状態がある。 [Execute]を押す、 もしくは、 を押す (Configure =Executeの場 合もある。)
Node配置 次はTable View ノードと接続し たい。 ノードが多すぎ るので、ノード を検索して選択 します。 ①Tableと記載し [return] ②Tableに関連し たノードが表示 される。 ③Table Viewを Workflow editor にdrag & dropす る。
Node接続 ①Table Viewア イコンが表示 される。 ②CSV Readerの右側 を Table Viewの左側 にdrag & dropする。 ③線で繋がる。
CSV Readerの設定(1) ②CSV Readerとなる ③クリック ①選択
CSV Readerの設定(2) ① Settings Windows11の場合 ② Push ③ファイルx15_sin.csv を選択
入力ファイル x15_sin.csv “,”切り、カラム名あり、行のindexなし。
CSV Readerの設定 ①Preview ②CSVの中身が 表示
CSV Readerの設定(データ型) ③型が違っていたらダブル クリックで型選択可能 ①Transformationを 選択 ②x1からyまですべて[D] Number (float)であること を確認 ④この場合は [D]Number (Float)と[S]String のみ選択可能
CSV Readerの設定(header, row ID) ①Has column header RowIDは自動追加 ②Has RowID 一列目がRowIDになる。
CSV Readerの設定完了 ①2つのノードの signalが黄色である はず。
CSV Readerの実行(1) 拡大 ①選択する。 ②そのまま ノード上にマ ウスを置く。 ③ノードの上 に3つの表示 が現れる。
CSV Readerの実行(2) ②もしくは、 Executeを押す ①▷を押す ③もしくは、 ▷Executeを押す
CSV Reader実行(3) ①signalが 緑色へ ③Table Viewはま だ黄色のまま。 ②CSVファイルの中身が 読み込まれた。
Table Viewの設定 拡大 ①Table Viewの選 択。 ②Incluedes側で、表示 する変数を選択。こ こではすべて。
Table Viewの実行 ③または、 Executeを押す ②そのままTable View上のマウス を置く▷が現れる ので、▷を押す ①Table Viewの選 択。 ④または、 Executeを押す。 ③または、 ▷Executeを押す。
実行後のワークフロー ①signalがす べて緑色に ②Table Viewを選択 ③データの中身が 表示される。
全部のワークフローの実行 ②一度に全部実行す ることも可能 ①ノードを選択しない。
詳細に見たい…(1) ③Table view詳細 ①選択 ②クリック 拡大図
詳細に見たい…(2) ③CSVで読み込んだTableデータ詳細 ①CSV Readerを選 択して ② “Table“で なく”二重 □”の方を押 す。
Table Dataの表示型 Table View Nodeだけではない。 Standard double ①Alphaの表示型を 選択中 ②標準では0.0001が 表示されない。 Percentage Full precision Bars Default
タスク1C ファイルを開いて中身を表示する。 を行う。 A) B) C) 観測データをファイルから取得する。 観測データを表で表す。 観測データを図で表す。
タスク1C ①Scatter Plotを配置し、 CSV Readerと繋ぐ ③Node dialogを操作する ⑦signalが緑に ②Scatter Plotを 選択 ④横軸変数を選択 ⑤ 縦軸変数を選択 ⑧Open in new windowを押す ⑥Executeで実 行する。
タスク1C
CSVファイルを表示するワークフロー ファイル:workflow/01_read_csv ③図示する。 ①CSVファイルを読み込む ②Tableの値を表示する。
ワークフローのimport ①githubからダウンロードした{prefix}/workflow/ ディレクトリに 拡張子knwfのファイルがある。こ れ自体は実行可能なworkflowではない。 ②KNIMEのLocal spaceにimport workflowを実行する。 ③KNIMEで実行可能な workflow となる。
ワークフローの読み込み ③ Import workflowから {prefix}/workflow/ ディレク トリの 拡張子knwfのファ イルを選択するとLocal space上のワークフローと して選択可能になる。 ②最初はExample workflowsフォ ルダがあるかもしれない。 ① Local spaceを選択 (一つ一つ選択する必要 がある。)
Importしたワークフロー ②ダブルクリックでworkflowを開ける。 ①実行可能なworkflowになった。
KNIME workflowの削除の仕方 ②選択 ①右クリック
補足説明
KNIME ノードの設定(1) 設定方法はノードによりバラバラ 方法1.新規ウインドウを開いて設定する。 方法2.Node dialogで設定する。 Flow variableの設定 方法1.Node dialogで設定する。 方法2.ノードを右クリックでConfigureを選択し、別ウインドウを開く。
KNIME main window Application tabs Workflow editor Node dialog Side panel navigation Mini map Node monitor
KNIME ノードの設定(2) 方法1. 別windowを 開く形 [Node dialog] New window ①押す
KNIME ノードの設定(3) 方法2. Node dialogで設定する形 ②[Node dialog]が表れる ①ノード 選択
KNIME ノードのFlow variableの設定(1) Node dialog、ウインドウ(まとめてDialog)に Flow variableの設定がある・ない場合がある。
DialogにFlow variableの設定がある場合(1) ③設定popup window [Node dialog] [Node dialog] ①マウスを置くとアイ コン表示 ②押す
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表 示が表れ、Flow variableの選択が できる。 ?にも名前の明確 な対応関係は書い ていない。
DialogにFlow variableの表示がないノード [Spark Linear Regression Leaner]の例 Dialog(左図)にFlow varaibleのアイ コン 表示ないノードもある。
目次 線形回帰手法紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
タスク2 全観測データを用いた線形回帰モデル作成 データ 問題 トイモデルデータ 説明変数:x1 = x, x2=𝑥 2 , …,x5=𝑥 5 , x6 =sin(x) 目的変数:y = sin(x)+小さなノイズ から生成した。 Sin(x)はテイラー展開できるので, 1. 𝑓 𝑥 = sin 𝑥 + w0 2. 𝑓 𝑥 = σni=1,5 wi xi + w0 3. もしくは両者が混じったモデル が回帰モデルが作成される可能性があります。 実際に行ってみます。
線形回帰モデル作成 以下の過程を行う。 ①観測データをファイルから読み込む。 ②観測データを正規化する。 ③正規化された観測データで線形回帰モデルを作成する。 ④正規化された観測データに対して線形回帰モデルを用い て予測値を得る。 ⑤評価指標値を得る。 ⑥結果を可視化する。 回帰ライブラリが 「説明変数は同程度大きさ のである」 ことを仮定しているために 必要。
タスク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)とする。 →予測値~ほぼ目的変数観測値
タスク2:回帰係数 ①選択 ③Node Monitor、またはOpen in new window ②Incluesにす べての変数を 選択 →𝑓 𝑥 = 0.037 𝑥 + 0.105 𝑥 2 − 0.562 𝑥 3 + 0.586𝑥 4 − 0.177𝑥 5 + 0.979 sin 𝑥 + 0.012 (ただし、xは規格化されている)
変数選択を行う回帰モデル 回帰で𝑓 𝑥 = 𝑤0 + sin(𝑥)を選択できないのか? 回帰と同時に変数選択も行うLassoを使ってみます。 𝑁 1 𝐿 = 𝑦𝑖 − 𝑓 𝑥Ԧ𝑖 𝑁 𝑖 2 + 𝛼 𝑤𝑝 𝑝 1
Lassoを行うワークフロー 残念ながら、Sklearn Lasso Regression Learner (labs)は回帰係数が表示されません。 このためSparkライブラリを用いる別ワークフローを用います。
SPARKとは? ①Apache Spark → 分散データ処理のための基盤(エンジン) ②MLlib / spark.ml → Sparkの上で動く機械学習ライブラリ このため、SPARKで機械学習をするには、 ③SPARKを用いるにはKNIMEの標準データ形式であるTable Dataを使えない。 ④ここでは分散データ処理はせず、単一のlocal PCで処理するが、 機械学習ライブラリ部分を用いる。
回帰係数を出力するワークフロー ⑥回帰係数表示 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を書く。
回帰係数を出力するワークフロー ①切片も用いる。
回帰係数を出力するワークフロー ①Predictorカラムに何も設定されてい なければ、予測値は’Prediction(予測 カラム名)’となる。
回帰係数を出力するワークフロー ① Reference column: y Predicted column: Prediction (y) とする。
回帰係数を出力するワークフロー ①Hrizontal dimension:y Vetical dimension: Prediction(y) → Prediction(y)~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 ワークフロー ③Alpha=0.01 ①x1,…, sinx ②y
タスク3 ワークフロー ① 訓練データが全体の70% (テストデータが全体の30%) ② ランダムにサンプリング
タスク3 ワークフロー ②y, y_pred を選択 評価指標値 ①予測値のカラム名を確認。
タスク3’ 交差検定
交差検定過程 タスク3’:「観測データから線形回帰モデルを作成して,新規データの予測値を得る。」を行う。 そのために,以下の過程を行う。 A)観測データをファイルから読み込む。 B)観測データで交差検定により、正規化関数を内部に持つ、あるハイパーパラメタの回帰 予測モデルを作成し、予測値と回帰性能を得る。 C)全観測データを用いて、正規化関数を内部に持つ、あるハイパーパラメタの線形回帰モ デルを作成する。 D)新規データをファイルから読み込む。 E)新規データに対して、正規化関数を内部に持つ、あるハイパーパラメタの線形回帰モデル を用いて予測する。 F)結果を可視化する。
交差検定過程 タスク3’:「観測データから線形回帰モデルを作成して,新規データの予測値を得る。」を行う。 そのために,以下の過程を行う。 A)観測データをファイルから読み込む。 B)観測データで交差検定により正規化関数を内部に持つあるハイパーパラメタの回帰予測 モデルを作成し予測値と回帰性能を得る。 C)全観測データを用いて正規化関数を内部に持つあるハイパーパラメタの線形回帰モデル を作成する。 D)新規データをファイルから読み込む。 E)新規データに対して正規化関数を内部に持つあるハイパーパラメタの線形回帰モデルを 用いて予測する。 F)結果を可視化する。 最初にタスク3’AB
交差検定 ① 五分割(五回交差検定)の場合 𝒙 𝑦 𝒙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 score1𝑡𝑒𝑠𝑡 scoretest scoretest scoretest 2 score3 4 5 #5 #2 #3 #4 #5 ave(scoretest ), stddev(scoretest )
タスク3’AB ④Lassoモデルの作成 02_04_lasso_CV ⑦観測値・予 測値の可視化 ⑧回帰評価指 標値の作成 ①CSV ファイル の読み込 み ②規格化 ③交差検 定の開始 ⑤Lassoモデルを 使った予測 ⑥交差検定の まとめ処理 ⑨予測値を含 めたTable表示
タスク3’AB ④目的変数、目 的変数の予測値 カラムを設定す る。 ①5(5回交差検定) ②ランダムサンプリング ③ランダムサンプリング の乱数を固定する場合
タスク3‘AB対応関係 ① 訓練 データ ② ③ ④ ⑤ #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 (𝑥) Ԧ テスト データ #1 評価 指標値 test score1𝑡𝑒𝑠𝑡 scoretest scoretest scoretest 2 score3 4 5 #2 #3 #4 #5 ave(scoretest ), stddev(scoretest )
タスク3’AB ①観測値 と予測値 ②yとy_predする。性能評価指標が表示される。 ②誤差(ただ し square error のみ) ④各回のMSEが表示される。
交差検定過程 タスク3’:「観測データから線形回帰モデルを作成して,新規データの予測値を得る。」を行う。 そのために,以下の過程を行う。 A)観測データをファイルから読み込む。 B)観測データで交差検定により正規化関数を内部に持つあるハイパーパラメタの回帰予測 モデルを作成し予測値と回帰性能を得る。 C)全観測データを用いて正規化関数を内部に持つあるハイパーパラメタの線形回帰モデル を作成する。 D)新規データをファイルから読み込む。 E)新規データに対して正規化関数を内部に持つあるハイパーパラメタの線形回帰モデルを 用いて予測する。 F)結果を可視化する。 次にタスク3’ CDEF
タスク3’CDEFの追加 02_05_lasso_CV_new_data ①新規データ ファイルの読 み込み 追加部分 ②作成した規 格化関数の適 用
タスク3’CDEFの追加 ③先ほどと同じ設定 ①x15_sin_new.csvを選択 ②Normalizer■と ■Normalizer(Apply) を接続 ⑤ yとy_pred ④予測値カラム名を確認
タスク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_linear_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 02_12_spark_linear_regression_train_test_abs_coef
線形回帰係数の解析 ①クリックして大きい順(↓) でソートする 回帰係数絶対値 希土類元素の体積あたり数密度 (C_R) Co の体積あたり数密度 (C_T) 元素あたりの体積(vol_per_atom)
線形回帰係数の解析 C_R vs Tc 回帰係数:負 C_T vs Tc 回帰係数:負 Vol_per_atom vs Tc 回帰係数:正
コメント 論文では,妥当な予測モデルが作れたことで終わる場合が 多いが、 本来は、モデル作成は新規データに対して使うためにある。
今回行ったこと 1. 観測データから線形回帰予測関数を作成して, 2. 新規データの予測値を求め、 物質適用として 希土類Co磁石材料への適用 (と書いておかないと物質適用が無いとアンケートで書かれるので。) をKNIMEを用いて行った。
今回は以上で終了です。