2012年07月26日

IBM SPSS Modeler 15の新機能

IBM SPSS Modeler 15の新機能のセミナーがあったので、行ってきた。

今回、お!って思ったは、一般化線形混合モデル(GLMM)が搭載されたことだ。
今まで、IBM SPSS Modeler(旧 クレメンタイン)でデータを加工し、
データ量が小さくなったものをRに投げてGLMMを実行していた。

今後は、そこが同じプラットフォーム場で完結するってのはありがたい。

実際に使っていないので、こちらが想定するものがちゃんと入っているかが気になるところだが…w

※ 過去のGLMMに関するブログ記事
データ解析コンペ、発表資料完成!
http://skellington.blog.so-net.ne.jp/2009-03-25

一般線形混合モデル〜ポアソン回帰〜
http://skellington.blog.so-net.ne.jp/2009-11-05

2012年07月24日

IBM SPSS Modelerを使った需要予測と裏Tips

9月7日に講演をすることになりました。

IBM Business Analytics Forum Japan 2012 - Japan
http://www-06.ibm.com/software/jp/analytics/events/baforum2012/session.html

あえて、上級者向けにしてみましたが、実際は中級者〜上級者向けのコンテンツになりそうです。
IBM SPSS Modeler(旧:クレメンタイン)初心者は少し苦しい内容になるかもしれません。

裏Tipsってのは、前の講演の西牧さんのModeler Tipsをぱくったものです。
個人的には、こちらの講演がとても楽しみです。

2012年07月17日

リコメンドエンジンの設計思想

先日、フィジビリを行ったリコメンドのまとめ資料を作った。
社内向け資料なので、外部講演とかでは、まるまる話すことはないが…w

最近、安価なリコメンドASPが増え、導入すれば、なんとなく効果があるように見える。

しかし、こういうのって、なぜ、そのリコメンドをするのかという強い意志が必要だと思う。

もう少し解り易くいえば、「なんだかよく分からないけど、当たるんです。」というものは上っ面を叩いている気がして、それ以上の伸び代ってないと感じる。
逆に、カスタマが○○を購買する意思決定のモデルは、××だから、△△という思想の元、このリコメンドが大切なのだ、というリコメンドを作った方が精度も代地も大きいのは?と。

そこには、やはり仮説が必要で、それをもとにモデルを作り、きちんと検証をする。
そして、また、モデルを修正していく。
この地道なパターン、真摯に課題と向き合う姿勢が一番大切なんだと思う。

今回、フィジビリの振り返りのため、商材ごとにカスタマの動きを分析したが、やはり商材ごとに大きくことなり、だからこそ、ひとつのまるっとしたモデルではなく、モデルの中に強い意志を込めたモデルが必要なんだ、と確信した。

2012年07月05日

SASユーザ総会 2012

SASユーザ総会 2012
http://www.event-office.info/sug12/

期間:2012年8月1日(水)〜3日(金)

8月1日は、初級編。
8月2日は、マーケティング編。
8月3日は、スコアリング、金融リスク管理編。

8月2日のセッションで発表します。
今のところフラッシュマーケティングのサイトについての話を予定しています。

お時間のある方はご参加ください。

2012年07月04日

平成24年度データ解析コンペティション発会式の日程が発表

平成24年度データ解析コンペティション発会式の日程が発表となりました。

日時:平成24年8月1日(水)15:00〜

当日スケジュール
<第一部>
15:00〜15:20 開会挨拶・開催概要について
15:20〜16:00 ご講演(詳細は後日)
16:00〜17:00 提供データの説明および質疑応答

<第二部>
17:15〜19:00 意見交換会(場所:豊洲センタービル20階を予定)

今年のデータ提供元はリクルートで、ポンパレとスーモのデータになります。
去年と同じく一般部門と課題部門の予定です。

詳しくは、発会式の時に説明があるかと思います。

個人的には、どちらのデータを使っても面白い分析ができるのでは?と思います。

提供データの方は、あえて色々なデータを加えましたので、いろいろな分析が出来ると思いますが、一方で、樹海に迷い込みかねないので、そこは注意が必要ですね。

