Find Nearest Neighbors(最近傍探索)| Alteryx Predictive Tools 道場 Advent Calendar 2018 #17
こんにちは、にいのです。
当エントリは『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
:各店舗を一意に識別する情報、この場合はStoreFields(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日間の無料トライアルも実施中ですので、お気軽にご相談ください。