Hatena::ブログ(Diary)

ほくそ笑む このページをアンテナに追加 RSSフィード

2017-03-23

分析したいけどデータがない!そんなときはウェブスクレイピング!

献本いただいたので紹介記事を書きます。

Rによるスクレイピング入門

Rによるスクレイピング入門

本書はウェブスクレイピングという、ウェブ上の情報を収集する技術について書かれた本です。

ウェブスクレイピングはデータ分析者にとって非常に有用な技術です。

データ分析をしようと思ったとき、どうやってデータを集めるかというのが問題になる場合があります。

例えばテキスト解析をしようと思っても、ちょうどいいデータセットが手元になく、自分でデータを集める必要があるといった場合があります。

その場合、WikipediaTwitter などからデータを収集するためには、ウェブ技術やプログラミングについて学ぶ必要が出てきます。

例えばウェブ技術の一つである HTML を学ぶとなると、たくさんのマークアップタグがあり、いくつかのバージョンが混在し、ブラウザによっても微妙に異なるといったことが多くの書籍には書かれているわけですが、こういった知識は、単にウェブからデータを収集したいだけの分析者には必要のない知識だったりします。

本書は、そういったウェブ技術やプログラミングに疎い分析者が、ウェブ上からデータを収集するために必要な最低限の知識を学ぶための最短コースを提供しています。

内容としては初心者向けに一通りのことが書かれており、知識はないけど手っ取り早くできるようになりたいという人が最初に手に取るのにちょうどいいと思います。

本書で使用される統計言語 R では、ウェブスクレイピングを簡単にするためのパッケージが利用でき、プログラミング初心者でもわりと容易に自分の思った通りのスクレイピングコードが書けるようになると思います。

章別に見ていくと、次のような感じです。

  1. Rの基礎知識
  2. ウェブ技術
    • HTML, CSS, XPath, XML, JSON, HTTP, OAuth
    • httrパッケージ, XMLパッケージ
    • 正規表現stringrパッケージ)
  3. ウェブ API 入門
  4. ウェブスクレイピング実践編
    • rvestパッケージ, Selenium (RSeleniumパッケージ)
  5. ウェブ API 実践編
  6. オープンデータ

1章ではRの基礎知識を簡単に説明しています。ただし、ウェブスクレイピングに必要な知識だけに絞って簡潔に説明されています。

2章は基本的なウェブ技術についてです。ここも要点をしぼって説明されていますが、結構なページ数がさかれています。

例えば、CSSセレクタやXPathは、ウェブドキュメントから自分の欲しい部分だけを抜き出すときに、その要素の指定に使われる重要な技術です。

また、抜き出した情報にも余分な情報がある場合もあり、そのような場合は正規表現を使った文字列処理が必要になります。

XML や JSON はウェブから情報を取得する際に返却されるデータ形式としてよく使われるものであり重要です。

このように、本書では膨大なウェブ技術の中でもウェブスクレイピングに必要な情報だけに絞って解説しているというところがポイントだと思います。

3章はウェブ API についてです。ウェブスクレイピングというと HTML ページを解析して情報を抜き出すというイメージがありますが、サイト側が用意した API があるならば、それを使うことが推奨されます。これについては著者自身がブログで説明していますのでそちらをご参照ください。

4章と5章は実践編です。ここでは様々なサイトから実際にデータを抜き出すための方法が具体的なコードと共に提示されます。

6章はオープンデータについてです。現在さまざまな団体がデータを公開しており、これを活用したデータ分析について書かれています。

まとめ

本書はデータ分析者にとって重要な技術であるウェブスクレイピングについて、初心者向けに要点をしぼって解説された本です。

分析したいけどデータがないとお困りの方、ウェブスクレイピングを手っ取り早く学びたいという方におすすめの一冊です。

Rによるスクレイピング入門

Rによるスクレイピング入門

関連

Python によるスクレイピング

Python によるスクレイピングの本も立て続けに出ていますね。

2016-12-09

確率論の基礎について発表しました

Watanabe理論勉強会で発表してきました。

前回の発表はこちら

前回は2章だったのですが、2ヶ月半で5章まで進みました。ページ数的には折り返し地点です。

今回の担当は5章前半だったのですが、私の脳みそでは非常に難しく感じたため、5章に入る前に1章で飛ばした確率論基礎について復習させてもらいました。

発表スライドは下記です。

この部分は非常に簡潔に書かれていて、私には分かりやすかったのですが、確率空間は必ずしも距離空間である必要はないとか、可測空間だけでは積分は定義できないとか、詳しい方々からのツッコミが容赦なく入りました。

しかし、この復習で、ある程度は確率空間や確率変数に対するイメージが固まったため、5章を読み進めることができました。

5章の発表スライドは下記です。

タイトル詐欺で経験過程まで行っておらず、法則収束の説明までです。

法則収束は汎化誤差の漸近挙動を研究したいWatanabe理論では重要な概念となります。

この章ではもう一つ、関数に値を取る解析関数についてのセクションも私の担当なので、次回発表する予定です。

関連

2016-09-30

A/Bテストと統計的検定の注意点(その1)

素晴らしい記事が上がっていたので言及したい。

