時系列クラスタリング (Time Series Clustering) (時空間パターン マイニング)

サマリー

時系列の特性の類似度に基づいて、時空間キューブに格納された時系列のコレクションを区分します。時間経過に伴う類似する値がある、同時に増減する傾向がある、類似する繰り返しパターンがあるという 3 つの条件に基づいて、時系列がクラスター化されます。このツールの出力は 2D マップになり、キューブ内のそれぞれの位置がクラスター メンバーシップとメッセージでシンボル表示されます。また、クラスターごとの代表的な時系列シグネチャの情報を示すチャートも出力に含まれます。

[時系列クラスタリング (Time Series Clustering)] ツールの詳細

時系列クラスタリング (Time Series Clustering)

使用法

  • このツールでは、[ポイントの集約による時空間キューブの作成 (Create Space Time Cube By Aggregating Points)] ツール、[定義済みのフィーチャから時空間キューブを作成 (Create Space Time Cube From Defined Features)] ツール、および [多次元ラスター レイヤーから時空間キューブを作成 (Create Space Time Cube from Multidimensional Raster Layer)] ツールによって作成された netCDF ファイルを使用できます。

  • このツールは、それぞれの位置の時系列を [入力時空間キューブ] 内の他のすべての位置と比較し、時系列は類似性に基づいてクラスター化されます。[対象特性] パラメーターを使用すると、2 つの時系列の類似度の意味を定義でき、次の特性のいずれかに基づいて類似度を定義できます。

    • [値] - 時間経過に伴うほぼ同じ値の [分析変数] がある場合、時系列は類似しています。たとえば、値が (1, 0, 1, 0, 1) の時系列は、値が (10, 0, 10, 0, 10) の時系列より値が (1, 1, 1, 1, 1) の時系列に類似しています。値がより類似しているためです。
    • プロファイル (相関) - 値が同時に増減する傾向にあり、ほぼ比例している (つまり時間経過に伴う相関関係にある) 場合、時系列は類似しています。たとえば、値が (1, 0, 1, 0, 1) の時系列は、値が (1, 1, 1, 1, 1) の時系列より値が (10, 0, 10, 0, 10) の時系列に類似しています。値が同時に増減し、一定の比率を保っているためです。
    • プロファイル (フーリエ) - 時間経過に伴う値に類似する滑らかで定期的なパターンがある場合、時系列は類似しています。この期間は周期または季節と呼ばれることがあり、新しい期間で繰り返すパターンの継続時間を表します。たとえば、企業では、各週 (月曜に始まり日曜で終わる期間) の総売上額に定期的な繰り返しパターンが見られることがあります。[無視する時系列特性] パラメーターを使用して、これらのパターンの特定の特性を無視することもできます。繰り返しパターンはフーリエ ファミリーによる機能データ解析を使用して検出されます。このオプションを最も効果的にするためには、入力時空間キューブの時系列が少なくとも 1 つの期間全体をカバーする必要があります。たとえば、気温には、気候によって決まる年度周期がありますが、すべてのデータが単年度の数か月で集められた場合、このオプションは年度周期を検出しない場合があります。

    複数のクラスタリング アルゴリズムのいずれかで類似度の定義を使用して、時空間キューブの位置をクラスター化し、ツールによって返される最終的なクラスターを生成します。それらのクラスタリング アルゴリズムの詳細については、「時系列クラスタリング (Time Series Clustering) の詳細」をご参照ください。

  • [出力フィーチャ] は、CLUSTER_ID フィールドに基づくレンダリングで [コンテンツ] ウィンドウに追加され、それぞれの位置がどのクラスターに属していたかを示します。たとえば、クラスター数を 3 に設定した場合、各レコードの [CLUSTER_ID] フィールドの値は 1、2、3 のいずれかになります。[CENTER_REP] フィールドは、各クラスターの時系列 medoid を特定し、各クラスターの medoid 時系列に対して 1 の値、他のすべてのフィーチャに対して 0 の値を含んでいます。

  • このツールでは、特定されたクラスターの特性を理解するのに役立つメッセージと (必要に応じて) チャートが作成されます。このメッセージにアクセスするには[ジオプロセシング] ウィンドウでプログレス バーの上にカーソルを置くか、ポップアップ ボタンをクリックするか、メッセージ セクションを展開します。ジオプロセシング履歴を使用して、以前に実行した [時系列クラスタリング (Time Series Clustering)] ツールのメッセージにアクセスすることもできます。[チャートの出力テーブル] を指定すると、各クラスターの平均時系列と各クラスター内の時系列の medoid を表示する出力テーブルのチャートが作成されます。これらのチャートには、[コンテンツ] ウィンドウの [スタンドアロン テーブル] セクションに作成されたテーブルでアクセスできます。出力されたメッセージとチャートの詳細については、「時系列クラスタリング (Time Series Clustering) の機能」をご参照ください。

  • データに最適なクラスター数がわかっている場合があります。わからない場合は、クラスター数をいろいろと変えて試行し、クラスターの差別化に最適な数を見出すことが必要な場合があります。 [クラスター数] パラメーターを空白のままにすると、このツールは疑似 F 統計を使用してクラスターの最適な数を評価し、その数をジオプロセシング メッセージとして通知します。疑似 F 統計が大きくなると、各クラスターが区別しやすくなります。最適なクラスター数は 10 を超えず、最適なクラスター数の計算には、ツールの実行時間の大部分が費やされます。適切なクラスター数がわかっている場合、またはツールの実行時間が長すぎる場合は、クラスター数を指定することをお勧めします。

    クラスターの最適な数を計算するために、ツールは 2 ~ 10 個のクラスターを試します。これらの可能な 9 つのクラスター数ごとに、ツールはランダムな開始シードを使用してクラスタリングを 10 回実行します (ただし、時空間キューブ内の 10,000 を超える位置とともに [プロファイル (相関)] が使用される場合を除きます。その場合、各近傍数が 20 回繰り返されます)。これにより、可能性のある 90 個 (または 180 個) のクラスタリング結果 (可能な 9 つのクラスター数ごとに 10 個または 20 個) が生成され、ツールで使用する最終のクラスター数用に、疑似 F 統計が最大になるクラスター数が選択されます。9 つの可能なクラスター数ごとの最大の疑似 F 統計は、ジオプロセシング メッセージ内のテーブルとして表示されます。

    注意:

    無限の疑似 F 統計量は、同じクラスター内のすべての時系列が互いにまったく同じであることを意味します。

  • 位置に割り当てられたクラスター ID は実行ごとに変化する可能性があります。これは、クラスターの拡大元の初期シードがアルゴリズムでランダムに選択されるためです。たとえば、年間の人口増加に基づいて位置を 2 つのクラスターに分けるとします。初回の分析では、人口増加の多い位置に「クラスター 2」ラベル、人口増加の少ない位置に「クラスター 1」ラベルが付けられ、2 回目の分析では、人口増加の多い位置に「クラスター 1」ラベルが付けられる場合があります。また、解析を実行するごとに、人口増加が平均または中程度の位置の一部が人口増加の多いクラスターと人口増加の少ないクラスターの間を行ったり来たりする場合があります。これは、クラスタリング アルゴリズムのランダム成分による現象です。同じパラメーターでツールを再実行して、クラスタリング結果が大幅に変化した場合、[クラスター数] パラメーターの値の変更を検討してください。

