類似検索(Similarity Search) (空間統計解析)
サマリ
フィーチャ属性に基づいて、どの候補フィーチャが 1 つ以上の入力フィーチャに最も類似しているか、または最も類似していないかを識別します。
図
使用法
-
照合する入力フィーチャを含むレイヤと候補フィーチャを含む 2 つ目のレイヤを照合のために指定します。多くの場合、照合する入力フィーチャと候補フィーチャは同じフィーチャ レイヤに設定されます。2 つのデータセットを別々に作成するオプションがありますが、そうする必要はありません。それよりも、2 つの異なる選択セットを持つレイヤを作成するほうがはるかに簡単です。 この 1 か月間に発生したすべての犯罪事件を格納したファイルがあるとします。最新の自動車乗っ取り事件に最も類似した犯罪をすべて見つけたい場合は、次のようにします。
- 標準の ArcMap 選択ツールまたはジオプロセシング ツールを使用して、すべての犯罪事件を格納したレイヤから最新の自動車乗っ取り事件の記録を選択します。
- 選択セットを持つレイヤを右クリックし、[選択] → [選択フィーチャからレイヤを作成] の順にクリックします。[照合する入力フィーチャ] パラメータにこの新規レイヤを使用します。
- すべての犯罪事件を持つレイヤの選択セットに切り替えます。[候補フィーチャ] パラメータにこのレイヤを使用します。注意:
すべての入力が 1 つのデータセットから取得されるときによくある間違いは、選択セットの切り替えを忘れて、照合する入力フィーチャと候補フィーチャのフィーチャがまったく同じになってしまうことです。これは、望ましいことではありません。最も一般的なシナリオは、1 つの照合する入力フィーチャに対して複数の候補フィーチャがある状態です。
-
照合する入力フィーチャが複数ある場合、照合は対象属性の平均値に基づいて行われます。そのため、たとえば、照合する入力フィーチャが 2 つあり、対象属性の 1 つが人口変数である場合、平均人口値に最も近い人口値を持つ候補フィーチャが検索されます。たとえば、人口値が 100 と 102 なら、人口が 101 に近い候補が検索されます。
注意:照合する入力フィーチャが複数ある場合、類似した値の対象属性を選択できます。たとえば、1 つの入力の人口値が 100、もう 1 つの入力の人口値が 100,000 なら、2 つの平均値である 50,050 に近い人口値で照合が行われます。この平均値は、どちらの照合する入力フィーチャの人口値にも近くないことに注目してください、
-
照合する入力フィーチャと候補フィーチャが両方ともポリゴンまたはポリラインである場合を除いて、出力フィーチャには常にポイントが含まれます。ポリゴンまたはポリラインの出力フィーチャを作成すると、大きいデータセットでのパフォーマンスが低下する可能性があるため、[出力から点を作成] をオンにして強制的にポイント ジオメトリとすることで、パフォーマンスを改善することができます。
-
[最も類似する/最も類似しない] パラメータを指定すると、照合する入力フィーチャに最も類似する(MOST_SIMILAR)または最も類似しない(LEAST_SIMILAR)フィーチャを検索できます。必要に応じて、範囲の両端を確認することもできます。たとえば、[結果数] パラメータに「3」、[最も類似する/最も類似しない] パラメータに [BOTH] を入力すると、最も類似する 3 つの候補フィーチャと最も類似しない 3 つの候補フィーチャが返されます。
-
出力フィーチャの一致結果は、ターゲットの照合する入力フィーチャに最も類似するか、最も類似しない結果のいずれかです。1 つの結果が両方を兼ねることはできません(また、出力フィーチャ内で一致結果が重複することもありません)。したがって、[最も類似する/最も類似しない] パラメータに [BOTH] を選択すると、可能な一致結果の最大数([結果数])は、候補フィーチャの半数になります。入力した [結果数] の値が大きすぎる場合は、ツールが可能な最大数に調整します。
-
類似性の空間パターンを検討するために、すべての候補フィーチャの類似性をランク付けしたい場合があります。すべての候補フィーチャをランク付けするように指示する簡単な方法は、[結果の数] パラメータに非常に大きい値(候補フィーチャの数以上)を入力することです。そうすると、ツールは候補データセット内の有効なフィーチャの数を判断し、そのすべてを最も類似するものから類似しないものへランク付けして、その順番に出力フィーチャに書き込みます。
-
[照合方法] パラメータでは、[ATTRIBUTE_VALUES]、[RANKED_ATTRIBUTE_VALUES]、または [ATTRIBUTE_PROFILES] を選択できます。
- [ATTRIBUTE_VALUES] の場合、すべての対象属性の二乗差の合計が最も小さいものが最も類似した候補になります。差を計算する前に、すべての値が標準化されます。
- [RANKED_ATTRIBUTE_VALUES] の場合、すべての対象属性のランクの二乗の合計が最も小さいものが最も類似した候補になります。出力フィーチャは、SIMINDEX(ランクの二乗差の合計)フィールドでこれらの合計を報告します。
- [ATTRIBUTE_PROFILES] の場合、コサイン類似度が測定されます。コサイン類似度では、大きさを照合するのではなく、標準化された属性値の間で同じ関係を探します。A1、A2、A3、A4 という 4 つの対象属性があり、A2 は A1 の 2 倍の大きさで、A3 は A2 とほぼ同じ、A4 は A3 の 3 倍の大きさだとします。[ATTRIBUTE_PROFILES] 照合方法の場合、それらと同じ属性関係(2 倍の大きさ、ほぼ同じ大きさ、3 倍の大きさ)を持つ候補を検索します。この方法は属性関係に注目するため、2 つ以上の対象属性を指定する必要があります。コサイン類似度方式(ATTRIBUTE_PROFILES)を使用して、ロサンゼルスなどの場所を、より小さい縮尺で見つけることができます。コサイン類似度指標の範囲は、1.0(完全な類似性)から -1.0(完全な相違)までです。コサイン類似度指標は、出力フィーチャSIMINDEX(コサイン類似度)フィールドに書き込まれます。
-
対象属性は、数値でなければならず、照合する入力フィーチャおよび候補フィーチャ データセットの両方に(同じフィールド名とフィールド タイプで)存在する必要があります。対象属性パラメータを指定すると、照合する入力フィーチャ データセット内で見つかったすべての数値フィールドが表示されます。候補フィーチャに対応するフィールドがない場合、存在しない属性が解析から除外されたことを知らせる警告が表示されます。すべての対象属性が除外されると、照合に使用する属性がなくなるため、ツールが解析を実行できないことを知らせるエラーが表示されます。
-
照合に使用されたすべての属性が、出力フィーチャに書き込まれます。[出力に追加するフィールド] パラメータを使用すると、必要に応じて他のフィールドを出力テーブルに含めることができます。対象属性の数値フィールドは有効な識別子にならない可能性が高いため、一致結果ごとに名前などの識別子フィールドを追加することができます。複数の一致結果によって判断する必要がある場合は、他の非数値属性を追加することもできます。たとえば、求めている結果がいくつかの土地利用タイプの 1 つでなければならない場合、カテゴリ土地利用属性を追加すると、この要件を満たす結果を絞り込むために役立ちます。場合によっては、参照目的で出力テーブルに追加の数値属性を含めることができます。たとえば、特定の動物の生息に適した場所を探しているとします。その種が適応している既知の場所を照合する入力フィーチャに使用することができます。種の適応に関連する対象属性を選択できます。さらに、数値範囲属性を出力フィーチャに追加できます。これは、実際にターゲットの範囲値と照合するためではなく、可能な最大の範囲で結果を探すためです。
-
照合する入力フィーチャと一致結果はすべて、対象属性および出力に追加するフィールドと共に出力フィーチャに書き込まれます。さらに、次のフィールドが出力フィーチャに含められます。
フィールド名
フィールド エイリアス
説明
注意事項
MATCH_ID
MATCH_ID
照合する入力フィーチャ レイヤのすべてのターゲット フィーチャが、MATCH_ID フィールドに書き込まれた OID または FID 識別子と共に最初に表示されます。一致結果のこのフィールドには NULL 値が入ります。
出力フィーチャがシェープファイルの場合、NULL 値は非常に大きい負の数(-21474836 など)で表されます。
CAND_ID
CAND_ID
次にすべての一致結果が表示され、この値はその OID または FID 識別子になります。照合する入力フィーチャ レイヤのターゲット フィーチャのこのフィールドには NULL 値が入ります。
出力フィーチャがシェープファイルの場合、NULL 値は非常に大きい負の数(-21474836 など)で表されます。
SIMRANK
類似ランク
[照合方法] パラメータに [MOST_SIMILAR] または [BOTH] を選択すると、すべての一致結果が、最も類似するものから最も類似しないものへの順にランク付けされます。最も類似する一致結果は、ランク値が 1 になります。
[照合方法] パラメータに [MOST_SIMILAR] または [BOTH] を選択した場合にのみ、このフィールドは出力フィーチャに含められます。
DSIMRANK
相違ランク
[照合方法] パラメータに [LEAST_SIMILAR] または [BOTH] を選択すると、すべての一致結果が最も類似しないものから類似するものへランク付けされます。最も類似しない一致結果は、ランク値が 1 になります。
[照合方法] パラメータに [LEAST_SIMILAR] または [BOTH] を選択した場合にのみ、このフィールドは出力フィーチャに含められます。
SIMINDEX
二乗差の合計、ランクの二乗差の合計、コサイン類似度
このフィールドは、それぞれの一致結果がターゲット フィーチャにどれだけ類似しているかを定量化します。
- [照合方法] パラメータに [ATTRIBUTE_VALUES] を指定すると、フィールド エイリアスは Sum of Squared Value Differences になります。
- [照合方法] パラメータに [RANKED_ATTRIBUTE_VALUES] を指定すると、フィールド エイリアスは Sum of Squared Rank Differences になります。
- [照合方法] パラメータに [ATTRIBUTE_PROFILES] を指定すると、フィールド エイリアスは Cosine Similarity になります。
照合する入力フィーチャが 1 つのみの場合、このフィーチャがターゲット フィーチャになります。複数の照合する入力フィーチャを指定した場合、すべての対象属性の平均値で作成される一時フィーチャがターゲット フィーチャになります。
LABELRANK
レンダリング ランク
このフィールドは、表示のためにのみ使用されます。このツールは、このフィールドを使用して解析結果のデフォルトのレンダリングを提供します。
-
このツールを ArcMap で実行すると、出力フィーチャは自動的にコンテンツ ウィンドウに追加され、LABELRANK フィールドにはデフォルトのレンダリングが適用されます。適用されるレンダリングは、<ArcGIS>/Desktop10.x/ArcToolbox/Templates/Layers にあるレイヤ ファイルによって定義されます。必要に応じて、テンプレート レイヤ シンボルをインポートすれば、デフォルトのレンダリングを再適用できます。
注意:デフォルトのサンプル サイズは 10,000 レコードです。結果の数がこのデフォルトより大きい場合は、サンプリング サイズを増加することによって、すべての結果をレンダリングできます。
構文
パラメータ | 説明 | データ タイプ |
Input_Features_To_Match |
照合するフィーチャを含むレイヤ(またはレイヤ上の選択セット)。これらのフィーチャに類似した他のフィーチャを探します。複数のフィーチャを指定すると、属性の平均に基づいて照合が行われます。 ヒント: 照合する入力フィーチャと候補フィーチャが 1 つのデータセットから取得されるときは、次のようにします。
| Feature Layer |
Candidate_Features |
照合する候補フィーチャを含むレイヤ(またはレイヤの選択セット)。このツールは、照合する入力フィーチャに最も類似する(または最も類似しない)フィーチャを、これらの候補の中から探します。 ヒント: 照合する入力フィーチャと候補フィーチャが 1 つのデータセットから取得されるときは、次のようにします。
| Feature Layer |
Output_Features |
出力フィーチャクラスには、照合する入力フィーチャごと、および見つかったすべての一致結果フィーチャに対応したレコードが入ります。 | Feature Class |
Collapse_Output_To_Points |
Output_Features のジオメトリをポイントにするか、入力フィーチャのジオメトリ(ラインまたはポリゴン)に一致させるかを選択します。このオプションを使用できるのは、Input_Features_To_Match と Candidate_Features が両方ともラインまたは両方ともポリゴンである場合のみです。大きいラインまたはポリゴン データセットで COLLAPSE を選択すると、ツールのパフォーマンスが向上します。
| Boolean |
Most_Or_Least_Similar |
照合する入力フィーチャに最も類似するフィーチャまたは最も類似しないフィーチャのいずれに関心があるかを選択します。
| String |
Match_Method |
照合を値、ランク、またはコサイン関係のいずれに基づいて行うか選択します。
| String |
Number_Of_Results |
検索する一致結果の数。 ヒント:すべての候補フィーチャの類似度をランク付けするには、十分に大きい値(実際の候補数以上)を入力します。 | Long |
Attributes_Of_Interest [field,...] |
照合基準を表す数値属性の一覧。 | Field |
Fields_To_Append_To_Output [field,...] (オプション) |
出力フィーチャに含まれるオプションの属性の一覧。たとえば、名前識別子、カテゴリ フィールド、日付フィールドなどを含めることができます。これらのフィールドは類似性を判断するために使用されるものではなく、参照用として出力フィーチャに含められます。 | Field |
コードのサンプル
次の Python ウィンドウ スクリプトは、SimilaritySearch(類似検索)ツールの使用方法を示しています。
import arcpy
import arcpy.stats as SS
arcpy.env.workspace = r"C:\Analysis"
SS.SimilaritySearch ("Crime_selection", "AllCrime", "c:\\Analysis\\CrimeMatches",
"NO_COLLAPSE", "MOST_SIMILAR", "ATTRIBUTE_VALUES", 4,
"HEIGHT;WEIGHT;SEVERITY;DST2CHPSHP", "Name;WEAPON")
次のスタンドアロン Python スクリプトは、SimilaritySearch(類似検索)ツールの使用方法を示しています。
# Similarity Search of crime data in a metropolitan area
# Import system modules
import arcpy, os
import arcpy.stats as SS
# Set geoprocessor object property to overwrite existing output
arcpy.gp.overwriteOutput = True
try:
# Set the current workspace (to avoid having to specify the full path to
# the feature classes each time)
arcpy.env.workspace = r"C:\Analysis"
# Make a layer from the crime feature class
arcpy.MakeFeatureLayer_management("AllCrime", "Crime_selection")
# Select the target crime to match
# Process: Select By Attribute
arcpy.SelectLayerByAttribute_management("Crime_selection","NEW_SELECTION",
'"OBJECTID" = 1230043')
# Use Similarity Search to find to create groups based on different variables
# or analysis fields
# Process: Group Similar Features
SS.SimilaritySearch("Crime_selection","AllCrime","CJMatches","NO_COLLAPSE",
"MOST_SIMILAR","ATTRIBUTE_VALUES",4,
"HEIGHT;WEIGHT;SEVERITY;DST2CHPSHP","Name;WEAPON")
except:
# If an error occurred when running the tool, print out the error message.
print arcpy.GetMessages()