時系列 Archives | DataRobot https://www.datarobot.com/jp/blog/category/時系列/ Deliver Value from AI Tue, 04 Oct 2022 12:22:13 +0000 ja hourly 1 https://wordpress.org/?v=6.4.3 時系列での異常検知のご紹介 https://www.datarobot.com/jp/blog/introducing-automated-time-series-anomaly-detection/ Wed, 19 Aug 2020 02:03:53 +0000 https://www.datarobot.com/jp/?post_type=blog&p=4279 DataRobot のリリース6.1では、時系列異常検知を導入しました。これは完全な教師なし機械学習ワークフローであり、ターゲット変数を指定せずに異常を検知することができます。

投稿 時系列での異常検知のご紹介DataRobot に最初に表示されました。

]]>
(このブログポストはIntroducing Automated Time Series Anomaly Detectionの和訳です)

これまで、DataRobot の Automated Time Series教師あり機械学習ワークフローをベースにしており、トレーニング対象のターゲット特徴量を指定することで、将来の事象を予測することができます。しかし、ターゲットを知らずに時系列データから情報を推論したい場合もあります。たとえば、機械のセンサー不良を検出したい場合や、スマートホームデバイスで異常に高いネットワークアクティビティを検出したい場合があるでしょう。異常な事象を検知するためには、異常はどこでも発生し得ることを理解した上で、データセットを全体的に見る必要があります。

時系列モデリング
DataRobot コミュニティリファレンス

DataRobot のリリース6.1では、時系列異常検知を導入しました。これは完全な教師なし機械学習ワークフローであり、ターゲット変数を指定せずに異常を検知することができます。

異常の種類

ご想像のとおり、異常はさまざまな形で発生する可能性があります。このように、平坦な領域でスパイクが1つ発生するかもしれません。

Time series data
時系列データ

また、以下のように正弦波がクラスター化する場合もあるでしょう。

Clustered sine waves
クラスター化された正弦波

さらに、複数の異なるデータ型が重なり合う可能性もあります。

layered data types
重なり合ったデータ型

DataRobot の時系列向け異常検知では、このようなさまざまな種類の異常をすぐに検知できるように、最先端の異常検知アルゴリズムを活用したブループリントのセットを新たに開発しました。

時系列異常検知

DataRobot の製品開発の根底にあるのは、データサイエンティストの生産性を加速度的に向上させるだけでなく、ビジネスアナリストをはじめとするデータサイエンティスト以外の方々を対象としたデータサイエンスの民主化に貢献しなければならないという想いです。時系列での異常検知も例外ではありません。他の製品と同じように、覚えやすく使いやすいユーザーインターフェイスになっています。

操作を始めるには、以下に示す基本ステップを実行します。

Choose a prediction targat JP
予測ターゲットの選択

1. データセットを AI カタログにアップロードするか、通常どおりプロジェクトに直接アップロードします。オートパイロット画面が表示されるので、[ターゲットなし?]を選択します。

2. 次に、通常どおり[時間認識モデルを設定]をクリックして進みます。リアルタイムで異常を検知するので、予測ウィンドウを選択する必要はありません。ここで[開始]をクリックして、オートパイロットを開始します。

3. オートパイロットが完了すると、各モデルが“合成 AUC ”でランク付けされているのがわかります。この指標は、最も一般的な値と最も一般的でない値をビニングすることで生成され、全体のうち特定の時点を異常としてラベル付けすることができます。これらのラベルは、そのモデルの合成 AUC を計算するために使用されます。

leaderboard jp new
リーダーボード

4. また、異常ラベル付きのデータセットを一部または全部アップロードして、実際の AUC 指標を生成することもできます。この機能を使用するには、モデルを選択し、[予測]タブをクリックして、ラベル付きのデータセットをアップロードします。

5. 次に[予測範囲予測]を選択し、ラベル列の名前を入力します。下図のように[予測を計算]ボタンをクリックします。

Forecast Range Prediction jp
予測範囲予測

6. 予測が計算されたら、メニューから[外部テスト列を表示]をクリックします。  指標が以下のように“合成 AUC”から“AUC”に変わることがわかります。

