SSブログ
データマイニング ブログトップ
前の10件 | -

Pythonでデータ解析[Pandas] -その2- 重回帰① [データマイニング]


Python for Data Analysis

Python for Data Analysis

  • 作者: Wes Mckinney
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2012/10/29
  • メディア: ペーパーバック



Pythonのマイニングパッケージをいじってみています。
とりあえず、PandasやScikit-learnを使って重回帰をやってみる。Pandas部分については↑などを参考にしています。Scikit-learnについてはもっぱらGoogle先生だのみ。専門に書かれている本はないのかな?

◆先ずは環境設定
####環境設定
import os
import sys
import pandas as pd
from sklearn import linear_model

####ディレクトリ設定
os.chdir('C:/*******(ワーキングディレクトリ)*****')


◆データ読み込みと状況確認
prs = pd.read_csv('prostate.csv')
##↓データは以下を使用
##http://www-stat.stanford.edu/~tibs/ElemStatLearn/datasets/prostate.data

####データ状況確認
prs.info()
#
#Int64Index: 97 entries, 0 to 96
#Data columns:
#lcavol 97 non-null values
#lweight 97 non-null values
#age 97 non-null values
#lbph 97 non-null values
#svi 97 non-null values
#lcp 97 non-null values
#gleason 97 non-null values
#pgg45 97 non-null values
#lpsa 97 non-null values
#train 97 non-null values
#dtypes: float64(5), int64(4), object(1)

prs.describe()
#Out[1]:
# lcavol lweight age lbph svi lcp gleason \
#count 97.000000 97.000000 97.000000 97.000000 97.000000 97.000000 97.000000
#mean 1.350010 3.628943 63.865979 0.100356 0.216495 -0.179366 6.752577
#std 1.178625 0.428411 7.445117 1.450807 0.413995 1.398250 0.722134
#min -1.347074 2.374906 41.000000 -1.386294 0.000000 -1.386294 6.000000
#25% 0.512824 3.375880 60.000000 -1.386294 0.000000 -1.386294 6.000000
#50% 1.446919 3.623007 65.000000 0.300105 0.000000 -0.798508 7.000000
#75% 2.127041 3.876396 68.000000 1.558145 0.000000 1.178655 7.000000
#max 3.821004 4.780383 79.000000 2.326302 1.000000 2.904165 9.000000
#
# pgg45 lpsa
#count 97.000000 97.000000
#mean 24.381443 2.478387
#std 28.204035 1.154329
#min 0.000000 -0.430783
#25% 0.000000 1.731656
#50% 15.000000 2.591516
#75% 40.000000 3.056357
#max 100.000000 5.582932 

★".describe()"でRのsummaryと類似出力

◆データ作成
###学習データ
train = prs[prs['train'] == 'T']
###テストデータ
test = prs[prs['train'] == 'F']

###学習データ準備
Y = train.pop('lpsa') #目的変数をセット
X = train.ix[:,:'pgg45'] #説明変数をセット

