類似検索 (Similarity Search) (空間統計)

概要

フィーチャ属性に基づいて、どの候補フィーチャが 1 つ以上の入力フィーチャに最も類似しているか、または最も類似していないかを識別します。

[類似検索 (Similarity Search)] ツールの詳細

類似検索

使用法

  • [照合する入力フィーチャ] の値を含んでいるレイヤーを指定し、一致が取得される [候補フィーチャ] の値を含んでいる 2 つ目のレイヤーを指定します。多くの場合、これらの値は、同じフィーチャ レイヤー内にあります。1 つのオプションは、2 つの別のデータセットを作成することです。その他のオプションは、2 つの異なるフィルター設定を使用してレイヤーを作成することであり、こちらのほうが簡単でしょう。たとえば、過去 1 か月に発生したすべての犯罪事件を含んでいるファイルがあり、最新の自動車の乗っ取りに最も類似している犯罪をすべて見つける場合、次のように実行できます。

    • すべての犯罪事件を表示するレイヤーを [コンテンツ] ウィンドウにコピーし、レイヤーの複製を作成します。そのレイヤーの名前を変更します。
    • 名前を変えたレイヤーで、最新の自動車乗っ取り事件を表す範囲を選択するか、またはフィルター設定を設定します。[照合する入力フィーチャ] パラメーターにこのレイヤーを使用します。
    • 最新の自動車乗っ取り事件が除外されるように、選択範囲を適用するか、または元のレイヤーのフィルター設定を設定します。[候補フィーチャ] パラメーターにこのレイヤーを使用します。

  • [照合する入力フィーチャ] の値が複数ある場合、照合は対象属性の平均値に基づいて行われます。たとえば、[照合する入力フィーチャ] の値が 2 つあり、[対象属性] の値の 1 つが人口変数である場合、平均人口値に最も近い人口値を持つ [候補フィーチャ] の値がチェックされます。たとえば、人口値が 100 と 102 なら、人口が 101 に近い候補がチェックされます。

    メモ:

    [照合する入力フィーチャ] の値が複数ある場合、[対象属性] パラーエーターから類似する値を選択します。たとえば、1 つの入力の人口値が 100、もう 1 つの入力の人口値が 100,000 なら、2 つの平均値である 50,050 に近い人口値で照合が行われます。この平均値は、どちらの [照合する入力フィーチャ] の人口値にも近くありません。

  • [照合する入力フィーチャ][候補フィーチャ] の値が両方ともポリゴンまたはポリラインである場合を除いて、[出力フィーチャ] の値には常にポイントが含まれます。ポリゴンまたはポリラインの [出力フィーチャ] の値を作成すると、大きいデータセットのパフォーマンスが低下することがあります。パフォーマンスを改善するには、[出力フィーチャからポイントを作成] パラメーターをオンにして、ポイント ジオメトリを適用します。

  • [類似度の高低] パラメーターを指定すると、[最も類似する] オプションまたは [最も類似しない] オプションを使用して [照合する入力フィーチャ] の値と照合し、フィーチャを検索できます。両方のオプションを確認すると、役立つことがあります。たとえば、[結果数] パラメーターに「3」を入力し、[類似度の高低] パラメーターで [両方] を選択すると、最も類似する 3 つの候補フィーチャと最も類似しない 3 つの候補フィーチャが返されます。

  • [出力フィーチャ] パラメーターの一致結果は、ターゲットの [照合する入力フィーチャ] パラメーターに最も類似するか、最も類似しない結果のいずれかです。1 つの結果が両方を兼ねることはできません (また、[出力フィーチャ] パラメーター内で一致結果が重複することもありません)。したがって、[類似度の高低] パラメーターに [両方] を選択すると、可能な一致結果の最大数 ([結果数] の値) は、[候補フィーチャ] の値の半数になります。入力した [結果数] の値が大きすぎる場合は、ツールが可能な最大数に調整します。

  • 類似度の空間パターンを検討するために、すべての [候補フィーチャ] の値の類似性をランク付けすることができます。これを実行するには、[結果数] パラメーターに「0」を入力します。ツールは候補データセット内の有効なフィーチャの数を識別し、そのすべてを最も類似するものから類似しないものへランク付けして、その順番に [出力フィーチャ] パラメーターに書き込みます。

  • [照合方法] パラメーターのオプションは、[属性値][ランク付けされた属性値]、および [属性プロファイル] です。

    • [属性値] - すべての [対象属性] の値の二乗差の合計が最も小さいものが最も類似した候補になります。差を計算する前に、すべての値が標準化されます。
    • [ランク付けされた属性値] - すべての [対象属性] の値のランクの差の二乗和が最も小さいものが最も類似した候補になります。[出力フィーチャ] パラメーターは、SIMINDEX(ランクの二乗差和) フィールドでこれらの合計を報告します。
    • [属性プロファイル] - コサイン類似度が測定されます。コサイン類似度では、大きさを照合するのではなく、標準化された属性値の間で同じ関係をチェックします。たとえば、A1、A2、A3、および A4 と呼ばれる 4 つの [対象属性] の値があります。A2 は A1 の 2 倍であり、A3 は A2 にほぼ等しく、A4 は A3 の 3 倍です。[属性プロファイル] の場合、それらと同じ属性関係 (2 倍の大きさ、ほぼ同じ大きさ、3 倍の大きさ) を持つ候補をチェックします。この方法は属性関係をチェックするため、2 つ以上の [対象属性] の値を指定する必要があります。コサイン類似度方式 ([属性プロファイル]) を使用して、ロサンゼルスなどの場所を、より小さい縮尺で見つけることができます。コサイン類似度指標の範囲は、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

    類似ランク

    [照合方法] パラメーターに [最も類似する] または [両方] を選択すると、すべての一致結果が、最も類似するものから最も類似しないものへの順にランク付けされます。最も類似する一致結果は、ランク値が 1 になります。

    [照合方法] パラメーターに [最も類似する] または [両方] を選択した場合にのみ、このフィールドは [出力フィーチャ] の値に含められます。

    DSIMRANK

    相違ランク

    [照合方法] パラメーターに [最も類似しない] または [両方] を選択すると、すべての一致結果が、最も類似しないものから最も類似するものへの順にランク付けされます。最も類似しない一致結果は、ランク値が 1 になります。

    [照合方法] パラメーターに [最も類似しない] または [両方] を選択した場合にのみ、このフィールドは出力フィーチャに含められます。

    SIMINDEX

    差の二乗和 (SSD)、ランクの差の二乗和、コサイン類似度

    このフィールドは、それぞれの一致結果がターゲット フィーチャにどれだけ類似しているかを定量化します。

    • [照合方法] パラメーターに [属性値] を指定すると、フィールド エイリアスは Sum of Squared Value Differences になります。
    • [照合方法] パラメーターに [ランク付けされた属性値] を指定すると、フィールド エイリアスは Sum of Squared Rank Differences になります。
    • [照合方法] パラメーターに [属性プロファイル] を指定すると、フィールド エイリアスは Cosine Similarity になります。
    これらの指標の計算方法の詳細については、「類似検索 (Similarity Search) の詳細」をご参照ください。

    [照合する入力フィーチャ] の値が 1 つのみの場合、このフィーチャがターゲット フィーチャになります。複数の [照合する入力フィーチャ] の値を指定した場合、すべての [対象属性] の値の平均値で作成される一時フィーチャがターゲット フィーチャになります。

    LABELRANK

    レンダリング ランク

    このフィールドは、表示のためにのみ使用されます。このツールは、このフィールドを使用して解析結果のデフォルトのレンダリングを提供します。

  • 出力フィーチャ レイヤーは自動的にコンテンツ ウィンドウに追加され、LABELRANK フィールドにはデフォルトのレンダリングが適用されます。適用されるレンダリングは、<ArcGIS Pro>\Resources\ArcToolBox\Templates\Layers にあるレイヤー ファイルによって定義されます。必要に応じて、[レイヤーのシンボル情報を適用 (Apply Symbology From Layer)] ツールを使用してデフォルトのレンダリングを再適用できます。

    メモ:

    デフォルトのサンプル サイズは 10,000 レコードです。[結果の数] の値がこのデフォルトより大きい場合は、サンプル サイズを増加することによって、すべての結果をレンダリングする必要があります。サンプル サイズを増やすには、[シンボル] ウィンドウを開いて、[高度なシンボル オプション] タブ 高度なシンボル オプション をクリックします。[サンプル サイズ] を展開して、[最大サンプル数] の値を変更します。