この記事では、A/Bテストにおいて、意味のある差が出たかどうかを統計的検定を用いて判断する方法を説明しています。

Web上にある多くのA/Bテストの記事と異なるのは、単に検定手法にデータを突っ込んでp値を出すのではなく、

  • 意味のある差とは何かを事前に決定する
  • サンプルサイズを事前に決定する

という統計的検定のフレームワークに則ったまともな方法で判断を行っているという点です。

よく言われる統計的検定は無意味だなどという言論の多くは、このフレームワークを使っていないだけに過ぎず、不確実な事象に対する科学的な検証方法として、統計的検定のフレームワークの強力さはいまだ健在です。

さて、統計的検定のフレームワークについては上の記事および記事中で紹介されている参考文献にお任せするとして、ここではA/Bテストと統計的検定における、もう少し実践的な話題を紹介したいと思います。

A/Bテストの等質性

A/Bテストとはどういうものでしょうか?

例えば、Webサイトのランディングページに対して2つのデザイン案が持ち上がり、どちらが良いか判断に困る場合があります。

そこで、訪問者をAグループとBグループにランダムに振り分け、それぞれのグループに別々のデザインを見せ、入会率が良い方のデザイン案を採用する、といったことを行うのがA/Bテストです。

上記の記事ではAとBについて次のように書かれています。

  • A「入会率10%の現ランディングページ」
  • B「入会率(以下CVR)15%を期待する新ランディングページ(以下LP)」

ここにはちょっとした罠があります。

こういう風にA/Bを分けると、新ランディングページのCVRが最初だけ良く、途中から下がるという現象にわりと頻繁に遭遇するはずです。

例えば、下記の記事で言及されているような現象です。

ベースラインに対して新しい実験パターンのコンバージョンの方がずっと優勢なんですが,95%ラインを越えたり越えなかったり,という推移が見て取れます.ごく初期に95%を越えた段階で効果あり,と思って実験をストップしちゃうなんていうのは割とありがちな事態ではないでしょうか.

Optimizelyのstats engineによる逐次A/Bテスト - About connecting the dots.

これはなぜ起こるのでしょうか?

A/Bテストにおいて、訪問者をAとBにランダムに振り分けるのは、各グループにおける訪問者の性質を均質にすることが目的です。

もし、Aは男性、Bは女性というような振り分け方をすると、AとBにおける入会率の差が、性別による差なのか、デザインによる差なのか、判別できなくなります。

デザインによる入会率の差を検証したかったら、デザイン以外の要因(例えば男女比)が同じになるように振り分ける必要があります。

ところで、このランディングページに訪れるのは新規訪問者だけでしょうか?

A/Bテストの対象者の中に、現ランディングページを見たことのある人は含まれないのでしょうか?

今、A/Bテストの対象者の中に、新規訪問者と再訪問者が50%ずついるとしましょう。

新規訪問者とは、現ランディングページを見たことがない人たちと定義します。

すると、再訪問者は現ランディングページを見たことがある人たちであり、言い換えると、現ランディングページでは入会しなかった実績を持つ人たちです。

つまり、Aグループにおける再訪問者は、現ランディングページでは入会しにくいという性質を持っていることになります。

そう考えると、AとBの入会率に差が無かったとしても、Aグループにおける再訪問者の入会率はBグループにおける再訪問者の入会率より低くなることが予想されます。

f:id:hoxo_m:20160929185238p:image:w600

これでは、A/Bテストの前提である「各グループにおける訪問者の性質が均質」を満たしません。

このような場合、どんなに正しく統計的検定のフレームワークを適用ても、正しい結果は得られません。

A/Bテストの評価に統計的検定を使用するならば、グループの等質性についても気を付けなくてならないことがお分かりいただけたかと思います。

(なんか長くなってしまって疲れました。気力があれば続きます。続きが読みたい人はワッフルワッフルと書いて下さい。)

2016-09-26

Watanabe理論勉強会で発表してきました

このブログの読者には AIC (赤池情報量基準) をご存じの方は多いと思います.

AIC は統計モデルの評価指標として世界中で広く使われていますが、これは赤池弘次という日本人統計学者により考案されたものです。

これに対し、近年、ベイズ統計学で利用可能な WAIC という情報量基準が考案され、世界中で爆発的に普及しています。

この WAIC を考案したのも日本人であり、東工大の渡辺澄夫先生です。

WAIC は、算出すること自体は簡単なのですが、その理論的な根拠として非常に高度な数学が使われています。

この理論について、渡辺先生ご自身が書かれた書籍があります。

Watanabe理論勉強会は、この本を熟読し、この偉大な理論を理解することを目的として発足された勉強会です。

今回、私は第二章の前半部分を担当させていただきました。

発表スライドは下記です。

タイトルは煽りですが、特異点とその解消は渡辺理論において非常に重要です。

今回の発表は特異点の定義とその判定法に関する定理の証明までが範囲です。

ご参考になれば幸いです。

参考リンク

こちらは渡辺理論について日本語で書かれた書籍の読書メモです。たいへん勉強になります。

ベイズ統計の理論と方法

ベイズ統計の理論と方法

追記

ちなみにこの本、Amazon 洋書の売れ筋ランキング 3部門で 1位です。すごい。

f:id:hoxo_m:20160928123410p:image