2012年07月03日

連続値を予測する場合の評価関数

今、5つのデータがあったと仮定して、値が高い順番になるように予測をする。
model_Aとmodel_Bの2つのモデルを作った場合、どちらの方が精度が良いか評価したい。


背景として、A〜Eをどの順位にすれば良いのか?ということを考えたい。
売上の期待値が高いものを上位の順位に持って来て、低いものを下位の順位に持ってくる。

その際、どういう評価関数を使えば、その順位のソートの良し悪しを評価できるのか?を考えた。

グラフに書いてみると、明らかにAの方がよさそうだ。


評価関数の特徴として、
1. 最良なモデル(神様モデル)は、1.0になるようにする。
2. 最低なモデルは、0.0になるようにする。
3. ランダムなモデルは、0.5になるようにする。

これらを加味すると、
  (モデルの面積 - 最低モデルの面積)
= ----------------------------------------
  (最良モデルの面積 - 最低モデルの面積)

上記の式だと、上手く評価関数を作れそうである。

上記の場合、
1. 最良モデル → 1.0
2. 最低モデル → 0.0
3. ランダムモデル → 0.5

最良曲線と最低曲線はランダム曲線を境に反転させたものなので、完全なランダムの場合の期待値は、0.5となっている。



実際に、model A と model B を比較すると、Aは75.0%の一致率、Bだと96.4%になります。

2012年06月29日

医療従事者のための分析 - cox回帰分析

医療従事者のための分析 - cox回帰分析


生存時間解析―SASによる生物統計

生存時間解析―SASによる生物統計

  • 作者: 大橋 靖雄
  • 出版社/メーカー: 東京大学出版会
  • 発売日: 1995/04
  • メディア: 単行本



以下、備忘録として。

--------------------------------------------------
4. cox回帰分析
比例ハザード性が成立することが前提

ログマイナスログは、比例ハザード性の確認で使う

ヘビサイト関数

傾向スコア
Propensity Score
交絡因子の調整
-> ロジスティック回帰
--------------------------------------------------

2012年06月28日

医療従事者のための分析 - Kaplan-Meier法

医療従事者のための分析 - Kaplan-Meier法






以下、備忘録として。

--------------------------------------------------
3. Kaplan-Meier法
Kaplan-Meier:単変量
Cox回帰:多変量

打ち切りデータを使用できる

ストラータがない場合 -> 上のラジオボタン
ストラータがある場合 -> 下のラジオボタン

2つの場合 -> 左のラジオボタン
3つ以上の場合 -> 右のラジオボタン

Log Rank: wi = 1
Breslow: wi = n
Tarone-Ware: wi = √n

平均値:正規分布
中央値:真ん中の人

Bonferroni
P < 0.05 ?
P < 0.05 * 1/3 ?
--------------------------------------------------

2012年06月27日

医療従事者のための分析 - ロジスティック回帰

医療従事者のための分析 - ロジスティック回帰

以下、備忘録として。

--------------------------------------------------
2. ロジスティック回帰
二項、タ項、累積(順序)

判別分析 -> 正規性を過程
ロジスティック -> 制限がない

検証
@ 分割法(学習用、テスト用)
ホールドアウトサンプル
A 交差検証法
B ブートストラップ法

| r | ≧ 0.9
VIF ≧ 10

Nagelkerke 疑似R2乗
低めに出ることが多い

HosmerとLemeshowの2つの潜在的な問題
・期待度数が5以上必要
・サンプルサイズが大きくなると帰無仮説を棄却しやすい
500を超えると棄却されやすい

ROC
感度
1 - 特異度
AUC

変数減少法
複数の変数の効果が残りやすい

変数選択:条件付きは使わないほうが良い
条件付きロジスティック回帰とは異なる

ブートストラップ
--------------------------------------------------

2012年06月26日

医療従事者のための分析 - クロス集計表の検定と連関度

IBM SPSSのセミナー『医療従事者のための分析』を受けてきました。

別に医療関係の仕事をするわけでもなく、転職を考えているわけではないのですが、、、
そこで使われている統計手法がマーケティングに使えそうかなって思い受けました。