パラメーター

ラベル説明データ タイプ
入力時空間キューブ

分析対象の netCDF キューブ。このファイルは、*.nc 拡張子が付加され、[ポイントの集約による時空間キューブの作成 (Create Space Time Cube By Aggregating Points)] ツール、または [定義済みのフィーチャから時空間キューブを作成 (Create Space Time Cube From Defined Features)] ツール、または [多次元ラスター レイヤーから時空間キューブを作成 (Create Space Time Cube from Multidimensional Raster Layer)] ツールで作成されている必要があります。

File
分析変数

netCDF ファイル内の数値変数。この変数は経時的に変化し、クラスター間の区別に使用されます。

String
出力フィーチャ

時空間キューブ内のすべての位置とクラスター メンバーシップを示すフィールドで構成される新しい出力フィーチャクラス。このフィーチャクラスは、データ内のクラスターの 2 次元マップ表現になります。

Feature Class
対象特性

クラスター化する場所を決定するために使用される時系列の特性を指定します。

  • 値 — 時間経過に伴う類似する値がある場所がクラスター化されます。
  • プロファイル (相関) —同時に比例して増減する傾向にある値を持つ場所がクラスター化されます。
  • プロファイル (フーリエ) —パターンが類似して滑らかで定期的である値を持つ場所がクラスター化されます。