External text column jp
外部テスト列

7. また、[評価] > [時間の経過に伴う異常]で異常の内容をさらに調査することもできます。この機能により、複数の系列やバックテストを調べて、いつ異常が発生したかを確認することができます。さらに、各異常は0〜1で採点されますが、この点数は、実際にその時点で異常が発生したかどうかの確率を示します。

Anomaly over time chart JP
時間の経過に伴う異常チャート

8. Automated Time Series の標準機能と同様に、最小値または最大値のアンサンブルモデルを作成することも可能です。異常検知において、最大値のアンサンブルモデルでは、発生し得るすべての異常を検知することができます。これらアンサンブルモデルは、偽陽性に対する許容度が高い場合には特に有用です。

モデルに満足しているのであれば、このように簡単な数ステップで、新たな異常をリアルタイムで検知するためのモデルをデプロイする準備が整います。こうした準備は、標準の Automated Time Series でよく知られた通常の方法で行うことができます。

今すぐ異常検知を始めましょう

DataRobot では、Automated Time Series 向けの異常検知をご提供できることを誇りに思います。この新機能をぜひお試しください。ご興味をお持ちいただけましたら、直接お問い合わせも可能です。

DataRobot Automated Time Series をすでにお使いの場合は、お持ちのライセンスで異常検知をご利用いただけます。また、DataRobotコミュニティでは、異常検知について詳しくご紹介し、初めて異常検知モデルを構築する際に役立つビデオをご覧いただけます。異常検知は一般提供機能です。ぜひお試しください!

リリース6.1
エンタープライズAIの最先端

リリース6.1ではエンタープライズ AI のビジネス面にフォーカスし、ユースケースの価値を追跡する機能を導入

もっと詳しく

投稿 時系列での異常検知のご紹介DataRobot に最初に表示されました。

]]>
機械学習を使った時系列予測の自動化 https://www.datarobot.com/jp/blog/time_series_product/ Sun, 03 Feb 2019 16:05:32 +0000 https://www.datarobot.com/jp/blog/jp-time_series_product/ DataRobotのデータサイエンティストの中野 高文です。 時系列予測は過去のトレンドから、未来がどうなるかを予測する問題です。 ビジネスで時系列問題は頻繁に見られる問題です。商品の需要予測、店舗の訪問客予測、消費電力...

投稿 機械学習を使った時系列予測の自動化DataRobot に最初に表示されました。

]]>
DataRobotのデータサイエンティストの中野 高文です。

時系列予測は過去のトレンドから、未来がどうなるかを予測する問題です。

ビジネスで時系列問題は頻繁に見られる問題です。商品の需要予測、店舗の訪問客予測、消費電力予測やコールセンターの呼量予測など製造・流通・インフラなど業界を問わず幅広く存在します。

しかし時系列予測では通常の機械学習と違った特有の難しさがあります。

1. 時系列の検定

時系列問題は過去のデータでモデリングをして未来のデータで予測を行うという順序が非常に重要です。そこで時系列モデリングの検定では、通常のランダムパーティションや層化抽出ではなく、時系列の順序が保たれたデータの分割が必要になります。

2. 時系列の特徴量エンジニアリング

売上を予測する時、1週間前の売上や過去1週間の平均売上などの過去のトレンドデータが予測に重要なシグナルです(例えば皆さんも日曜ゴルフの打ちっ放しに行くとき、先週の日曜同じ時間に行った時に空いていたか考えますよね)。このようなヒストリカル変数やラグ変数と呼ばれる特徴量の生成は時系列問題にユニークなもので、データサイエンティストの技術や知識が必要とされます。

3. 時系列に特化した技術

時系列問題では他の機械学習にない特別な技術やアルゴリズムがあります。例えば下のFig.1の時系列は非常に変化が激しく(専門的な言葉では非定常と言われます)このままではモデリングが難しいデータです。そこで今日と昨日の差を取ることでFig.2のような安定した時系列になり、モデリングが容易くなります。その他にも経時的に指数のトレンドを示すターゲットはlog変換するなど時系列に特有の技術が必要です。

Rplot

4. 時系列に特化したアルゴリズム

