Find Nearest Neighbors(最近傍探索)| Alteryx Predictive Tools 道場 Advent Calendar 2018 #17

2018.12.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、にいのです。

当エントリは『Alteryx Predictive Tools 道場 Advent Calendar 2018』の17日目のエントリです。

クラスメソッド Alteryx Predictive Tools 道場 Advent Calendar 2018 - Qiita Alteryx Predictive Tools 道場 Advent Calendar | シリーズ | DevelopersIO

前提条件

Alteryxは「Alteryx Designer / Version 2018.4」を利用しています。

サンプルワークフローとは?

Alteryxでは、Predictive Toolを使用したサンプルワークフローを参照することができます。[Help]→[Sample Workflows]→[Predictive Tool samples]→[Predictive Analytics]から参照可能です。参照にはAlteryx Predictive Tools with Rがインストールされている必要があります。今回は17.Find Nearest Neighbors Sampleを使用しています。

Find Nearest Neighbors Tool(最近傍探索ツール)とは?

AlteryxではFind Nearest Neighbors Toolを使ってクエリストリーム内の各レコードに対応するデータストリーム内の選択された数の最近傍点を見つける、つまり目的値に一番近いところを多数決で決定できます。以下の図の「?」が分析対象のデータだとすると、このデータから距離の近い順にk個のデータを利用するという手法です。k=3の場合は「?」に近い順に3つのデータを選びます。この場合、「?」はより数の多い「o」として決定されます。

最近傍探索については下記ブログでも紹介されていますので、ぜひご参照ください。

このツールにはインプット(D/Q)とアウトプット(N/M)がそれぞれ2つずつあります。

インプット

D(データストリーム)

Dはデータストリームを意味し、分析のための材料となる、すでに存在しているデータを指します。

Q(クエリストリーム)

Qはクエリストリームで、分析の対象となるデータを指します。

アウトプット

N(N出力)

近傍の値とそれぞれの距離を表示します。

M(M出力)

データ分析に使用したデータを結合したかたちで参照可能です。

サンプルワークフローを読み解く

このツールを使ったサンプルワークフローの全体図は以下の通りです。

とあるスーパーマーケットチェーンでの店舗レイアウト変更前、変更後の販売効果を分析するため、レイアウト変更済みの店舗に対し、条件が最も近い未変更の店舗をそれぞれ3つ抽出することがゴールです。

インプットデータ

前述の通り、インプットデータはデータストリームとクエリストリームの2種類あります。いずれも同じフォーマットのデータで、スーパーマーケットが位置する都市の人口密度や、年齢、世帯規模、収入のパーセンテージの情報が記載されています。なお、学習のために使用されるデータストリームとしてインプットされるのは「Other_Stores.yxdb」で、分析対象のクエリストリームとして使用されるのは店舗レイアウト変更対象済みの「Treatment_Store.yxdb」です。

Find Nearest Neighbors Toolその1

まずは1つめのツールです。Configurationの内容は以下の通りです。

  • Unique key field:各店舗を一意に識別する情報、この場合はStore
  • Fields(select two or more):距離の計算に使用する項目
  • The number of near neighbors to find:近くにあるデータの数(前述で言う所のk個のkの部分)

このサンプルワークフローではデフォルトで選択されるKD-Treeを使用しています。

出力結果

N出力からは以下の結果が得られました。クエリストリームでインプットされたレイアウト変更の対象となる店舗に対し、データストリームでインプットされたデータから一番近い順に3店舗を表示させています。例えば、店舗S012に最も条件が近いのは店舗S333となり、2番目はS056、3番目はS415となります。

一方、M出力はデータストリームとクエリストリームを結合した出力結果です。どのレコードがどちらのインプットかは_Type_フィールド(Data/Query)で確認可能です。

Find Nearest Neighbors Toolその2

続いて2つめのツールです。以下がConfigurationの内容ですが、1つめのツールとの違いはStandardize the fieldのみで、z-score standardizationが選択されています。これが選択されていると、平均値=0で標準偏差=1となります。これは、人口密度や年齢のパーセンテージなどの項目の比率を同じにするねらいがあります。

出力結果

N出力を見ると、1つめのツールとは違った結果が得られていることがわかります。店舗S012に最も近い店舗はS242となっています。M出力は前項の通り、分析に使用したデータを結合しています。

Find Nearest Neighbors Toolその3

3つめのツールです。これまでのツールとの違いはUnit-interval standardizationが選択されているところです。これを選択すると、選択された項目の値が最大値1〜最小値0の間で標準化されます。

出力結果

N出力をみると、距離を示すDistの項目が0〜1の間の値になっていることが確認できます。M出力については前項と同様、インプットデータが結合されて表示されています。

Join Multiple Tool

最後に、Join Multiple Toolを使ってそれぞれの分析結果を結合し、比較しやすいようにします。

  • None:標準化していない(Find Nearest Neighbors Toolその1)
  • z:z-score standardizationによって標準化(Find Nearest Neighbors Toolその2)
  • Unit:Unit-interval standardizationによって標準化(Find Nearest Neighbors Toolその3)

標準化して分析した2件は概ね分析結果が一致していることがわかります。

おわりに

今回は最近傍探索を行うFind Nearest Neighbors Toolのサンプルワークフローについてご紹介しました。明日は大高大輔による「Frequency and Contingency (頻度とコンフィジェンシー)」です。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400