Data Wow Analysis

Data Scienceもいいけれど、Data基盤も作れるようになりたいな、っと。

UberのData Science ~ Userの目的地予測モデルの解説とそれに関わるベイズ推定の基礎学習 ~


くそっ!!あつがなついぜっ!!


先日、TokyoWebminigというDataMining系の素晴らしい勉強会で発表してきたので寄稿。初回からもう5年ほど経つみたいですね。ゴイゴイスー。 その勉強会では、帰り道バイラルするまで、またはBlog書くまでが勉強会みたい名言があるみたいなので、いまやっと終わりましたと!w

TokyoWebminigという勉強会には、以前からお世話になっているのですが、 去年からいただいていた発表枠を今回使わせていただきました。


テーマとしては、Uberという配車タクシーサービスが行っている"Userの目的地の予測モデル"[1]に関してです。


モチベーションとしては、リンク資料にも記載してますが、"かっこいい感じ"の"なんかいい感じ"のデータ活用方法はないものか、といった安易なものですし、実データを使って自身でやってみたものでもないですし、もちろん中の人でもないです。w


しかし、そこで扱われるベイズモデリングに関して、基礎の基礎の学習ができたので、非常に良かったと思います。 人様の前で発表するとなると、穴も埋めるので、単なるinputより、質の良いものになりました。 たいして難しい内容でもないので、check it out!!


これが、某セミナールームで噂の「勉強会駆動勉強」か!!www




それにしても"トピックモデル"の話[2]は非常に勉強になったし、"傾向スコアリング"の話[3]はうちの営業職の方々の業務にも役に立つものだし。


なんせ、議論に発表時間枠と同等のお時間をいただける分、少しばかり拙い内容でも、各会には各分野のスペシャリストが来てくださるため、議論またはアドバイスなど本当に自身のフィードバックになりました。 明日から6月ですが、最近はちょっと時間を持てるので、基礎固め中。 次は何をしようか。



  1. Uber:Making a Bayesian Model to Infer Uber Rider Destinations | Uber Blog
  2. トピックモデルことはじめ: TokyoWebmining46th // Speaker Deck
  3. 傾向スコアリングを使ったキャンペーン効果検証: 傾向スコアを使ったキャンペーン効果検証V1

Review : Reaitime Bid Optimization with Smooth Budget Delivery in Online Advertising

気づけば夏休みも終わり、修士論文へのラストスパート...

なんかここでは作成資料を共有してるだけで不甲斐ないないですが...一応Upします。

”広告配信における予算配分の平滑化”に関する論文です。 Turn.Incの方々が執筆しているようです。 予算配分のSmoothingは非常に重要で、今以上に良い方法で実装していきたいもんです。

Summary : Real-Time Bidding Algorithms for performance-Based Display Ad Allocation

5月頃かな...ずっと前読んだこの論文。 おさらいする機会があったので、UPしときます。

この論文は、 「キャンペーン毎のbid機能パラメータの更新方法として、既存のリソース配分の近似アルゴリズムにinspireされた方法と、bidの勝率の分布をモデル化して式に組み込んだものを提案」しており、DSPにおける予算投資の最適化、収益の最大化の課題解決にアプローチしています。

学べる手法や理論・方法論としては、

  • Bid-Priceの最適化に関する一アプローチ
  • 最適化問題を解き、収益を最大化する方法
  • PI/PID理論を応用した、online bidding argorithm
  • 評価指標としてのLift値 etc...

まだ、理解しきれていない点が、モデル式におけるフィードバック... つまり、PI/PID理論の部分(この論文の肝ですが。笑) 広告配信モデルへの応用可能性が高いと思うので、学習中です。

再度読みなおすので、記事や要約slideの更新もすると思います。

データ解析における"欠測メカニズム"の選択:level 1

今回は基礎をメモ。codeも数式もないので、あしからず...

昨今のデータサ○エンティストブームに伴い、急激に高度な分析を扱うようになった気がしますが、高度な分析手法にばかり目をとられてしまい、誤った分析結果を導き出してしまうことは、悪。
客観的な数値の正しさは、前処理や正しい分析手法の選択が必要不可欠。くっそめんどくさいけど、正しくデータを見て、判断する能力を今の内から血肉に沁み混ましておこう。
今回は、データを扱う場面において、否応なく接する機会があるであろう「欠損値・欠損データ」の扱うに関しての理論的なメモ、そしてその扱いや補完に至る手順に関する初期段階のお話。

"欠測のメカニズム"の種類*1