時系列の問題では統計学や計量経済学の理論体系で研究されてきたARIMAなど時系列に特有のアルゴリズムが使われます。一方で以前紹介したように、XGBoostやニューラルネットワークなどの機械学習のアルゴリズムも強力な手法として時系列問題で利用されています。数多くあるそれらのアルゴリズムを理解しそれぞれのデータに適切なものを選択するには、知識・時間の両方が要求されます。

DataRobotの時系列製品の特徴

2018年8月にDataRobotは時系列予測の難しい部分を自動化した、アドオン製品をリリースしました。この製品ではこれまで時系列分析で難しかった部分が自動化され、機械学習や時系列問題について全く知らない人でも、高精度な時系列モデルの生成が可能になりました。

1. 時系列検定の自動化

DataRobotの時系列モデリングでは過去のデータでモデリングして、その先の未来のデータで検定する順序性が保たれたデータの分割が行われます。また、時系列順序を維持したまま交差検定のように複数回検定を行うバックテストも行えます。このような検定をすることで、より未来を正確に予測できるモデルを作ることができます。

2. 時系列の特徴量エンジニアリングの自動化 

DataRobotでは、周期性(例:曜日により売上のパターンがある)などを判断し多数の特徴量(例:7日前の売上など)を自動で生成します。例えばあるデモデータでは元々18あった特徴量から2400近くの特徴量の候補をリストアップし、最終的にその中から優先度の高い274の特徴量が生成されました。

また正月などのイベント変数は重要な変数ですが、正月まで後何日あるかも売上に影響を及ぼします。DataRobotではカレンダーをアップロードするだけで予測のシグナルとなるイベント変数(例えば次のイベントまでの日数など)を自動生成します。

このような変数は未来を予測する上で非常に重要なシグナルです。DataRobotでは今まで属人化していたこのような技術が完全に自動化されています。

3. 時系列に特化した技術の自動化

上述したような安定しない時系列や指数的な変化を示す時系列では差のモデルやターゲットのlog変換などが必要か自動で判断します。そして必要な場合変換などを行なった上でモデリングが行われます。このような適切な変換を加えることで、トレンドをより正確に予測できるモデルが生成できます。

 4. 多様なアルゴリズム

XGBoostやリッジ回帰などの機械学習のアルゴリズムの他にも、昔ながらの統計的なアルゴリズムなどが実装されています。例えば以下のようなアリゴリズムでモデルが生成できます。

  1. ARIMA : 過去の値の自己相関などをモデリング。過去の目的変数以外に重要な要素がない場合に精度が良いモデルができやすい。
  2. Prophet : Facebookの開発したアルゴリズム。トレンドの変化点を検知したモデリングを行う。
  3. Eureqa : DataRobot社が買収したNutonian社のモデル。進化的アルゴリズムを用いてデータからプロセスを説明する複雑な数式を導きだす。

DataRobotではこれらの豊富なアルゴリムで自動でモデルを生成し、データに最も適切なものを利用することができます。

また、DataRobotの時系列モデリングでは複数の商品/店舗の売上を1つのモデルとして生成し、一度に予測する複数時系列のモデリングも行えます。これまでの時系列予測では予測モデルを商品の数だけ生成する必要があり、多くの商品の売上予測などを行う場合モデルの生成・管理が難しい状況でした。しかしDataRobotを使うことで数少ないモデルで全商品の需要予測を行うことができます。

このようにDataRobotの時系列アドオン製品では時系列モデリングでこれまで難しかった部分が全て自動化されています。

まとめ

データサイエンティストの数は不足していますが、より特殊な時系列の予測モデルを作れる人間はさらに少ないのが実情です。そこでデータサイエンスはわからないが、ビジネスやデータを理解している現場の担当者がモデルを作ってビジネスで活用して行く必要があります。

DataRobotの時系列アドオン製品でトップデータサイエンティストの知識・技術が自動化され誰でも高精度の時系列モデリングが使えるようになりました。そして需要予測などのビジネスに重要な問題を誰でも解決し、ビジネスで大きなリターンをあげていただくことができる可能性を持った製品となっています。