構文

arcpy.stats.SimilaritySearch(Input_Features_To_Match, Candidate_Features, Output_Features, Collapse_Output_To_Points, Most_Or_Least_Similar, Match_Method, Number_Of_Results, Attributes_Of_Interest, {Fields_To_Append_To_Output})
パラメーター説明データ タイプ
Input_Features_To_Match

照合するフィーチャを含むレイヤー (またはレイヤー上の選択)。これらのフィーチャに類似した他のフィーチャを探します。複数のフィーチャを指定すると、属性の平均に基づいて照合が行われます。

ヒント:

[照合する入力フィーチャ][候補フィーチャ] の値が 1 つのデータセット レイヤーから取得されるときは、次の操作を行うことができます。

  • そのレイヤーを [コンテンツ] ウィンドウにコピーし、レイヤーの複製を作成します。
  • 重複するレイヤーの名前を変更します。
  • 名前を変えたレイヤーで、照合する参照フィーチャの選択を行うか、またはフィルター設定を設定します。[照合する入力フィーチャ] パラメーターに、作成した新規レイヤーを使用します。
  • 選択を適用するか、元のレイヤーに関するフィルター設定を設定して、参照フィーチャを除外します。これにより、[候補フィーチャ] パラメーターで使用できるレイヤーが得られます。

