Alteryxで共起カウントをする

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

今回は、Alteryxのちょっと捻ったテクニックとして共起カウントをしてみたいと思います。

共起とは

共起とは自然言語処理(他の分野では他の単語かも)でよく使われる言葉で、文章中に同時に出て来やすい単語のペアなんかを扱う際に利用されます。

複数の文章からそれぞれに含まれる単語を抽出した時に単語Aと単語Bが同時に出てくる文章の数は多いが、単語Aと単語Cはほとんど同じ文章中に出てくることがない。みたいな感じです。 どのくらいの頻度で出てくるかをすべての単語の組み合わせでカウントすれば、近しい単語だったり文章だったりといったものが判定できそうです。 また、文章と単語の話以外でも、ある商品Aを買った人が別な商品Bを買う確率などにも使えそうですね。

Amazonにあるこんな感じのやつです。

アソシエーション分析と共起

さて、このようなことを考えた際にデータ分析界隈では非常に有名な「ビールと紙おむつ」の話があります。 これもセット買われる可能性が高いという話なので似たような例と言えるでしょう。

さて、この「ビールと紙おむつ」ではAprioriという手法が使われています。 このAprioriはAlteryxでもMB Rulesツールを使うことで利用可能です。

このツールの具体的な使い方に関しては、以下を参照してください。

さて、共起する回数のカウントして終わりではなく、それを使ってこのような結果まで出すツールが存在するにもかかわらずわざわざ共起カウントとしたいというのはどういった状況なのでしょうか? このようなデータはアソシエーション分析を行ってその結果を人間が確認し、施策を打つだけでなく、他の様々な分析で利用する他のデータとして使えます。 そのため、最終的な分析結果ではなく、計算を行った数値を取得するためのワークフローが必要になる場面があるというわけです。

実際に作成してみる

では実際に試してみましょう。 今回は、MovieLensのデータを使います。

こちらにあるml-latest-smallを利用します。 共起するすべての組み合わせを求めるので、20mとかを使うと膨大な量になるので気をつけましょう。

ワークフローは以下のようになります。

今回は、誰がどの映画を見たかという情報が欲しいのでデータセット中に含まれるratings.csvを利用しています。 今回は共起した数をカウントするのみなので、最初のSelectツールではそれに不要なデータ(rating, timestamp)を取り除いています。

次にJoinツールの「L」と「R」両方にこのデータを接続しています。 SQLでいうところのSelf-Joinです。設定は以下のようになっています。

userIdをキーにして結合しています。 これによって、同一ユーザが見た映画のすべての組み合わせを取得しています。 すべての組み合わせを出しているので、データ数が多い場合、ここで大量のデータが生成されます。ご注意ください。

続いてのFilterツールでは、結合した左右のmovieIdが同一のものを取り除いています。

[movieId] != [Right_movieId]

先ほどの結合の際にこの組み合わせも出現するのでそれを取り除いています。

最後にSummarizeツールで共起カウントを計算しています。

そのあとに続いてるSortツールは結果を見やすくするために、カウントの降順でデータを並べ替えています。 結果は以下のようになります。

これをもとにmovies.csvから具体的なタイトルを引くなどすることでより確認しやすデータになります。

共起カウントとアソシエーション分析について

さて、このデータの性質をいくつか見てみましょう。 まずは、各映画がどれだけ他の映画と共起したかを見てみます。

非常に多くの映画と共起しているものがあるようです。 これは、人気のある映画なんかは多くの人に見られているので割とどんなものとも共起してしまう傾向にあるということが言えるかと思います。

次に、共起カウントの数値ごとの出現回数を見てみましょう。

ほとんどの共起カウントが1とか2とかといった少ないところまとめってるのがわかります。 こういった少ないものは偶然の産物だったり、他の人にも適用できるような代物ではなかったりするので、弾いてしまってもいいでしょう。

単純な共起カウントだけだとこういったノイズ的要素が多数入ってしまいます。 そういった要素を考慮して意味のある結果にするためのスコアがアソシエーション分析では含まれています。 アソシエーション分析では、支持度, 信頼度, リフト値といった値が出てきます。それらの詳細を知りたい場合は以下のサイトなどを参照してください。

おわりに

今回はAlteryxで共起カウントを算出する方法を解説しました。

今回はMovieLensのデータを利用した映画どうしの共起カウントで計算してみましたが、複数の文章どうしなど何らかのコンテンツどうしの類似度を図るための指標の1つとして利用したり、この値を利用した他の分析に活用したりといったことが可能です。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400