技術資料トップへ戻る

時系列分析

概論

時系列データとは、日付や時刻といった順序がある数値データです。 例としては、企業や店舗の売上推移、株価、各種センサー、血圧、心電図、機械故障監視データなどがあげられ、実に様々な分野のデータが挙げられる。

図 株価終値の時系列グラフ

時系列分析とは、主にこのような時系列データから、なんらかの規則性、傾向、特徴を抽出することである。分析結果から、ある店舗の売上が上がる傾向にあるのか、下がる傾向にあるのか、あるいは、血圧が安定しているのか、変動が激しいのかを把握するできる。

時系列データ分析を行うためには、まず、時系列データをどのように表すか決める必要がある。最も単純かつ原始的な表し方として、データをその事象がおこった日付順、時間順に並べる方法が挙げられる。しかし、この方法は、データの規則性が分かりにくく、一般に扱うデータ量は膨大となる傾向がある。

次に簡単な方法としては、データを集約する方法がある。たとえば、売上ならば週単位で合計する、株価ならば移動平均で表現する方法などが挙げられる。この方法で問題になるのは、集約する単位などの決定には恣意的な要素が含まれるため、単純には決められないことや、集約することによる情報の欠落がある。

そこで、単純な構造で、かつ、必要な情報を保持する方法として、次のような時系列データの表現方法が提案されている。

1.フーリエ変換( Fourier Transform )

2.ウェーブレット( Wavelets )

3.記号マッピング( Symbolic Mappings )

4.線分表現、区分線形化( PLR: Piecewise Linear Representation )

5.その他

上記方法はそれぞれ特徴があり長所短所がある。Visual Mining Studioではデータマイニングと相性がよいとされる時系列の[4. 線分表現]を採用した。

線分表現は、時系列を複数の線分で表現する方法である。 それぞれの線分を求める方法は、数多く存在するが、基本的には、隣接する時系列データ間の変動に注目し、変動の少ないもの同士を一直線で繋げるという方法である。

図 時系列データの線分表現

時系列データをこのような複数の線分で表現することには次の利点が挙げられる。

1.時系列上の細かい変動、または、ノイズを除去することができる

2.データを「圧縮」することができる

3.時系列データ間の距離計算の高速化が可能である

4.線分パターンに対して、データマイニング手法、特にクラスタリング、分類分析に適用しやすい

時系列の「形」は、複数の線分の組み合わせ(パターン)で表現する。

例えば、左は「下がる、上がる、下がる、上がる」と、中央は「下がる、下がる、上がる、下がる」と表される。具体的には線の傾きや間隔などがパターンを表現している。

図 線分化された時系列データのパターン

パターンに含まれる線分の数に制限はないので線分化された時系列そのものを一つのパターンとして扱うことも、時系列を複数パターンの組み合わせと扱うことも可能である。

時系列に似たようなパターンが周期的に現れる場合に時系列の規則性(周期性)を求めたり、線の傾きを時系列の傾向として分析したりすることが考えられる。時系列の線分化によってこのような分析が可能になる。例えば、時系列のパターンを抽出することが可能になる。パターンの抽出によって、同じパターンの売り上げを示す店舗を見つけたり、同じ心電図のパターンを示す患者を見つけたりすることができる。具体的には次のような手順を踏むことになる。

1 時系列データを線分化する

2 似たものを探したいデータのパターンを指定する

3.時系列データのパターン間の「距離」を求める

では実際に、上記の分析をVMStudioで行う方法を紹介する。


基本操作

内容

基本操作アイコンでは時系列データの基本的な加工を行う。基本操作で行う処理は大きく分けて2通りである。1つは時系列を特定の長さの区間ごと切り出しである。例えば下左表を下中表のように変換する。この例では3日ごとの区間を切り出し、1月3日に対して3日分のデータを割り当てている。

表:時系列の例 表:特定の長さの切り出し 表:移動平均

もう1つは時系列からの新しい時系列の作成である。上記の区間の切り出したデータを用いてその区間ごとのサマリ情報を産出する。例えば移動平均や区間内の最大値、最小値などを算出する。上記例の右表は2日前までの値を用いた移動平均である。つまり、基本操作アイコンでは左の表の形式を加工し、右の2つの表の形式の時系列を作成することができる。

設定項目

図 パラメータ設定画面

設定項目

内容

対象時系列

計算対象となる時系列データの列を指定

対象期間(長さ)

ある時点から何行離れた時点までのデータを取得するかを指定

対象期間(先方・後方)

ある時点の上・下どちらにある行を取得するかを指定。先方が下、後方が上を指す

