• Top
  • モデルの精度を上げるには

contents-thumb
  • 編集日

    2024年6月

  • カテゴリ

    分析ガイド

はじめに

「モデルの評価までは一通りできるようになったけど、次に何をすればいいんだろう?」
本記事では、そのような悩みをお持ちの方に、予測モデルの精度をさらに向上させるためのアイデアをいくつかご紹介します。
Node-AI での実践例も合わせて掲載しているので、ぜひ活用してみましょう!

目次

学習データの改善
 特徴量を追加する・除去する
 正規化する
 外れ値を含む区間を除去する
 周期性を考慮して時間窓を変更する
モデルの改善
 ハイパーパラメータを変更する
 他のモデルを使う

学習データの改善

特徴量を追加する・除去する

AI による予測を効果的に行う上で、予測に必要な特徴量(説明変数)を吟味して、適切な追加・除去・変換することは重要な作業です。これは一般に特徴量エンジニアリングと呼ばれています。

例えば、アイスクリーム店が、過去のデータをもとに次週の売上を予測する場合を考えます。このとき

  • 日中の方が夜間よりもアイスクリームが売れる
  • 土日の方が平日よりもアイスクリームが売れる
  • 祝日はアイスクリームが売れる

ということが予想できます。したがって、特徴量として「時刻情報」や「祝日かどうか」を追加することで、アイスクリームの需要をより的確に予測できると期待できます。

▶ Node-AI での実践例

Node-AI では時間情報抽出カードや休日情報抽出カードが用意されているため、上記の操作を簡単に行うことができます。


逆に、予測に関係のない特徴量や、似たような特徴量を除去する(説明変数として使わない)ことでも、モデルの予測精度が向上する可能性もあります。

▶ Node-AI での実践例

相関分析カードを使うことで、目的変数と、ある説明変数の相関を可視化できます。
これにより、相関係数の低い説明変数を外して新しいモデルを構築してみよう、という次の手を打つことができます。

また、相関行列カードや散布図カードにより、説明変数どうしの相関関係を可視化できます。
これにより、相関係数の高い 2 つの説明変数のどちらかを外して新しいモデルを構築してみよう、という次の手を打つことができます。

より高度な分析として、目的変数に対する説明変数の「重要度」を可視化する重要度可視化カードも提供されています。このカードは上とは異なり、非線形な関係(相関では表せない関係)も検出できます。
重要度が低い説明変数を除去するという使い方ができるほか、説明変数同士の類似度も計算できるため、類似した説明変数のどちらかを除外するという使い方もできます。


特徴量エンジニアリングの考え方はとても大切なので、以下のコラムでも詳しく解説しています。

適切な特徴量を考えてみた(1)

正規化する

もし学習データの正規化を行っていない場合は、正規化を行った上でモデルを再学習させると、精度の向上が見込めるかもしれません。
また、正規化には、学習の安定性や速度の向上といった効果も期待できます。 一方で、選択する正規化手法によっては、外れ値に対して敏感であるため、次に示す適切な外れ値除去を実施しなくてはいけないことに留意しなくてはいけません。

▶ Node-AI での実践例

正規化カードにより実行できます。

外れ値を含む区間を除去する

外れ値は、データセットの中で他のデータポイントとは異なるパターンを持つ特異な値です。外れ値が存在すると、それらが時系列の本質的な傾向やパターンを反映していない場合、モデルが不適切な学習を行ってしまう可能性があります。

例えば、工場の運転操作を AI で予測するシナリオで、センサーの値を説明変数として使っているケースを考えます。このセンサーの仕様で、センサーが故障している時だけ値が 0 を取るようになっている場合、この 0 の値のデータも含めて学習してしまうと上手く予測が当たらないことが考えられます。

そのような場合は、外れ値を含む区間を学習データから除去することで、最終的なモデルの予測精度が向上する可能性があります。

▶ Node-AI での実践例

Node-AI では、データカードの「統計」タブや「グラフ」タブから、データの様子を確認できます。これにより、外れ値の存在をチェックできます。

もし外れ値があると分かり、外れ値を含む区間を除去したいと思った場合は、閾値データ削除カードが便利です。

周期性を考慮して時間窓を変更する

時系列データは周期性のある変動を示す場合が多いです。例えば、アイスクリームの売上について考えると、

  • 夏(6 月〜8 月): 熱いためアイスクリームの売上が高い。
  • 冬(12 月〜2 月): 寒いためアイスクリームの売上が低い。

という傾向があるかもしれません。その場合、直近 1 週間のデータを使って売上を予測するよりも、昨年の同じ季節のデータを説明変数に含めて、売上を予測した方が精度が高い可能性があります。このとき、時間窓の設定としては、「3 か月分のデータを説明変数とし(窓幅 M=3 か月)、そこから 1 年後の値を予測する(遅れ幅 N=1 年)」ということになります。

このアイスクリームの売上の例では周期性が直感的に分かりやすいですが、データによっては、そもそもどのような周期性があるかすら分からない場合もあります。その場合には、まずデータがどのような周期性を持っているか検討するところから始めるとよいでしょう。

▶ Node-AI での実践例

自己相関分析カードや相互相関分析カードにより、時間差を考慮した相関の強さを可視化できます。
ある時間分ずれて相関が強いということは、その時間間隔でデータに周期性があるのでは? という仮説を立てることができます。

モデルの改善

ハイパーパラメータを変更する

ハイパーパラメータとは、AI モデルを使う際に、人手であらかじめ決めておく設定値のことです。
ハイパーパラメータの値によってはモデルの学習が上手くいかないケースもあるので、様々な値で試行錯誤することが重要です。

▶ Node-AI での実践例

それぞれのモデルにおいて、ハイパーパラメータの値を画面上で変更できます。

他のモデルを使う

そもそも、学習で使っている AI モデルが、使っているデータの性質に適していないという可能性もあります。その場合は、違う種類のモデルを試してみてください。

▶ Node-AI での実践例

Node-AI では、線形モデルカード、MLPカード、決定木回帰モデルカード、LightGBMカードなど、様々なモデルがカードとして提供されています。

それぞれのモデルの特性の違いについては、以下の記事をご覧ください。

時系列分析で用いる数理モデル