スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DVDの類似性関係を可視化して解析

前回まで、アマゾンを利用してエロゲーの類似性関係を可視化し、ネットワークがスケールフリー性とスモールワールド性を満たすことを確認しました。それでは、別の商品カテゴリの関係はどのようになっているのでしょうか。まずは、アマゾンが取り扱っているDVDの商品群を調べてみましょう。

前回までのあらすじ

DVDカテゴリ以下にある、次の4つのジャンルに関して、前回同様の解析を行ってみます。
  1. アニメDVD:BrowseNodeId=562020
  2. 日本映画DVD:BrowseNodeId=562014
  3. 外国映画DVD:BrowseNodeId=562016
  4. お笑いDVD:BrowseNodeId=12842371

早速、結果を見ていきましょう。まずは、次数分布からです。

DVD_degree_distribution.png

どのジャンルも、高次数側でべき乗則が成り立っています。しかし、指数γは3から5までの異なった値をとるようです。アニメDVDのγが約5と最も高く、続いてお笑いDVDのγ~4、日本映画と外国映画のγ~3と続きます。実は、日本映画と外国映画の次数分布は、高次数側のγが一致するだけでなく、低次数側の挙動も一致します。

γの違いは何を表しているのでしょうか。これを知るためには可視化が役に立ちます。続いて、各ネットワークを可視化したものを見ていきましょう。可視化に用いたソフトウェアは以前と同じくCytoscape、レイアウトはこれも同様にSpring Embeddedを用いました。

外国映画DVD
foreignmoveiDVD_visualize.png

日本映画DVD
jpmovieDVD_visualize.png

お笑いDVD
owaraiDVD_visualize.png

アニメDVD
animeDVD_visualize.png

画像を見れば一目瞭然ですね。外国映画のネットワークでは、大多数のノードが最大の部分グラフ(毛玉みたいなの)に属しています。それに対して、小さな部分グラフの数はあまり多くありません。外国映画→日本映画→お笑い→アニメの順で、最大の部分グラフは次第に疎になり、かわりに細かい部分グラフの数が増加します。実は、この順番で、指数γも増加しています。

小さな部分グラフの数が大きいことと、γが大きい値を取ることには関連があります。部分グラフ内の次数はたかだか部分グラフのノード数にしかなりません。ネットワークが小さい部分グラフに分割されればされるほど、複数のクラスタ間にエッジをもつ次数の高いノードは姿を消し、エッジのやりとりを部分グラフの中だけで完結してしまう次数の低いノードが増えていきます。これはすなわち、ネットワークが分割されるほど、次数分布の曲線が急になり、指数γが増加するということを意味しています。

それでは、なぜアニメDVDやお笑いDVDは小さな部分グラフに分割されているのでしょうか。これも、可視化によりすぐわかります。各ノードのタイトルを見えるようにして、グラフを拡大してみましょう。

お笑いDVD
owaraiDVD_zoom.png
アニメDVD
animeDVD_zoom.png

小さなサブグラフは、同一タイトルのシリーズもので構成されていました。要するにこれは、DVDを買ったら全巻そろえる人が多い、というようなニュアンスを意味しているわけです。1巻完結ではなく、シリーズものだとこういう傾向が出るのでしょうね。実際、シリーズをそろえることに意味のあるジャンル、たとえば少年漫画などでも同様の傾向は確認できました。
スポンサーサイト

Rとigraphでなんちゃってネットワーク解析

前回のネタ、
エロゲー類似性ネットワークを複雑ネットワークで解析してみた
のデータ解析方法についてのメモです。

ネットワーク解析をUbuntu Linux上のRigraphを使って行いました。そのときのメモです。

RはSynapticからインストールします。
$ R
と入力するとRが立ち上がります。
R上で、
> install.packages("igraph")
と入力すると、igraphがインストールされます。

続いて、igraphのパッケージを使用します。
> library("igraph")

データファイル(gml形式)の読み込みは、
> g <- read.graph("mygml.gml","gml")
ここで、gmlファイルに
directed 1
を記入しておかないと、有向グラフとみなしてくれないようです。

グラフの可視化は、
> plot(g)
と入力。ただし、ノード数が多い場合は、Cytoscapeとかに任せた方がよいかもしれません。
次数分布は
> plot(degree.distribution(g,mode="in"),log="xy")
のようにします。