なかなか良い感じの情報が収集できたと思っています。

以下、備忘録として。
--------------------------------------------------
1. クロス集計表の検定と連関度
行に要因
列に目的
行に%を持って来て、要因ごとの%を出す

Pearsonのカイ二乗
・0セルが5未満
・最小期待度数23.10
→ Fisherの正確確率

両方出ている場合は、Fisherを選択する

2つの検定結果が異なる場合
尤度比検定

0.50 → 未満で判定するので有意でない

Mantel-Haenszel(マンテル・ヘンツェル)
交絡因子
編相関係数
単純オッズ比 ⇔ 調整オッズ比

ファイ(Phi)
0-1のデータの場合は、ピアソンの相関係数と完全に一致する

カッパ係数
0.4を超えたほうが良い
--------------------------------------------------

2012年06月18日

【IBM SPSS Modeler】スーパーノードにする利点

IBM SPSS Modeler(旧クレメンタイン)にスーパーノードというのがあります。
いくつか、スーパーノードにする利点がありますが、変わった使い方を紹介。

今、variable_x に対して、
objective_variable = 123 * variable_x + 456
という計算をしています。





なんらかの理由で直接変更できない場合、
(フラグ設定や再構成ノードなど)
裏技的な変更方法あります。

【方法 その1】
1. str → zip
2. 修正
3. zip → str

参考記事:IBM SPSS Modeler(旧Clementine)を圧縮してみる
http://skellington.blog.so-net.ne.jp/2010-11-02

【方法 その2】
基本、Clementineってストリームにしろ、モデルにしろ、スーパーノードにしろ、zipです。

ストリーム → .str
モデル(ニューラルネットなど) → .nod
スーパーノード → .slb

つまり、いったん、スーパーノード化してあげれば、xmlを直接いじることができます。



スーパーノードを解凍して、xmlをみると、先ほどの式が書かれています。


式を変更します。


xmlを保存し、zip圧縮します。
そして、.zip → .slb としてストリームに戻すと、


きちんと、反映されていました。

2012年05月29日

スーパーノード内の設定を変更するスクリプトの記述方法

IBM SPSS Modeler(旧 Clementine)をスクリプトで動かす時のデータベースのIDとパスワードの設定方法

データベースノードの名前: HOGE
スーパーノードの名前: S_NODE

1. スーパーノードを使わない場合
set HOGE.username = "ログイン名"
set HOGE.password = "パスワード"

2. データベースの接続ノードがスーパーノードの中にある場合
set S_NODE.parameters.'HOGEusername' = "ログイン名"
set S_NODE.parameters.'HOGE.password' = "パスワード"

スーパーノード内にある場合、オブジェクトっぽい感じで書きます。

2012年05月24日

多変量解析:比例ハザード分析

IBM SPSS「医療統計:多変量解析」講座の続き。

過去のブログ
・多変量解析:重回帰分析
http://skellington.blog.so-net.ne.jp/2012-05-18

・多変量解析:多重ロジスティック回帰分析
http://skellington.blog.so-net.ne.jp/2012-05-21


以下、講座の備忘録。

--------------------------------------------------

・比例ハザード分析
David Cox, British statistician, 化学者
まだ生きている

coxの比例ハザード分析とも呼ぶ

比例ハザード分析の事例
1974年 Prentice, R.L.

多重ロジスティック回帰:予測のための手法
比例ハザード分析:影響要因を見つける手法
- 予測ための手法ではない
- スコアの算出はできない(様々な意見がある)

いつの日か全員発生する(死亡する)ことを想定して計算されている

2群の差の検定
ログランク検定が一般的
最近では、他の検定手法もあるらしい

Df Betaの分析
必ずしも行う必要はない

ログマイナスログ
カテゴリーごとにハザード比が一定しているか?

--------------------------------------------------

2012年05月21日

多変量解析:多重ロジスティック回帰分析

IBM SPSS「医療統計:多変量解析」講座の続き。

ロジスティック回帰の推薦書らしい。

医者のためのロジスチック・Cox回帰入門

