RとPythonによるデータマイニングスマートフォン用の表示で見るスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。読者です読者をやめる読者になる読者になるRとPythonによるデータマイニング企業でデータ分析などやっています。RやPythonによるデータマイニング・機械学習関連の話題と日々の日記やその他備忘録について書いてます。この広告は、90日以上更新していないブログに表示しています。PythonによるはてなAPIの活用とRによるモデルベースレコメンドPythonR私は情報収集にはてなブックマークを多用しており、暇な時は結構な割合ではてなブックマークで記事を探してます。はてなブックマークは最新の記事を探すのは便利ですが、過去の記事を探すにはいまいち使えません。個人的には多少過去の記事でも自分が興味を持っている分野に関しては、レコメンドして欲しいと感じてます。ありがたいことにはてなはAPIを公開しており、はてなブックマークの情報を比較的簡単に取得できます。そこでこのAPIを利用して自分に合った記事を見つけるようなレコメンド機能をRとPythonで作成してみたいと思います。利用するデータは、はてなAPIを使って収集します。具体的には、はてなブックマークフィードを利用して自分のブックマークしているURLを取得し、そのURLをブックマークしているユーザをエントリー情報取得APIを用いて抽出し、そのユーザのブックマークしているURLを収集します。このuser⇒ブックマークURL⇒user⇒ブックマークURLという手順を繰り返せば大量にURLを収集することができますが、今回の目的は自分に合いそうな記事を見つけることなので、探索範囲は自分と同じ記事をブックマークしているユーザに限ります。省エネでいきたいので、Pythonを用いて記事を収集し、Rを用いてデータ加工と記事のスコアリングを行います。システム構築という面ではPythonのみで作った方が良いかもしれないですが、データ加工、モデル構築に関してはRの方が個人的に慣れているので。何をするにしてもデータが必要ということで、Pythonを用いてURLを収集します。データ収集に利用したのは以下のコードです。main()あまり使い回す予定はないのでmainの下にべた書きしてるし、エラー処理とか適当です。はてなフィードはfeedparserを用いてパースしています。feedparserに関しては以下のページが分かりやすいかと思います。http://python.g.hatena.ne.jp/muscovyduck/20081221/p1また、はてなブックマークエントリ情報取得APIはJSON形式で取得されるので、jsonライブラリを利用して解析してます。json形式の読み込みに関しては以下のページが参考になると思います。http://tmlife.net/programming/python/python-json-module.htmlあとAPIを高速で叩くのはサーバ負荷的に良くないと思うので、0.05秒程度の間を置くようにしてます。上記のコードでは、自分と同じブックマーク数が10以上のユーザのブックマークURLを200件まで取得しています。この辺のパラメータは精度やデータ量との兼ね合いで変更した方がいいかもしれません。URL情報を取得できたので、次はRを用いて上記情報からモデルを作成しレコメンドURLを抽出します。Rでは、データをurl×userの行列に整形し、自分がブックマークしたurlを元にスコアリングを行います。データの整形にはreshape2を用いて、pivotテーブルを作成することにします。スコアリングとしては、単純な協調フィルタリングでは疎なデータの場合レコメンドできる記事が限られるので、モデルベースのフィルタリングを行うことにします。アルゴリズムとしてはランダムフォレストを利用します。選択の理由としては、パラメータチューニングなしでもそこそこの精度が出る点と変数の貢献度(今回の場合は似ているユーザ)がわかるためです。ちなみにWindowsの場合、文字コードエラーが起こる場合がありますが、その場合はurl_list.csvをエディタなどでshift-jisに変換すれば良いでしょう。以下が利用したコードです。道玄坂で働&#34;,&#34;http://tjo.hatenablog.com/entry/2013/05/07/191000&#34;,0.138見事にデータマイニング・ビッグデータ系の記事ばっかりですね。私の興味・関心を反映していて、個人的にはかなり満足できる結果になってます。はてなAPIはタグ情報なども取得できるので、タグ情報やタイトルのテキスト解析情報なども用いればより精度向上が見込めると思います。見たけどブックマークしなかった記事が多数含まれているんですが、閲覧履歴がないとここに対応するのは難しいですね。趣味レベルの試みですから現状ではこれで十分かと思います。ちなみに貢献度が高かったユーザは以下の通りでした。1.537937貢献度が高いことは必ずしも類似度が高いというわけではないですが、自分と興味が近いユーザ候補がわかるのもこの分析の面白い点ではないでしょうか。はてなブックマークは自由に使えるデータとして非常に面白いものだと思うので、今後も何か面白いことができないか考えていきたいですね。RのtransitionPlot関数を用いた遷移図の作...[R][データ分析]階層ベイズモデルのサ...»プロフィールid:Overlap企業勤めのしがないデータアナリストです。Python、Rを用いたデータ分析技術に興味があります。Blog|ブログを報告する。