★列の選択がRとは異なる構文。どうやるのか分からずハマった。google先生に聞いてもそれらしいものを見つけるのに苦労した(^^;
★scikit-learnでは目的変数と説明変数を分けておく必要がある

◆いよいよモデリング
###通常の重回帰
prs_ols = linear_model.LinearRegression()
prs_ols.fit(X, Y)

#係数
prs_ols.coef_
#Out[1]:
#array([ 0.57654319, 0.61402 , -0.01900102, 0.14484808, 0.73720864,
# -0.20632423, -0.02950288, 0.00946516])

#切片
prs_ols.intercept_
#Out[1]: 0.42917013284910865

#列名を付与して表示
df1 = DataFrame(prs_ols.intercept_, index = ['(intercept)'], columns = ['Est Coeff-ols'])
df2 = DataFrame(prs_ols.coef_, index = X, columns = ['Est Coeff-ols'])
pd.concat([df1, df2]) # 縦結合(rbind)

#Out[1]: # Est Coeff-ols
# (intercept) 0.429170
#lcavol 0.564341
#lweight 0.622020
#age -0.021248
#lbph 0.096713
#svi 0.761673
#lcp -0.106051
#gleason 0.049228
#pgg45 0.004458

★RのようにP値や決定係数は出力されないのでしょうか。これだとちょっと使いにくい。Orangeパッケージの方がいいのかな。まだまだ勉強が足りないな~。
★RみたいなPredict関数はあるようだが、なんだかうまくいかなかった。これも宿題。

◆参考サイト
Python:リッジ回帰
http://blog.livedoor.jp/norikazu197768/archives/14995354.html

入門機械学習[O'Reilly]をさらっと読んでみた! [データマイニング]


入門 機械学習

入門 機械学習

  • 作者: Drew Conway
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/12/22
  • メディア: 大型本



新しい機械学習の本がオライリーから出版された。
"Machine Learning for Hackers"という洋書の邦訳である。

内容は機械学習の代表的なアルゴリズムをRで実行して試そうというもの。邦題にあるように「入門」という文字が適しているように思われる。初学者はサンプルコードを実行することで各アルゴリズムの特徴を掴むことができるだろう。リッジ回帰などの正則化についても言及されており、最近のトレンドが盛り込まれている。

そして、可視化に美麗なggplot2を使っているところも特徴である。ggplot2では多様なビジュアル表現が可能であり、筆者もデータの理解や結果の解釈をする際に重宝している。ただ、本書は白黒なのでカラーでその表現の美しさを実感できないのが残念。いくつものWebサイトでggplot2について紹介されているので適宜参照しながら読み進めるのがよいだろう。

本書ではRコードは示されているが、関数の中身(アルゴリズムの仕組み)についてはあまり詳しく言及されていない。当然、数式もない。アルゴリズムのコードを学習したい場合には「集合知プログラミング」(参考図書①)が参考になる。同書にはPythonのサンプルコードが記述されている。また、数式を追いたい場合には「パターン認識と機械学習」(参考図書②)や"The Elements of Statistical Learning"(参考図書③)を読み進めるとより理解が深まるのではないだろうか。

ちなみに、私はコツコツと③でLASSOについて勉強しているところである・・・。③はLASSOの考案者である"Robert Tibshirani"が著者の1人であるため、リッジ回帰やLASSOなどの正則化がらみの勉強には最適ではないかと思っている。


◆参考図書
①集合知プログラミング

集合知プログラミング

集合知プログラミング

  • 作者: Toby Segaran
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/07/25
  • メディア: 大型本



②パターン認識と機械学習

パターン認識と機械学習 上

パターン認識と機械学習 上

  • 作者: C.M. ビショップ
  • 出版社/メーカー: 丸善出版
  • 発売日: 2012/04/05
  • メディア: 単行本(ソフトカバー)



③The Elements of Statistical Learning

The Elements of Statistical Learning: Data Mining, Inference, and Prediction (Springer Series in Statistics)

The Elements of Statistical Learning: Data Mining, Inference, and Prediction (Springer Series in Statistics)

  • 作者: Trevor Hastie
  • 出版社/メーカー: Springer-Verlag
  • 発売日: 2009/03
  • メディア: ハードカバー








Pythonでデータ解析[Pandas] -その1- [データマイニング]

PythonでRみたいにデータ解析を行える「Pandas」というパッケージがある。
RでできることをなぜPythonでやらないといけないのかと疑問に思っていたけれど、参考文献①(後述)を読んで少し理解できた。データ分析とモデル実装を同じ言語で実現したいということが大きな理由らしい。

rpy2というPythonパッケージでRを呼び出すこともできることからRの膨大な資産も使えてしまうのかもしれない。 これは将来有望!と思い早速試してみることにした。

先ずは環境構築から。

■開発環境
・Eclipse + Pydev
-Eclipseには様々な機能があるので使いやすいであろうと思ったためこれを選択
-Python用のIDEとしてはPyScripter等もあるので好みのものを使うべし
-参考サイト
  http://www.brainchild.co.jp/blog/develop/2010/08/python-eclipse1.html


■コンソール実行
・選択部分の実行
-データ分析を行っているとこの機能がポイント
-Rstudioでは「Ctrl + Enter」で選択範囲を実行できるが、Eclipse + Pydevでもこの機能がある
-いろいろ検索してようやく発見!答えは「Ctrl + Alt + Enter」でした!



image006.png


■参考文献
・参考文献① - Pandasの解説書

Python for Data Analysis

Python for Data Analysis

  • 作者: Wes Mckinney
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2012/10/22
  • メディア: ペーパーバック



・参考文献② - Pythonで機械学習入門

集合知プログラミング

集合知プログラミング

  • 作者: Toby Segaran
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/07/25
  • メディア: 大型本



ビッグデータというバズワード [データマイニング]


ビッグデータビジネスの時代 堅実にイノベーションを生み出すポスト・クラウドの戦略

ビッグデータビジネスの時代 堅実にイノベーションを生み出すポスト・クラウドの戦略

  • 作者: 鈴木 良介
  • 出版社/メーカー: 翔泳社
  • 発売日: 2011/11/09
  • メディア: 単行本(ソフトカバー)



ビッグデータという言葉がバズワードになっている。

ITは数年に一度はバブルみたいな現象が見られる。ビッグデータもバブルの一種というのが私の見方だ。HadoopやNettezaなどの基盤の需要が一時は増えるが、データ活用の困難さから少し先にはやや盛り下がるのではないだろうか。

データを本格的に活用可能な状態に仕上げていくには長期的な展望が必要である。Hadoopというのもバズワードになってきている。Hadoopがあれば何でもできるようになるというような印象を受ける。しかし、Hadoopは単なるインフラだ。活用するビジョンがあって初めて有効に機能するのである。

ビジネスビジョンが最も重要である。そのもとに最新技術は再構成され威力を発揮する。技術から発想するのでもよいが、出口はかならずサービス(=人に価値を与えるもの)である。データ資産があるならば次の視点から思考してみて答えをみるけるのがいいのではないだろうか。

①今できることは何か?
現状のデータ資産で何ができるか?
②今やるべきことは何か?
外部環境を考えると今の使命は何だろうか?
③将来実現したいことは何か?
将来やりたいビジネスを実行するにはどんなデータが(又は処理が)必要か?

いきなりビッグデータでは敷居が高い。今あるデータ資産を最大限活用することから始めるべきだろう。そのような活動から中長期なビジョンを生み出されるのではないだろうか。ベンダーの軽い口車には乗って安易にHadoopを入れるというのでは足元をすくわれる。スモールデータの活用という足場を固めた上で、ビッグデータ技術が必要ならば戦略的に準備を進めることが重要だ。

ソーシャルマイニング [データマイニング]


入門 ソーシャルデータ ―データマイニング、分析、可視化のテクニック

入門 ソーシャルデータ ―データマイニング、分析、可視化のテクニック

  • 作者: Matthew A. Russell
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2011/11/26
  • メディア: 大型本



オライリーからソーシャルデータのマイニングに関する本が出た。「集合知プログラミング」の後継という位置づけである。本書は既に英語版が1年前に出版されていた。やっぱり日本語になるのを待つと先端からだいぶ遅れてしまうのだと思う。

「集合知プログラミング」が機械学習や最適化理論の入門書だとすれば、こちらはソーシャル"データ"の入門書になる。TwitterやFacebookなどのAPIを活用してソーシャルデータを如何に扱うかが主題である。英語版のタイトルが「Mining the Social Web」だが日本語タイトルの方が的を得ていると思う。

ちなみに言語は「集合知プログラミング」と同様にPythonだ。Pythonの和書は少ないが他の言語をマスターした人なら、Pythonの習得にはそれほど時間はかからない。好みにもよると思うが、一度、使い始めてみるとわりと気に入ってしまった。少なくとも記述が面倒くさいJavaなんかよりもずっといいと思った。こういうとこが分析屋気質なんだろうと思う。

これからのデータマイナーは「ソーシャル」なものの考え方が必須になると思う。人間のコミュニケーションや行動がソーシャルWebによって大きく変化すると予想されるからだ。本書は人間行動の分析ツールの引出しを増やすにはもってこいの本だと思う。

集合知プログラミング [データマイニング]


集合知プログラミング

集合知プログラミング

  • 作者: Toby Segaran
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/07/25
  • メディア: 大型本



この本を読み始めた。Pythonと機械学習アルゴリズムの基礎を学ぶのに適している。この本のよいところはアルゴリズムの実装を学べるだけでなく、Facebook APIの使い方なんかも記載されており、具体的にWeb APIの利用法も体得することができることだろうと思う。まさに「集合知」的なパーツに溢れていて興味がつきない。

残念なのは誤記が多いところであるが、これは心配ない。ネット上に誤記の訂正について書かれたサイト(『集合知プログラミング』解体新書 http://sites.google.com/site/prgclctintelligence/)が存在している。いや、エライ人もいるもんだ。こういう人がいるから勉強意欲が続くというものである。

数式があまり登場しないので、数式がないとピンとこない人は以下の本を同時に読むといいだろう。どちらも優れている本ではあるが、日本語で読める「パターン認識と機械学習」の方がとっつきやすいと思う。"The Elements of Statistical Learning"の方は世界の有名どころが書いた本で、先進的な手法についてももれなく記述されている。持っていて損はないであろう。


パターン認識と機械学習 上 - ベイズ理論による統計的予測

パターン認識と機械学習 上 - ベイズ理論による統計的予測

  • 作者: C. M. ビショップ
  • 出版社/メーカー: シュプリンガー・ジャパン株式会社
  • 発売日: 2007/12/10
  • メディア: 単行本


パターン認識と機械学習 下 - ベイズ理論による統計的予測

パターン認識と機械学習 下 - ベイズ理論による統計的予測

  • 作者: C. M. ビショップ
  • 出版社/メーカー: シュプリンガー・ジャパン株式会社
  • 発売日: 2008/07/11
  • メディア: 単行本



The Elements of Statistical Learning: Data Mining, Inference, and Prediction (Springer Series in Statistics)

The Elements of Statistical Learning: Data Mining, Inference, and Prediction (Springer Series in Statistics)

  • 作者: Trevor Hastie
  • 出版社/メーカー: Springer-Verlag
  • 発売日: 2009/03
  • メディア: ハードカバー




ベイズ統計学とベイジアンネットワーク [データマイニング]


ベイズ統計学入門

ベイズ統計学入門

  • 作者: 渡部 洋
  • 出版社/メーカー: 福村出版
  • 発売日: 1999/09
  • メディア: 単行本



【Bayes network GUI @Weka】
image002.jpg

ベイズ統計学とベイジアンネットワークの勉強を同時並行で進めている。↑の基本書を読みながらベイジアンネットワークの論文をJSTAGEで漁り理解を深め、WekaのBayesNetというフリーツールでデータをいじって理解するというスタイル。

ベイジアンネットは変数間の構造がグラフィカルに表示されることにより直感的に理解しやすいモデルが導出される。更に正規性の仮定が不要というのも大きな強み。同じグラフィカルモデリングで言えば、SEM(構造方程式モデリング)がよく知られているが、SEMは正規性の仮定があるのでモデリングを行う際には注意を要する。

ところで、WekaのBayesNetはとても使いやすい。Rにも"deal"というベイジアンネットのパッケージがあるが、特有の敷居の高さがあってなかなか身に着けることが難しいが、Wekaの場合にはクリックベースで簡単にモデリングができてしまう。重宝すべきツールであろう。国産のツールにBAYONETというものがあるが、こちらは数十万円もする高額ソフトウェアなので、購入する前にいろいろやりたい場合にはWekaはとてもいい。

というわけで、Wekaを使えばいろいろなデータで遊べるのでもうちょっといじって機能を理解したら、業務で使っているデータにアプライしてみようと思う。変数間の関係が可視化されれば、クライアントの担当者のアクションに影響を与える知識を抽出できるかもしれない。

【参考】
・BayesNet@Weka
http://weka.sourceforge.net/manuals/weka.bn.pdf

【関連書籍】

ベイジアンネットワーク技術 ユーザ・顧客のモデル化と不確実性推論

ベイジアンネットワーク技術 ユーザ・顧客のモデル化と不確実性推論

  • 作者: 本村 陽一
  • 出版社/メーカー: 東京電機大学出版局
  • 発売日: 2006/07/20
  • メディア: 単行本





ベイジアンネットワークの統計的推論の数理

ベイジアンネットワークの統計的推論の数理

  • 作者: 田中和之
  • 出版社/メーカー: コロナ社
  • 発売日: 2009/10/13
  • メディア: 単行本(ソフトカバー)





ベイジアンネットワーク概説

ベイジアンネットワーク概説

  • 作者: 繁桝 算男
  • 出版社/メーカー: 培風館
  • 発売日: 2006/07
  • メディア: 単行本





ベイジアンネットワーク入門―確率的知識情報処理の基礎

ベイジアンネットワーク入門―確率的知識情報処理の基礎

  • 作者: 鈴木 譲
  • 出版社/メーカー: 培風館
  • 発売日: 2009/07
  • メディア: 単行本



SASでR! [データマイニング]


Rグラフィックス ―Rで思いどおりのグラフを作図するために―

Rグラフィックス ―Rで思いどおりのグラフを作図するために―

  • 作者: Paul Murrell
  • 出版社/メーカー: 共立出版
  • 発売日: 2009/10/22
  • メディア: 単行本



SASやSPSSでRを操作する環境が整ってきたようだ。Wikipedia(参考(1)の情報によれば、「新たな統計手法はたいていの場合まっさきにR言語上で実装されるという現状をふまえSASユーザーの要望に応えてインタフェースの提供を行う」とのこと。

リーディングカンパニーのSASもRを無視できない状況になったということだろうか。ここまで、Rの機能が優れたものになってきた現状を踏まえるとSASが優位性を保つには難しいのではないだろうか。B to Bで利益を上げていくのも限界も向かえそうだが・・・。

今のところデータ操作はSASの方がやりやすいから、以下のような使い分けは出来るんだろうと思う。Rは圧倒的なグラフィック機能を使うのが良いのだろう。

・SAS ⇒ データ操作
・R ⇒ モデリング or 作図

SASとR間でのデータ互換もスムーズになってきているので、ニーズに応じてツールを使い分ける。データマイニングのツールBOXは四次元ポケットのごとき様相を呈している。使いこなせるかどうかはアナリストの力量次第だ。

こういうツールの使い分けって重要。性格を理解していないと使い分けることができないからだ。ちなみに、サーチャー時代には複数のシステムを用途に応じて使い分けた。「STN⇒科学技術情報検索」、「Dialog⇒ビジネス情報検索」と言った具合にだ。データアナリストとしての今はSASとRの使い分け方を模索。よい職人はよい道具を選ぶものである。

■参考
(1)Wikipedia-R言語
http://ja.wikipedia.org/wiki/R%E8%A8%80%E8%AA%9E
(2)SASでRを操る方法
http://cwoweb2.bai.ne.jp/~jgb11101/files/R_SAS_to_R.pdf

ベイズ、ニーチェ、ゲーデル [データマイニング]


道具としてのベイズ統計

道具としてのベイズ統計

  • 作者: 涌井 良幸
  • 出版社/メーカー: 日本実業出版社
  • 発売日: 2009/11/19
  • メディア: 単行本(ソフトカバー)



<レビュー:★★★★☆(4)>

本日読了。なかなか良い本だった。ベイズの定理からMCMCまでをカバーしており初心者でも無理なくベイズ統計の要点を理解することができるだろう。

それもそのはず。筆者の涌井良幸氏は高校の先生である。どおりで早稲田の入試問題なんかが出てくるわけである。ベイズの定理を使えば難関大学の入試問題もあっという間に解けてしまうことを例示しているところが本書の面白いところである。

さて、小生はこれまでベイズに関する書籍をこの本も含めて4冊購入した。戦績は<挫折:1、未読:1、読了:2>である。というわけで、この本は最後まで読むことができた2冊目であり、おそらく小生が読んだ中で最も分かりやすい本だった。オススメである。良かった点は以下のとおり。

<良かった点>
・数式が易しい
・Excelでの計算例があり処理イメージが掴める
・最後に簡単なデータでモデリングの実例がある

反対にもう一歩というところもあった。★が1つ足りないのは以下の点がイマイチだったから。

<イマイチな点>
・Excelデータをダウンロードできない
・モデリングの実例が少ない
・頻度主義の統計学によるモデリングとの比較がない
(なので、どれだけベイズが優れているかがわからない)
・現状のベイズの限界を示していない

そんなところか。あと、以下の記述が面白かった。

『頻度主義による推定法で調べてみます・・・(中略)・・注意すべきことは、真の母平均μは「神様がちゃんと知っている」と仮定していることです。・・・(中略)・・伝統的な統計学の教科書に掲載されている推定法で仮定した「神様」を、ベイズ統計は必要としませんベイズ統計はデータから得られた情報のみを素直に理論に取り込むのです。』


なるほど。面白い考え方。ところで、以下のサイト(1)によれば、ベイズ統計学の生みの親であるトーマス・ベイズは神の存在証明を試みたのだそうだ。だとすれば、神の存在を証明しようとしていたベイズ自身が神を必要としない理論体系の礎を作ったことになる。パラドックスだ。これはベイズが意図したものなのだろうか。それとも、ベイズはそこまで意図したわけではなく後世の数学者達が見つけ出したことなのだろうか。

そんなところにも小生の興味はあったりする。

■参考
(1)グーグル、インテル、MSが注目するベイズ理論
http://japan.cnet.com/special/story/0,2000056049,20052855,00.htm

(2)Introduction to Bayesian Analysis Procedures
http://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/introbayes_toc.htm

Rグラフィックス自由自在 [データマイニング]


Rグラフィックス自由自在

Rグラフィックス自由自在

  • 作者: D.ショーカー
  • 出版社/メーカー: シュプリンガー・ジャパン株式会社
  • 発売日: 2009/12/10
  • メディア: 単行本(ソフトカバー)



新しい「R」に関する和書が出た。こういう類の本は洋書以外に殆どない。シュプリンガーの本は若干高額だが本格的な内容なのでこの本も期待できることだろう。石田基広先生はテキストマイニングを専門としており、「情報の視覚化」に興味があるので、このような本を翻訳したのだろうと推測する。

知財分野のRと言えば花王の安藤俊幸さんが嚆矢となるだろうが、その後あまり適用が進んでいない。Rの技術を体得して様々な「情報の視覚化」や「モデリング」方法に関心がある人が増えて闊達な議論を行える環境になることが理想だ。Rは無料なのですぐに導入できる。データと基本的なコマンドさえ覚えてしまえばあとは試行錯誤のみ。TipsはWeb上に転がっている。統計・マイニングアルゴリズムを自在に試すことができるのだ。

プログラミングの習得と同じように大変なのは初めだけだ。勇気を出してRをとりあえず動かしてみることを強く勧める。

■参考
・Rの情報交換サイト「RjpWiki」(インストールから活用方法まで幅広く紹介されている)
http://www.okada.jp.org/RWiki/

・安藤 俊幸. “テキストマイニングと統計解析言語Rによる特許情報の可視化”. 情報管理. Vol. 52, No. 1, (2009), 20-31 .
http://www.jstage.jst.go.jp/article/johokanri/52/1/20/_pdf/-char/ja/
前の10件 | - データマイニング ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。