推移列

対象期間で指定されたデータを長さ分だけ切り出して、横に展開したデータを作成する

出力に含める場合はチェックする

移動情報

対象期間のサマリ情報を作成する

出力に含める場合はチェックし、出力したいサマリ項目にもチェックする

平均

対象期間にあるデータの平均を計算する

最小

対象期間にあるデータの最小値を求める

25%点

対象期間にあるデータの、小さい方から25%の位置にある値を求める

中央

対象期間にあるデータの中央値を計算する

75%点

対象期間にあるデータの、小さい方から75%の位置にある値を求める

最大

対象期間にあるデータの最大値を求める

分散

対象期間にあるデータの不偏分散を求める

移動平均からの乖離率

ある時点のデータと対象期間の平均(上記参照)との比をを%単位で計算する

期の変動率

対象期間を経過して何%変化したかを計算する

(例)前年当月比,先月比

対象期間未満のものを除外

時系列データの先頭もしくは最後尾には、計算対象期間が存在しない行があるが、それらを出力に含むかどうかを指定する。

元データを含む

計算に使用した時系列データを含むテーブルすべてを出力するかどうかを指定する。チェックボックスで指定しない場合は、元データの使用した列のみを出力に加える。

出力

出力結果は以下のようになる。時系列と推移列とサマリ情報の列が出力される。元データを含むをチェックした場合は、元データの情報も出力される。

図 基本操作 結果


線分表現

内容

線分表現アイコンでは時系列の線分表現(区分線形化)を作成する。線分表現は上手に使うことで、データ数を減らしつつ、時系列の特徴を捉えることができる。データ数が減らすことができるので高速な分析が可能となる。時系列の特徴を捉えた上で似ている部分の抽出や興味のあるトレンドの部分時系列を抽出することができる。例えば、下降トレンドから上昇トレンドに変化した部分などを長大な時系列から見つけることなどが可能である。

時系列を作成するアルゴリズムは複数実装されている。その理由は、時系列によって(ノイズの大きさなどによって)最適なアルゴリズムは異なり、多くのアルゴリズムを試す必要があるからである。アルゴリズムの詳細については設定すべき項目を説明後、紹介することにする。

設定項目

図 パラメータ設定画面(出力を線分データとする場合)

図 パラメータ設定画面(出力を線分パターンとする場合)

時系列選択

線分で表現する時系列データの列を選択する

時間軸

指定された列をキーにしてソートを行う

アルゴリズム

線分化するアルゴリズムの指定。アルゴリズムについては、線分化のアルゴリズムの節で紹介した

線分種類

線分の補完方法を選択する。線形補完内挿では線分の端点で連続になる。線形回帰では端点で不連続になる

線分仕様

線分が満たすべき制約を設定する

最小BPD値

BPD値とはBreak Point Difference Valueの略

隣同士の点に縦の差の絶対地が最小BPD値より小さい場合には線分の端点としない。主に線分の外れ値を除去に有効。指定方法は正の実数、または、文字列でのパーセンテージ指定(例:3.55%)が可能。チェックを外すとこの条件は無効になる

最大線分数

線分の個数の上限を決める、この値以下になるように線分を選択する。チェックを外すとこの条件は無効になる

最小線分長さ

線分に含まれる時系列の値の個数がこの値以上になるように線分を選ぶ。チェックを外すとこの条件は無効になる

最大SE値

線分評価方法で選んだSE値がこの値以下になるように線分を選ぶ。チェックを外すとこの条件は無効になる

線分評価手法(SE)

線分と時系列データの誤差(SE値)の計算方法

分散(VAR)

線分区間内の値の分散 (Variances)

残差(R2)

線分からの残差平方和 (Residual Error)

最遠点との距離(DF)

線分から最も離れた点との距離 (Distance between line and Furthest away point)

出力選択

線分データ

線分の開始位置 (StPos)、線分の長さ (Length)、開始値(StValue)、傾き(Slope)、平均(Mean)、線分評価(Var、R2、DF)の結果を出力する

線分パターン

線分の右端のインデックスとそこから左にある線分の情報を、指定されたパターンサイズだけ並べて出力する

プロットデータ

折れ線グラフで表示しやすい形式にして、線分と元の時系列データを出力する

マトリックス

ある時点の前後にある線分を、指定した数だけ取り出す。出力は時系列データ(TS)と線分の近似点 (TSLine1、TSLine2)、および結果項目選択で選択された線分に関する情報になる。TSLine1、2は線分の端点でのみ値が変わる

左辺取得線分数

マトリックス出力時に、ある時点より左にある線分をいくつ取り出すかを指定

