基本的な問題
これが私の基本的な問題です。非常にゆがんだ変数とカウントを含むデータセットをクラスター化しようとしています。変数には多くのゼロが含まれているため、私のクラスタリング手順(K平均アルゴリズムの可能性が高い)ではあまり情報がありません。
細かいことは、平方根、ボックスコックス、または対数を使用して変数を変換するだけです。しかし、私の変数はカテゴリー変数に基づいているので、(カテゴリー変数の1つの値に基づいて)変数を処理し、他の変数(カテゴリー変数の他の値に基づいて)をそのままにして、バイアスを導入するのではないかと心配しています。 。
もう少し詳しく見ていきましょう。
データセット
私のデータセットはアイテムの購入を表します。アイテムには、たとえば色:青、赤、緑など、さまざまなカテゴリがあります。購入は、たとえば顧客ごとにグループ化されます。これらの各顧客は、データセットの1行で表されるため、顧客に対する購入を何らかの方法で集計する必要があります。
私がこれを行う方法は、アイテムが特定の色である購入の数を数えることです。だからではなく、単一の変数のcolor
、私は三つの変数で終わるcount_red
、count_blue
とcount_green
。
以下に例を示します。
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 12 | 5 | 0 |
-----------------------------------------------------------
c1 | 3 | 4 | 0 |
-----------------------------------------------------------
c2 | 2 | 21 | 0 |
-----------------------------------------------------------
c3 | 4 | 8 | 1 |
-----------------------------------------------------------
実際、私は最終的に絶対数を使用せず、比率(顧客ごとに購入したすべてのアイテムのグリーンアイテムの割合)を使用します。
-----------------------------------------------------------
customer | count_red | count_blue | count_green |
-----------------------------------------------------------
c0 | 0.71 | 0.29 | 0.00 |
-----------------------------------------------------------
c1 | 0.43 | 0.57 | 0.00 |
-----------------------------------------------------------
c2 | 0.09 | 0.91 | 0.00 |
-----------------------------------------------------------
c3 | 0.31 | 0.62 | 0.08 |
-----------------------------------------------------------
結果は同じです。たとえば、緑(誰も緑が好きではない)など、私の色の1つについて、多くのゼロを含む左に歪んだ変数が得られます。その結果、k-meansはこの変数の適切な分割を見つけることができません。
一方、変数を標準化すると(平均を減算し、標準偏差で除算)、緑色の変数はその小さな分散のために「爆発」し、他の変数よりもはるかに広い範囲から値を取得するため、より見やすくなります。実際よりもk-meansにとって重要です。
次のアイデアは、sk(r)ewed green変数を変換することです。
歪んだ変数の変換
平方根を適用して緑の変数を変換すると、少しゆがんで見えます。(ここでは、混乱を確実にするために、緑の変数が赤と緑でプロットされています。)
赤:元の変数。青:平方根によって変換されます。
この変換の結果に満足しているとしましょう(ゼロはまだ分布を強く歪めているので、満足していません)。赤と青の変数もスケーリングする必要がありますが、分布は正常に見えますか?
ボトムライン
つまり、赤と青をまったく処理せずに、緑を一方向に処理することで、クラスタリングの結果を歪めますか?結局、3つの変数はすべて一緒に属しているので、同じように処理するべきではないでしょうか。
編集
明確にするために:私は、k-meansがおそらくカウントベースのデータを取得する方法ではないことを認識しています。しかし、私の質問は、従属変数の扱いについてです。正しい方法の選択は別の問題です。
私の変数に固有の制約は、
count_red(i) + count_blue(i) + count_green(i) = n(i)
、n(i)
は顧客の合計購入数ですi
。
(または、同等に、count_red(i) + count_blue(i) + count_green(i) = 1
相対カウントを使用する場合。)
変数を別の方法で変換すると、これは制約の3つの項に異なる重みを与えることに対応します。私の目標が顧客のグループを最適に分離することである場合、この制約に違反することに注意する必要がありますか?それとも「終わりは手段を正当化する」のでしょうか?
count_red
、count_blue
そしてcount_green
、データがカウントされています。正しい?行は何ですか-アイテム?そして、アイテムをクラスター化しますか?