属性を使用してユーザープロファイルを分類/クラスター化する


14

Webサイトから製品を購入するユーザーのデータセットがあります。

私が持っている属性は、ユーザーID、ユーザーの地域(状態)、製品のカテゴリーID、製品のキーワードID、WebサイトのキーワードID、および製品の消費額です。

目標は、製品とWebサイトの情報を使用して、「男性の若いゲーマー」や「家にいる」など、ユーザーが誰であるかを特定することです。

以下のサンプル画像を添付しました。

ここに画像の説明を入力してください

製品にはすべて1940の一意のカテゴリと13845の一意のキーワードがあります。Webサイトには、13063個の一意のキーワードがあります。それは毎日のログデータなので、データセット全体が巨大です。

これらは監視されていないため、クラスタリングを考えていますが、それらのIDは順序付けられた番号であり、数値の意味はありません。その場合、アルゴリズムの適用方法がわかりません。私も分類を考えています。購入した製品の販売額に基づいてクラスの列を追加した場合。クラスタリングがより好ましいと思います。キーワードidの次元は10000を超える可能性があるため、この場合にどのアルゴリズムを使用する必要があるかわかりません(各製品には多くのキーワードがあるため、Webサイトも同様です)。このプロジェクトにはSparkを使用する必要があります。

誰かがいくつかのアイデアや提案を手伝ってくれますか?

どうもありがとうございます!


1
詳細情報を提供できますか?「製品AのカテゴリID」とは何ですか?また、すべてのエントリに対して同じ長さの「製品AのキーワードIDを検索」していますか?「検索キーワードIDの次元が10000を超える可能性がある」理由 彼らは何ですか?サンプルはいくつありますか?ここにデータのサンプルをいくつか投稿すると、すべての質問に答えることができます。それから私はおそらくあなたに何かを提案することができます。
カスラマンシャエイ

製品Aと製品Bは、ユーザーが購入した2つの製品ですか?キーワードは異なる可能性があるため、製品AとBはユーザーごとに異なることを示唆しているようです。そうですか?最後のコメント、分類またはクラスター化しますか?これらはまったく異なるテクニックです:)
logc

@kasramsh、返信ありがとうございます。説明を更新し、サンプルデータも添付しました。あなたからいくつかの提案をもらいたいと思っています!
シルビア

@logcはい、製品(以前に製品Aと言いました)およびWebサイト(以前に製品Bと言いました)は各ユーザーによって異なります。各製品にはいくつかのキーワードがあり、各Webサイトにはいくつかのキーワードもあります。「男性の若いゲーマー」などのユーザープロファイルを作成できる限り、クラスタリングまたは分類のどちらでも構いません。「家に泊まる」。クラスタリングがより望ましいと思います。ありがとうございました!!
シルビア

@sylvia-解決すべき同様の問題があります。別の質問として投稿しました。あなたはそれをどのように解決したかについていくつかの提案をしてもらえますか?datascience.stackexchange.com/questions/12930/… 私のもう1つの疑問は、Kの手段についてですが、顧客ごとにレコードをグループ化しましたか?つまり、各行はトランザクションを表すか、日付までのその顧客の総購入数を表します。
ニール

回答:


11

現時点では、非常に簡単な答えを出す時間しかありませんが、後で詳しく説明します。

あなたがしたいのは、データのラベルを見つけたいので、クラスタリングです。(分類とは対照的に、少なくとも一部のデータにラベルを付け、残りにラベルを付けたい場合)。

ユーザーに対してクラスタリングを実行するには、それらを抽象空間のある種のポイントとして持つ必要があります。次に、ポイント間の距離を測定し、「近い」ポイントは「類似」であると言い、そのスペースでの位置に応じてラベルを付けます。

データをユーザープロファイルのようなものに変換する必要があります。つまり、ユーザーIDの後に、このユーザーの特徴を表す数字のベクトルが続きます。あなたの場合、各機能は「ウェブサイトのカテゴリ」または「製品のカテゴリ」であり、数字はその機能に費やされた金額です。または、当然のことながら、機能はWebと製品の組み合わせにすることもできます。

例として、たった3つの機能を持つユーザープロファイルを想像してみましょう。

  • 「技術的な」ウェブに費やしたドル、
  • 「ファッション」製品に費やしたドル
  • 「家族向け」ウェブ(知っている人)での「攻撃的な」ビデオゲームに費やした金額。

それらのプロファイルを作成するには、所有している「カテゴリ」と「キーワード」を、あまりにも豊富に、関連すると思われる機能にマッピングする必要があります。見トピックモデリングまたは意味的な類似性そうします。マップが作成されると、キーワード「ガジェット」、「エレクトロニクス」、「プログラミング」、およびX個のその他のキーワードを含むWebに費やされたすべての金額をすべて、最初の機能に集約する必要があります。等々。

機能を「課す」ことを恐れないでください!ユーザーをクラスタ化したら、それらを調整する必要があり、場合によっては完全に変更する必要があります。

ユーザープロファイルを作成したら、k-meansまたはその他の興味深いと思われるものを使用してそれらをクラスター化してください。どの手法を使用する場合でも、各クラスターの「代表的な」ポイントを取得することに関心があります。これは通常、そのクラスター内のポイントの幾何学的な「中心」です。

それらの「代表的な」点をプロットし、それらが他のクラスターと比較する方法もプロットします。ここではレーダーチャートを使用すると非常に便利です。顕著な特徴(代表者の中で非常にマークされ、他のクラスターとの比較でも非常に目立つもの)がある場合はいつでも、キャッチーなフレーズ(「オタク」、「ファッショニスタ」)でクラスターにラベルを付けるのに役立つ候補です。 、「積極的なママ」...)。

クラスタリングの問題は未解決の問題であるため、「正しい」解決策はありません。そして、私の答えはすでにかなり長いと思います。プロファイルの正規化と外れ値のフィルタリングについても確認してください。


本当にありがとうございます!とても助かります。マッピングから始めます。ほんとうにありがとう!
シルビア

お力になれて、嬉しいです。:)
logc

こんにちは@logc、機能の選択にLDAを適用しました。各user_idを「ドキュメント」と見なし、キーワードは「ドキュメント」内の「単語」であり、LDAを適用することで、キーワードのトピックをいくつか取得しました。ただし、トピックのほとんどが同じキーワードで構成されている理由はわかりません。それは、LDAが私の場合に適切な方法ではない、またはいくつかの間違いがあるということですか?どうもありがとうございます!
シルビア

@sylvia:この質問をこのサイトで新しい質問に変えることをお勧めします。そうしないと、大量のコメントを書くことになり、Q&Aに最適な形式ではありません。:)
logc

提案をありがとう。ご覧になりたい場合は、こちらにデータリンクを掲載しますdatascience.stackexchange.com/questions/5941/…ありがとう!
シルビア

-2

オリエンテーションと探索については、WeKaをお勧めします。これは、機械学習用の非常に優れたツールキットです。特定の入力形式(.ARFF)を使用するため、同様に調べる必要があります。

キーワードのジレンマについては、冗長または非表示のキーワードを排除するために、いくつかの機能選択を実行することをお勧めします。


@Lennart Kloppenburgに返信いただきありがとうございます。属性(keword_id)が番号付きの場合、機能の選択を実行するにはどうすればよいですか?上記のサンプルデータを更新しました。ご覧になって、いくつかの提案をお願いします。ありがとうございました!
シルビア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.