Upgrade to Pro — share decks privately, control downloads, hide ads and more …

私がチャレンジしたSBMデータマイニング

Ryo Kanbayashi
September 30, 2024
2

 私がチャレンジしたSBMデータマイニング

SBM研究会で使った資料

Ryo Kanbayashi

September 30, 2024
Tweet

Transcript

  1. 2008年7月12日 SBM研究会 3 筑波大 筑波大 筑波大 筑波大の の の の

    筑波大 筑波大 筑波大 筑波大の の の のM1 M1 M1 M1 M1 M1 M1 M1の の の の学生 学生 学生 学生 の の の の学生 学生 学生 学生 専門 専門 専門 専門は は は は 専門 専門 専門 専門は は は はHPC HPC HPC HPC HPC HPC HPC HPC ・ ・ ・ ・ ・ ・ ・ ・クラスタコンピューティング クラスタコンピューティング クラスタコンピューティング クラスタコンピューティング ・ ・ ・ ・スーパーコンピュータ スーパーコンピュータ スーパーコンピュータ スーパーコンピュータ ・ ・ ・ ・グリッドコンピューティング グリッドコンピューティング グリッドコンピューティング グリッドコンピューティング テーマの例 テーマの例 ・簡便にボランティアコンピューティングを実現するためのフレームワーク ・仮想マシンを用いた分散システムの耐故障性評価環境 etc…… 自己紹介 自己紹介 自己紹介 自己紹介 自己紹介 自己紹介 自己紹介 自己紹介(1) (1) (1) (1) (1) (1) (1) (1)
  2. 2008年7月12日 SBM研究会 4 自己紹介 自己紹介 自己紹介 自己紹介 自己紹介 自己紹介 自己紹介

    自己紹介(2) (2) (2) (2) (2) (2) (2) (2) 物作 物作 物作 物作りが りが りが りが大好 大好 大好 大好き き き き 物作 物作 物作 物作りが りが りが りが大好 大好 大好 大好き き き き ・ ・ ・ ・いろいろ いろいろ いろいろ いろいろ作 作 作 作った った った った ・ ・ ・ ・最近 最近 最近 最近だとひらめいった だとひらめいった だとひらめいった だとひらめいったー ー ー ーとか とか とか とか ・ ・ ・ ・ ・ ・ ・ ・学部 学部 学部 学部 学部 学部 学部 学部3 3 3 3年 年 年 年(2 (2 (2 (2年前 年前 年前 年前) ) ) )の の の の時 時 時 時に に に に SBM SBM SBM SBMに に に にハマ ハマ ハマ ハマる る る る 今回 今回 今回 今回の の の の話 話 話 話 今回 今回 今回 今回の の の の話 話 話 話
  3. 2008年7月12日 SBM研究会 5 自己紹介 自己紹介 自己紹介 自己紹介 自己紹介 自己紹介 自己紹介

    自己紹介(3) with (3) with (3) with (3) with (3) with (3) with (3) with (3) with はて はて はて はてブ ブ ブ ブ はて はて はて はてブ ブ ブ ブ 主に使うSBMははてブ ブログのブクマ数 = 794 サービスの置いてあるアドレスのブクマ数 = 736 合計 = 1530 余談: みなさんはどれぐらいブクマされてます?
  4. 2008年7月12日 SBM研究会 8 やっと やっと やっと やっと自己紹介 自己紹介 自己紹介 自己紹介が

    が が が終 終 終 終わりまして わりまして わりまして わりまして 方針 方針 方針 方針の の の の説明 説明 説明 説明を を を をば ば ば ば
  5. 2008年7月12日 SBM研究会 9 発表 発表 発表 発表の の の の方針

    方針 方針 方針 発表 発表 発表 発表の の の の方針 方針 方針 方針 SBM SBMデータマイニングサービス開発体験記 データマイニングサービス開発体験記 ・別に、深い洞察があるわけではないです^^; ・泥臭い話をしようかと思います ・誰でもできると伝えたい 俺の屍を越えて行け!!
  6. 2008年7月12日 SBM研究会 10 アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ

    アジェンダ 各 各SBM SBM関連のサービス開発記 関連のサービス開発記 ・開発を始めた経緯 ・開発を始めた経緯 ・Kikker ・はてブおせっかい ・はてブまわりのひと ・Kookle 個人による高性能データマイニングの可能性 個人による高性能データマイニングの可能性 Future of SBM Future of SBM まとめ まとめ
  7. 2008年7月12日 SBM研究会 11 やっと やっと やっと やっと肝心 肝心 肝心 肝心の

    の の の話 話 話 話が が が が始 始 始 始まります まります まります まります
  8. 2008年7月12日 SBM研究会 12 開発 開発 開発 開発に に に に至

    至 至 至った った った った経緯 経緯 経緯 経緯 開発 開発 開発 開発に に に に至 至 至 至った った った った経緯 経緯 経緯 経緯 Ceekz氏がはてブニュースとい うサービスを作った ベイズ推定によってはてブの ホッテントリを自動分類 これはすばらしいものだ! しかし、並びかえただけでフィル タリングとかをしているわけじゃ ない http://labs.ceek.jp/hbnews/ 情報収集の手間はそれほど 変わらない 自分専用のフィルタリングがいい
  9. 2008年7月12日 SBM研究会 14 アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ

    アジェンダ 各 各SBM SBM関連のサービス開発記 関連のサービス開発記 ・開発を始めた経緯 ・開発を始めた経緯 ・Kikker ・はてブおせっかい ・はてブまわりのひと ・Kookle 個人による高性能データマイニングの可能性 個人による高性能データマイニングの可能性 Future of SBM Future of SBM まとめ まとめ
  10. 2008年7月12日 SBM研究会 15 Kikker Kikker Kikker Kikker Kikker Kikker Kikker

    Kikker 学習するユーザーカスタマイズドなニュースサイト ・ユーザ(はてブの)ごとにページを推薦 ・学習機能付き
  11. 全体動作 全体動作 全体動作 全体動作 全体動作 全体動作 全体動作 全体動作 0. Kikkerがはてブをクロールして各ページの情報を集める(常に)

    1.ユーザ登録 1.1 はてなのアカウントを設定 1.2 自身の興味のあるキーワードを重みとともに登録 2.ユーザがKikkerにアクセス 3.Kikkerが各ページについて評価値を計算.評価の高かったN ページをユーザに推薦 4.ユーザが推薦されたページを閲覧すると、Kikkerがそのページ を対象ユーザの趣向であると学習 5. ステップ2に戻る 2008年7月12日 SBM研究会 16
  12. 2008年7月12日 SBM研究会 17 アルゴリズム アルゴリズム ・ベクトル計算 ・ページ内容のベクトルとユーザの趣向のベクトルの角度(距離)を計算 ・得 得 得

    得られた られた られた られた値 値 値 値はすなわち はすなわち はすなわち はすなわち評価値 評価値 評価値 評価値. . . .対象 対象 対象 対象の の の のページ ページ ページ ページが が が が対象 対象 対象 対象の の の の ユーザ ユーザ ユーザ ユーザにどれだけお にどれだけお にどれだけお にどれだけお薦 薦 薦 薦めかを めかを めかを めかを意味 意味 意味 意味する する する する 評価値 評価値 評価値 評価値の の の の計算方法 計算方法 計算方法 計算方法 評価値 評価値 評価値 評価値の の の の計算方法 計算方法 計算方法 計算方法 ユーザ ユーザ ユーザ ユーザの の の の趣向 趣向 趣向 趣向ベクトル ベクトル ベクトル ベクトル ? ? ? ? ページ ページ ページ ページの の の の内容 内容 内容 内容ベクトル ベクトル ベクトル ベクトル
  13. 2008年7月12日 SBM研究会 19 ページ ページ ページ ページの の の の内容

    内容 内容 内容を を を を表現 表現 表現 表現する する する するベクトル ベクトル ベクトル ベクトル ページ ページ ページ ページの の の の内容 内容 内容 内容を を を を表現 表現 表現 表現する する する するベクトル ベクトル ベクトル ベクトル ベクトルの抽出 ベクトルの抽出 1.はてブのキーワードを集める 2.ページの内容を形態素解析して 単語に分解(1のも含む) 3.名詞だけ選択 3.各単語の重みとTF・IDFで決定 4.重みの上位N個と手順1のキーワードで ベクトルを構成 ページ内の各単語ごとの重み ・意味は見ていない Ex)[SBM,web,ajax]=[10,10,40]
  14. 2008年7月12日 SBM研究会 20 形態素解析 形態素解析 形態素解析 形態素解析 形態素解析 形態素解析 形態素解析

    形態素解析 対象言語の文法の知識(文法のルールの集まり)や辞書 (品詞等の情報付きの単語リスト)を情報源として用い、 自然言語で書かれた文を形態素(Morpheme, おおまか にいえば、言語で意味を持つ最小単位)の列に分割し、 それぞれの品詞を判別する作業を指す。 (http://ja.wikipedia.org/wiki/%E5%BD%A2%E6%85%8B%E7%B4%A0%E8%A7%A3%E6%9E%90) Mecab ・日本ではchasenの次に有名? ・言語がJavaだったのでJavaポート版のSenを使用
  15. 2008年7月12日 SBM研究会 21 TF TF TF TF TF TF TF

    TF- - - - - - - -IDF IDF IDF IDF IDF IDF IDF IDF 単語の文章中での重みの指標 ある単語iのドキュメントjの中での重みを求めたい 計算するために必要な情報 ・TF:対象ドキュメント中の対象単語の出現数 (文書長で割って正規化する場合もある) ・N:世界中に存在するテキストの数 ・DF:対象単語を含むドキュメントの数 検索エンジンを使えばオケ ・Yahoo APIを叩く ・ http://nais.to/~yto/clog/2005-10-12-1.htmlを参照
  16. 2008年7月12日 SBM研究会 23 ユーザ ユーザ ユーザ ユーザの の の の趣向

    趣向 趣向 趣向を を を を表現 表現 表現 表現する する する するベクトル ベクトル ベクトル ベクトル ユーザ ユーザ ユーザ ユーザの の の の趣向 趣向 趣向 趣向を を を を表現 表現 表現 表現する する する するベクトル ベクトル ベクトル ベクトル 各ユーザは自身の趣向を表現したベクトルを持つ 各ユーザは自身の趣向を表現したベクトルを持つ ・見たページの趣向を自分に足しこむ ・はてブでブクマしたページから学習 (ユーザ登録時の一回だけ) ・ユーザがKikkerに勧められたページを 閲覧するとKikkerが学習 ・自身でも指定可能 学習の仕方については 後で説明します
  17. 2008年7月12日 SBM研究会 25 ベクトル ベクトル ベクトル ベクトル間 間 間 間の

    の の の角度 角度 角度 角度 ベクトル ベクトル ベクトル ベクトル間 間 間 間の の の の角度 角度 角度 角度( ( ( ( ( ( ( (距離 距離 距離 距離 距離 距離 距離 距離) ) ) ) ) ) ) )の の の の計算 計算 計算 計算 の の の の計算 計算 計算 計算 計算方法 ・式に2つのベクトルをつっこんでやる ・下の式のSc Sc Sc Scがすなわち評価値で、あるページがあるユーザに どれだけお薦めかという値 ・各ページについて求めたら、ソートして上位のものを推薦
  18. 全体動作 全体動作 全体動作 全体動作 全体動作 全体動作 全体動作 全体動作 0. Kikkerがはてブをクロールして各ページの情報を集める(常に)

    1.ユーザ登録 1.1 はてなのアカウントを設定 1.2 自身の興味のあるキーワードを重みとともに登録 2.ユーザがKikkerにアクセス 3.Kikkerが各ページについて評価値を計算.評価の高かったN ページをユーザに推薦 4.ユーザが推薦されたページを閲覧すると、Kikkerがそのページ を対象ユーザの趣向であると学習 5. ステップ2に戻る 2008年7月12日 SBM研究会 26
  19. 2008年7月12日 SBM研究会 27 学習 学習 学習 学習の の の の仕組

    仕組 仕組 仕組み み み み 学習 学習 学習 学習の の の の仕組 仕組 仕組 仕組み み み み ユーザが推薦されたページを見るたびに学習 ・ユーザが見たページのベクトルをそのユーザの趣向ベクトル に足しこむ ユーザがお勧めされたページのうちのどれを実際に見たか 知る必要がある ・推薦ページのリストのURLはKikkerのサイトのものにしてお き、ユーザには一回転送することでアクセスさせる
  20. システム システム システム システム構成 構成 構成 構成 Windows XP (

    Windows XP ( Windows XP ( Windows XP (CentOS CentOS CentOS CentOSの の の の時 時 時 時もあった もあった もあった もあった) ) ) ) OS OS OS OS MySQL MySQL MySQL MySQL DB DB DB DB Java + Crossfire DB Java + Crossfire DB Java + Crossfire DB Java + Crossfire DB クローリング クローリング クローリング クローリング、 、 、 、計算処理 計算処理 計算処理 計算処理 Ruby on Rails Ruby on Rails Ruby on Rails Ruby on Rails ページ ページ ページ ページ生成 生成 生成 生成、 、 、 、ユーザ ユーザ ユーザ ユーザ管理 管理 管理 管理 Ruby部とJava部の間はXML RPCで接続
  21. 2008年7月12日 SBM研究会 31 ひとまず ひとまず ひとまず ひとまず出来上 出来上 出来上 出来上がったけど

    がったけど がったけど がったけど ひとまず ひとまず ひとまず ひとまず出来上 出来上 出来上 出来上がったけど がったけど がったけど がったけど ベクトルの計算処理は妥当な処理時間で行えた ただ、ページ情報のクロールが重すぎ Yahooに異様な数のクエリを投げているのでバンされるの ではないか・・・・・
  22. 2008年7月12日 SBM研究会 32 クエリ クエリ クエリ クエリを を を を減

    減 減 減らす らす らす らす工夫 工夫 工夫 工夫 クエリ クエリ クエリ クエリを を を を減 減 減 減らす らす らす らす工夫 工夫 工夫 工夫 文章中の全てのキーワードをYahooに検索かけるのは無理 ・bulkfeedsのキーワード抽出APIで間引きをする クエリの数はかなり減らせた 重みの情報も取れればよかったけど、それはできなかった ・mecabの辞書が持っている生起コストを使う よくわからないけどTF-IDFのIDFと置き換えてOKらしい by ceekz氏 クエリの数を0にできた。わーい。 (参照: http://labs.cybozu.co.jp/blog/kazuho/archives/2006/04/summarize.php)
  23. よりよい よりよい よりよい よりよい精度 精度 精度 精度を を を を求

    求 求 求めて めて めて めて 推薦の精度はあまり高くない気がする ・キーワード抽出の精度が低い? ・タグやキーワードが分散し過ぎていてベクトルによる類似度計算がうまくいっていな い 前者の問題を改善する方法 ・少なくともタグの揺らぎはどうにかしたいところ ウェブ?Web?はてなブックマーク?はてブ? 後者の問題を改善する方法 ・潜在的意味インデキシング(Latest Semantic Indexing:LSI)という手法がある ・特徴を表現するのに最適なベクトル空間を見つけて、元の空間からその空間に写像してしまう (ベクト ル空間の圧縮?) ・おおざっぱに言うと、必要最低限のキーワード(元のキーワードに対応しない場合もあるが)だけを使うと いう感じ ・ベクトルの次元も小さくなるので計算量も減らせる Future Work!!!!!
  24. 実 実 実 実は は は は・・・ ・・・ ・・・ ・・・

    実 実 実 実は は は は・・・ ・・・ ・・・ ・・・ ここだけの話 ・最初はKikkerのような事をHTTPプロキシを使ってやるつもりだ った ・HTTPプロキシでユーザの通信を解析して趣向を抽出してほ げほげ ・非集中のP2P型にしようとも考えていた 簡単 簡単 簡単 簡単なところから なところから なところから なところから始 始 始 始める める める める意味 意味 意味 意味で で で で今 今 今 今の の の のKikker Kikker Kikker Kikkerを を を を作 作 作 作った った った った 難しい方は途中でやる気が失せて今に至る
  25. 2008年7月12日 SBM研究会 35 そんな そんな そんな そんな事 事 事 事はどうでもいいですよね

    はどうでもいいですよね はどうでもいいですよね はどうでもいいですよね
  26. 2008年7月12日 SBM研究会 36 アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ

    アジェンダ 各 各SBM SBM関連のサービス開発記 関連のサービス開発記 ・開発を始めた経緯 ・開発を始めた経緯 ・Kikker ・はてブおせっかい ・はてブまわりのひと ・Kookle 個人による高性能データマイニングの可能性 個人による高性能データマイニングの可能性 Futue of SBM まとめ まとめ
  27. 2008年7月12日 SBM研究会 37 はて はて はて はてブ ブ ブ ブおせっかい

    おせっかい おせっかい おせっかい はて はて はて はてブ ブ ブ ブおせっかい おせっかい おせっかい おせっかい ・各人のブックマーク履歴を 利用して推薦を行う ・Kikkerと異なりページの 内容の情報は使わない ・アルゴリズムは コラボレイティブフィルタ ・ユーザ登録不要
  28. 2008年7月12日 SBM研究会 38 p1 p2 p3 p4 p5 p6 p7

    Bob ◦ ◦ ◦ Tom ◦ ◦ ◦ ?→◦ ?→× Joe ◦ ◦ ◦ John ◦ ◦ ◦ Tom[i] =( (sim(Tom,Bob)*Bob[i] + sim(Tom,Joe)*Joe[i] + sim(Tom,John)*John[i])/3 > 閾値 閾値 閾値 閾値 ) コラボレィティブフィルタ コラボレィティブフィルタ コラボレィティブフィルタ コラボレィティブフィルタ コラボレィティブフィルタ コラボレィティブフィルタ コラボレィティブフィルタ コラボレィティブフィルタ
  29. 式 式 式 式 式 式 式 式 (参照:http://www.nec.co.jp/rd/DTmining/members/yamanishi/Webmining.pdf) Mix

    が が が がドキュメントxがユーザiにどれだけお薦めかの値 Mixが0.5以上なら推薦、0.5以下なら推薦しない (はてブおせっかいでは閾値をいじったけど) M M M MiはMixのXに関する平均 C C C Cij ij ij ijはユーザiとユーザjの相関係数。一つ前のスライドのsim関数に相当
  30. 余談 余談 余談 余談 余談 余談 余談 余談: : :

    : : : : : 労力 労力 労力 労力のお のお のお のお話 話 話 話 労力 労力 労力 労力のお のお のお のお話 話 話 話 システムの大部分はKikkerと共通であったため、新たに実 装したのは計算アルゴリズムのところだけ そんなわけで実装は一日で終了 実装で大変なのはクローリングやらDB周りの処理であって、 推薦のための計算処理自体は大した労力は必要ない (ということはクローリング周りをみんなで共通化できるとうれしいかも)
  31. 2008年7月12日 SBM研究会 42 ひとまず ひとまず ひとまず ひとまず出来上 出来上 出来上 出来上がったけど

    がったけど がったけど がったけど ひとまず ひとまず ひとまず ひとまず出来上 出来上 出来上 出来上がったけど がったけど がったけど がったけど 計算処理が重すぎてユーザがイライラ ・Kikkerでは転置インデックスを作ることで全てのページに 対して計算を試行することは避けられていた ・はてブおせっかいはそれはできない 解決策 ・計算処理で利用するユーザとページをどうにかして間引く 仕組みが必要か ユーザに関してはユーザのクラスタリングで対応できない だろうか?
  32. 2008年7月12日 SBM研究会 43 アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ

    アジェンダ 各 各SBM SBM関連のサービス開発記 関連のサービス開発記 ・開発を始めた経緯 ・開発を始めた経緯 ・Kikker ・はてブおせっかい ・はてブまわりのひと ・Kookle 個人による高性能データマイニングの可能性 個人による高性能データマイニングの可能性 Future of SBM Future of SBM まとめ まとめ
  33. 2008年7月12日 SBM研究会 44 はて はて はて はてブ ブ ブ ブまわりのひと

    まわりのひと まわりのひと まわりのひと はて はて はて はてブ ブ ブ ブまわりのひと まわりのひと まわりのひと まわりのひと ・はてブのお気に入り、られを見てクラスタリング ・自分の周りで クネクネしてる のは誰? ・自分はどこらへ んとクネクネして るの?
  34. クラスタリング クラスタリング クラスタリング クラスタリング ・ソーシャルブックマークサービスを利用した情報リコメンデーション [白土ら ’06] を参考に実装。ただ、この論文だけだとクラスタリングの処理を実装で きなかったのでリファーされていた論文も読んだ。 ・Finding

    local community structure in networks [Aaron Cluset ‘05] で、実装したのだがクラスタリングの結果がしっくりこなかったので、論 文で説明されていたアルゴリズムのフィーリングの基にオレオレなアル ゴリズムを考えてそれを使用。
  35. クラスタリングアルゴリズム クラスタリングアルゴリズム クラスタリングアルゴリズム クラスタリングアルゴリズム 前提:ユーザ間の接続関係を表現したグラフがある 下準備1: 空の集合Aと全ユーザを含む集合Uを用意する 下準備2: 集合Aに起点となるユーザ(まわりのひとを発見したい人)を追加 ・以下の繰り返しステップを集合A内のユーザ数が一定数を越えるまで行う

    繰 繰 繰 繰り り り り返 返 返 返し し し しステップ ステップ ステップ ステップ: 集合U内で集合A内のユーザからの総被リンク数が大きいものを選択し集合Aに追加 ・結果出力 集合Aを発見したユーザ群として出力 ※全ユーザからの被お気に入り数も考慮しなければ、被お気に入りの多い人間がどうしても 選択されてしまうことになってしまうが、このアルゴリズムはその問題をあえて考慮していない
  36. システム システム システム システム構成 構成 構成 構成 システム システム システム

    システム構成 構成 構成 構成 Javaアップレット製 クラスタリングの計算処理はアップレットで行う 計算に必要となるデータは事前にRubyで生成してサーバ に置いておき、アップレットは必要に応じてそれをロード
  37. 2008年7月12日 SBM研究会 49 アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ

    アジェンダ 各 各SBM SBM関連のサービス開発記 関連のサービス開発記 ・開発を始めた経緯 ・開発を始めた経緯 ・Kikker ・はてブおせっかい ・はてブまわりのひと ・Kookle 個人による高性能データマイニングの可能性 個人による高性能データマイニングの可能性 Future of SBM Future of SBM まとめ まとめ
  38. 2008年7月12日 SBM研究会 50 Kookle Kookle Kookle Kookle Kookle Kookle Kookle

    Kookle ・はてブのタグ情報から生成するウェブディレクトリサービス ・要はSBMのタグから Yahooみたいな ディレクトリを作って みようという試み ・ミソはタグ間の共起頻度
  39. Kookle Kookle Kookle Kookle Kookle Kookle Kookle Kookleを を を

    を作 作 作 作ろうと ろうと ろうと ろうと思 思 思 思った った った った経緯 経緯 経緯 経緯 を を を を作 作 作 作ろうと ろうと ろうと ろうと思 思 思 思った った った った経緯 経緯 経緯 経緯 いくつかのサイトで分類法としてディレクトリによる方法とタ グによる方法の違いが考察されていた ディレクトリでのファイル管理をタグに置き換えることは簡単 そうだ (ディレクトリ -> タグ) ・ディレクトリ名をタグとしてファイルに付けるだけだし・・・ 逆(タグ -> ディレクトリ)はできるかな?
  40. ディレクトリ ディレクトリ ディレクトリ ディレクトリは は は は本当 本当 本当 本当にできる

    にできる にできる にできる? ? ? ? ディレクトリ ディレクトリ ディレクトリ ディレクトリは は は は本当 本当 本当 本当にできる にできる にできる にできる? ? ? ? タギング時に大分類と小分類をつけることがある気がする ・[web][ajax] ・[neta][非モテ] ・[政治][中国] これはディレクトリでの親と子に他ならない! できそうだ!
  41. やらなければいけない やらなければいけない やらなければいけない やらなければいけない事 事 事 事 やらなければいけない やらなければいけない やらなければいけない

    やらなければいけない事 事 事 事 ディレクトリを作って、それをさらにウェブディレクトリサービス に仕立てるには以下の2つのことをしなければならない 1 1 1 1: タグの共起頻度からディレクトリ構造を構成 2 2 2 2: 各タグについて、それが多く使われているサイトを集計
  42. 共起頻度 共起頻度 共起頻度 共起頻度 共起頻度 共起頻度 共起頻度 共起頻度 あるタグとあるタグがどれだけ同時に利用されたか 全タグ

    x 全タグのテーブルを作ればよい ・ほとんどの箇所に値がない疎なテーブル ・ハッシュを使えば空間効率がよい クローリング時に集計 Ex)[web][ajax][mixi]とタグ付けされたブクマがあったとする table[“web”][“ajax”]++; table[“web”][“mixi”]++; table[“ajax”][“web”]++; table[“ajax”][“mixi”]++; table[“mixi”][“web”]++; table[“mixi”][“ajax”]++;
  43. アルゴリズム アルゴリズム アルゴリズム アルゴリズムを を を を考 考 考 考える

    える える える アルゴリズム アルゴリズム アルゴリズム アルゴリズムを を を を考 考 考 考える える える える 仮定1 大分類のタグは中・小分類のタグよりたくさん使われている タグ数 大分類 大分類 大分類 大分類 中分類 中分類 中分類 中分類 小分類 小分類 小分類 小分類
  44. アルゴリズム アルゴリズム アルゴリズム アルゴリズムを を を を考 考 考 考える

    える える える アルゴリズム アルゴリズム アルゴリズム アルゴリズムを を を を考 考 考 考える える える える 仮定2 関連するタグの共起頻度は高い Web SNS Blog 政治 スキャンダル スキャンダル スキャンダル スキャンダル 外交 ◦共起頻度の関数 co-occur (tag1,tag2) Co-occur(web,sns) is high. Co-occur(政治,外交) is high. Co-occur(web,外交) is low. 上 上 上 上のような のような のような のような構造 構造 構造 構造があるとすれ があるとすれ があるとすれ があるとすれ ば ば ば ば右 右 右 右のように のように のように のように観測 観測 観測 観測されるはず されるはず されるはず されるはず
  45. これらの これらの これらの これらの仮定 仮定 仮定 仮定を を を を踏

    踏 踏 踏まえまして まえまして まえまして まえまして
  46. ヒューリスティクスによる簡易なディレクトリ構成アルゴリズム ヒューリスティクスによる簡易なディレクトリ構成アルゴリズム WIDTH: ひとつの階層に含まれるタグの数を表現する定数 ステップ ステップ ステップ ステップ1 1 1

    1 タグを総出現数に従ってソートして一列に並べる ステップ ステップ ステップ ステップ2 2 2 2 ステップ1のタグ列を出現数の高い方からWIDTH, WIDTH ^2, WIDTH ^3・・・・ という間隔で区切り、それぞれ階層1,2,・・・・とする ステップ ステップ ステップ ステップ3 3 3 3 階層nに含まれる各タグについて,階層(n-1)に含まれるタグの中から最も 共起頻度の高いものを選びそれに所属させる ステップ ステップ ステップ ステップ4 4 4 4 ステップ3で作成した関係をツリーとして出力する
  47. アルゴリズム アルゴリズム アルゴリズム アルゴリズムの の の の図示 図示 図示 図示

    アルゴリズム アルゴリズム アルゴリズム アルゴリズムの の の の図示 図示 図示 図示1 1 1 1 1 1 1 1 タグ数 ステップ ステップ ステップ ステップ1:ソート ソート ソート ソート ステップ ステップ ステップ ステップ2:分割 分割 分割 分割 ステップ ステップ ステップ ステップ3:親 親 親 親の の の の決定 決定 決定 決定 WIDTH WIDTH^2 WIDTH^3 ※ ※ ※ ※図 図 図 図では では では では一部 一部 一部 一部の の の の接続 接続 接続 接続のみ のみ のみ のみ表示 表示 表示 表示
  48. アルゴリズム アルゴリズム アルゴリズム アルゴリズムの の の の図示 図示 図示 図示

    アルゴリズム アルゴリズム アルゴリズム アルゴリズムの の の の図示 図示 図示 図示2 2 2 2 2 2 2 2 Root SNS Blog Ajax 大分類 中分類 小分類 ステップ ステップ ステップ ステップ4:ツリー ツリー ツリー ツリーの の の の出力 出力 出力 出力 ※小分類以降は図示省略
  49. タグ タグ タグ タグごとの ごとの ごとの ごとのサイト サイト サイト サイト集計

    集計 集計 集計 タグ タグ タグ タグごとの ごとの ごとの ごとのサイト サイト サイト サイト集計 集計 集計 集計1 1 1 1 1 1 1 1 各タグのページにはそのタグが多くつけられたサイト サイト サイト サイトを列挙したい 個々のページについてのブクマは、そのページを含むサイトに対して のブクマと認識しなければならない あるページのURLから、それを含むサイトをどう判断する? http://d.hatena.ne.jp/kanbayashi/20080713/p1 なら http://d.hatena.ne.jp/ かな? http://d.hatena.ne.jp/kanbayashi/ かな? それとも http://d.hatena.ne.jp/kanbayashi/20080713 かな? ページ ページ ページ ページじゃなくて じゃなくて じゃなくて じゃなくてサイト サイト サイト サイト!
  50. タグ タグ タグ タグごとの ごとの ごとの ごとのサイト サイト サイト サイト集計

    集計 集計 集計 タグ タグ タグ タグごとの ごとの ごとの ごとのサイト サイト サイト サイト集計 集計 集計 集計2 2 2 2 2 2 2 2 感覚的なルールに基づいて判断 ・http:/XXXX/YYYY/ZZZZ/SS?QQ=Q サイトはhttp:/XXXX/YYYY と判断 ・http:/XXXX/ZZ?QQ=Q サイトはhttp:/XXXX/ と判断 ・http:/XXXX/YYYY/SS?QQ=Q サイトはhttp:/XXXX/YYYY と判断 要 要 要 要は は は はサイト サイト サイト サイトの の の のURLは は は は最大 最大 最大 最大で で で で第一 第一 第一 第一パス パス パス パス区切 区切 区切 区切りまでという りまでという りまでという りまでというルール ルール ルール ルール (ブログやホスティングサイトを想定すると、それなりにうまくいく)
  51. タグ タグ タグ タグごとの ごとの ごとの ごとのサイト サイト サイト サイト集計

    集計 集計 集計 タグ タグ タグ タグごとの ごとの ごとの ごとのサイト サイト サイト サイト集計 集計 集計 集計3 3 3 3 3 3 3 3 前のスライドの説明で示したように、かなり適当 サイトURLの判断を誤った場合のためにリカバー用リンク(抽出し たサイトURLとタグ名を用いてGoogleとはてブで検索) を設置 でも、やっぱりもっとちゃんとした手法で対応するのがベスト ・ソーシャルな枠組みでページURLとサイトURLの対応付けをして、そ の結果をウェブAPIで提供してくれる人とかいないかな・・・ 最悪 最悪 最悪 最悪、 、 、 、ユーザ ユーザ ユーザ ユーザが が が がサイト サイト サイト サイトの の の のURLを を を を見 見 見 見つけられる つけられる つけられる つけられる
  52. システム システム システム システム構成 構成 構成 構成 システム システム システム

    システム構成 構成 構成 構成 クローリング、集計、ページ生成の全てをRubyスクリプトで 行う ≠ ≠ ≠ ≠ CGI CGI CGI CGI ページ自体はRubyスクリプトで生成した静的なもの (動的にディレクトリをアップデートしていければベストだけど)
  53. [ [ [ [ [ [ [ [はてな はてな はてな

    はてな はてな はてな はてな はてな] ] ] ] ] ] ] ]タグ タグ タグ タグの の の のページ ページ ページ ページ タグ タグ タグ タグの の の のページ ページ ページ ページ サイトURLの抽出 に失敗してる こんな時のための リカバー用リンク
  54. リカバー リカバー リカバー リカバー用 用 用 用リンク リンク リンク リンク

    リカバー リカバー リカバー リカバー用 用 用 用リンク リンク リンク リンク( ( ( ( ( ( ( (はて はて はて はてブ ブ ブ ブ はて はて はて はてブ ブ ブ ブ) ) ) ) ) ) ) )の の の の結果 結果 結果 結果 の の の の結果 結果 結果 結果
  55. リカバー リカバー リカバー リカバー用 用 用 用リンク リンク リンク リンク

    リカバー リカバー リカバー リカバー用 用 用 用リンク リンク リンク リンク(Google) (Google) (Google) (Google) (Google) (Google) (Google) (Google) の の の の結果 結果 結果 結果 の の の の結果 結果 結果 結果
  56. Kookle Kookle Kookle Kookle Kookle Kookle Kookle Kookleの の の

    の展望 展望 展望 展望 の の の の展望 展望 展望 展望 4つのサービスの中では一番有望(だと思っている) が、ディレクトリ構造の構成がかなりヘッポコ ・トップに[社会]や[教育]があるのはいいが、[はてな]や[これはひどい] もあるのはおかしい ディレクトリ ディレクトリ ディレクトリ ディレクトリを を を を構成 構成 構成 構成する する する する手法 手法 手法 手法の の の の改善 改善 改善 改善 ・シソーラス(語彙分類表)を手に入れて、それとマッチするように構成 ? ・Yahooのディレクトリ構造をベースに構成する? ・階層的クラスタリング? ・Intersection rateを使うとうまくいくらしい (http://d.hatena.ne.jp/Makots/20080118#tagHierarchy)
  57. 2008年7月12日 SBM研究会 73 アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ

    アジェンダ 各 各SBM SBM関連のサービス開発記 関連のサービス開発記 ・開発を始めた経緯 ・開発を始めた経緯 ・Kikker ・はてブおせっかい ・はてブまわりのひと ・Kookle 個人による高性能データマイニングの可能性 個人による高性能データマイニングの可能性 Future of SBM Future of SBM まとめ まとめ
  58. 個人 個人 個人 個人による による による による高性能 高性能 高性能 高性能データマイニング

    データマイニング データマイニング データマイニングの の の の可能性 可能性 可能性 可能性 個人 個人 個人 個人による による による による高性能 高性能 高性能 高性能データマイニング データマイニング データマイニング データマイニングの の の の可能性 可能性 可能性 可能性 専用プロセッサによる高性能 ・近年、PS3に搭載されたCellプロセッサや、グラフィックカード(GPU:Graphic Processor Unit)などの非汎用プロセッサを用いて高性能計算を行う試みがなさ れている ・CellプロセッサやGPUでは汎用的な処理は難しいが、ベクトル化(複数のデー タを同時に処理)できるような処理であれば極めて高い性能を発揮できる データマイニングはばっちり(のはず)
  59. Cell Cell Cell Cellや や や やGPU GPU GPU GPUの

    の の の性能 性能 性能 性能 数万円で手に入るのに速い PS3のCellプロセッサで218GFlops (Core2 2.8GHzの約15倍) GPUで数百~千数百 GFlops (数十倍~百倍) の性能が理論的 理論的 理論的 理論的には には には にはある 実アプリケーションにおいて理論的な性能に比例する効用が 得られるとは限らないが、それでもうまくすれば普通のPC10台 ~2-30台ぐらいの性能は達成できそう (ただし特殊なプログラミングが必要になるのでコーディングは大変) 個人でも頑張れば結構な規模のデータ マイニングができるのでは?
  60. “この この この このサービス サービス サービス サービスは は は はPS3で

    で で で動 動 動 動いています いています いています いています” とか とか とか とか書 書 書 書いてあったら いてあったら いてあったら いてあったらCoolじゃないですか じゃないですか じゃないですか じゃないですか? ? ? ?
  61. 2008年7月12日 SBM研究会 77 アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ

    アジェンダ 各 各SBM SBM関連のサービス開発記 関連のサービス開発記 ・開発を始めた経緯 ・開発を始めた経緯 ・Kikker ・はてブおせっかい ・はてブまわりのひと ・Kookle 個人による高性能データマイニングの可能性 個人による高性能データマイニングの可能性 Future of SBM Future of SBM まとめ まとめ
  62. Future of SBM Future of SBM Future of SBM Future

    of SBM Future of SBM Future of SBM Future of SBM Future of SBM 正直よくわからない ただなんとなく、人と人の関係をもっとうまく使う事が必要なの ではないかと思う Ex) ・ はてブのお気に入り機能をもっとうまく生かすようなもの ・・・・とか? マイニングももっと進んでいくだろう 企業がやるとした時に、必要な計算処理を提供するための コストはペイするの? 2008年7月12日 SBM研究会 78
  63. 2008年7月12日 SBM研究会 79 アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ アジェンダ

    アジェンダ 各 各SBM SBM関連のサービス開発記 関連のサービス開発記 ・開発を始めた経緯 ・開発を始めた経緯 ・Kikker ・はてブおせっかい ・はてブまわりのひと ・Kookle 個人による高性能データマイニングの可能性 個人による高性能データマイニングの可能性 Future of SBM Future of SBM まとめ まとめ
  64. まとめ まとめ まとめ まとめ まとめ まとめ まとめ まとめ 2008年7月12日 SBM研究会

    80 4つのサービスの開発について説明した ・Kikker、はてブおせっかい、はてブまわりのひと、Kookle ・概要や工夫した点、展望について述べた ・同じようなものを作るための情報は網羅したつもり ・SBMのデータマイニングは楽しい 個人によるデータマイニングとSBMについての展望を述べた みんなもSBMのデータを いじって遊ぼう!