ネットワークの特徴的な量は、
ノード数
> vcount(g)
エッジ数
> ecount(g)
平均最短距離
> average.path.length(g)
クラスタリング係数
> transitivity(g)
平均次数
> sum(degree(g))/vcount(g)
です。

他にもいろいろな機能が使えるようです

ここまで、とても簡単で拍子抜けしてしまいました。

エロゲー類似性ネットワークを複雑ネットワークで解析してみた

今回のネタは、前回作成したエロゲーどうしの類似性グラフに対して、複雑ネットワークの手法で解析してみようというもの。まあ、ぶっちゃけよくあるやつです。もしかすると誰かが既に同じことをやってるかもしれませんが、気にしない。

前回はこちら:エロゲーの類似性関係を可視化してみた
前回作ったネットワークの可視化画像はこれ。
eroge_graph090204.png

スケールフリーネットワーク

複雑ネットワークの解析の定石として、次数の分布を調べてみます。横軸に次数k、縦軸に次数分布P(k)(ある次数kを持つノードの数)をとり、両対数プロットしてみます。得られたのが次の図になります。
eroge_graph_digree_dist.png
プロットされた緑色の点は、(大きくばらついていますが)グラフ上で赤線で示した直線上に乗っています。両対数グラフ上で直線に乗るということは、
P(k)~k
のように、べき乗で表されることを意味しています。

このように、次数分布が次数のべき乗に比例するような振る舞いのことを、特徴的な次数の大きさの欠如ということに由来して「スケールフリー性」と呼ぶようです。自然界に存在するいろいろなネットワークではこのスケールフリー性が見つかっているようですが、エロゲーの類似性ネットワークにも(予想通り?)スケールフリー性が見出されました。

ここで、ネットワークを特徴づける量として、指数γに着目してみます。ふたたび上図に戻ると、赤線はk-2に比例した直線であることがわかります。すなわち、今回の結果では、γ~2となります。

参考文献1によれば、BarabasiとAlbertが最初に提案したモデルでは、γ=3という結果になったようです。このモデルは、新たに生まれたノードは、既存のノードと、その次数に比例した確率でエッジを形成するというものです。これをエロゲーの類似性グラフにあてはめると、「人気のあるゲームならどんなジャンルでもいいから構わず買う無節操な購買者」像が見えてきます。

もちろん、エロゲーのように極度に嗜好性の高い商品では、このようなことは無いでしょう。(姪少女とかが大好きな人が、お母さんは俺専用を嬉々として買うというのは、ちょっと考えにくいですよね)このように、エロゲーの嗜好性の高さは、特定のノードへのエッジの集中を緩和する働きがあると考えられます。その結果、次数分布はBarabasi-Albertが予言するものよりもなだらかになり、指数が3ではなく2となるのではないでしょうか。

むろん、参考文献1にはγ=2となるモデルも紹介されていますが、あえてもっとも単純なBarabasi-Albertモデルとの比較という形で議論しました。

スモールワールド
多くの複雑ネットワークが示す特徴の一つに、スモールワールド性というものがあります。これは、文字通り、ノードどうしの世界は小さい、ということです。もうちょっと厳密に言うと、
  • 大きいノード数のわりに短い「平均最短距離」
  • 大きいノード数のわりに大きい「クラスタリング係数」
という二つの要素から構成されています。

平均最短距離とは、あるノードと別のノードの最短距離を、すべてのノードについて平均したものです。このネットワークでは、平均最短距離は11.03でした。つまり、適当に二つのノードを選んだとき、平均11本のエッジを経由すれば、二つのノードを行き来できるということを意味しています。ノードが4000個もあるわりには、意外と短い距離で繋がっているというのが「スモールワールド」という言葉の含むところです。

クラスタリング係数というのは、友人関係のネットワークにおいて「私の友達AさんとBさんが、実は友達同士だった」確率のようなものです。友達と別の友達がこれまた友達同士だということは、それだけ自分のまわりの友人関係ががっちりとクラスターを形成していることを意味しています。今回のネットワークでは、クラスタリング係数の値は0.11でした。もしネットワークがランダムであれば、もっともっと小さい値になるはずです。


エロゲーの類似性関係ネットワークは、スモールワールド性も満たしていることがわかりました。すなわち、このネットワークは、複雑ネットワークと呼ばれる特性を満たしています。これは果たして意外なことでしょうか。いえ、そうではないでしょう。むしろ必然的に複雑ネットワークを形成していると言うべきでしょう。Barabasi-Albertの提唱したモデルは、
  1. 成長するネットワーク
  2. 新たなノードは次数の高いノードに対して優先的にエッジをはる