右辺取得線分数

マトリックス出力時に、ある時点より右にある線分をいくつ取り出すかを指定

パターンサイズ

出力する線分パターン数の指定

対象区間長さ

線分化したい時系列区間を点の数で指定。指定した長さより長いパターンは出力されなくなる

スキップ指定

作成した時系列パターンの一番右にある線分の長さの何倍スキップするかを、0-1の範囲の値で指定

結果項目選択

何を結果に含めるかを指定

Slope

線分の傾き

Length

線分の長さ

StValue

線分の開始値

線分化のアルゴリズム

線分化のアルゴリズムは2つの段階に分けられる。1つ目は線分化する区分に分ける段階、2つめは区分ごとに指定した線分種類の方法で線分が当てはめられる段階である。1つ目の段階に対するアルゴリズムには、単調変化法、窓移動法、トップダウン法、ボトムアップ法から選ぶことができる。2段階目は線形補間挿入か線形回帰の2通りから選ぶことができる。線形補間挿入では端点を直線で結び線分を作成する。線形回帰では線分化する区間ごとに回帰直線を引き、線分を作成する。以下では1つ目の段階の線分化する区分に分けるアルゴリズムについて順に紹介する。また、VMSのスクリプト関数ts2plrのヘルプにも説明が書かれているので参照されたい。

◇単調性変化法

単調性変化法とは線分を時系列の順に探していくアルゴリズムである。端点からスタートし次の端点を探していく方法とも言える。端点からスタートし、単調性(単調増加または単調減少)を保っているならば次の点を探し、単調性が破れた点で新しい線分を始めるというアルゴリズムである。実際には線分仕様の設定による以下の継続条件で同一線分であるかを判断していく。条件が合わない点になったら次の線分の区間の候補を探していく。

継続条件: 次点を含んでも単調性が保てる、または、隣接点との差の絶対値が最小BPD値より小さい。

最小BPD値が有効でない場合は2番目の条件は無視される。線分化結果が最大線または分数最小線分長さの条件を満たさない場合はボトムアップ法(後述のアルゴリズム)で線分マージを行う。その際、マージ条件は無視される。

時系列の順に探していくアルゴリズムを単調性変化:左から(MC)と呼び、逆に時系列の逆順に探していくアルゴリズムを単調性変化:右から(MCR)と呼ぶ。最小BPD値の値が大きいと長い線分になり、小さいと短い線分と成る傾向がある。

◇窓移動法

窓移動法も線分を時系列の順に探していくアルゴリズムである。端点からスタートし、線分仕様の設定による以下の継続条件で同一線分であるかを判断していく。

継続条件: 次点を含んでも線分評価方法のSE値が最大SE値より小さい、または、隣接点との差の絶対値が最小BPD値より小さい。

最大SE値が有効でない場合は1番目の条件は無視される。最小BPD値が有効でない場合は2番目の条件は無視される。線分化結果が最大線または分数最小線分長さの条件を満たさない場合はボトムアップ法(後述のアルゴリズム)で線分マージを行う。その際、マージ条件は無視される。

時系列の順に探していくアルゴリズムを窓移動:左から(SW)と呼び、逆に時系列の逆順に探していくアルゴリズムを窓移動:右から(SWR)と呼ぶ。最大SE値、最小BPD値の値が大きいと長い線分になり、小さいと短い線分と成る傾向がある。

◇トップダウン法

トップダウン方ははじめに1本の線分を引き、分割を繰り返していくアルゴリズムである。分割点となる条件(分割点条件)を満たす点の内、分割後にSE値が最小となる分割点から分割される。再度、分割点条件を満たす点を検索し、分割後のSE値値が最小となる点で分割を繰り返す。停止条件を満たすまで繰り返される。分割点条件、停止条件は以下のようになる。

分割点条件: (分割点を含む線分のSE値が最大SE値より大きい)

かつ (分割後の2線分のそれぞれの長さが最小線分長さより大きい)かつ (分割点の隣接点同士の差の絶対値が最小BPD値より大きい)

停止条件: (線分数が最大線分数より大きい)

または (分割点条件を満たす点がなくない)

最大SE値、最小線分長さ、最小BPD値、最大戦分数が有効でない場合はそれぞれ対応する条件は無視される。

◇ボトムアップ法

ボトムアップ法は隣接点同士を線分として、結合を繰り返していくアルゴリズムである。結合点となる条件(結合点条件)を満たす点の内、結合後にSE値が最小となる結合点から結合される。再度、結合点条件を満たす点を検索し、分割後のSE値値が最小となる点で結合を繰り返す。停止条件を満たすまで繰り返される。結合点条件、停止条件は以下のようになる。

