51.1K Views
July 26, 23
スライド概要
機械学習や回帰手法についての基本的な説明を行ない,Orange Data Miningを使用して線形回帰予測関数を作成し、新規データの予測値を求める方法について説明します。
マテリアルズインフォマティクスチュートリアル
(超初心者向け)Orange Data Miningによるマテリアルズ・イ ンフォマティクスハンズオン 第一回 木野日織 (きのひおり)
今回行うこと Orange Data Miningのワークフロー 1. 観測データから線形回帰予測関 数を作成して, 2. 新規データの予測値を求める。 までをOrange Data Miningを用いて 行う。
機械学習と回帰手法とは 機械学習: コンピュータがデータから自動的にルー ルやパターンを学ぶ手法のこと。 コンピュータに経験から学ぶ能力を持た せることで、データを解析し、予測や決 定を行う。 回帰の目的: 1.予測:未知のデータに対して目的変数 の値を予測する。 2.関係性の理解:各説明変数の重要性や、 説明変数の値が目的変数に与える影響の 度合いを理解する。 回帰: 連続変数データ間の関係を数学的な関数(方 程式)を使って表現する方法の一つ。 ChatGPTの答えに加筆
連続変数の予測手法 目的: 変数𝑥𝑥から変数𝑦𝑦を予測する,つまり,𝑦𝑦~𝑓𝑓( ⃗ 𝑥𝑥) ⃗ となる関数𝑓𝑓を求める。 観測データ ID ID1 ID2 解法 1. 演繹法:原理から𝑦𝑦を評価する関数を得る。 方程式がある世界の予測。例)運動方程式, シュレディンガー方程式 2. 帰納法:観測データ(𝑥𝑥, ⃗ 𝑦𝑦)から新規𝑥𝑥⃗ に対し て𝑦𝑦を評価する関数を得る。 いつ使う? 1. 方程式が存在しない場合。 2. 方程式を解くのに時間がかかるので短 時間に解きたい場合。 … IDN 𝒙𝒙𝟏𝟏 𝑥𝑥11 𝑥𝑥21 𝑥𝑥𝑁𝑁1 𝒙𝒙𝟐𝟐 𝑥𝑥12 𝑥𝑥22 𝑥𝑥⃗ … 𝑥𝑥𝑁𝑁𝑁 𝒙𝒙P 𝒚𝒚 𝑥𝑥1P 𝑦𝑦1 𝑥𝑥𝑁𝑁P 𝑦𝑦𝑁𝑁 𝑥𝑥2P 𝑦𝑦2 𝑦𝑦 = 𝑓𝑓(𝑥𝑥) ⃗ 回帰は𝑦𝑦, 𝑥𝑥は連続変数,に対して適用される。 ⃗ ここで, • 𝑦𝑦:目的変数 • 𝑥𝑥:説明変数,デスクリプタ(descriptors) ⃗ と呼ばれる。
線形回帰 解法: 線形回帰: データ間の関係を直線(または高次元空間で は平面や超平面)で表現する。 𝑃𝑃 𝑦𝑦 = � 𝑤𝑤𝑝𝑝 𝑥𝑥𝑝𝑝 + 𝑤𝑤0 𝑝𝑝=1 データ(𝑥𝑥⃗𝑖𝑖 = (𝑥𝑥𝑖𝑖𝑖 , 𝑥𝑥𝑖𝑖𝑖 , 𝑥𝑥𝑖𝑖𝑖 , … , 𝑥𝑥𝑖𝑖𝑖𝑖 ), 𝑦𝑦𝑖𝑖 ),(𝑖𝑖 = 1,2, . . 𝑁𝑁)から𝑤𝑤0 , 𝑤𝑤1 , 𝑤𝑤2 , … 𝑤𝑤𝑃𝑃 が得られる。 利点: 他の回帰手法に対して圧倒的に分かりやすい。 𝑥𝑥𝑖𝑖0 = 1とすると,関数系は 𝑃𝑃 𝑦𝑦 = � 𝑤𝑤𝑝𝑝 𝑥𝑥𝑝𝑝 𝑝𝑝=0 と書ける。具体的にデータをあらわに書くと 1 𝑦𝑦1 𝑦𝑦2 = 1 ⋮ 1 𝑥𝑥11 𝑥𝑥21 𝑥𝑥31 … … … 𝑦𝑦⃗ = 𝑋𝑋𝑤𝑤 つまり,変数の数を合わせると 𝑤𝑤 = 𝑋𝑋 −1 𝑦𝑦⃗ して解けるはず。 𝑤𝑤0 𝑤𝑤1 ⋮
線形回帰モデル解法 問題点: 処方箋: データには誤差がある,もしくは,説明変数でyが 書けない。更に,一般的にN>>Pである。つまり, 観測値とモデルの予測値の二乗誤差(残差)を 最小化する。コスト関数 1 𝑦𝑦1 𝑦𝑦2 = 1 ⋮ 1 𝑥𝑥11 𝑥𝑥21 𝑥𝑥31 … … … そして,𝜖𝜖𝑖𝑖 は未知数,なので 𝑤𝑤0 𝜖𝜖1 𝑤𝑤1 + 𝜖𝜖2 , ⋮ ⋮ 𝑁𝑁 𝑁𝑁 𝑖𝑖 𝑖𝑖 𝐿𝐿 = � 𝜖𝜖𝑖𝑖2 = � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 2 の値が小さいほど、モデル当てはめが良い= モデルがデータを良く説明(フィット)して いる。 この際に,最適な説明変数は予め不明なので できるだけ多くの説明変数を用いることがよ く行われる。
共線性への対応 問題点: できるだけ多くの説明変数を用いる=データ(N やP)が多いと数値的不安定性や,(多重)共線性 の影響を受ける。 N:データインスタンス数 P:説明変数の種類数 事実: 共線性の影響を受けたモデルは|𝑤𝑤𝑝𝑝 |が大きいこと が多い。つまり,1程度の大きさのyを101-100と 計算している。 処方箋: 罰則項を取り入れる。 コスト関数に𝑤𝑤𝑝𝑝 の大きさの制限を加えて最小化 する。 𝐿𝐿 = 𝑁𝑁 1 � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 𝑖𝑖 2 + 𝛼𝛼 � 𝑤𝑤𝑝𝑝 𝑝𝑝 𝑛𝑛 意味:なるべく𝑤𝑤𝑝𝑝 の大きさを揃える。 n=1: Lasso n=2: Ridge回帰 α(ハイパーパラメタ)の決め方は後で示す。
LassoとRidge回帰 Ridge回帰 w2 処方箋: コスト関数に𝑤𝑤𝑝𝑝 の大きさの制限を加えて最 小化する。(αは後で決める。) 𝑁𝑁 1 𝐿𝐿 = � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 意味: 𝑖𝑖 2 + 𝛼𝛼 � 𝑤𝑤𝑝𝑝 𝑝𝑝 𝑛𝑛 なるべく𝑤𝑤𝑝𝑝 の大きさを揃える。 n=1: Lasso n=2: Ridge回帰 第二項の Contour 第一項の Contour 第一項のみ の最適値 w1 第二項のみ の最適値 Lasso 𝑤𝑤1 ≠ 0, 𝑤𝑤2 ≠ 0 w2 特徴: 𝑤𝑤𝑝𝑝 の解が一つ。(X,yの共線性の影響を受けな い。) Lassoは説明変数選択を同時に行う。 Lassoは𝑤𝑤𝑝𝑝 に0が多い場合はN<Pでも妥当な一意な 解が求まる。→後で例を行う。 w1 𝑤𝑤2 = 0,説明変数選択
回帰評価指標 よく用いられる評価指標 𝑁𝑁 1 MSE = � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 𝑖𝑖 RMSE = 2 𝑀𝑀𝑀𝑀𝑀𝑀 𝑁𝑁 1 MAE = � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 𝑖𝑖 どの程度“目的変数=予測値”なのか? 𝑁𝑁 ∑ ⃗𝑖𝑖 𝑖𝑖 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥 2 𝑅𝑅 = 1 − ∑𝑁𝑁 � 2 𝑖𝑖 𝑦𝑦𝑖𝑖 − 𝑦𝑦 ←𝐿𝐿の第一項 𝑦𝑦 2 の単位 2 2 yと同じ単位 にする。 無次元
未知データへの対応 問題: 本来の目的は訓練データ以外に対して回帰モデル𝑓𝑓を用いて予測すること。 定量的な評価はどう行うのか? 本来行いたいこと: ①観測データで𝑓𝑓(𝑥𝑥)を作成する。 ②未知データで𝑓𝑓(𝑥𝑥)の回帰性能指標を評価する。 →しかし,未知データは回帰モデル作成時に存在しないの で評価不能。 代案: 1. 観測データを訓練データとテストデータに分ける。 観測データ分離方法: 1. 観測データを一組の訓練データとテスト データに分ける。 2. 観測データを複数の訓練データとテスト データに分ける。 1. 交差検定を行う。 2. ③訓練データで予測モデルを作成する。 3. ④テストデータに適用して回帰性能を評価する。 観測 データ ① 観測データ 未知データ 𝑓𝑓(𝑥𝑥) テストデータ 訓練データ ③ ② 𝑓𝑓(𝑥𝑥) ④
交差検定 5分割(五回交差検定)の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝑓𝑓2345 (𝑥𝑥) ⃗ 𝑓𝑓1345 (𝑥𝑥) ⃗ 𝑓𝑓1245 (𝑥𝑥) ⃗ #2 回帰 モデル #3 テスト データ #1 #2 #3 #4 評価 指標値 score1 score2 score3 #5 𝑓𝑓1234 (𝑥𝑥) ⃗ 𝑓𝑓1235 (𝑥𝑥) ⃗ #4 #5 score4 ave(score), stddev(score) score5
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝑓𝑓2345 (𝑥𝑥) ⃗ 𝑓𝑓1345 (𝑥𝑥) ⃗ 𝑓𝑓1245 (𝑥𝑥) ⃗ #2 回帰 モデル #3 テスト データ #1 #2 #3 #4 評価 指標値 score1 score2 score3 #5 𝑓𝑓1234 (𝑥𝑥) ⃗ 𝑓𝑓1235 (𝑥𝑥) ⃗ #4 #5 score4 ave(score), stddev(score) score5
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝑓𝑓2345 (𝑥𝑥) ⃗ 𝑓𝑓1345 (𝑥𝑥) ⃗ 𝑓𝑓1245 (𝑥𝑥) ⃗ #2 回帰 モデル #3 テスト データ #1 #2 #3 #4 評価 指標値 score1 score2 score3 #5 𝑓𝑓1234 (𝑥𝑥) ⃗ 𝑓𝑓1235 (𝑥𝑥) ⃗ #4 #5 score4 ave(score), stddev(score) score5
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝑓𝑓2345 (𝑥𝑥) ⃗ 𝑓𝑓1345 (𝑥𝑥) ⃗ 𝑓𝑓1245 (𝑥𝑥) ⃗ #2 回帰 モデル #3 テスト データ #1 #2 #3 #4 評価 指標値 score1 score2 score3 #5 𝑓𝑓1234 (𝑥𝑥) ⃗ 𝑓𝑓1235 (𝑥𝑥) ⃗ #4 #5 score4 ave(score), stddev(score) score5
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝑓𝑓2345 (𝑥𝑥) ⃗ 𝑓𝑓1345 (𝑥𝑥) ⃗ 𝑓𝑓1245 (𝑥𝑥) ⃗ #2 回帰 モデル #3 テスト データ #1 #2 #3 #4 評価 指標値 score1 score2 score3 #5 𝑓𝑓1234 (𝑥𝑥) ⃗ 𝑓𝑓1235 (𝑥𝑥) ⃗ #4 #5 score4 ave(score), stddev(score) score5
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝑓𝑓2345 (𝑥𝑥) ⃗ 𝑓𝑓1345 (𝑥𝑥) ⃗ 𝑓𝑓1245 (𝑥𝑥) ⃗ #2 回帰 モデル #3 テスト データ #1 #2 #3 #4 評価 指標値 score1 score2 score3 #5 𝑓𝑓1234 (𝑥𝑥) ⃗ 𝑓𝑓1235 (𝑥𝑥) ⃗ #4 #5 score4 ave(score), stddev(score) score5
交差検定 5分割の場合 𝒙𝒙 𝒙𝒙1 𝒙𝒙𝟐𝟐 𝒙𝒙𝟑𝟑 𝒙𝒙𝟒𝟒 𝒙𝒙𝟓𝟓 𝒙𝒙𝟔𝟔 𝒙𝒙7 𝒙𝒙8 𝒙𝒙9 𝒙𝒙10 𝒙𝒙11 𝑦𝑦 𝑦𝑦1 𝑦𝑦2 𝑦𝑦3 𝑦𝑦4 𝑦𝑦5 𝑦𝑦6 𝑦𝑦7 𝑦𝑦8 𝑦𝑦9 𝑦𝑦10 𝑦𝑦11 訓練 データ #1 𝐿𝐿の 最適化 #2,#3,# #1,#3,# #1,#2,# #1,#2,# #1,#2,# 4,#5 4,#5 4,#5 3,#5 3,#4 𝑓𝑓2345 (𝑥𝑥) ⃗ 𝑓𝑓1345 (𝑥𝑥) ⃗ 𝑓𝑓1245 (𝑥𝑥) ⃗ #2 回帰 モデル #3 テスト データ #1 #2 #3 #4 評価 指標値 score1 score2 score3 #5 𝑓𝑓1234 (𝑥𝑥) ⃗ 𝑓𝑓1235 (𝑥𝑥) ⃗ #4 #5 score4 ave(score), stddev(score) score5
予測モデルの適用 値を生成した未知データを新規データと呼ぶことに する。 テストデータ 訓練データ ⑤新規データに対して予測モデルで予測値を得る。 ③ 𝑓𝑓(𝑥𝑥) ④ ⑤ 現実的には,訓練データとテストデータで回帰関 数を得ても外挿領域では妥当に予測できるか分か らない。 新規データ
ハイパーパラメタの選択方法 典型的的な振る舞い RMSE RMSE 𝑅𝑅𝑅𝑅𝑅𝑅𝐸𝐸 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 𝑅𝑅𝑅𝑅𝑅𝑅𝐸𝐸 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 訓練データに過度 に学習=過学習 α αの選択値 𝑅𝑅𝑅𝑅𝑅𝑅𝐸𝐸 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 𝑅𝑅𝑅𝑅𝑅𝑅𝐸𝐸 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 αの選択値 α
過学習への対応 y データと予測値 過学習の場合 ●観測データ 処方箋: 1. 重回帰分析 説明変数を選択することで過学習を避ける。 p値,t値などの統計的指標を用いる。 と言われてはいますが・・・。 2. 訓練データとテストデータへの分割 y データと予測値 ●訓練データで回帰 モデルを作成して, ◯テストデータで回 帰性能を評価する。 x 説明変数空間ではyはなめらかに変化してい ると仮定する。 赤線:全データ点では一致するが観測データ 点以外では大きく変化する。 青線:誤差のせいで全データ点で多少一致し なくても,なめらかに変化する関数。←こう いう関数を期待する。 x 観測データから穴埋 め問題に最適化する ことでなめらかに変 化する関数を得る。
以下ではこれらを実際にOrangeで行う。
データファイル 観測データ データ: 説明変数:x1 = x, x2=𝑥𝑥 2 , …, x6 =sin(x) 目的変数:y = 2sin(x)+小さなノイズ から生成した。 右図で “.” 観測データファイル(data/x15_sinx_Orange.csv) [0:5]まで100点。 “●”新規データファイル(data/x15_sinx_new_Orange.csv) [5:6]で20点。 [-2.5:2.5]まで拡大。 テスト データ
タスク1 ファイルを開いて中身を表示する。 1.観測データをファイルから取得する。 2.観測データを表で表す。 3.観測データを図で表す。
Orangeの起動 ②更に全画面表示にする。 ①Newを押す。
機能のカテゴリ分け Widgetの機能が色ごとに6つにカテゴリ分けされています。 詳細表示。 詳細隠す。 ①ダブルクリック ②ダブルクリック
Orangeの使い方 ① ② ③ ① ② ③
タスク1 ファイルを開いて中身を表示する。 A) 観測データをファイルから取得する。 B) 観測データを表で表す。 C) 観測データを図で表す。
タスク1A ファイルを開いて中身を表示する。 A) 観測データをファイルから取得する。 B) 観測データを表で表す。 C) 観測データを図で表す。
1.01.first_widget.ows
File widgetの配置 ①Drag & drop それぞれが Widget icon 以下ではFile widgetを[File]と書く。 ②[File]においてファイルが選択されて いないという意味のXや!がついてい るかもしれないが後で選択するので無 視して良い。
ファイルからデータを読み込む。 ③[File] windowが開く。 ②[File]をダブ ルクリック ④フォルダアイコンを押しと各 OSでのファイル選択画面が出る ので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 ③結果 ④ダブルクリック (実線で無いかもしれない が無視して良い。) ⑥{Data}と{Data}がつながってい ることを確認。 リンクに{Data}とあり,ダイアグ ラムでも{Data}-{Data}と繋がって いることが分かる。 ⑨{Data}から{Data}へ Drag&dropで線ができる。 ⑩[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も変更可能です。 ②選択肢が出る。
[Scatter Plot] windowの使い方 ①Axis x: x1, Axis y: x5の場合 ③Size: x1とした場合 ②Axis x: x1, Axis y: yの場合 ④legendはマウスの drag&dropで動きます。 ⑤結果丸の大きさがx1に依存した図ができます。 C)観測データを図で表す。ができました。
タスク2 線形回帰モデル作成 Sin(x)はテイラー展開できるので, 1. 𝑓𝑓 𝑥𝑥 = sin 𝑥𝑥 + w0 2. 𝑓𝑓 𝑥𝑥 = ∑ 𝑤𝑤𝑖𝑖 𝑥𝑥 𝑖𝑖 + w0 3. もしくは両者が混じったモデル が妥当な回帰モデルであるはず。回帰でどんなモデルが得られるでしょうか。
線形回帰モデル作成 以下の過程を行う。 A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデルを作成する。 D) 正規化された観測データに対して線形回帰モデルを用い て予測値を得て,評価指標値も得る。 E) 結果を可視化する。 回帰ライブラリが説明変数 が同程度大きさのデータで あることを仮定しているた めに必要。
A)観測データをファイルから読み込む。 A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデ ルを作成する。 D) 正規化された観測データに対して線形回 帰モデルを用いて予測値を得て,評価指 標値も得る。 E) 結果を可視化する。 Dataから[File]を,Visualizeから [Scatter Plot]を配置。 [File]{Data}-[Linear Regression]{Data}を つなぐ。
B)観測データを正規化する。 A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデ ルを作成する。 D) 正規化された観測データに対して線形回 帰モデルを用いて予測値を得て,評価指 標値も得る。 E) 結果を可視化する。 Transformから[Preprocess]を配置。 [File]{Data}-{Data}[Preprocess]をつなぐ。 Visualizeから[Scatter Plot]を配置。 [Preprocress]{Preprocessed Data}{Data}[Scatter Plot]をつなぐ。
3.1.正規化の設定 [Preprocess] window Drag&drop
3.1.正規化の設定 [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程度であることを確認。 →正規化できている。
C)正規化された観測データで線形回帰モ デルを作成する。 A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデ ルを作成する。 D) 正規化された観測データに対して線形回 帰モデルを用いて予測値を得て,評価指 標値も得る。 E) 結果を可視化する。 Modelから[Linear Regression], Dataから [Data Table]を配置。 [Preprocess]{Preprocessed Data} – {Data}[Linear Regression], [Linear Regression]{Coeffients}-{Data}[Data Table]とつなぐ。
3.2.線形回帰の設定 ①[Linear Regression] window 𝑃𝑃 ⃗ = � 𝑤𝑤𝑝𝑝 𝑥𝑥𝑝𝑝 + 𝑤𝑤0 1. 𝑓𝑓(𝑥𝑥) の切片を使うかどうか 𝑝𝑝=1 2から5 チェックする場合は 𝑤𝑤0 ≠ 0 チェックしない場合は 𝑤𝑤0 = 0 1. 5. ③選択 する。 罰則項の選択 𝑁𝑁 1 𝐿𝐿 = � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 𝑖𝑖 𝑁𝑁 1 𝐿𝐿 = � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 𝑖𝑖 2 2 → 2. + 𝛼𝛼 � 𝑤𝑤𝑝𝑝 3. n=2: Ridge回帰 4. n=1: Lasso 𝑝𝑝 𝑛𝑛 5. α 2. 3. 4. ②選択 する。
線形回帰モデル係数 [Data Table] window 過程C)で線形回帰モデルが作成されている。 ①[Linear Regression]の後ろの [Data Table]をダブルクリック 𝑤𝑤0 𝑤𝑤1 𝑤𝑤2 ⋮ 𝑤𝑤6 ③正規化された観測データに対する回帰係数を示す。 結果は sinx以外の係数は0では無いがとても小さな値。 もしくはsinxとテーラ展開の両者が混じったモデル が得られている。
D)正規化された観測データに対して線形回帰 モデルを用いて予測値を得て,評価指標値も 得る。 A) 観測データをファイルから読み込む。 B) 観測データを正規化する。 C) 正規化された観測データで線形回帰モデ ルを作成する。 D) 正規化された観測データに対して線形回 帰モデルを用いて予測値を得て,評価指 標値も得る。 E) 結果を可視化する。 Evaluationから[Prediction]を配置。 [Linear Regression]{Model}[Predictions]{Predictors}とつなぐ。
評価指標の表示 [Predictions] window ② ③ ①[Predictions]をダブルクリック ②Show performance scoresがチェックされていると ③評価指標値を表示する。 RMSE=0.014, MAE=0.012, R2=1.000
回帰結果の表示 以上で動作するはずです。 ①[Predictions]の後ろの[Scatter Plot]をダブルクリック ②Axis x:をy(観測データ予測値)に,Axis y:をLinear Regression(線形回帰の予測値)に選択。 ③ほぼ,観測データの予測値=線形回帰の予測値で あることを確認。
変数選択 回帰で𝑓𝑓 𝑥𝑥 = 𝑤𝑤0 + sin(𝑥𝑥)を選択できないのか? 回帰と同時に変数選択も行うLassoを使ってみます。 𝑁𝑁 1 𝐿𝐿 = � 𝑦𝑦𝑖𝑖 − 𝑓𝑓 𝑥𝑥⃗𝑖𝑖 𝑁𝑁 𝑖𝑖 2 + 𝛼𝛼 � 𝑤𝑤𝑝𝑝 𝑝𝑝 1
1.02.Linear_regression_fit.ows
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 + sin(𝑥𝑥) が選択される。 Lasso, Alpha=35
1.03.linear_regression_preproces sed_model.ows
等価な回帰モデルを作成するワークフロー 後のために考え方を変更しておく。 欠点:Preprocessで同程度の量に なったことを可視化できなくなるが ソフトを信用する。 説明→次ページ
回帰モデルのデータ,関数の流れの整理 データ,関数の流れ 正規化関数を内部に 持つ線形回帰モデル 観測データの 正規化関数を 作成 回帰モデル作成 観測データ 観測データの 正規化関数を 使用 正規化された 観測データ 観測データ 観測データの 正規化関数を 使用 正規化された 観測データ 新規データ 観測データの 正規化関数を 使用 観測データの線 形回帰モデルを 作成 観測データの線 形回帰モデルを 使用 観測データの 予測値 予測値を得る 正規化された 新規データ 観測データの線 形回帰モデルを 使用 新規データの 予測値
正規化関数を内部に持つ線形回帰モデル 1. 観測データをファイルから読み込む。 2. 正規化関数を内部に持つ線形回帰モデルを作 成する。 3. 観測データに対して正規化関数を内部に持つ 線形回帰モデルを用いて予測する。 4. 観測データに対して正規化関数を内部に持つ 線形回帰モデルを用いて予測値と回帰能評価 指標を得る。 5. 結果を可視化する。 Predictionsと繋げていなくても線形回帰係数 が求まっていることも確認してください。 (観測データに対する回帰係数値ですので 値は異なります。)
1.04.regression_models_fit.ows
代替モデルの追加 Modelの[Random Forest]を追加し て接続。 Random Forestについてはここで は説明しません。 Modelを簡単に追加して結果を 見れることを示すためです。
代替モデルの回帰性能 [Predictions] window Random Forest の回帰性能値
タスク3 観測データを用いた回帰モデルの評価でなく, 訓練データとテストデータに分けた回帰モデル の評価を行いたい。
予測モデル作成と新規データへの適用 「観測データから線形回帰モデルを作成して,新規データの予測値を得る。」を行う。 そのために,以下の過程を行う。 A)観測データをファイルから読み込む。 B)観測データで交差検定により正規化関数を内部に持つあるハイパーパラメタの回帰予測 モデルを作成し予測値と回帰性能を得る。 C)全観測データを用いて正規化関数を内部に持つあるハイパーパラメタの線形回帰モデル を作成する。 D)新規データをファイルから読み込む。 E)新規データに対して正規化関数を内部に持つあるハイパーパラメタの線形回帰モデルを 用いて予測する。 F)結果を可視化する。
1.05. regression_models_CV_step1.ows
Step1 観測データで交差検定により回帰 予測モデルを作成し,あるハイ パーパラメタの予測値と回帰性能 を得る。 A)観測データをファイルから読 み込む。 B)観測データで交差検定により 正規化関数を内部に持つある ハイパーパラメタの回帰予測 モデルを作成し予測値と回帰 性能を得る。 正規化関数を内部に持 つ線形回帰モデルを作 成する。 Random Forest回帰を説 明しませんが,表示の都 合によりRandom Forest をModelsから選択して配 置してください。
Lassoと交差検定の設定 5回交差検定の場合 ① ③ ②設定 する。 ⑤スライダーを動かす。 ④Lassoを選択する。 ⑥値が変わることを確認。
06.regression_models_CV_step2.ows
Step2前半 1. 観測データをファ イルから読み込 む。 A) 観測データをファイルから読み込む。 B) 観測データで交差検定により回帰予測モデ ルを作成し,あるハイパーパラメタの予測値 と回帰性能を得る。 C) 全観測データを用いて正規化関数を内部に 持つあるハイパーパラメタの線形回帰モデ ルを作成する。
Step1とまぜる Step1と混ぜる。 A) 観測データをファイルから読み込む。 B) 観測データで交差検定により回帰予測モデ ルを作成し,あるハイパーパラメタの予測値 と回帰性能を得る。 C) 全観測データを用いて正規化関数を内部に 持つあるハイパーパラメタの線形回帰モデ ルを作成する。
[Save Model]の設定 [Save Model] window ① ② ①Autosaveをチェックする。 ②Save as… でモデル保存ファイルを 指定する。 例えば,linear_model.pkclsとする。
線形モデルのハイパーパラメタの設定 [Linear Regression]でLassoを用いてハイパーパラメタを妥当な値に設定してください。
Step2後半追加 A) 観測データをファイルから読み込む。 B) 観測データで交差検定により回帰予測モデル を作成し,あるハイパーパラメタの予測値と回 帰性能を得る。 C) 全観測データを用いて正規化関数を内部に持 つあるハイパーパラメタの線形回帰モデルを 作成する。 D) 新規データをファイルから読み込む。 E) 新規データに対して正規化関数を内部に持つ あるハイパーパラメタの線形回帰モデルを用 いて予測値と回帰性能を得る。 F) 結果を可視化する。 同じファイ ルを用いる。 新規データをファイル から読み込む。 新規データに対して正規化関数を内部に 持つあるハイパーパラメタの線形回帰モデ ルを用いて予測値と回帰性能を得る。
(この新規データはyの値があるので) ③[Predictions]で回帰性能を得る。 ② ③ ④ ① ①[File(1)]では新規データ ”data/x15_sin_new_Orange.csv”を読み込む。 ②[Load Model] windowでは[Save Model]と同 じファイルを指定する。 ④[Scatter Plot)(1)]で予測値の可視化をし てください。 (注意:[Save Model]でモデルが更新されても[Load Model]は自 動的に再読み込むしません。)
07.regression_models_CV_step3.o ws モデルの保存・読み込みを削除して 直結することもできます。
論文では,妥当な予測モデルが作れたこと で終わる場合が多い。
物質の例 ある特定の金属合金の磁気相転移温度𝑇𝑇𝐶𝐶 を予測したい: 説明変数 希土類元素: 原子番号 (カラム名 Z) d,f 軌道の電子配置 (f4,d5)期待値 その射影量 (4f, S4f, J4f,(g-1)J4f, (2-g)J4f) 構造由来説明変数 : 希土類元素の体積あたり数密度 (C_R) Co の体積あたり数密度 (C_T) 元素あたりの体積(vol_per_atom) (構造はAtomWorkから取得し加工済み。) 目的変数:磁気相転移温度𝑇𝑇𝐶𝐶 Re Z
[Data Table]を配置。 [Scatter Plot]{Selected Data}-{Data][Data Table (1)]とつなぐ。
②[Scatter Plot]の後ろの[Data Table (1)] window ③マウスで選択したデータが参 照できる。 ①マウスで選択。