タイルツールのスマートタイルでゼロ以上の値のみからなるフィールドを指定したとき #alteryx
alteryxのタイルツールのオプションである「スマートタイル」で、ゼロ以上の値のみを含むフィールドを指定した場合の挙動を検証した記事になります。
前提条件
下記の環境で検証しています。
・Alteryx Designer 2022.1.1
タイルツール
タイルツールは、指定の方法で入力データセットをタイル(グループ)に分割し、各レコードが、どのタイルに分類されたかを表す新しいフィールドを追加するツールです。
スマートタイルによるデータセットの分割
データセットの分割方法の一つに、スマートタイルオプションによる分割を選択できます。入力データセットの数値フィールドを指定することで、その平均・標準偏差をもとにAlteryx内部でタイル範囲が計算され、そのフィールド値がどの範囲に分類されるかに基づき、レコードが分割されます。
分割後のタイルは、-3 ~ 3 の最大7種類で、下記のように分類されます。
※データセットによっては、必ずしも7種類のタイルに分割されるとは限りません。
※sdは標準偏差
上記のイメージのように、スマートタイルでは、指定の数値フィールドが正規分布に従うと仮定されます。しかし、指定フィールドがゼロ以上の値しか含まない場合、分類方法が少し異なります。以降で詳細を見ていきます。
フィールドの値がゼロ以上のみの場合
こちらはドキュメントにも詳細の記載がなく、コミュニティでも議論されている内容です。ツールで指定したフィールドが、ゼロ以上の値のみから構成される場合、ツール内部では、そのフィールドの対数(常用対数)をとった上で、上述の分類基準をあてはめるようです。
Smart Tile calculations
Smart Tile further explained
下記のデータを用意し、スマートタイルで分類してみます。
詳細な名前列を出力するにチェックを入れた際の出力は下記の通りです。
すべてのレコードが「-3」タイルに分類されました。
通常のように(対数をとらずに)タイル範囲を計算してみると、下記のようになり、「-3」には分類されません。したがって、異なる基準が適用されていることになります。
タイル | 範囲 |
---|---|
-3 | -8.54 |
-2 | -8.54 ~ -4.32 |
-1 | -4.32 ~ -0.11 |
0 | -0.11 ~ 4.11 |
1 | 4.11 ~ 8.32 |
2 | 8.32 ~ 12.54 |
3 | 12.54 |
次に、コミュニティにも記載があった内容通り、フィールドに常用対数をとり、再度タイル範囲を算出してみます。値が0
のレコードについては、常用対数をとれないので、スキップし、10,10
の 2 レコードでの標準偏差を計算します。同じ値なので、標準偏差は0
(ばらつきがない)となります。この場合、タイル範囲は下記のように、すべての範囲で値が同じになります。
タイル | 範囲 |
---|---|
-3 | ~ 10 |
-2 | 10 ~ 10 |
-1 | 10 ~ 10 |
0 | 10 ~ 10 |
1 | 10 ~ 10 |
2 | 10 ~ 10 |
3 | 10 ~ |
ここで、標準偏差の計算時に値が0
のレコードを除いたように、平均の計算時も値が0
のレコードは除外しています。
上記のツール出力では、すべてのレコードがタイル「-3」に分類されていたことから、各レコードの分類時の条件分岐は、タイル「-3」から順に評価されていること、また、「-3」の範囲は、今回の場合10以下
での評価となっていることが推測されます。
※ツールの内部的な仕様は確認できないため、あくまでも推測となります。
上述のデータは、分散がゼロの例だったので、下記のデータも同様にスマートタイルで分類してみます。ゼロ以外の値が一部異なりますが、ゼロ未満の値を含まないことは同様です。
この場合、下記のように分類されました。
手計算した(常用対数をとった)タイル範囲は下記の通りで、各レコードもこの範囲と同じタイルに収まっていました。
※手計算したタイル範囲とツールの出力値は、概ね近い値となっていますが、正確に一致したわけではありません。
タイル | 範囲 |
---|---|
-3 | ~ 0.54 |
-2 | 0.54 ~ 2.75 |
-1 | 2.75 ~ 14.01 |
0 | 14.01 ~ 71.38 |
1 | 71.38 ~ 363.63 |
2 | 363.63 ~ 1852.53 |
3 | 1852.53 ~ |
なお、この範囲をAlteryxで計算する場合、下記の式で算出できます。
「-3」のタイル範囲の算出例
POW(10,[Avg_Field1] - 2.5*[StdDev_Field1])
ここで [Avg_Field1]
,[StdDev_Field1]
はそれぞれスマートタイルで指定したフィールドの常用対数をとった後に算出した平均値と標準偏差です。平均と標準偏差は集計ツールで算出でき、Alteryxでの標準偏差は、不偏分散を使用しています。
正の値のみの場合
もう一つサンプルとして、ゼロを含まないすべての値が正のフィールドでも試してみます。
統計解析の場面でよく使用されるiris
データセットを用います。
Alteryxでデータセットを読み込み、Sepal.Length
フィールドをDouble型に変更し、スマートタイルで分類します。Sepal.Length
フィールドは、正の値から構成され、150レコード存在します。分類結果と手計算したタイル範囲は下記のようになりました。
※集約後のタイル情報のみ表示。
手計算したタイル範囲
タイル | 範囲 |
---|---|
-3 | ~ 4.07 |
-2 | 4.07 ~ 4.68 |
-1 | 4.68 ~ 5.39 |
0 | 5.39 ~ 6.21 |
1 | 6.21 ~ 7.15 |
2 | 7.15 ~ 8.23 |
3 | 8.23 ~ |
こちらも手計算したタイル範囲がツール出力と近い値となっていることが確認できます。ただし、上述の例と同様に正確に一致させることはできませんでした。
以上より、ゼロ以上の値のみからなるフィールドに対し、スマートタイルによるデータの分割を行う場合、下記の手順でツールで計算されたタイル範囲と同様の値を算出できることがわかりました。
・対象フィールドの常用対数をとり、平均と標準偏差を計算
・計算した平均と標準偏差用いて、負の値を含む場合と同様のロジックでタイル範囲を計算
・タイル範囲をもとのスケールに戻す
ただし、正確な一致ではないため、ツール内部では追加で異なる処理が行われている可能性があります。
さいごに
スマートタイルを使用すれば、データセットをその分布に基づいて簡単に分類することができます。
対象の数値型フィールドの分布によって適用される処理が異なるので、そのような前提があることに注意しつつ、データセットの分割に厳密な定義が必要な場合、意図した通りの分割ができているか確認しながら作業を行う必要があると考えられます。
今回は以上になります。