医者のためのロジスチック・Cox回帰入門

  • 作者: 高橋 善弥太
  • 出版社/メーカー: 日本医学館
  • 発売日: 2010/12
  • メディア: 単行本




以下、講座の備忘録。

---------- 重回帰分析 ----------

・多重ロジスティック回帰分析
手順
1. データは正規分布か?
正規分布か否かは問題としない

2. 名義尺度の変数は存在するか?

3. 多重共線性は存在するか?
r > 0.9 以上は、一方を削除

4. 2変量解析を行い、変数間の関係を探る
最近では、t検定などは行わず、いきなりロジスティック回帰を行う
昔は、有意になりそうなものを候補に入れて計算していた

5. 重回帰、判別分析で独立変数を絞る

6. 多重ロジスティック回帰分析を行う

尤度比を使う(Waldは使わない)

有意確率は、有意である必要はない。
1つ1つの変数が有意かどうかは関係なく、モデル自体が有意かどうかが大切

1つ1つが有意かどうかを選ぶのは、wald 検定を選ぶ
しかし、wald 検定で変数を選ぶのは良くないといわれている

Hosmer-Lemeshow 検定
p ≧ 0.05 なら適合が良い

判別分類表
70%以上の的中率が良い(経験的な意見で根拠がない)

1986年スペースシャトルの打ち上げにロジスティック回帰が使われている
前日に、落ちる確率は分かっていたが、NASAは打ち上げてしまった

オッズ比を100乗する場合は、信頼区間も100乗すれば良い

β 母集団の回帰係数

1.0以上と1.0以下の場合、逆数をとって影響度の強さを比較する

----------------------------------------

2012年05月18日

多変量解析:重回帰分析

IBM SPSS「医療統計:多変量解析」を受けてきた。


SPSSで学ぶ医療系多変量データ解析―分析内容の理解と手順解説、バランスのとれた医療統計入門

SPSSで学ぶ医療系多変量データ解析―分析内容の理解と手順解説、バランスのとれた医療統計入門

  • 作者: 対馬 栄輝
  • 出版社/メーカー: 東京図書
  • 発売日: 2008/10/08
  • メディア: 単行本



「医療統計」自体には興味がないのだが、cox回帰に興味があったのがきっかけ。
以下、講座の備忘録。

---------- 重回帰分析 ----------
重回帰分析の目的にひとつに「交絡因子を取り除く」がある

結果の読み方
1. 分散分析表の検定で p < 0.05
2. 回帰係数の検定で p < 0.05
定数は、変数が0の時の有意性をみている
3. 標準(偏)回帰係数の大きさ
1に近いほど影響が大きい ≒ 相関係数
4. R2 > 0.5, AICという指標もある
自由度調整済みR2

データは正規分布か?
1つ1つの変数を正規分布するかを調べるは間違い
yと残差が正規分布する必要がある
→ 多変量正規分布
しかし、正規分布についてはあまり気にしなくても良いといわれる

多重共線性
相関の高い組み合わせ |r|>0.9がある時は、不安定なモデル
一方を除外する
VIF ≧ 10

相関性は正だが、式の符号はマイナスになる場合がある
他の変数との影響が原因

ステップワイズ法 vs. 総当たり法

SPSSでAICを出す方法
1. シンタックス
2. /STATISTICS ***** の後に SELECTION を追記する

Durbin-Watson 2に近いほうが良い
2から遠ざかると残差に周期性がある

----------------------------------------

2012年05月16日

アソシエーション分析の先にあるもの

社内のデータマイニングのスキルアップとして、分析手法のまとめをやり始めた。

最近では、データマイニングというとなんだか安っぽい感じがしてしまうのは気のせいだろうか。。。
データサイエンスとかって言葉の方が良いのかもしれないが、あえて、データマイニングという言葉で資料を書き始めている。

また、実際の分析においては、クロス集計で9割くらいは分かる。
時間とコストを考えると、クロス集計しか行わない場合も多い。

クロス集計だけで良いかといえば、そうではなく、残りの1割を知っているのと知っていないのでは分析の幅が大きく違ってくるように思う。

