はじめに
こんにちは。イノベーションセンター、テクノロジー部門、データ分析コンサルティングPJの更科です。
この記事では、2022年12月08日にβ版フリートライアルキャンペーンが始まったNode-AIで時系列データの因果分析・重要度可視化・要因分析などをしてみようと思います。
Node-AIは時系列データの分析をするNTT Communicationsの内製開発サービスで、製造業を中心に様々な領域で活用されています。Node-AIについて詳しくは「ノーコードAIモデル開発ツール Node-AI」や「ノーコードAI開発ツールNode-AIの紹介」をご覧ください。
読んでほしい人
- ノーコード(ローコード)AI開発ツールに興味がある人
- 時系列データの可視化に興味がある人
- 因果分析、特徴量重要度、要因分析に興味がある人
伝えたいこと
- Node-AIを使ってデータの様々な情報を可視化できる!
- Node-AIを使って因果分析・重要度可視化・要因分析ができる!
- 重要度可視化やニューラルネットワーク(Multilayer perceptron、以下「MLP」)の要因分析ではNTT Comの独自技術が使われている!
用いるデータ
今回はこちらの、シエーヴル(ベルギー)にある住宅における消費電力、気温、湿度等のデータを使っていきます。
データには以下の情報が含まれています。
- date : 日時/時刻(10分刻み)
- Appliances : 家電の消費電力(Wh) (AIモデルで予測する対象)
- lights : 照明設備が消費する電力(Wh)
- T1 : キッチンの気温(°C)
- RH_1 : キッチンの湿度(%)
- T2 : リビングの気温(°C)
- RH_2 : リビングの湿度(%)
- T3 : 洗濯室の気温(°C)
- RH_3 : 洗濯室の湿度(%)
- T4 : オフィスルームの気温(°C)
- RH_4 : オフィスルームの湿度(%)
- T5 : 浴室の気温(°C)
- RH_5 : 浴室の湿度(%)
- T6 : 住宅の外(北側)の気温(°C)
- RH_6 : 住宅の外(北側)の湿度(%)
- T7 : アイロン室の気温(°C)
- RH_7 : アイロン室の湿度(%)
- T8 : 子供部屋の気温(°C)
- RH_8 : 子供部屋の湿度(%)
- T9 : 両親の部屋の気温(°C)
- RH_9 : 両親の部屋の湿度(%)
- T_out : 観測所(シエーヴル)での気温(°C)
- Press_mm_Hg : 観測所(シエーヴル)での気圧(mm Hg)
- RH_out : 観測所(シエーヴル)での湿度(%)
- Windspeed : 観測所(シエーヴル)での風速(m/s)
- Visibility : 観測所(シエーヴル)での視程(km)
- Tdewpoint : 観測所(シエーヴル)での露点温度(°C)
これらを使って未来の消費電力(Appliances)を予測するという問題を考えます。
消費電力が増える要因を特定する事で、例えば
- 各世帯の蓄電池への電力供給を最適化する
- 外気温等の予測可能なデータが影響している場合は、夜間の電気代が安い時間帯にバッテリー充電をしておく
- 消費電力増大の予兆が見えたら、自動で空調を弱めてブレーカーが落ちないようにする
などの施策ができます。
統計量とグラフ
まずはデータをアップロードして、統計量やグラフを確認します。
データのアップロードの仕方やモデル作成手順については「ノーコードAIツールNode-AIを使って簡単に需要予測をしてみた」をご覧ください。
(今回のデータは日付が「日-月-年」のフォーマットに従っており、Node-AIでは適切に読み込めないため、「年-月-日」のフォーマットに変形してからアップロードしています。)
Node-AIは自動で統計量などを計算し、以下のように表示してくれます。
- テーブル(元データ)
- 統計量など
- グラフ
ここで、どのようなデータであるのか概要を掴んだり、欠損値等の確認をしてどんな前処理をするか決めていきます。
この例では、グラフを見ると多くの時間帯で消費電力が40~100程度である一方で急激に消費電力の増える時間帯がある事などがわかります。
仮に家電の使用状況等から「もっとなだらかなグラフになるはず」という事実がわかっているなら、データの測定方法に問題があるのかもしれません。
今回用いているデータに欠損値はありませんでしたが、欠損値がある場合は「欠損値補間」カードを使って直前や直後の値で埋めたり、前後の値を使った線形補間もできます。
他に「文字列置換」「外れ値補間」、「移動平均」、「時間差分」、「正規化」、「時間窓切り出し」、「時間窓結合」、「リサンプリング(アップサンプリング、ダウンサンプリング)」といった前処理用のカードが用意されています。
因果分析
データ分析を現実の問題に適用する場合、データ間の因果関係は重要な要素となります。
たとえば、A, B, C3つの値があり、AがB, Cそれぞれに影響しているもののBとCの間には因果関係がないという場合を考えます。
このとき、BとCには相関関係があるかもしれませんが、Cの値を人為的に操作してもBの値は変わらないという事になります。
Node-AIにはVAR-LiNGAM(詳しくはこちらをご覧ください。)という手法を用いてこのような因果関係を推論する機能があります。
右側にはデータ間の因果関係が表示され、左側には因果の強さが表示されます。
t=0やt=-1は時刻を表しており、今回は10分刻みのデータを用いているため、tが1増えると時刻が10分進む事になります。
この例では、消費電力(Appliances)に10分前の子供部屋の湿度(RH_8)と両親の部屋の湿度(RH_9)が負の影響を与えていると推論されています。(中央付近の5つのノードが繋がっている箇所に注目しています。)
部屋の湿度が下がった際に、加湿器を使って消費電力が増えているのかもしれません。
このように因果分析をする事でデータ間の因果関係がイメージ通りであるか確認でき、時には新しい気づきを得られる事もあります。
重要度可視化
Node-AIには特徴量重要度を可視化する「重要度可視化」カードも用意されています。
重要度可視化ではHilbert-Schmidt Independence Criterion(HSIC)を発展させたNTT Comの独自技術を使って重要度を算出しています。(詳しくはこちらの論文をご覧ください。)
線型な関係のみを使って算出される相関係数とは異なり、HSICでは非線型な関係も検出できるという特徴があります。
相関係数と重要度(HSIC)の違いについてもう少し具体的に説明します。
以下は各グラフの相関係数を表した図です。
(出典:Wikipedia)
たとえば3段目(赤枠内)のように、2つの(数値型)データを縦軸横軸にとってプロットしたグラフがランダムではなさそうな形になる場合、2つのデータにはある種の関係があると思われますが相関係数の絶対値は大きくなりません。
しかし、これらのグラフに対してHSICの値は大きくなります。
以下は今回のデータについてNode-AIで重要度を可視化した結果です。
Node-AIでは目的変数(予測したい値)に対して重要度が高い説明変数(予測に用いる値)から順番に表示され、「類似」をクリックする事で、その説明変数に対して重要度の高い別の説明変数が表示されます。
ここではT6(外気温)に対してT_out(観測所での気温)、T2(リビングの気温)、Tdewpoint(観測所での露点温度)の順番で重要度が高いと表示されています。
T6(外気温)とT_out(観測所での気温)は、地形の問題もありますが大きく変わらないと思うので重要度が高くなるのは自然かなと思います。
T2(リビングの気温)がT6(外気温)に対して重要度が高くなるのは、リビングに玄関があって頻繁に外気が入ってくる、といった事情があるのかもしれません。
この例では単純に相関の高いものが出てきていますが、データに依っては他の関係によって重要度が高くなる場合もあります。
データ量が多く処理に時間がかかる場合などに、重要度が低いデータを説明変数から外す事で性能を保ったまま処理を高速化させる事が期待できます。
学習済みモデルの性能評価及び要因分析
最後に学習済みモデルの性能評価と、性能に影響している要因の可視化について説明します。
Node-AIには大きく分けて「ニューラルネットワーク(MLP)」、「線形モデル」、「Random Forest」の3つのモデルが搭載されています。
今回は住宅の10分間における消費電力を直近2時間の各種データ(消費電力、湿度、気温、etc.)と線形モデルを使って予測してみます。
こちらも、データの前処理やモデルの学習については「ノーコードAIツールNode-AIを使って簡単に需要予測をしてみた」をご覧ください。
学習済みモデルと評価用のデータを使って性能評価した結果が以下になります。
モデルの予測値と実測値が重なって表示されており、左側にはモデルの性能を表す各種指標が表示されます。(青が予測値、水色が実測値を表しています。)
MAE(Mean Absolute Error/平均絶対値誤差)が27.3なので、今回作成したモデルの予測値は実測値から平均的に27.3ずれているという事になります。
モデルの性能を表す各種指標が自動で計算されるため、モデルのパラメータを変えて学習し直した時など、性能をすぐに確認できて、とても便利です。
要因分析では、この結果にどのデータが強く影響しているか一目でわかるように表示してくれます。
因果分析と少し似ていますが、作成したモデルがどの値を見ているか(或いは見ていないか)がわかるため、精度向上のためのフィードバックが得られます。
ここで、赤はプラスの影響、青はマイナスの影響を表し、色の濃さで影響の大きさがわかります。
たとえば、目的変数の直前の値だけに大きく依存して他の値をほとんど使っていない場合は、表の右上が赤くなり、他は真っ白になるため一目でわかります。(グラフを右にスライドさせるだけのモデルなどです。)
このような場合はRidge回帰のように一部の値に依存しにくいモデルを使う事で、精度向上の可能性があります。 (少なくとも異なる学習済みモデルができるはずです。)
ある程度精度の高い学習済みモデルができた後は、要因分析とドメイン知識を組み合わせて様々な考察ができます。
例えば、洗濯室の湿度(RH_3)に着目してみると1~2時間前の値はプラスに影響しているものの、1時間以内の値はマイナスに影響しています。
ここから「この家では、洗濯室の近くでシャワーを浴びて湿度が上がった1~2時間後に洗濯機を動かして消費電力が増えるのかもしれない。その間は換気をして湿度が下がっているのかもしれない。」といった考察ができます。(全然違うかもしれません。)
このように、現実の問題を考える場合は、データからはわからないドメイン知識とデータ分析からわかる定量的な事実を組み合わせる事が大切かなと思います。
モデルでニューラルネットワーク(MLP)を選択した場合はXAI(説明可能なAI)の技術を使って要因分析を行なっています。(詳しくはこちらの論文をご覧ください。)
このように、時間ごとに要因分析が行われ動画で表示されます。目的変数の値が大きく変わったときに、どのデータが影響しているかなど、コマ送りで確認できます。
まとめ
- Node-AIではデータが持つ様々な情報を簡単に可視化できる!
- Node-AIで因果分析・重要度可視化・要因分析ができる!
- 重要度可視化やニューラルネットワーク(MLP)の要因分析ではNTT Comの独自技術が使われている!
終わりに
いかがだったでしょうか。この記事を読んで、少しでもNode-AIに興味を持ってくれた方がいれば幸いです。2023年1月現在、Node-AIはフリートライアルキャンペーンを行っているので、興味を持ってくれた方は是非ご自身でNode-AIを使ってみてください!(リンクはこちら)