Feature Layer
Candidate_Features

照合する候補フィーチャを含むレイヤー (またはレイヤーの選択)。このツールは、Input_Features_To_Match の値に最も類似する (または最も類似しない) フィーチャを、これらの候補の中からチェックします。

Feature Layer
Output_Features

Input_Features_To_Match の値ごと、および見つかったすべての一致結果フィーチャに対応したレコードを含んでいる出力フィーチャクラス。

Feature Class
Collapse_Output_To_Points

Input_Features_To_Match パラメーターおよび Candidate_Features パラメーターの値が両方ともラインまたはポリゴンである場合に、Output_Features パラメーターのジオメトリがポイントに折りたたまれるのか、入力フィーチャの元のジオメトリ (ラインまたはポリゴン) に一致するのかを指定します。このパラメーターは Desktop Advanced ライセンスでのみ利用可能です。COLLAPSE を選択すると、大きいライン データセットおよびポリゴン データセットの場合に、ツールのパフォーマンスが改善されます。

  • COLLAPSEライン フィーチャとポリゴン フィーチャは、フィーチャの重心 (ポイント) として表されます。
  • NO_COLLAPSE出力ジオメトリは、入力フィーチャのラインまたはポリゴン ジオメトリに一致します。これがデフォルトです。
Boolean
Most_Or_Least_Similar

Input_Features_To_Match の値に最も類似しているフィーチャまたは最も類似していないフィーチャのいずれが識別されるかを指定します。

  • MOST_SIMILAR最も類似しているフィーチャが識別されます。これがデフォルトです。
  • LEAST_SIMILAR最も類似していないフィーチャが識別されます。
  • BOTH最も類似しているフィーチャおよび最も類似していないフィーチャが両方とも識別されます。
String
Match_Method

照合を値、ランク、またはコサイン関係のいずれに基づいて行うか指定します。

  • ATTRIBUTE_VALUES照合は、すべての [対象属性] の値の標準化属性値の二乗差の合計に基づきます。これがデフォルトです。
  • RANKED_ATTRIBUTE_VALUES照合は、すべての [対象属性] の値のランクの二乗差の合計に基づきます。
  • ATTRIBUTE_PROFILES照合は、すべての [対象属性] の値のコサイン類似度の関数として計算されます。
String
Number_Of_Results

検索する一致結果の数。0 または Candidate_Features の値の合計数より大きい数字を入力すると、すべての候補フィーチャのランキングが返されます。デフォルトは 10 です。

Long
Attributes_Of_Interest
[Attributes_Of_Interest,...]

照合基準を表す数値属性。

Field
Fields_To_Append_To_Output
[Fields_To_Append_To_Output,...]
(オプション)

Output_Features パラメーターに含めるフィールドです。これらのフィールドは類似度を判断するために使用されるものではなく、参照用として Output_Features パラメーターに含められます。

Field

コードのサンプル

SimilaritySearch (類似検索) の例 1 (Python ウィンドウ)

次の 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")
SimilaritySearch (類似検索) の例 2 (スタンドアロン スクリプト)

次のスタンドアロン Python スクリプトは、SimilaritySearch 関数の使用方法を示しています。

# Similarity Search of crime data in a metropolitan area
# Import system modules
import arcpy
import os
import arcpy.stats as SS
# Set property to overwrite existing output
arcpy.env.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())

ライセンス情報

  • Basic: はい
  • Standard: はい
  • Advanced: はい

関連トピック