後、分かりやすく分析手法からのまとめをしているが、本当は分析手法から入るのではなく、「今、解決したいマーケティング課題は?」から入った方が筋は良いはずだ。

さて、まずは分かりやすいアソシエーションルールからまとめ始めている。

言葉で説明することは簡単なのだが、「ふ〜ん」で終わらないために、また、事例を聞いて、いかに自分の業務にリンクすることができるか、そのために、どんな事例を説明すれば良いのか、試行錯誤している今日この頃。


Rによるデータサイエンス - データ解析の基礎から最新手法まで

Rによるデータサイエンス - データ解析の基礎から最新手法まで

  • 作者: 金 明哲
  • 出版社/メーカー: 森北出版
  • 発売日: 2007/10/13
  • メディア: 単行本(ソフトカバー)


2012年05月12日

DM研究会 第16回総会&懇親会

DM研究会 第16回総会&懇親会

今日は、久々にデータマイニング研究会がありました。
いつも平日でしたが、今回は珍しく土曜日に開催でした。

今回の基調講演の内容は、
『ベイジアンネットワークを活用したコールセンターの解約阻止コミュニケーション分析のご紹介』
でした。

最近、ベイジアンネットワークを使った分析をしていなかったので、懐かしい気持ちが半分と、新鮮な気持ちが半分な感じでした。

その後は、恒例(?)の懇親会。

乃家 九段下店(のいえ)
http://www.hotpepper.jp/strJ000233742/

2012年05月10日

IBM SPSS Modeler の warning メッセージ

IBM SPSS Modeler(旧クレメンタイン)のバージョンを14.2にあげました。

とりあえず、バッチモードとかちゃんと起動するかチェックしたところ、

----------------------------------------
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(...) returned error code 5.
----------------------------------------

というエラー(warning)が表示された。
warningメッセージなので、アウトプットは、きちんと出ています。

以前のバージョンでは、出てこなかったので、SPSSに問い合わせたところ、

----------------------------------------
・Windows 7で発生する現象
・アドミン権限を持っていないとレジストリの書き込み関連でエラーがでる
----------------------------------------

って回答でした。

確かに、Windows 7上で動かしてはいるものの、アドミン権限を持ったユーザで動かしているんですけどね。。。

まぁ、ちゃんと動いているなら、警告メッセージは、無視して良いか。。。

2012年05月08日

KDD Cup 2012 trac2のデータが公開

KDD Cup 2012 trac2のデータが公開されていました。

trac1自体、全然手がつけられていない状況。。。
悲しい。

時間もあまりないので、ショートトラックだけでも分析したいですね。

と思ってデータをダウンロードしたら、会社のネットワークが混雑しているのか、データ量が多いのか、なんだかんだと、ダウンロードするのに半日以上かかりました。

明日から、少しずつ分析やっていきます。

締め切りは6月1日。
ってことで、5月31日中にアップロードするのがよさそうです。

2012年04月10日

Average Precision(平均適合率)とは

KDD Cup(Knowledge Discovery and Data Mining Cup)にエントリーした。

スコアの評価方法は、適合率 (Precision) と再現率 (Recall)など、いろいろあるけど、今回のスコアの評価方法は、Average Precision(平均適合率)と呼ばれるもので測定するみたいだ。

Average Precisionってことだが、定義は、
ap@n = Σ k=1,...,n P(k) / (number of items clicked in m items)

これでは、分かり難いけど、具体的な例が載っていた。





































































































Item(i)modelA_HitmodelA_p(i)modelA_决(i)modelB_HitmodelB_p(i)modelB_决(i)
111/11/311/11/3
212/21/301/20
302/3001/30
413/41/312/41/3
503/5002/50
603/6002/60
703/7002/70
803/8013/81/3
903/9003/90
1003/10003/100


モデルAの評価
AP(A)=(1/1+2/2+3/4)×1/3≒0.92

モデルBの評価
AP(B)=(1/1+2/4+3/8)×1/3≒0.62

モデルAとモデルBを比較すると、モデルAの方が早い段階でヒットしているので、モデルAの方が良いモデルってことになります。

実際、モデルAの方のスコアが高いですね。