String
クラスター数
(オプション)

作成するクラスターの数。空白のままにすると、このツールは疑似 F 統計を使用してクラスターの最適な数を評価します。クラスターの最適数は、メッセージ ウィンドウで報告されます。

Long
チャートの出力テーブル
(オプション)

指定すると、各時系列クラスターの平均と medoid 時系列の両方に基づいて、各クラスターの代表的な時系列がテーブルに示されます。このテーブルから作成されたチャートには、[スタンドアロン テーブル] セクションでアクセスできます。

Table
無視する時系列特性
(オプション)

2 つの時系列間の類似度を決定する場合に無視される特性を指定します。

  • タイム ラグ — タイム ラグを含む各期間の開始時間が無視されます。たとえば、2 つの時系列に類似する定期的なパターンがあるが一方の値が他方よりも 3 日遅れている場合、その時系列は類似していると見なされます。
  • 範囲 —各期間内の値の大きさが無視されます。たとえば、2 つの時系列の期間が同時に始まって終わる場合、実際の値が大きく異なっていても、類似していると見なされます。
String
時系列ポップアップの有効化
(オプション)

フィーチャの時系列およびフィーチャと同じクラスターにあるすべてのフィーチャの平均時系列を表示する各出力フィーチャのポップアップで、時系列チャートを作成するかどうかを指定します。

  • オン - 出力フィーチャクラスの時系列チャートが作成されます。
  • オフ - 時系列チャートは作成されません。これがデフォルトです。
Boolean

arcpy.stpm.TimeSeriesClustering(in_cube, analysis_variable, output_features, characteristic_of_interest, {cluster_count}, {output_table_for_charts}, {shape_characteristic_to_ignore}, {enable_time_series_popups})
名前説明データ タイプ
in_cube

分析対象の netCDF キューブ。このファイルは、*.nc 拡張子が付加され、[ポイントの集約による時空間キューブの作成 (Create Space Time Cube By Aggregating Points)] ツール、または [定義済みのフィーチャから時空間キューブを作成 (Create Space Time Cube From Defined Features)] ツール、または [多次元ラスター レイヤーから時空間キューブを作成 (Create Space Time Cube from Multidimensional Raster Layer)] ツールで作成されている必要があります。

File
analysis_variable

netCDF ファイル内の数値変数。この変数は経時的に変化し、クラスター間の区別に使用されます。

String
output_features

時空間キューブ内のすべての位置とクラスター メンバーシップを示すフィールドで構成される新しい出力フィーチャクラス。このフィーチャクラスは、データ内のクラスターの 2 次元マップ表現になります。

Feature Class
characteristic_of_interest

クラスター化する場所を決定するために使用される時系列の特性を指定します。

  • VALUE 時間経過に伴う類似する値がある場所がクラスター化されます。
  • PROFILE同時に比例して増減する傾向にある値を持つ場所がクラスター化されます。
  • PROFILE_FOURIERパターンが類似して滑らかで定期的である値を持つ場所がクラスター化されます。
String
cluster_count
(オプション)

作成するクラスターの数。空白のままにすると、このツールは疑似 F 統計を使用してクラスターの最適な数を評価します。クラスターの最適数は、メッセージ ウィンドウで報告されます。

Long
output_table_for_charts
(オプション)

指定すると、各時系列クラスターの平均と medoid 時系列の両方に基づいて、各クラスターの代表的な時系列がテーブルに示されます。このテーブルから作成されたチャートには、[スタンドアロン テーブル] セクションでアクセスできます。

Table
shape_characteristic_to_ignore
[shape_characteristic_to_ignore,...]
(オプション)

2 つの時系列間の類似度を決定する場合に無視される特性を指定します。

  • TIME_LAG タイム ラグを含む各期間の開始時間が無視されます。たとえば、2 つの時系列に類似する定期的なパターンがあるが一方の値が他方よりも 3 日遅れている場合、その時系列は類似していると見なされます。
  • RANGE各期間内の値の大きさが無視されます。たとえば、2 つの時系列の期間が同時に始まって終わる場合、実際の値が大きく異なっていても、類似していると見なされます。