分割点条件: (分割点を含む線分のSE値が最大SE値より大きい)

または (分割後の2線分のそれぞれの長さが最小線分長さより大きい)または (分割点の隣接点同士の差の絶対値が最小BPD値より大きい)

停止条件: (線分数が最大線分数より大きい)

または (結合点条件を満たす点がない)

最大SE値、最小線分長さ、最小BPD値、最大戦分数が有効でない場合はそれぞれ対応する条件は無視される。

出力

図 線分表現結果


距離計算

内容

線分表現アイコンで作成した線分表現に対して、「似ている」、「似ていない」の指標を与えるのが距離計算アイコンである。距離の大きさが非類似度を表す。例えば、距離が小さいほど似ていることになる。線分表現の2つの出力形式(線分データ、線分パターン)に対してそれぞれ距離を算出する。具体的には、入力テーブルは 入力1:線分データA、入力2:線分データBとする場合か、入力1:線分パターンA、入力2:線分パターンBとする場合の2通りである。距離の計算方法には線上全対点間距離を用いる方法、線分の端点間の距離を用いる方法、タイムワーピング距離と呼ばれる方法がある。以下で順に紹介する。

◇線上全対点間距離を用いる方法

2つの時系列の対応する点の距離を足し合わせる方法である。2つの時系列のすべての点に対応するもう片方の時系列の点があるわけではないので、対応する点として、線分の左(時系列順に)から対応する点を見つける方法と線分の右(時系列とは逆順に)から対応する点を見つける方法がある。

◇線分の端点間の距離を用いる方法

2つの線分の対応するすべての端点間の距離を足し合わせる方法である。線上全対点間距離を用いる方法と同様に、対応する点として、線分の左(時系列順に)から対応する点を見つける方法と線分の右(時系列とは逆順に)から対応する点を見つける方法がある。

◇タイムワーピング距離

2つの時系列の距離は対応する点の距離の和で算出されるが、2つの時系列の距離が最小になるように対応する点を決める方法がタイムワーピング距離である。時系列の端点からスタートし、距離が最小となる点を対応する点として、対応する点同士の距離の和を算出する。

設定項目

図 パラメータ設定画面


計算方法

時系列データの距離を計算する手法の指定

距離関数

データ間の距離をどのように定義するかを指定

ユークリッド距離またはマンハッタン距離を選択する

重み、起点合わせ

距離を計算する際に比較対象の加工方法を指定

起点合わせ

サンプルとパターンの先頭データの値の差を、サンプルの比較する要素でそれぞれ引いて、始めの値を一致させることを行うかどうかを指定

サンプルデータ重み

サンプルの点に対し、重みを設定する。重みを設定するには、入力テーブルの各線分の情報の一番右に、重みを表す実数列(Weight.1,...)を加えればよい

比較データ重み

パターンの点に対し、重みを設定する。重みの設定方法は、サンプルデータの重み付けの場合と同様である

線分データ

パターンとサンプルが共に線分データである場合に利用する

線分パターン

パターンとサンプルが共に線分パターンである場合に利用する

結果指定

線分パターンを選択時のみ指定可能

パターンサイズ

パターンの線分数を表す(パターンを作成したときに決められている)

もっとも近い(遠い)

パターンに距離が最も近い(遠い)サンプルの範囲を、指定された件数だけ取り出す

全件

サンプルのすべての点を開始点とし、すべてのパターンとの距離を計算して出力する

プロットデータ作成

サンプルとパターンを折れ線グラフで比較できるようにした、テーブルPlotDataを出力する。対象データを線分データを選択した場合のみ指定可能

出力

出力結果は対象データの指定によって変わる。

◇線分データを指定した場合

プロットデータ作成指定した場合、出力テーブルはresultとPlotDataの2つになる。

出力resultは、パターンと比較しているサンプルとの距離を表すDist列と、パターンと比較しているサンプルのインデックス列(時系列のインデックス)の最後の値であるEndSegPos列からなる。

出力PlotData(プロットデータ作成指定時のみ出力される)は、パターンと、サンプルの最後の点をパターンの各線分の最後の点に合わせ、次々とずらして出力したテーブルとなる。

図 線分データ(result)の出力例

図 線分データ(PlotData)の出力例


◇線分パターンを指定した場合

「結果指定」で指定した形式で、パターンテーブルの各行に対し、サンプルテーブルの各行との距離を出力する。

図 線分パターン(result)の出力例



    技術資料トップへ戻る