289 Views
October 20, 24
スライド概要
writing now...
偏りのある時系列データ の分類について (Time series classification on imbalanced data) (課題名:オゾンレベルの分類) (ミワダ マサト) 三和田 将人
お詫び 前回の勉強会(3月7日)で、交差検証(Cross Validation)における評価値(正答 率:ACC)を各Foldにおける正解率の平均として算出していました。しかし、これは 厳密には誤りでした。 正しくは 各Foldにおける検証結果を全て足し合 わせてから混合行列を始めとする統計 量を確認する でした。 (理由) 分割数によって、同じサンプル数にならな い状況があるから。 参考サイト:データ化学工学研究室(金子研究室)@明治大学 理工学部 応用化学科, "クロスバリデーションにおける注意点のまとめ https://datachemeng.com/cautions_in_cross_validation/#toc3 図の引用元:こちきか, "クロスバリデーション(交差検証), https://gochikika.ntt.com/Learning/cv.html
お詫び 分類する問題によっては、 • Positiveが重要である場合 (例)クレジットカードの審査 → 適合率(Precision) • Negativeが重要である場合 (例)病気の検査 → 再現率(Recall) と、どの結果に注目するかが異なるため。 図の引用元:Anuganti Suresh, "What is a confusion matrix?", Medium, https://medium.com/analytics-vidhya/what-is-a-confusion-matrix-d1c0f8feda5 実装の参考:Rukshani Somarathna, "Generation of a concatenated Confusion Matrix in cross-validation", Medium, https://medium.com/analytics-vidhya/generation-of-a-concatenated-confusion-matrix-in-cross-validation-912485c4a972
成果物について • ある時系列で記録された気候の数値から、別時系列におけるオゾンレベルの高低を分類する 学習器(モデル)を作成した。 • 正解率:Cross Validation(CV) = 80.2%、 スコア:Leaders Board(LB) = 82.1% • コンペにおける成績順位 5位(111人中) • 習得の期間:7日(22時間) • 試作品(精度が出るまで):3日 (8時間) • 現在の成績まで:1日(4時間)
発表の流れについて 1. 時系列データについて 2. 今回の時系列データと問題点について 3. 作成スケジュール 4. 開発環境 5. 作製したモデルについて(モデルの種類、評価) 6. 苦労、実践したこと 7. 今回の振返りと今後について
1.時系列データ(Time Series)について • ある対象について、時間軸に沿って記録された連続的なデータ • 実例として、 ➢ 株価や年間の売上 ➢ ヘルスケアデータ ➢ 気温、気圧 などが挙げられる。 • 時系列データの利用先は ➢ 予測(Forecasting) ➢ 分類(Classification) の2つである 図-1 時系列データの例※ 北川源四郎、「4-4 時系列データ解析」、東京大学 数理・情報教育研究センター、2020、 http://www.mi.u-tokyo.ac.jp/consortium2/pdf/4-4_literacy_level_note.pdfから引用
2.今回の時系列データと問題点について(1) • 出典 ➢ 引用 Dua, D. and Graff, C. (2019). UCI Machine Learning Repository, [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science. ➢ データソース:https://archive.ics.uci.edu/ml/datasets/Ozone+Level+Detection • 内容 ➢ 73個の特徴量がある時系列データ(説明変数72個、目的変数1個) ➢ 1267(行)×73(列) 日付 データ型 date 数 1 各時刻、最大及 各時刻、最大及 各種Hp面での び平均風速 び平均気温 気候データ 雷雨になる 可能性の指数 float float float 26 float 26 14 嵐の強さ (指数) float 1 海面気圧の前日 からの変化 海面気圧 float 1 float 1 オゾンレベル 降水量 bit float 1 1 1
2.今回の時系列データと問題点について(2) • 問題点(1/2) 欠損値がある。 ← 時系列データは連続であるのが前提なため、補間処理が必要 図-2 欠損値のあるデータ(上)、平均値で補間されたデータ(下) 図-3 データ全体における欠損値の割合(最大9%程度)
2.今回の時系列データと問題点について(-3) • 他の欠損値補間について 図-4.2 LOCF(Last Observation Carried Forward)法 図-4.1 元データ 図-4.3 中央値代入
2.今回の時系列データと問題点について(-4) • 他の欠損値補間について 図-4.4 線形補間法 図-4.1 元データ 図-4.5 スプライン補間
2.今回の時系列データと問題点について(-5) • 他の欠損値補間について 図-4.6 移動平均補間 図-4.1 元データ 図-4.7 カルマン平滑化補間
2.今回の時系列データと問題点について(3) • 問題点(2/2) ➢ 目的変数の分布に大きな偏りがある。 ← オーバーサンプリング(Over Sampling)を施す。 必ず学習データに施すこと、(検証データに施さない‼) 偏りの大きなデータで機械学習を実施することの問題 • 数の多い属性(Majority)を予測するモデルが作られる。 • さらに、Majorityを予測するだけで「見た目は」高い精度 が得られてしまう。(汎化性能が低い) 図-3 目的変数における偏り オーバーサンプリングについて ⇔ アンダーサンプリング • 数の少ない属性(Minor)をMajorityと同様の数となるよう 水増しする手法である。 • 今回は手始めに基本的な手法である、ランダムオーバー サンプリング(Random Over Sampling)を採用している。 • Random Over Samplingは、Minorからランダムにデータを 選択し、コピーしてサンプル数を増やす手法。過学習を 起こしやすいが、高速に動作する。
4.開発環境 ハードウェア • Google Colab(無課金、T4GPU)× 2 (Linux) • Lenovo 「IdeaPad Flex 5 14ALC7 (2022年製)」 (Windows11 HOME) 演算装置:AMD Ryzen 7 5700U with Radeon Graphics 1.80 GHz ➢ Frequency ( Base:1.8GHz, Max 4.3GHz ) ➢ Cores : 8, Threads : 16, Cache : 4MB L2 / 8MB L3 ソフトウェア • Python 3.10 • Tensorflow 2.15 • Anaconda3 ➢ Python 3.11 ✓ matplot lib ✓ numpy ✓ Pandas ✓ Scikit-learn ✓ imbalanced-learn ✓ LightGBM ➢R 4.3.2 3.5 1.21 2.0 1.4 0.12 3.3
5.作製したモデルについて (モデルの種類、評価) • 本課題に対し、深層学習(DNN:Deep Neural Network)、サポートベクターマシン(SVC:Support Vector Machine Classifier)及び勾配ブースティング法(Gradient Boosting Method)の3つでモデ ルを作成した。 • 評価指標として、検証データでの正解率(ACC:Accuracy)、層化K交差検証(K=5)での正解率の 平均(Cross-Validation Accuracy)、コンペサイトの採点で出された正解率(Leader Board)及び順 位を記載している。 DNN ACC CV LB 順位 演算時間 SVC 0.846 0.802 0.818 5位 120 (Sec) GBM 0.900 0.880 0.786 12位 CNN 0.950 0.890 0.776 22位 1 (Sec) 1 (Sec) 0.990 0.985 0.709 4.5 (Hour)
5.作製したモデルについて (モデルの種類、評価) DNN SVC GBM * 縦軸:実際の値、横軸:予測値
6.苦労、実践したこと • 時系列の予測(Forecasting)に関する情報は多いが、分類(Classification)に関する情報 は少ない。 ← 類似案件(時系列分類)の記事を参考にする。 Kaggleの「Credit Card Fraud Detection」(クレジットカードの不正検知) ← "Time-Series Classification"で英語圏のサイトを探索する 英語圏は優良な文献も多いが、情報量が多いので上図に取捨選択しなければならない。 • 欠損値の補間(実装ミスが起こりにくく適切な方法) ← Rとそのライブラリで、欠損値の分布や割合を可視化し、補間手法を検討した。 • 目的変数が大きく偏ったデータを分類するときに使える方法について ← Pythonのライブラリ"Imbalanced-learn"やTensorflowの"dataset"ライブラリで対応。
7.今後の施策(改良点) • 欠損値の補間について → 今回、補間の手法に平均値代入を使った。この方法は基本的なものだが、応用統計学の 分野からは、例えば多重代入法などの、より高精度な補間方法が考案及び実装されてい る。モデルが出来上がったら、こちらを導入して結果がどう変わっていくか検証していきたい。 • オーバーサンプリングの方法について → 今回のオーバーサンプリングはMinorに属するデータをコピーするという、一番単純な方 法だった。この方法は前述のとおり過学習しやすい欠点がある。そして、検証データでは高 い正解率であるモデルほど、反対にコンペでの正答率が低くなっていた。ここから考えられ るのは、与データに対して過学習をしており汎化性能が低くなっているということである。な ので、Minorからデータを合成するSMOTE(Synthetic Minority Over-sampling TEchnique)の 導入から考えている。 オーバーサンプリングの手法をランダムサンプリングからSMOTEに変えて分類(SVC)したが、結果はほぼ変わらず
ご清聴ありがとうございました
参考にした情報源 公式情報 • R 公式ドキュメント(英) ・・・ • Tensorflow公式リファレンス(日、英) ・・・ • Scikit-learn公式ドキュメント(英) ・・・ • Imbalanced-leaning 公式ドキュメント(英) ・・・ https://www.r-project.org/ https://www.tensorflow.org/ https://scikit-learn.org/stable/user_guide.html https://imbalanced-learn.org/stable/index.html ブログなど • Qiita(日) • teratail(日) • Stack Overflow(日、英) • Kaggle(英) • Analytics Vidhya(英) • Medium(英) • GitHub(日、英) ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ https://qiita.com/ https://teratail.com/ https://stackoverflow.com/ https://www.kaggle.com/ https://www.analyticsvidhya.com/blog/ https://medium.com/ https://github.com