両方の特性が無視された場合、期間の長さが類似していれば、異なる時間に始まり、期間内で異なる値を持っている場合でも、2 つの時系列は類似していると見なされます。

String
enable_time_series_popups
(オプション)

フィーチャの時系列およびフィーチャと同じクラスターにあるすべてのフィーチャの平均時系列を表示する各出力フィーチャのポップアップで、時系列チャートを作成するかどうかを指定します。時系列ポップアップは、シェープファイル出力ではサポートされていません。

  • CREATE_POPUP出力フィーチャクラスの時系列チャートが作成されます。
  • NO_POPUP時系列チャートは作成されません。これがデフォルトです。
Boolean

コードのサンプル

TimeSeriesClustering (時系列クラスタリング) の例 1 (Python ウィンドウ)

次の Python スクリプトは、[TimeSeriesClustering] ツールの使用方法を示します。

import arcpy
arcpy.env.workspace = r"C:\Analysis"
# Value
arcpy.stpm.TimeSeriesClustering(r"Temperature.nc",
                                "Air_NONE_ZEROS", r"Analysis.gdb\Temp_Value_3Clusts", 
                                "VALUE", 3, "Temp_Value_3Clusts_Chart", None, "CREATE_POPUP")
# Profile - correlation
arcpy.stpm.TimeSeriesClustering(r"Temperature.nc", "Air_NONE_ZEROS",
                                r"Analysis.gdb\Temp_Profile_3Clusts", "PROFILE", 3, 
                                r"Temp_Profile_3Clusts_Chart", None, "CREATE_POPUP")
# Profile - Fourier
arcpy.stpm.TimeSeriesClustering(r"Temperature.nc",
                                "Air_NONE_ZEROS", r"Analysis.gdb\Temp_Fourier_3Clusts",
                                "PROFILE_FOURIER", 3, r"Temp_Fourier_3Clusts_Chart", 
                                "TIME_LAG", "CREATE_POPUP")
TimeSeriesClustering (時系列クラスタリング) の例 2 (スタンドアロン スクリプト)

次の Python スクリプトは、[TimeSeriesClustering] ツールを使用して、類似した店舗の位置をクラスター化する方法を示します。

# Create clusters of store locations with similar sales volumes over time.
# Import system modules.
import arcpy
# Set property to overwrite existing output, by default.
arcpy.env.overwriteOutput = True
# Set workspace...
workspace = r"C:\Analysis"
arcpy.env.workspace = workspace
# Create 3 clusters of location with similar extent of fluctuation in temperature.
arcpy.stpm.TimeSeriesClustering(r"Temperature.nc", "Air_NONE_ZEROS",
                      r"Analysis.gdb\Temperature_TSC",
                      "PROFILE_FOURIER", 3, "Temp_Chart", None, 
                      "CREATE_POPUP")
# Create a feature class containing all the bins in the input space time cube.
arcpy.stpm.VisualizeSpaceTimeCube3D(r"Temperature.nc", "Air_NONE_ZEROS", "VALUE", 
                      r"Temp_Bins.shp")
# Make the bins as a feature layer.
arcpy.MakeFeatureLayer_management("Temp_Bins.shp", "Temp_Bins_Temp_Layer")
# Join the clustering results to the bins so each bin now has a cluster ID.
arcpy.management.AddJoin("Temp_Bins_Temp_Layer", "Location", 
                      r"Analysis.gdb\Temperature_TSC", "Location", "KEEP_ALL")
# Summarize the bins using Summary Statistics with Cluster ID as a case field
# to get the minimum, maximum, and average temperature for each cluster.
arcpy.analysis.Statistics("Temp_Bins_Temp_Layer", "Temp_Bins_Statistics.shp",
                      "Temp_Bins.VALUE MEAN;Temp_Bins.VALUE MAX;Temp_Bins.VALUE MIN",
                      "Temperature_TSC.CLUSTER_ID")

環境

乱数ジェネレーター

使用される乱数ジェネレーターのタイプは常にメルセンヌ ツイスターです。

関連トピック