Screen Shot 2019-01-26 at 18.11.29

オンデマンドビデオ
AI Experience Virtual Conference 2021

「DataRobot AI Cloud」に関する基調講演や、業界をリードするDX推進企業の取り組み、AIサクセスを実現するビジネスリーダーによるパネルセッションをオンデマンドビデオで確認

オンデマンドで見る

投稿 機械学習を使った時系列予測の自動化DataRobot に最初に表示されました。

]]>
機械学習と線形モデルでの時系列モデリングの比較 https://www.datarobot.com/jp/blog/2017-08-31-mahine-learning-vs-linear-modelling-in-time-series-analysis/ Wed, 30 Aug 2017 19:24:33 +0000 https://www.datarobot.com/jp/blog/jp-2017-08-31-mahine-learning-vs-linear-modelling-in-time-series-analysis/ DataRobotのデータサイエンティスト中野高文です。 最近会うお客様からDataRobotを使って時系列予測を行いたいというリクエストを受けることが大変多くなって来たため、売上予測をテーマにワークショプを開催させてい...

投稿 機械学習と線形モデルでの時系列モデリングの比較DataRobot に最初に表示されました。

]]>
DataRobotのデータサイエンティスト中野高文です。

最近会うお客様からDataRobotを使って時系列予測を行いたいというリクエストを受けることが大変多くなって来たため、売上予測をテーマにワークショプを開催させていただくことになりました。詳細はこちらから。今回のブログでは、上記ワークショップに興味を持った方向けにより深いお話をさせていただこうと思います。

少し専門的なトピックではありますが、機械学習で行う時系列予測と昔からよく行われてきた線形の時系列解析(ARIMA、指数平滑化法など)がどう異なっているのかを説明していきます。例えば、時系列データの解析ではファイナンス分野においてはニューラルネットワークによる機械学習が最近よく行われています(ちなみにはDataRobotにはニューラルネットのアルゴリズムも含まれています)。

今回、まず最初に機械学習で行う時系列予測と線形の時系列解析の大きな違いを説明します。特に線形の時系列解析の代表的なARIMAモデルを使った際の違いに焦点を当てて説明していきます。

DataRobotは機械学習の多くのプロセスを自動化するプラットフォームです。そこで次に、DataRobotを用いて時系列予測を行なった場合、RやPythonを用いてARIMAを作った場合と比べてどれぐらい作業が自動化されているかという面を比較します。

最後にARIMAの機械学習(DataRobot)の性能を比較するために弊社で行われた、多数のデータセットでのARIMAとDataRobotでの予測精度の比較実験の結果をまとめます。

線形時系列モデル vs 機械学習での時系列予測

線形の時系列解析の代表的なARIMAモデルに焦点を当てて、機械学習で行う時系列予測と線形の時系列解析の大きな違いを説明します。

Screen Shot 2017-08-31 at 9.36.51

 

線型性 vs 非線形性

機械学習で時系列予測を行う最大のメリットはより現実に近い事象を説明できる非線形モデリング手法を使って分析できるということです。実ビジネスで存在するデータには線形的な関係で説明できない時系列も多く存在します。ニューラルネットがファイナンスの予測に多く使われているといったのも正にこれが理由です。実際DataRobotで分析を行っていると、十分データが存在する際にはXGBoostや非線形のカーネルを用いたSVMなどの非線形なモデルが精度の高いモデルとして上がってくることがほとんどです。一方でデータが少ない際には回帰モデルなどが精度の良いモデルとして上がって来やすくなります。

Screen Shot 2017-08-31 at 10.01.39

これに対して線形モデルは、構造が簡単に数式で表されるためモデルの構造が自明である一方、複雑な事象をうまく説明できないことも見られます。

一方で、線形モデルではその原因となる事象が全てわかっていない事柄をモデリングに上手く構造として組み込んでやることができるという良い一面もあります。具体的には時系列問題では、中身がよくわかっていない事象が未来にも影響を及ぼす(自己相関があるという風な言い方をされます)という事象が存在します。

