質問

モバイルアプリでGoogleアナリティクスを使用して、異なるユーザーがアプリを使用する方法を確認しています。私は彼らが移動するページに基づいてパスを描きます。たとえば、100人のユーザーのパスのリストを考えると、ユーザーをクラスタリングするにはどうすればよいですか。どのアルゴリズムを使用しますか?ちなみに、私は実装にSCKIT学習パッケージを使用することを考えています。

私のデータセット(CSV)は次のようになります。

DeviceID,Pageid,Time_spent_on_Page,Transition.<br> 
ABC,Page1, 3s, 1->2.<br>
ABC,Page2, 2s, 2->4.<br>
ABC,Page4,1s,4->1.<br>

したがって、パスは1-> 2-> 4-> 1で、1,2,4はPageIDです。

役に立ちましたか?

解決

@Shagunの答えは実際には正しいです。拡張するだけです!

あなたの問題には2つの異なるアプローチがあります:

グラフアプローチ

  • @Shagunの回答に記載されているように、あなたは重み付き指向グラフを持っており、パスをクラスター化する必要があります。あなたの問題はそうではないことを知ることが重要だからです グラフクラスタリング また コミュニティの検出 頂点がクラスター化されている問題!
  • データの最後の2列を使用してNetworkXのグラフを構築すると、体重として費やした時間を追加し、そのリンクをエッジ属性として渡したユーザーを追加できます。結局、クラスタリング用のさまざまな機能があります。これまでに個人がこれまでに満たしたすべての頂点のセット、合計、平均、および最短パス分布パラメーター、これはユーザーの動作のクラスタリングに使用できます。 。

標準データ

  • 上記のすべては、マトリックスでデータを効率的に読み取ることで実行できます。指定されたユーザーの各エッジを単一の行と見なす場合(つまり、あなたは持っている mバツn 列どこで m ユーザーの数と n 100ケースに固執する場合のエッジ数!)そして、おそらく動作をクラスター化できる列としてプロパティを追加します。ユーザーがエッジを渡した場合 n 時間、そのユーザーに対応する行で、そのエッジは値のあるカウント列を追加します n また、時間を費やすなど。エッジの開始と終了も有益です。ノード名はカテゴリ変数であることに注意してください。

クラスタリングアルゴリズムについては、Sklearnを簡単に確認できれば、十分に見つけることができます。

それが助けてくれることを願っています。幸運を :)

他のヒント

私はそのようなデータセットを自分で使用していませんが、この問題をページがノードを形成し、遷移に基づいてエッジを指示するグラフとしてモデル化できると思います。それらに費やした時間に基づいてノードに重みを追加し、グラフクラスタリングアルゴリズムを使用します。これを使用することを選択した場合、 NetworkX グラフベースの分析用のPythonのライブラリ。

編集:さまざまな可能なパスと、ユーザーを分類するために使用される頻度に関する情報を使用できます。 Google Searchアプリの例を見てみましょう。画像を検索したいとします。オプションの1つは、画像検索オプションを使用し、クエリを作成し、結果ページに到達することです。その他は、最初にクエリを作成し、結果を取得した後に画像オプションに切り替えることです。どちらの場合も、私は同じページでやった。この情報を使用してユーザーを分類できます。今、かなり多くのパスが可能になる可能性があるので、私はすべてを考慮しますか?グラフは、ユーザーを分類する方法に関する情報とともに、ここで活用するために使用できます。グラフとしてそれをモデル化することは、パスの概念に役立つので、私にとって非常に直感的に見えます。

ライセンス: CC-BY-SA帰属
所属していません datascience.stackexchange
scroll top