という二つの要素によって、ネットワークがスケールフリー性を獲得することを示しました。
エロゲー類似性ネットワークに対しては、次のような特徴があるでしょう。エロゲーは毎週発売されるので、その都度ネットワークに新たなノードが追加されます。さらに、次数の高いノードは暗にゲームの人気を示していますので、新たなノードは次数の高い≒人気の高いノードとエッジをつくる可能性が高いでしょう。これらは、BAモデルに類似したネットワークの成長機構と言えます。さらに、エロゲーの嗜好性の高さから、ノード同士のクラスタリング係数も高まるでしょう。

参考文献
  1. Albert, R., and A.-L. Barabási, 2002, Rev. Mod. Phys. 74, 47.
  2. 新ネットワーク思考—世界のしくみを読み解く
……なので、最新の動向は知りません。。

続きはこちら。
DVDの類似性関係を可視化して解析

続きを読む

エロゲーの類似性関係を可視化してみた

eroge_graph090204.png

アマゾンでエロゲーの類似性関係を垣間見る
この商品を買った人はこんな商品も買っています

アマゾンで買い物をしていると、「この商品を買った人はこんな商品も買っています」というメッセージが表示されます。たとえば、名作百合ゲー「カタハネ:注:18禁」のページでは、以下のようになります。

ここで推薦されている作品は、みな百合ジャンルの作品です。ある百合作品を買う人は、他の百合作品も買っている、ということです。ということは、「この商品を~」リストに提示された商品は、もとの商品と類似性が強いということができるのではないでしょうか。

ある商品について、それに類似した商品、にさらに類似した商品、のこれまた類似した商品…というように、似たものどうしのネットワークをどんどん広げていくことができます。このネットワークを広げていくと、全商品の間の類似性の関係を知ることができます。今回のネタは、似た商品どうしのネットワークを俯瞰し、図示してみよう、というものです。

グラフ理論をつかってみる

商品どうしの類似性を記述するために、グラフ理論を使います。グラフ理論は、モノとその間の関係を記述するのに適した手法です。以下、用語についてちょっと説明。グラフ理論では、ノードとエッジという考え方でモノとモノの関係性を記述します。今回の例では、ノードは商品、エッジは商品どうしの関連性に該当します。
graph.png
たとえば、カタハネを買った人が百合姫Sを買った場合、カタハネノードから百合姫Sノードに矢印を引くことで、エッジを表現します。さらに、両者からflower*flowerにエッジが伸びています。
各ノードに入ってくるエッジの数(or 各ノードから出て行くエッジの数 or その両方)をノードの次数と言います。今回の解析では、ノードから出て行くエッジの数に意味は無いので、ノードに入ってくるエッジを次数とします。この例では、カタハネ、百合姫S、flower*flowerの次数はそれぞれ0,1,2です。

可視化してみる

さて、それでは、アマゾンのデータを使って、類似性をグラフ化・可視化します。すべての商品についてグラフ化ができればいいのですが、残念ながら私の技量では不可能です。ですので、ある限定したカテゴリの中での商品どうしの類似性を可視化します。手始めに、アダルトゲーム、要するにエロゲの関連性について見てみましょう。

可視化されたグラフを示します。ノードは青から赤まで色分けされた円で示されています。次数が大きいほど、円の大きさも大きくなるようになっています。エッジは水色の線で表されています。結果は、巨大な一つの大陸(毛玉?)と、細々とした小さな島の形であらわされました。ノード数3999、エッジ数13158でした。

エロゲー類似性グラフ

これだけだと、なんだこの毛玉は、だけで終わってしまうので、大陸のどこにどのようなジャンルが存在しているかを図示していきましょう。

まずは、右上に存在する島。これだけが他の大陸から孤立しているように見えます。これらは女性向けエロゲー(BL・乙女ゲー)が集まる島です。やはりというか、男性向けエロゲーからは距離が遠いようです(非連結になると思ってたのですが、リンクがあるというだけで驚きです)。また、よく見ると、島は二つあるように見えます。左が乙女ゲーの島、右がBLゲーの島のようです。

続いて、大陸の左側に目をやりますと、オレンジ色のノードが集中している箇所があります。ここには純愛ゲー・学園モノが集まっているようです。大陸の右側には、陵辱ゲームの集まる地域があります。この相対する二つのジャンルが大陸の正反対にあるということは、それぞれのジャンルの愛好者の重なりは少ないのでしょうか。