例えば、マーケティングの毎月の予算がズボラな管理しかしていなくて、はっきりわからない場合、その売上への貢献度をモデリングするのは難しくなります。そこでそれを毎月の平均的なマーケテティング費用からの乖離ををホワイトノイズ(ランダムで起こっているが構造は一定でしかも長期間で見ると平均的にゼロ」なノイズ)で表すとします。

ほとんどの場合、マーケティングによる売上への影響は間近のマーケティングからだけでなく、前月・前々月といった過去のマーケティングのからも受けます。そこで月々のマーケティング予算をホワイトノイズlatex_76dfcac6476beabcb716bd2d731cea06として表現して、

texclip20170828080842

と書けるわけです。つまり、今月の売上には、今月のマーケティング費用と時間の経過に伴い影響力が目減りした前月のマーケティング費用の50%分の影響、前々月のマーケティング費用の30%分の影響があるということですね。

機械学習では、マーケティング費用が本当にわかっている場合には説明変数にこれらの変数を使えばモデルに組み込むことができるのですが、今回の様にはっきりとわかっていない場合はこの様な事象を機械学習で説明することは難しくなります。

簡単にここまでをまとめると、用意できるデータ量が多い、原因となる事象を把握して説明変数として使うことができる場合は機械学習を用いると非線形で複雑なパターンも認識できる良いモデルを生成する事が可能です。一方データが少ない、あるいは原因となる事象が把握できていない場合には線形時系列モデルの方が良い精度を示すことがよく見受けられます。

 

周期性のあるデータへの対応

実ビジネスのデータでは極端でしかも単一でなく複数の周期性を持つデータが多く見受けられます。例えば週末の売上が極端に多く、週末に50%平日で50%の売上を計上するというのは小売店ではよく見られることです。それにかけてクリスマスや母の日といったイベントのパターンも存在し、これらのパターンが複雑に絡まりあって一見しても解らないパターンとなっています。

線形時系列モデルの中でも手法によって異なるのでARIMAに限定した事柄ですが、ARIMAでは一般のRやPythonのパッケージではこの様な複数の周期性が混在しているデータに対する分析はデフォルトではサポートされておらず、また周期が長期間に渡る場合、あるいは非常に極端な周期性パターンのある場合でのモデリングは難しいと言われています*2

これに対して、機械学習では周期的なパターンをもたらす事象を全て説明変数として使ってモデリングを行うことで、様々な複雑な周期的パターンをモデリングすることが可能です。例えばそれが不定期なセールなどといった、ARIMAでは対応できないようなものでも、そのセールのある日程を説明変数としてタグ付けすることで、不定期なパターンも説明することができます。

また、その周期が日次データで1年に1度と言うような長期の周期性であっても説明変数1年の何日目かと言う説明変数によってモデリング可能です。

DataRobotを用いた時系列予測

DataRobotを用いて時系列予測を行なった場合、RやPythonを用いてARIMAを作った場合と比べてどれぐらい作業が自動化されているかという面の比較を行います。

Screen Shot 2017-08-31 at 9.41.29

 

ARIMAのモデリングプロセス

RやPythonでARIMAをモデリングする際においては、複数のプロセスが必要です。時系列分析においてもインプットデータに偏りがある場合は、データを変換して偏りを除去する必要があります。

また周期性のあるデータの場合には、データより周期性を特定し差分をとって周期性を取り除く作業を行います。例えばt = 1, m + 1, 2m + 1,・・・ごとにパターンの現れる周期mのデータではlatex_9ec9379d230efb35e9291f24af804879という時系列データに変換します。

この後ARIMAモデルのハイパーパラメーターの値を複数の検定で特定し*3、そのトレーニングデータに対してのモデルの誤差(サンプル内エラーと呼ばれ、AIC・BICと言う指標がよく使われます)がどれほどあるのかを計算するプロセスを繰り返し、最も誤差の小さなモデルを最終モデルとして選びます(これは大まかなプロセスとなります。詳細は*4を参照ください)。

 

DataRobotでのモデリングプロセス

DataRobotでは多くのプロセスを自動化していて、偏りのあるデータに対してはBox-Cox変換などを自動で行なってデータを正規分布の様な偏りのない分布に近くなるよう変換します。