欠測を含むデータ解析では、欠測の発生に関するメカニズムを理解することが正しい分析に不可欠。

  1. 欠測は完全にランダム(Missing Completely At Random = MCAR
  2. 欠測はランダム(Missing At Random = MAR
  3. 欠測は無視できない(non-ignorable

の3種類に分類される(Rubin, 1987)
多変量データの解析においては、MCARの場合であれば欠測は完全に無視できる。
MARでは、分析の目的や解析手法によっては、無視可能。しかし、うまく解析しないと結果に偏りが生じる可能性が高い。

そのメカニズムの判断基準は、

  1. MCAR:\(x_1\)及び\(x_2\)の両方の値に依存しない
  2. MAR:\(x_1\)の値にのみ依存し、\(x_2\)の値には依存しない
  3. non-ignorable:\(x_2\)(及び\(x_1\))の値に依存する

例えば、身体測定のデータを例に、

  • 完全データ
番号(ID) 身長(\(x_1\)) 体重(\(x_2\))
1 170 65
2 175 66
3 160 60
4 180 70
5 170 70
6 169 60
  • MCAR = 完全にランダム
番号(ID) 身長(\(x_1\)) 体重(\(x_2\))
1 170 65
2 175 66
3 160 -
4 180 -
5 170 70
6 169 60
  • MAR = 身長170cm以下の個体の体重が欠測
番号(ID) 身長(\(x_1\)) 体重(\(x_2\))
1 170 65
2 175 66
3 160 -
4 180 70
5 170 70
6 169 -
  • non-ignorable = 欠損値\(x_2\)に依存(70kg以上の個体が欠測→データ上ではわからない)
番号(ID) 身長(\(x_1\)) 体重(\(x_2\))
1 170 65
2 175 66
3 160 60
4 180 -
5 170 -
6 169 60

欠測への対処法

欠測が含まれるデータセットの解析において留意すべき点*2は、

  1. データの持つ情報を過不足なく取り入れる
  2. 欠測のメカニズムを十分に反映した解析を行う
  3. 欠測に伴う結論の偏りをなくす
  4. 欠測による情報のロスを適切に評価する
  5. 欠測を過度に恐れない

その代表的な対処法は、4種類*3  

  1. 1箇所でも欠測がある個体は取り除き(case-wise deletion)、完全データとして解析(complete-case analysis) データセット数に対して、欠測値のある個体数の割合が極めて少ない場合には扱える。非常に簡単だが、結果が有用である保証はない。 あまりオススメはできない。

  2. 個体のどこかでの変量に欠測があったとしても他の得られた観測値を使って解析(available-case analysis) 平均値の計算のように、他の個体の値が欠測しているかどうかは無関係は場合がある。(いわば、無視なのかな) このように分析の対象となる観測値全てを扱う方法。

  3. 欠測値に何らかの値を代入して、完全データの手法を適用(imputing or fill-in methods)

    1. 単一値代入法(single imputation)(よく論文で用いられている)
      欠損箇所に1つの値を代入
      1. Mean(Median)
        観測データからのみ計算した平均値(中央値)を代入する。MCARの場合は平均値(中央値)による推定は偏りを持たないが、バラツキを過小評価する傾向有り。 MARの場合では、平均値にも偏りが生じる可能性があるため、オススメできない。
      2. Worst
        観測値の中で、「最も悪い値」を代入。平均値の偏りあり、データの変動を過大評価する傾向有り。
      3. Regression
        予測値を代入。計算は面倒だが、上記の方法と比較すると最もらしい推定値が導かれる可能性が高い。MARの場合は平均値に偏りは生じないが、分散を過小評価する。
      4. Hot Deck
        背景データの似ている個体を同じデータセット内から探し、対応する値を用いる。官庁統計でよく使われるらしい。 どのメカニズムの場合でも計算結果に偏りは生じないが、探し出すのが難しい。
      5. Cold Deck
        背景データの似ている個体を"異なる"データセット内から探し、対応する値を用いる。 用いるデータセットの評価が必要。
    2. 多重代入法(multiple imputation) 複数個の値を代入し擬似的な完全データセット複数個作成 D.B.Rubinによって発展されたもの(Rubin, 1987)。計算の手間があまりかからなければ推奨。
  4. 欠測はそのままモデル化して解析(direct methods) 欠測が無視可能でない場合にはそうせざるを得ない場合が多い。解析にかかる労力大。

サンプルデータ作って代入法の比較計算はまた今度。 今日はメモだけ。

参考文献
  1. ロジスティック回帰分析―SASを利用した統計解析の実際

ロジスティック回帰分析―SASを利用した統計解析の実際 (統計ライブラリー)

ロジスティック回帰分析―SASを利用した統計解析の実際 (統計ライブラリー)

  1. 不完全データの統計解析

不完全データの統計解析 (統計学大系シリーズ)

不完全データの統計解析 (統計学大系シリーズ)

  1. Statistical Analysis with Missing Data

Statistical Analysis with Missing Data (Wiley Series in Probability and Statistics)

Statistical Analysis with Missing Data (Wiley Series in Probability and Statistics)

*1:不完全データの統計解析を参考に

*2:同じ

*3:同じ

Summary of "Estimating Conversion Rate in Display Advertising from Past Performance Data"

ワールドカップが始まりました!ね!

前回の南アフリカ大会からもう4年経ったのか...

今日の「スペイン vs オランダ」を見るまでは寝れないと、日頃読んでいる論文の内の一つをまとめてみました。

最近、ビジネス面では、RTB広告における"bid-price"の推定モデルに関してのお勉強をしているのですが、その関連領域における著名な論文です。

この"Estimating Conversion Rate in Display Advertising from Past Performance Data"は、RTB広告において、入札をする立場であるDSP側の最適化課題に関して記されています。
手法としては、ロジスティック回帰分析クラスタリングを併用して、スパース性の高いデータに対応した、CVRの推定モデルを提案しています。

研究で扱っているような静的なデータではなく、ログデータのような動的なデータでは欠損値も多く、
また、CVRのような非常に確率の低い現象は、そのスパース性からモデリングすることは非常に難しいとされています。

より詳しい内容やモデルに関しては、後日書き記したいと思いますが、
とりあえず、スライドを掲載します。

最近、更新していなかったので、1回分稼ぐ。笑

特に、"missing data"の補正方法に関しては、その他の論文も読み進めて、実務に応用出来るようにしたいと思います。

Rで"Kernel Density Estimation"、その方法と本質!?

大学では、位置情報関連のデータの分析を主にしてます。
そこでいつもよく使う“カーネル密度推定”なんですが、GUIでサクッとやってしまうとその本質を学ばずして、してやったりしがちなので、ちょっと詳しく参考書を読みながら学び直し!

カーネル密度推定とは...

“単変量または多変量確率密度関数を推定する手法...
観測されたデータを内挿し、平滑化された推定値を得ることができる。”*1

対象地域R上に観測されたイベントの地点sがn個あるとし、
カーネル関数及びバンド幅を決定すれば、カーネル密度は以下の数式で推定できる。


 \begin{eqnarray} 

                       \hat{\lambda}_\tau &=& \frac{1}{\delta_\tau(s)}\sum_{i=1}^{n}\frac{1}{\tau^2}k\left(\frac{s-s_i}{\tau}\right)

\end{eqnarray}


kカーネル密度関数は、原点に対して対象な2変量確率密度関数
τカーネルバンド幅で、この値は常に正の値をとり、平滑化の程度を調整する。
δは、エッジ補正を目的とした係数。(δの数式は割愛)
このカーネル関数kやカーネルバンド幅rを式に与えて、λを細かいグリッド上で繰り返し計算することで、対象地域Rにおける強度λの変動パターンを視覚化できる。
ということだった。

ちょっと小難しい数式のわがんねぇような話は、このくらいにして、
以下からRでのちょこちょこやってみよう。
まずは、τ=1とした場合のカーネル関数(4次関数)の値をプロット!

u <- (0:100)/100
tau <- 1
# 以下の計算は、カーネル関数(四次関数)の式に基づく
k <- 3/(pi * tau^2) * (1 - u^2/tau^2)^2
plot(x, k, type = "l", xlab = "distance", ylab = "")

f:id:juju1008:20140601000630p:plain

↑はそのx軸の距離が大きくなるに従って、y軸の値が減少していくということは、距離が遠くなるに従って観測地点sの評価は低くなるってことを示してる。
つまり、
バンド幅が大きいと、全体的的傾向は観察できるが局所的変動を観察できず、
バンド幅が小さいと、全体的傾向は観察できないが、局所的変動を観察できる。
とのことだろうか。後日、検証してみよう。
(このカーネル関数の代表例としては、ガウス関数、イパネクニコフ関数、四次関数(biweight関数、quartic関数)が挙げられ、今回は四次関数を利用。)

次にRにプリセットで備わっているbodminデータを使って、可視化までやってみよう。(bodminデータは花岡岩の岩山の地点データ。)
⇒自分のデータも加工したものであれば公開してよいはずなので、今度!!

# カーネル密度推定を実行するpkg 
library(splancs)
# 実験データ
data(bodmin)
# plot呼び出し
plot(bodmin$poly,asp=1,type="n",axes=F,xlab="",ylab="")
# エリアデータ
polymap(bodmin$poly,add=T)
# カーネル密度推定の可視化、hoがカーネルバンド幅だよ。
image(kernel2d(as.points(bodmin),bodmin$poly,h0=2,nx=100,ny=100),add=T,col=terrain.colors(20))
# ポイントと行政区域の追加
pointmap(as.points(bodmin),add=T)

f:id:juju1008:20140601014301p:plain
こんなふうに可視化できるみたい。
バンド幅を変えた比較等も行えるので、近いうちにやってみよう。

このバンド幅τによって、視覚的な結果も全然変わってくるということでで、可視化する際は注意が必要やな。
そのバンド幅を調整する方法としては、単純に見た目で決めても良いそうだし(ホンマに!?)、
ちゃんと計算するには、データ数Nを標準偏差または四分位範囲IQRの小さい方を使う方法や、
最小二乗誤差法、交差検証対数尤度関数(cvloglk関数)等で算出する方法が存在しているので、
カーネル密度推定を使うときは、このバンド幅の調整をしっかりとやることが重要ですね!!
可視化だけやとすぐできちゃうので。笑


今回参考にした著書は、
地理空間データ分析 (Rで学ぶデータサイエンス 7)
Rによる空間データの統計分析 (統計科学のプラクティス)
です。

次回は、バンド幅の比較と最適な推定方法かマーク付き点過程(多変量ってことかな)、他にはRTB関連の論文のレビューのどれかでもしようかな。

魁!! めっちゃ使えるピクトグラム・アイコン集(Free ) -- Web ver. --

なんか“はてな”でも書いていこうと思い、初エントリーします。
JUJUです。
↑この名前で名乗っていいのかな。笑

最初なんで、ものごっつ軽い話題ですが、よろしくお願い致します。笑


突然ですが、

見(魅)せかたって、超重要!!

ですよね。

大学生の方も、社会人の方も、老若男女問わず、
人に何かを伝える機会は往々にしてあると思います。
(今週、プレゼンが多かったので。笑)

そんな時に僕の場合、重要視するのは、

シャかどうか!!

です。(データビジュアライゼーションを除く、データ分析の場合は違いますが。笑)

僕自身もいつも悩むことなので、皆さんも迷っているだろうと、

そやな工藤。いっそのこと軽くまとめてまおか。

ということでまとめてみます。まとめを。笑


1 "30 Free Icon Font Sets"

2 "25 Free Pictogram and Symbols Sign Icon Sets"

30 + 25、合計55個のサイトがパパッとまとめられてます。
このまとめでは、Webデザインに使えるアイコン達を、たっくさんまとめて下さってて、サイトやアイコンやデザインが、そう、

めっちゃかぶってる!!笑 めっちゃ多いわ。小野寺くん!!

同じようなんばっかで、全部見るのは、ご苦労だと思いますので、ちょっとだけおすすめさせていただきます。

基本的にFreeでダウンロード出来るし、その種類も多い。(Web系のアイコンが多いのが嬉しい要素ですね。)
サインアップして、自分でelementを投稿することもできるみたい。
Webで利用する場合は、直下のまとめに詳しくまとめて下さってるので、Hey!Say!JUMP!!*1

これはFontですが、とにかくきゃわたんですね。
f:id:juju1008:20140522183351p:plain:w300:rightクールな感じにしたい場合にはおすすめしませんが、Social系といいますか、なんかこういうFontが似合う方もいらっしゃると思いますので、レコメンド。
 Fontの使い方は、ここに詳しく記載されてます。*2
Macの方は、ええ感じのFontいっぱいありますので、使いこなしてみてはどうでしょう。


3 "16 Free Infographic Vector Templates, Kits | Best Design Options"

 3つめはインフォグラフィックに関する海外まとめです。
ここまでやられると、データの信憑性云々よりもデザインにしか目がいかず、賛否両論かも知れませんが、対オーディエンスに対しては、“引き”がすごいありますね。うまく使い分けていきましょう。といってもハードルは少し高いですね。笑


アイコンやピクトグラムに関しては、他のまとめも活用させてもらい、リソースとしては十分機能しそうです。
したら次は、KeynoteやPPTのTemplateもかっこいいのがほしくなっちゃいました。笑


あ、てかこのブログは技術及び分析系のブログにしようと思い作ったので、今後ともよろしくお願い致します。