大陸の下側には、いわゆる抜きゲーが集まっているようです。若干驚いたのは、抜きゲー地域の右側には、どうも孕ませゲーが集まっている傾向があることです。孕ませ属性が、エロゲーの中で確固たる地位を獲得しているということでしょうか。

私にとって最大の驚きは、右下に熟女人妻(あと母親)モノが集合しており、なおかつ高い次数を持っているということでした。私はこれらの属性と全く無縁なので、驚きというか、正直、くらくらします。ちなみに、これらの属性と相対するロリえろげーの集まる地域はありませんでした。かの忌まわしき頭身規制に始まるロリゲーの凋落をまざまざと見せつけられたわけで、落ち込むことしきりです。

大陸の辺縁にある緑色の島は、低価格ゲームが集まる島のようです。大陸中央部には、アリスソフトのゲームや、シミュレーション・RPGが集まっているようでしたが、カテゴリ分けするには雑然としすぎていたので特に記入はしませんでした。

エロゲー類似性グラフ(注釈つき)


解析手法

グラフの構築
グラフを構築するためには、まずはAmazonから商品情報を取得しなければなりません。そのために、Amazon Associate Web Serviceを利用します。以下のようなURLにアクセスすると、商品情報を記載したXMLを取得できます。
http://ecs.amazonaws.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=[MY AWS KEY ID]&Operation=ItemSearch&BrowseNode=927712&SearchIndex=VideoGames&ResponseGroup=Large&Version=2008-08-19&ItemPage=1

これを用いて、以下の順で商品のIDとその関連商品のIDのリストを作成します。プログラムはperlを用いて書きました。
  1. エロゲーカテゴリー内で、AWSが許可している最大4000アイテムの商品情報を取得
  2. 商品ID(ASIN形式で指定されている)をノード、商品の類似性をエッジとして、作成されたリストからGML形式で有向グラフを書き出す
  3. 商品IDとその他関連情報(タイトル・ブランド・発売日etc、ノードの次数)をcsv形式で書き出す
ただし、関連商品に別カテゴリの商品が指定されていた場合(上の例で言えば、ゲームの関連商品が書籍だった場合)は、その関連商品を無視します。

可視化
可視化には、Cytoscapeを使用しました。Cytoscapeは、Javaベースのネットワーク可視化ソフトで、WinXPでもUbuntu Linuxでも問題なく動きます。さらに、今回のように高々4000ノード程度のネットワークなら苦もなく美しい画像を描画してくれます。また、開発者が日本人の方らしく、日本語対応も完璧です。もともと、バイオインフォマティクス用途のソフトであるようなので、私に縁のない単語が多用されていましたが、グラフを可視化する上での障害にはなりませんでした。

Cytoscapeの起動後、
  1. Import→Network(mulitple file types)でgmlファイルの読み込み
  2. Import→Attribute from Tableで、各ノードに属性を付加
  3. Layout→Cytoscape Layouts→Spring Embeddedでレイアウト
  4. VizMapperで、ノードのサイズをノードの次数に比例するように設定
の順に行い、可視化いっちょあがりです。Spring Embeddedは計算に時間がかかるので、最初はCircular Layoutとかのほうがいいかもです。

問題
AWSでは、最大4000アイテムしか取得することができません。これでは、全えろげーを網羅することができません。(どうも1万タイトル以上のえろげーがこの世には存在するようです)
また、さらに悲惨なことに、各アイテムに対して、最大5つの関連商品しか取得することができません。これでは、定量的な議論に耐えられるかどうかはなはだ不安です。
改善策はありますが、私のしょぼいプログラミング能力では実装に時間がかかりそうなので、しばらくは泣く泣くデータの取得をAWSのみに頼ろうと思います。

続きはこちら。
エロゲー類似性ネットワークを複雑ネットワークで解析してみた
プロフィール

null

Author:null
二次元眼鏡少女に蔑まれたいです。

最近の記事
最近のコメント
最近のトラックバック
タグ

考察 統計 ネット 複雑ネットワーク 自然科学 二次元 幼女 エロゲー ネタ アニメ 百合 時事ネタ 計算 igraph R 

月別アーカイブ
カテゴリー
あわせて読みたい
あわせて読みたいブログパーツ
ブログ内検索
カレンダー
01 | 2009/02 | 03
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
RSSフィード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。