機械学習では、先ほど説明した様に、周期性を説明変数を用いて認識するのですが、DataRobotではビジネスにおいてよく見られる、曜日、月、月の日(月が始まって何日目か)、年などといった季節性のパターンを自動で日付より抽出するという特徴量エンジニアリングを自動で行います。

Screen Shot 2017-08-31 at 10.05.28

また週番号といったその他の周期的な特徴量もDataRobot内でフィーチャーエンジニアリングして作成することができます。

さらにハイパーパラメーターのチューニングに置いてDataRobotでは先ほどのARIMAでのプロセスとは異なった「バックテスト」という手法を用い、またそのプロセスも自動で行なっています。ARIMAで説明したAIC・BICはサンプル内予測誤差(トレーニングデータに対してモデルの誤差がどれほどあるのか)の推定値ですが、DataRobotでは実際に未来のデータ(サンプル外データ)で検定して誤差をはかります。例えば、2週間後を予測するモデルを作成する際には実際にモデルを作成したデータより2週間先のデータで検定を行なって、その際に精度の高いハイパーパラメーターとモデルの組み合わせを選択し、実際に未来を予測する精度が最も高くなるようにしています。

同時にDataRobotではモデルを作ってそれより未来のデータで検定するというプロセスを複数回行う時系列の交差検定のような事も行なっています。これによって、一度のバックテストよりもさらに現実に予測を行う際の精度に近い検定値を計算することが可能です。

Screen Shot 2017-08-31 at 9.29.14.png

さらに線形時系列解析では特殊な検定が必要なトレンドのあるデータもDataRobotでは自動で対応が可能です。研究によると機械学習を用いて線形トレンドのある単位根過程をモデリングする際には先ず線形モデルをフィッテイングしてトレンドを見つけ、ターゲット変数と線形モデルの残差を機械学習のモデリングするという手法良い精度が出ると言う結果が出ています*4。DataRobotではこのプロセスを自動で行う、つまりトレンドを線形モデルで抽出し残りデータに対するフィッテイングをXGBoostで行うという一連のモデリングを自動で行うブループリントを用意しています。(ブループリントはアルゴリズムとその前後の前処理をまとめて1組に考えた処理プロセスのことです。)

このようにDataRobotではモデリングの際の煩雑なプロセスの多くを自動で処理します。

DataRobot vs ARIMAの精度の比較

弊社では今回約70の幅広い時系列の実データを集め、ARIMA(RのForecastパッケージのauto.arimaを利用)とDataRobotによる比較を行いました。データはテストデータと検証データに分けられ、それぞれのモデルを検証データを用いてジニ係数で比較しました。更に今回の検証においては比較を単純化するためDataRobotでは時系列のみを説明変数とし、それ以外の説明変数は使わないように行っています。

Screen Shot 2017-08-31 at 10.09.31

ジニ係数は1が完璧に予測できていて、−1であれば全く反対に予測していると言う指標になっており、DataRobotでの平均Gini係数は0.41、ARIMAの平均Gini係数は0.21となっており、上記の表からもわかるようにDataRobotの方が精度が大幅に良いことがわかります。

まとめ

今回機械学習で行う時系列予測と昔からよく行われてきた線形の時系列解析の違いを簡単にまとめさせていただきました。さらに詳細を知られたい方や、実際にDataRobotでの時系列モデリングする様子を見て見たい方は勉強会なども行なって行きたいと思うのでご期待ください。

*1 : 沖本竜義先生の本
*2 : Dr Hyndmanのこちらの記事を参考ください。
*3 : Rのauto.arimaではこのハイパーパラメーターチューニングが自動で行われる。
*4 : こちらの参考書(英語)を参考ください。
*5 : こちらの論文(英語)を参考ください。

オンデマンドビデオ
AI Experience Virtual Conference 2021

「DataRobot AI Cloud」に関する基調講演や、業界をリードするDX推進企業の取り組み、AIサクセスを実現するビジネスリーダーによるパネルセッションをオンデマンドビデオで確認

オンデマンドで見る

投稿 機械学習と線形モデルでの時系列モデリングの比較DataRobot に最初に表示されました。

]]>