26.9K Views
July 26, 23
スライド概要
機械学習や回帰手法についての基本的な説明を行ない,Orange Data Miningを使用して線形回帰予測関数を作成し、新規データの予測値を求める方法について説明します。
マテリアルズインフォマティクスチュートリアル
(超初心者向け)Orange Data Miningによるマテリアルズ・イ ンフォマティクスハンズオン 第一回 2023/07/26版 木野日織 (きのひおり)
今回行うこと Orange Data Miningのワークフロー例 1. 観測データから線形回帰予測関数 を作成して, 2. 新規データの予測値を求める。 希土類Co磁石材料への適用 をOrange Data Miningを用いて行う。
目次 線形回帰手法紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
機械学習と回帰手法とは 機械学習: コンピュータがデータから自動的にルー ルやパターンを学ぶ手法のこと。 コンピュータに経験から学ぶ能力を持た せることで、データを解析し、予測や決 定を行う。 回帰の目的: 1.予測:未知のデータに対して目的変数 の値を予測する。 2.関係性の理解:各説明変数の重要性や、 説明変数の値が目的変数に与える影響の 度合いを理解する。 回帰: 連続変数データ間の関係を数学的な関数(方 程式)を使って表現する方法の一つ。 ChatGPTの答えに加筆
連続変数の予測手法 目的: 変数𝑥𝑥から変数𝑦𝑦を予測する,つまり, ⃗ 𝑦𝑦=𝑓𝑓(𝑥𝑥),もしくは ⃗ 𝑦𝑦~𝑓𝑓(𝑥𝑥) ⃗ となる 関数𝑓𝑓 を求める。 解法 1. 演繹法:原理から𝑦𝑦を評価する関数を得る。 方程式がある世界の予測。例)運動方程式, シュレディンガー方程式 2. 帰納法:観測データ(𝑥𝑥, ⃗ 𝑦𝑦)から新規𝑥𝑥⃗ に対し て𝑦𝑦を評価する関数を得る。 いつ使う? 1. 方程式が存在しない場合。 2. 方程式を解くのに時間がかかるので短 時間に解きたい場合。 回帰は𝑦𝑦, 𝑥𝑥は連続変数,に対して適用される。 ⃗ ここで, • 𝑦𝑦:目的変数 • 𝑥𝑥:説明変数,デスクリプタ(descriptors) ⃗ と呼ばれる。
観測データと新規データ 新規データ: 𝑥𝑥に欠けが無い行列 ⃗ 観測データ:欠けが無い行列 ID ID1 サイズN ID2 … IDN 𝒙𝒙𝟏𝟏 𝑥𝑥11 𝑥𝑥21 𝑥𝑥𝑁𝑁1 𝒙𝒙𝟐𝟐 𝑥𝑥12 𝑥𝑥22 𝑥𝑥𝑁𝑁𝑁 𝑥𝑥⃗i サイズP … 𝒙𝒙P 𝑥𝑥1P 𝑥𝑥2P 𝑥𝑥𝑁𝑁P 𝑦𝑦~𝑓𝑓 𝑥𝑥⃗ となる関数𝑓𝑓 𝒚𝒚 𝑦𝑦1 𝑦𝑦2 𝑦𝑦𝑁𝑁 ID ID1 ID2 … ID𝑁𝑁 𝑛𝑛𝑛𝑛𝑛𝑛 𝒙𝒙𝟏𝟏 𝑥𝑥11 𝑥𝑥21 𝒙𝒙𝟐𝟐 𝑥𝑥⃗ 𝑛𝑛𝑛𝑛𝑛𝑛 i … 𝑥𝑥12 𝑥𝑥22 𝑥𝑥𝑁𝑁new 1 𝑥𝑥𝑁𝑁new 2 𝒙𝒙P 𝑥𝑥1P 𝑥𝑥2P 𝒚𝒚 𝑦𝑦1𝑛𝑛𝑛𝑛𝑛𝑛 𝑦𝑦2new 𝑥𝑥𝑁𝑁new P 𝑦𝑦𝑁𝑁new 𝑛𝑛𝑛𝑛𝑛𝑛 𝑦𝑦𝑖𝑖𝑛𝑛𝑛𝑛𝑛𝑛 ~𝑓𝑓 𝑥𝑥⃗𝑖𝑖𝑛𝑛𝑛𝑛𝑛𝑛
線形回帰 解法: 線形回帰: データ間の関係を直線(または高次元空間では 平面や超平面)で表現する手法。 𝑃𝑃 𝑦𝑦 = � 𝑤𝑤𝑝𝑝 𝑥𝑥𝑝𝑝 + 𝑤𝑤0 𝑝𝑝=1 観測データ(𝑥𝑥⃗𝑖𝑖 , 𝑦𝑦𝑖𝑖 ),(𝑖𝑖 = 1,2, . . 𝑁𝑁)から 𝑤𝑤0 , 𝑤𝑤1 , 𝑤𝑤2 , … 𝑤𝑤𝑃𝑃 が得られる。 𝑤𝑤𝑝𝑝 :(線形回帰モデルの)係数(coefficients) 𝑤𝑤0 :(線形回帰モデルの)切片(intercept) 利点: 回帰モデルの意味が分かりやすい。 𝑥𝑥𝑖𝑖0 = 1とすると,関数系は 𝑃𝑃 𝑦𝑦 = � 𝑤𝑤𝑝𝑝 𝑥𝑥𝑝𝑝 𝑝𝑝=0 と書ける。具体的にデータをあらわに書くと 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が多いと数値的不安定性や, (多重)共線性の影響を受けやすくなる。 罰則項を取り入れる。 コスト関数に𝑤𝑤𝑝𝑝 の大きさの制限を加えて最小化 する。 𝐿𝐿 = 定義(再): N:データインスタンス数 P:説明変数の種類数 𝑁𝑁 1 � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 2𝑁𝑁 𝑖𝑖 2 + 𝛼𝛼 � 𝑤𝑤𝑝𝑝 𝑝𝑝 𝑛𝑛 意味:なるべく𝑤𝑤𝑝𝑝 の大きさを揃える。 n=1: Lasso n=2: Ridge回帰 α(ハイパーパラメタ):の決め方は後で示す。
LassoとRidge回帰 処方箋: Ridge回帰 w2 罰則項を取り入れる。 コスト関数に𝑤𝑤𝑝𝑝 の大きさの制限を加えて最小化 する。 𝑁𝑁 1 � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝐿𝐿 = 2𝑁𝑁 𝑖𝑖 2 + 𝛼𝛼 � 𝑤𝑤𝑝𝑝 𝑝𝑝 𝑛𝑛 意味:なるべく𝑤𝑤𝑝𝑝 の大きさを揃える。 n=1: Lasso n=2: Ridge回帰 第二項の Contour 第一項の Contour 第一項のみ の最適値 w1 第二項のみ の最適値 Lasso 𝑤𝑤1 ≠ 0, 𝑤𝑤2 ≠ 0 w2 α(ハイパーパラメタ):の決め方は後で示す。 特徴: 1. 𝑤𝑤𝑝𝑝 の解が一つ。(Xの共線性の影響を受けない。) 2. Lassoは説明変数選択を同時に行う。 3. Lassoは𝑤𝑤𝑝𝑝 に0が多い場合はN<Pでも妥当な一意な解が 求まる。 w1 𝑤𝑤2 = 0,説明変数選択
回帰評価指標 よく用いられる回帰評価指標 𝑁𝑁 1 MSE = � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 𝑖𝑖 RMSE = MAE = どの程度“目的変数=予測値”なのか? 2 ←𝐿𝐿の第一項 𝑦𝑦 2 の単位 𝑀𝑀𝑀𝑀𝑀𝑀 yと同じ単位 にする。 𝑁𝑁 1 � |𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 | 𝑁𝑁 𝑖𝑖 ∑𝑁𝑁 ⃗𝑖𝑖 𝑖𝑖 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥 2 𝑅𝑅 = 1 − ∑𝑁𝑁 � 2 𝑖𝑖 𝑦𝑦𝑖𝑖 − 𝑦𝑦 小さい 程妥当 2 無次元 1以下の値を取る。 大きい 程妥当
未知データへの対応 問題: 予測の本来の目的は訓練データ以外の未知データ に対して回帰モデル𝑓𝑓を用いて予測すること。 定量的な評価はどう行うのか? 本来行いたいことは? ①観測データで𝑓𝑓(𝑥𝑥)を作成する。 ②未知データで𝑓𝑓(𝑥𝑥)の回帰性能指標を評価する。 →しかし,未知データは回帰モデル作成時に存在しな いので評価不能。 代案: 1. 観測データを訓練データとテストデータに分ける。 観測データ分離方法: 1. 観測データを一組の訓練データとテスト データに分ける。 2. 観測データを複数の訓練データとテスト データに分ける。 1. 交差検定を行う。 2. ③訓練データで予測モデルを作成する。 3. ④テストデータに適用して回帰性能を評価する。 観測 データ ① 観測データ 未知データ 𝑓𝑓(𝑥𝑥) 訓練データ Training data ② テストデータ Test data ③ 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡④ 𝑓𝑓 (𝑥𝑥)
未知データへの対応 代案: 1. 観測データを訓練データとテストデータに分ける。 観測データ分離方法: 1. 観測データを一組の訓練データとテスト データに分ける。 2. 観測データを複数の訓練データとテスト データに分ける。 1. 交差検定を行う。 2. ③訓練データで予測モデルを作成する。 3. ④テストデータに適用して回帰性能を評価する。 観測データ 訓練データ Training data 𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑒𝑒 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 テストデータ Test data ③ 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡④ 𝑓𝑓 (𝑥𝑥) Score=MSE,RMSE,MAE,𝑅𝑅2 ,… 𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑆𝑒𝑒 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡
交差検定 五分割(五回交差検定)の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2 回帰 モデル #3 テスト データ #4 評価 指標値 #5 #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 #2 #3 #4 #5 test scoretest score1𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 scoretest scoretest 4 2 score3 5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2 回帰 モデル #3 テスト データ #4 評価 指標値 #5 #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 #2 #3 #4 #5 test scoretest score1𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 scoretest scoretest 4 2 score3 5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2 回帰 モデル #3 テスト データ #4 評価 指標値 #5 #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 #2 #3 #4 #5 test scoretest score1𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 scoretest scoretest 4 2 score3 5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2 回帰 モデル #3 テスト データ #4 評価 指標値 #5 #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 #2 #3 #4 #5 test scoretest score1𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 scoretest scoretest 4 2 score3 5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2 回帰 モデル #3 テスト データ #4 評価 指標値 #5 #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 #2 #3 #4 #5 test scoretest score1𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 scoretest scoretest 4 2 score3 5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2 回帰 モデル #3 テスト データ #4 評価 指標値 #5 #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 #2 #3 #4 #5 test scoretest score1𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 scoretest scoretest 4 2 score3 5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2 回帰 モデル #3 テスト データ #4 評価 指標値 #5 #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 #2 #3 #4 #5 test scoretest score1𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 scoretest scoretest 4 2 score3 5 ave(scoretest ), stddev(scoretest )
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2 回帰 モデル #3 テスト データ #4 評価 指標値 #5 #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 #2 #3 #4 #5 test scoretest score1𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 scoretest scoretest 4 2 score3 5 ave(scoretest ), stddev(scoretest ) 同様にave(score𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 ), stddev(scoretrain )も評価可能。
交差検定コメント 五回交差検定では回帰モデルが𝑓𝑓1 (𝑥𝑥), ⃗ 𝑓𝑓2 (𝑥𝑥), ⃗ … , 𝑓𝑓5 (𝑥𝑥) ⃗ と五つ得られますが,このうちどの回 帰モデルを選択するのでしょうか。 例えば,scikit-learnのLassoCV,RidgeCV関数,そしてscikit-learnを用いているOrangeでは, 1. 交差検定でハイパーパラメタを選択して 2. そのハイパーパラメタを用いて,全ての観測データを用いて回帰モデルを作成し直し ます。
予測モデルの適用 値を生成した未知データを新規データと呼ぶことに する。 テストデータ 訓練データ ⑤新規データに対して予測モデルで予測値を得る。 ③ 現実的には,訓練データとテストデータで回帰関 数を得ても外挿領域では妥当に予測できるか分か らない。 𝑓𝑓 ④ 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 (𝑥𝑥) ⑤ 新規データ
ハイパーパラメタの選択方法 典型的的な振る舞い RMSE RMSE 𝑅𝑅𝑅𝑅𝑅𝑅𝐸𝐸 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 𝑅𝑅𝑅𝑅𝑅𝑅𝐸𝐸 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 訓練データに過度 αの選択値 に学習=過学習 α 𝑅𝑅𝑅𝑅𝑅𝑅𝐸𝐸 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 𝑅𝑅𝑅𝑅𝑅𝑅𝐸𝐸 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 αの選択値 𝑅𝑅2 は大きいほど妥当な回帰モデルなので上下が逆になる。 α
過学習への対応 y データと予測値 過学習の場合 青点線:全データ点で多少一致しなくても,なめらか に変化する関数。←回帰モデルとしてこういう関数を 期待している。 ●観測データ x 赤実線:全データ点では一致するが観測データ点以外 では大きく変化する。→未知データに対して大きく変 化する値を得る。過学習したモデル。
過学習への対応 処方箋: 1. 重回帰分析 説明変数を選択することで過学習を避ける。 p値,t値などの統計的指標を用いる。 と言われてはいます。 2. 訓練データとテストデータへの分割 ハイパーパラメタを決定する。 y データと予測値 bad good y データと予測値 ●訓練データで回帰モデル を作成して, ◯テストデータで回帰性能 を評価する。 x bad good x 観測データから穴埋め問題 に直して最適化することで 全体的になめらかに変化す る関数を得る。
以下ではこれらを実際にOrangeで行う。
目次 線形回帰手法紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
教材ファイル Bitbucketからインストールしたフォルダを{prefix}にインストールする。 {prefix}以下には {prefix}/data/ --- 観測データファイル,新規データファイル {prefix}/data_generated/ --- 作成されるデータの保存場所 {prefix}/python/ --- 関連Python script {prefix}/workflow/ --- ワークフロー保存場所 サブフォルダが存在するはず。
観測データ 観測データ 最初は何が起きるはずのか分かるトイモデルデータを用いる。 トイモデル 説明変数:x1 = x, x2=𝑥𝑥 2 , …, x6 =sin(x) 目的変数:y = 2sin(x)+小さなノイズ から生成した。 右図で “.” 観測データファイル({prefix}/data/x15_sinx_Orange.csv) [0:5]まで100点。 “●”新規データファイル ({prefix}/data/x15_sinx_new_Orange.csv) [5:6]で20点。 [-2.5:2.5]まで拡大。 テスト データ
回帰モデル 目的変数:y = 2sin(x)+小さなノイズ 可能性がある線形回帰モデル Sin(x)はテイラー展開できるので, 1. 𝑓𝑓 𝑥𝑥 = sin 𝑥𝑥 + w0 2. 𝑓𝑓 𝑥𝑥 = ∑ 𝑤𝑤𝑖𝑖 𝑥𝑥 𝑖𝑖 + w0 3. もしくは両者が混じったモデル ができるはず。
作業内容 いきなり回帰モデル作成は行ないません。 Orangeを使うのが初めてのはずなのでまずはOrangeに慣れて頂きます。 ファイルを開いて中身を表示する。 を行う。そのために A) 観測データをファイルから取得する。 B) 観測データを表で表す。 C) 観測データを図で表す。
Orangeの起動 ②更に全画面表示にする。 ①Newを押す。
機能のカテゴリ分け Widgetの機能が色ごとに6つにカテゴリ分けされています。 詳細表示。 詳細隠す。 ①ダブルクリック ②ダブルクリック
Orangeの使い方 ① ② ③ ① ② ③ …
タスク1A ファイルを開いて中身を表示する。 A) 観測データをファイルから取得する。 B) 観測データを表で表す。 C) 観測データを図で表す。
1.01.first_widget.ows 完成図を先に示してから,作成を行ないます。 完成図
File widgetの配置 ①Drag & drop それぞれが Widget icon 以下ではFile widgetを[File]と書く。 ②[File]においてファイルが選択されて いないという意味のXや!がついてい るかもしれないが後で選択するので無 視して良い。
ファイルからデータを読み込む。 ③[File] windowが開く。 ②[File]をダブ ルクリック ④フォルダアイコンを押しと各OS でのファイル選択画面が出るので {prefix}/data/x15_sin_Orange.csvを選 択。 ⑤数値(numeric)で説明変数 (feature)もしくは目的変数 (target)であることを確認。 ⑥出力が100データインスタンスある。
A.観測データをファイルから取得する。 1.観測データをファイルか ら取得する。 が行えた。
タスク1B ファイルを開いて中身を表示する。 A) 観測データをファイルから取得する。 B) 観測データを表で表す。 C) 観測データを図で表す。
[Data Table]の配置 ①Drag & drop
Widgetの接続 ①[File]の右円弧をつ かんで ⑦マウスを中間に置くとxが出る。 ⑤[Edit Links] windowが開く。 ⑧xを押すと線が消える。 ②[Data Table]の左円弧ま でDrag & drop ⑨{File widgetのData}からData Table Widgetの{Data}へDrag&drop で線ができる。 ③結果 ④実線をダブルクリック (点線かもしれない。) ⑥File widgetの{Data}とData Table widgetの{Data}がつながっていること を確認。 リンクにも{Data}と表示があり,ダイ アグラムでも{Data}-{Data}と繋がって いることが分かる。 ⑩[Edit Links] windowを閉じる。
B.観測データを表で表す。 ①ダブルクリック ②[Data Table] windowが開く。 ③数値が見れる。 目的変数であるyカラムは背景灰色で示される。 X1,x2,…sinxカラムは説明変数で背景白で表される。
Window内の“<”と“>”の使い方 “<”と“>”で左側パネ ルの表示・非表示を選択で きます。 [Data Table] windowの例 ①右矢印を押す。 ②左矢印を押す。
タスク1C ファイルを開いて中身を表示する。 A) 観測データをファイルから取得する。 B) 観測データを表で表す。 C) 観測データを図で表す。
[Scatter Plot]の配置と接続 ②[File]の右円弧と[Scatter Plot]の左円弧を drag&dropでつなぐ。 ①Visualizeから[Scatter Plot]をdrag & dropをして配置 ③[File]と[Scatter Plot]のLinkをダブルクリックし て繋がり方を確認(→次ページ)
[Scatter Plot]の配置と接続 Edit Links ②ダブルクリック ③[Scatter Plot] windowが開く。 [Scatter Plot] window ①線が{Data}-{Data}でない場合は各自修正 すること。 設定は次ページ
[Scatter Plot] windowの使い方 ②選択肢が出る。 ①Axis x:の右側を選択 ④ ③Color: yとしており,丸の色がyに依存していま す。このColorも変更可能です。 ④補足:この位置のチェックでwidgetの出力を自動的 に行うかを決められる。 この場合チェックの有無で[Send Automatically] <-> [Send Selection]と替わる。 [Send Automatically]としておく。
[Scatter Plot] windowの使い方 ①Axis x: x1, Axis y: x5の場合 ③Size: x1とした場合 ②Axis x: x1, Axis y: yの場合 ⑤legendはマウスの drag&dropで動きます。 ④結果丸の大きさがx1に依存した図ができます。 C)観測データを図で表す。ができました。
目次 線形回帰手法紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
タスク2 全観測データを用いた線形回帰モデル作成 Sin(x)はテイラー展開できるので, 1. 𝑓𝑓 𝑥𝑥 = sin 𝑥𝑥 + w0 2. 𝑓𝑓 𝑥𝑥 = ∑ 𝑤𝑤𝑖𝑖 𝑥𝑥 𝑖𝑖 + w0 3. もしくは両者が混じったモデル が妥当な回帰モデルであるはず。 線形回帰でどんなモデルが得られるでしょうか。
1.02.linear_regression_fit.ows
線形回帰モデル作成 以下の過程を行う。 A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデルを作成する。 D) 正規化された観測データに対して線形回帰モデルを用い て予測値を得て,評価指標値も得る。 E) 結果を可視化する。 回帰ライブラリが 「説明変数は同程度大きさ のである」 ことを仮定しているために 必要。
タスク2A A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデ ルを作成する。 D) 正規化された観測データに対して線形回 帰モデルを用いて予測値を得て,評価指 標値も得る。 E) 結果を可視化する。 ①Dataから[File]を配置。 {prefix}/data/x15_sin_Orange.csvを選 択。 ②Visualizeから[Scatter Plot]を配置。 ③[File]{Data}-[Linear Regression]{Data} をつなぐ。 ② ③ ①
タスク2B A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデ ルを作成する。 D) 正規化された観測データに対して線形回 帰モデルを用いて予測値を得て,評価指 標値も得る。 E) 結果を可視化する。 ② ① ④ ③ ①Transformから[Preprocess]を配置。 ②[File]{Data}-{Data}[Preprocess]をつなぐ。 ③Visualizeから[Scatter Plot]を配置。 ④[Preprocress]{Preprocessed Data}{Data}[Scatter Plot]をつなぐ。
2B1.正規化の設定 [Preprocess] window ①Drag&drop ②パネルが現れる。 ③ ④ ③もしチェックされていなければ,チェックすると ④ボタンが”Apply”から“Apply Automatically”に表示変更 される。
2B1.正規化の設定 [Preprocess] window 1. よく使われる3つの正規化手法 説明変数毎に, 1. 平均0,標準偏差1に 2. [-1:1]に 3. [0,1]に 線形変換する。 (線形変換なので逆変換も容易。) 2. 3. ②選択 する。
正規化された観測データの確認 ①[File]の後ろの[Scatter Plot]をダブルクリック ④[Preprocess]の後ろの[Scatter Plot]をダブルクリック ②Axis x: x1, Axis y: x5を選択 ③値が0から3000程度であることを確認。 ⑤Axis x: x1, Axis y: x5を選択 ⑥値が0から3程度であることを確認。 →正規化できている。
タスク2C A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデ ルを作成する。 D) 正規化された観測データに対して線形回 帰モデルを用いて予測値を得て,評価指 標値も得る。 E) 結果を可視化する。 Modelから[Linear Regression], Dataから [Data Table]を配置。 [Preprocess]{Preprocessed Data} – {Data}[Linear Regression], [Linear Regression]{Coeffients}-{Data}[Data Table]とつなぐ。
2C1.線形回帰モデルの設定 𝑃𝑃 ①[Linear Regression] window 1. ③選択 する。 5. ⃗ = � 𝑤𝑤𝑝𝑝 𝑥𝑥𝑝𝑝 + 𝑤𝑤0 1. 𝑓𝑓(𝑥𝑥) 𝑝𝑝=1 の切片 𝑤𝑤 を0とするかどうか。 0 ②選択 する。 2. 3. 4. チェックする場合は 𝑤𝑤0 ≠ 0 チェックしない場合は 𝑤𝑤0 = 0 2から5 罰則項の選択 𝑁𝑁 1 𝐿𝐿 = � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 𝐿𝐿 = ④ ④補足:選択して[Apply Automatically]とする。 (以降はこの部分の説明は省略する。) 𝑖𝑖 𝑁𝑁 1 � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 𝑖𝑖 2 2 → 2. + 𝛼𝛼 � 𝑤𝑤𝑝𝑝 3. n=2: Ridge回帰 4. n=1: Lasso 𝑝𝑝 𝑛𝑛 5. α
線形回帰モデル係数 [Data Table] window 過程C)で線形回帰モデルが作成されている。 ①[Linear Regression]の後ろの [Data Table]をダブルクリック 𝑤𝑤0 𝑤𝑤1 𝑤𝑤2 ⋮ 𝑤𝑤6 に 対 応 ③正規化された観測データに対する回帰係数を示す。 結果は sinx以外の係数は0では無いがとても小さな値。 sinxとテーラ展開の両者が混じったモデルが得られ ている。
タスク2D A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデ ルを作成する。 D) 正規化された観測データに対して線形回 帰モデルを用いて予測値を得て,評価指 標値も得る。 E) 結果を可視化する。 ①Evaluateから[Prediction]を配置。 ②[Linear Regression]{Model}{Predictors}[Predictions]とつなぐ。 ③[Preprocdess]{Preprocessed Data}{Data}[Predictions]とつなぐ。 ④Visualizeから[Scatter Plot (2)]を配置。 ⑤[Predictuons]{Predictons}-{Data}[Scatter Plot (2)]とつなぐ。 ② ⑤ ④ ③ ①
評価指標の表示 [Predictions] window ② ③ ①[Predictions]をダブルクリック ②Show performance scoresがチェックされていると ③評価指標値を表示する。 RMSE=0.01, MAE=0.001, R2=1.000
回帰結果の表示 ②Axis x:をy(観測データ予測値)に,Axis y:をLinear Regression(線形回帰の予測値)に選択。 ①[Predictions]の後ろの[Scatter Plot]をダブルクリック ③ほぼ,観測データ=線形回帰の予測値であること を確認。
変数選択 回帰で𝑓𝑓 𝑥𝑥 = 𝑤𝑤0 + sin(𝑥𝑥)を選択できないのか? 回帰と同時に変数選択も行うLassoを使ってみます。 𝑁𝑁 1 𝐿𝐿 = � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 𝑖𝑖 2 + 𝛼𝛼 � 𝑤𝑤𝑝𝑝 𝑝𝑝 1 タスク2で作成したワークフローをそのまま使います。
Lassoを試す前に Lassoのハイパーパラメタ(α)を変えて,妥当な モデル選択する際に,結果を同時に見れるように します。 作業: 1. [Linear Regression],[Predictions], [Linear Regression]の後ろの[Data Table],[Scatter Plot]をダ ブルクリックしてウインドウを開く。 2. Orangeでは新たなウインドウは背面で開くので, 前面に配置しなおす。 →次ページは配置例
配置例 [Scatter Plot] window [Linear Regression] [Data Table] window window [Predictions] window
Lassoのハイパーパラメタの選択 ①[Linear Regresion] window ① ③ 1. ①[Linear Regression] windowを開く。 2. ②Lasso regressin (L1)を選択する。 3. ③Regularization strength(Alpha)スライ ダーを動かす。 次ページ:スライダーを動かした結果。 ②
ハイパーパラメタを動かす。 Lasso, Alpha=0.0001 Lasso, Alpha=0.05 Lasso, Alpha=35 αを大きくすると,予測値が定数になる。
ハイパーパラメタを動かす。 Lasso, Alpha=0.0001 Lasso, Alpha=0.05 Lasso, Alpha=35
ハイパーパラメタを動かす。 Lasso, Alpha=0.0001 Lasso, Alpha=0.05 中程度のαで𝑓𝑓 𝑥𝑥 = 𝑤𝑤0 + wsin sin(𝑥𝑥) が選択される。 Lasso, Alpha=35
等価な回帰モデルを作成するワークフロー 後のために[Preprocess]のつなぎ方を変更しておく。
回帰モデルのデータ,関数の流れの整理 データ,関数の流れ 観測データの 正規化関数を 作成 回帰モデル作成 正規化関数を内部に持つ 線形回帰モデル作成 観測データ 観測データの 正規化関数を 使用 正規化された 観測データ 観測データの線 形回帰モデルを 作成 観測データ 観測データの 正規化関数を 使用 正規化された 観測データ 観測データの線 形回帰モデルを 使用 新規データ 観測データの 正規化関数を 使用 予測値を得る 正規化された 新規データ 観測データの線 形回帰モデルを 使用 正規化関数を内部に持つ 線形回帰モデル使用 観測データの 予測値 新規データの 予測値
1.03.linear_regression_preproces sed_model.ows
正規化関数を内部に持つ線形回帰モデル A) 観測データをファイルから読み込む。 B) 正規化関数を内部に持つ線形回帰モデルを作 成する。 C) 観測データに対して正規化関数を内部に持つ 線形回帰モデルを用いて予測する。 D) 観測データに対して正規化関数を内部に持つ 線形回帰モデルを用いて予測値と回帰能評価 指標を得る。 E) 結果を可視化する。 回帰係数は正規 化説明変数に対 する値
1.04.regression_models_fit.ows
代替モデルの追加 [Linear Regresion]と並列に他の回帰モ デルを配置接続することで,それら の回帰モデルの予測値,評価指標値 を同時に得ることができます。 この例ではModelの[Random Forest]を 追加して接続してます。 [Random Forest]についてはここでは説 明しませんが,よく用いられる回帰 手法の一つです。
代替モデルの回帰性能 [Predictions] window Random Forest の回帰性能値
プリプロセスの付加 同じPreprocess 異なるPreprocess: 片方はStandarize, もう一方は[0,1]など
目次 線形回帰手法紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
タスク3 観測データを用いた回帰モデルの作成と評価でなく, 訓練データとテストデータに分けた回帰モデルの作成と 評価を行う。
1.05. regression_CV_A.ows 各自作成してください。
予測モデル作成と新規データへの適用 「観測データから線形回帰モデルを作成して,新規データの予測値を得る。」を行う。 そのために,以下の過程を行う。 A)観測データをファイルから読み込む。 B)観測データで交差検定により正規化関数を内部に持つあるハイパーパラメタの回帰予測 モデルを作成し予測値と回帰性能を得る。 C)全観測データを用いて正規化関数を内部に持つあるハイパーパラメタの線形回帰モデル を作成する。 D)新規データをファイルから読み込む。 E)新規データに対して正規化関数を内部に持つあるハイパーパラメタの線形回帰モデルを 用いて予測する。 F)結果を可視化する。
タスク3AB 観測データで交差検定により回帰 予測モデルを作成し,あるハイ パーパラメタの予測値と回帰性能 を得る。 A) 観測データをファイルから読 み込む。 B) 観測データで交差検定によ り正規化関数を内部に持つ あるハイパーパラメタの回帰 予測モデルを作成し予測値 と回帰性能を得る。 正規化関数を内部に持 つ線形回帰モデルを作 成する。 Random Forest回帰を説 明しませんが,表示の都 合によりRandom Forest をModelsから選択して配 置してください。
Lassoと交差検定の設定 5回交差検定の場合 ① ③ ②選択 する。 ⑥値が変わることを確認。 ⑤スライダーを動かす。 ④Lassoを選択する。 (ハイパーパラメタは後で決定する。)
1.06.regression_CV_B.ows
タスク3AC 1. 観測データをファ イルから読み込 む。 A) 観測データをファイルから読み込む。 B) 観測データで交差検定により回帰予測モデ ルを作成し,あるハイパーパラメタの予測値 と回帰性能を得る。 C) 全観測データを用いて正規化関数を内部に 持つあるハイパーパラメタの線形回帰モデ ルを作成する。
タスク3ABC 3ABと3ACを混ぜる。 A) 観測データをファイルから読み込む。 B) 観測データで交差検定により回帰予測モデ ルを作成し,あるハイパーパラメタの予測値 と回帰性能を得る。 C) 全観測データを用いて正規化関数を内部に 持つあるハイパーパラメタの線形回帰モデ ルを作成する。
線形モデルのハイパーパラメタの設定 [Linear Regression]でLassoを用いてハイパーパラメタを妥当な値に設定してください。 C=0.012の場合
[Save Model]の設定 [Save Model] window ① ② ①Autosaveをチェックする。 ②Save as… でモデル保存ファイルを 指定する。 例えば,linear_model.pkclsとする。
タスク3DEF A) 観測データをファイルから読み込む。 B) 観測データで交差検定により回帰予測モデル を作成し,あるハイパーパラメタの予測値と回 帰性能を得る。 C) 全観測データを用いて正規化関数を内部に持 つあるハイパーパラメタの線形回帰モデルを 作成する。 D) 新規データをファイルから読み込む。 E) 新規データに対して正規化関数を内部に持つ あるハイパーパラメタの線形回帰モデルを用 いて予測値と回帰性能を得る。 F) 結果を可視化する。 同じファイ ルを用いる。 D)新規データをファイ ルから読み込む。 E) 新規データに対して正規化関数を内部 に持つあるハイパーパラメタの線形回帰モ デルを用いて予測値と回帰性能を得る。
新規データの予測 (この新規データはyの値があるので) ③[Predictions]で回帰性能を得る。 ② ③ ④ ① ①[File(1)]では新規データ ”data/x15_sin_new_Orange.csv”を読み込む。 ②[Load Model] windowでは[Save Model]と同 じファイルを指定する。 ④[Scatter Plot)(1)]で予測値の可視化をし てください。 (注意:[Save Model]でモデルが更新されても[Load Model]は自 動的に再読み込みしません。)
1.07.regression_CV_C.ows モデルの保存・読み込みを削除して 直結することもできます。
コメント 論文では,妥当な予測モデルが作れたこと で終わる場合が多い。
目次 線形回帰手法紹介 タスク1:初めてのワークフロー タスク2:トイモデルを用いた線形回帰モデル当てはめを行うワークフロー タスク3:トイモデルを用いた線形回帰予測モデルを作成するワークフロー タスク4:材料特徴量データを用いた予測モデルを作成するワークフロー
観測データ 希土類Co合金の磁気相転移温度𝑇𝑇𝐶𝐶 の文献データ 組成式:ReaCob 希土類(Re) ファイル:{prefix}/data/ReCo_Tc_descriptor_Orange.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から取得し加工済み。) 目的変数:磁気相転移温度𝑇𝑇𝐶𝐶
[ScatterPlot]でデータ選択を行った結 果を可視化するワークフロー 1.06.regression_CV_B.owsの上側にwidgetの追加を行う。 ② ① ①[Data Table]を配置。 ②[Scatter Plot]{Selected Data}{Data][Data Table (1)]とつなぐ。 回帰係数は正規 化説明変数に対 する値 1.08.regression_CV_B_DataTable.owsとして保存。
ワークフローとデータの選択 1.06.regression_CV_B.owsの上側を使用。 ① ①[File]で {prefix}/data/ReCo_Tc_descriptor_Orange.csv を選択。
妥当なハイパーパラメタを設定してください。 例) ①Lassoで ②Aphaを選択する。
図からの選択 ②[Scatter Plot]の後ろの[Data Table (1)] window ③マウスで選択したデータが参 照できる。 ①マウスで選択。
説明変数重要性 [Linear Regression]の後ろの[Data Table] window Alpha=0.4の場合 [Scatter Plot] window ③C_R vs Tc として表示。 ③C_T vs Tc として表示。 ①最も大きな寄与C_R ②次に大きな寄与C_T ③その次はS4fとZ
説明変数間の関係 組成式:ReaCobでReとCo元素の取る体積は決まっているので Tcに対する関係以外にも,C_R,C_T,vol_per_atomは依存関係がある。 C_R vs C_T として表示。 Vol_per_ato m vs C_Rと して表示。 Vol_per_ato m vs C_Tと して表示。 三つ説明変数の中でC_R,C_Tの順にTcの線形回帰モデルには重要である
説明変数重要性 TcはZに対して中央が大きく+すこし右肩上がり。 [Linear Regression]の後ろの[Data Table] window Z=62(Sm) Z=64(Gd) ③Z vs S4fと して表示。 ①最も大きな寄与C_R ②次に大きな寄与C_T ③次はS4fとZ Z=64
説明変数重要性 線形回帰モデルなので解析が容易でした。 ①C_RとC_T ① →異なる組成比のTcの違い ③次はS4fとZ →同じ組成比内のTcの違い という解釈が可能。 ②
本日行ったこと 1. 観測データから線形回帰予測関数を作成して, 2. 新規データの予測値を求める。 希土類Co磁石材料への適用 (と書いておかないと物質適用が無いとアンケートで書かれるので。) をOrange Data Miningを用いて行った。
以上で終了です。