PRMLを眺めた
- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー: 丸善出版
- 発売日: 2012/04/05
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 33回
- この商品を含むブログ (18件) を見る
- 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
- 出版社/メーカー: 丸善出版
- 発売日: 2012/02/29
- メディア: 単行本
- 購入: 6人 クリック: 14回
- この商品を含むブログを見る
読んだというのもおこがましい雑な読み方をしたので「眺めた」。数式も全く追ってません(キリッ)。
言い訳としては、長年積ん読書として降臨していたのでいい加減片付けたかった。
感想としては、この本手を広げすぎじゃないかというのと、文章が無用に難解じゃないかなあという感じ。知っていることの解説は雑で、知らないことの説明はこれじゃわかんねぇよ…って思った。全体を俯瞰するための教科書だとまえがきで言っているので個々の分野についてはそれぞれの専門書を当たったほうがよいと思う。あと10年前の本です。
CNN, SVMの話をしてたかと思ったらOrnstein-Uhlenbeck過程とかARMAとかMCMCとかカルマンフィルターとかviterbi復号法とか言い始めるのなんなん…
はい僕の理解力が低いだけですすいません。
でもPRMLに限らない話として、俯瞰的な用途の教科書をやたら精読する風潮はどうかなあと思う。
(自分の見解に自信がない時はフォローしてる中から評判とかtwitter検索かけるようにしてるのですが大体見解自体は正しそう)
"Learning scikit-learn: Machine Learning in Python" を読んだ
- 作者: Raul Garreta,Guillermo Moncecchi
- 出版社/メーカー: Packt Publishing
- 発売日: 2013/11/25
- メディア: ペーパーバック
- この商品を含むブログを見る
"Python for Data Analysis"を読んだ
- 作者: Wes Mckinney
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2012/10/29
- メディア: ペーパーバック
- この商品を含むブログ (6件) を見る
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (12件) を見る
タイトルだけ見るとnumpyの本なのかと思うが、作者はpandasの中の人で、ほぼほぼpandasの本。
最近ぼちぼちpandasを使ったブツを開発しているのだが、自分が全然numpyもpandasも理解していないまま使っていたという事がわかった…
pandasユーザー必読。それだけでなく、多分pandasとか使えると普通にありとあらゆるタスクに役立つはずなのでみんな読んだほうがいいっす。
「深層学習 (機械学習プロフェッショナルシリーズ)」を読んだ
- 作者: 岡谷貴之
- 出版社/メーカー: 講談社
- 発売日: 2015/04/08
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (10件) を見る
長年よく分かってないまま、なんとなくA君やT君の話にウンウンなるほど〜〜〜とか言ってたのを大いに恥じています。
"High-Frequency Trading" by Irene Aldridgeを読んだ
- 作者: Irene Aldridge
- 出版社/メーカー: Wiley
- 発売日: 2013/04/22
- メディア: ハードカバー
- この商品を含むブログを見る
さすがに全編ちゃんとは読めてないです…
1冊で全てをカバーするという訳ではないけれども参考文献がものすごい数しっかりと明示されているし、ここをきっかけにいろいろ調べるとっかかりがつかめて良い本だと思う。なんか米Amazonのレビューだと酷評されてるけど…
ただ如何せん読みやすい本ではないというか早足なので、個々の分野についてはそれ専門の本をしっかり読んだほうがよさそう。
「データサイエンティスト養成読本 機械学習入門編」を読んだ
データサイエンティスト養成読本 機械学習入門編 (Software Design plus)
- 作者: 比戸将平,馬場雪乃,里洋平,戸嶋龍哉,得居誠也,福島真太朗,加藤公一,関喜史,阿部厳,熊崎宏樹
- 出版社/メーカー: 技術評論社
- 発売日: 2015/09/10
- メディア: 大型本
- この商品を含むブログ (7件) を見る
ツールの具体例が多く挙げられており、またコードを交えた実例が多いのが良かった。
よくわかるKMP
vector<int> Build(const string& s) { vector<int> fail(s.size() + 1); int j = -1; fail[0] = -1; for (int i = 0; i < s.size(); ++i) { while (j >= 0 && s[i] != s[j]) j = fail[j]; ++j; fail[i + 1] = j; } return fail; } void Match(const string& needle, const string& haystack, vector<int> *matches) { const vector<int> fail = Build(needle); matches->clear(); int j_needle = 0; for (int i_haystack = 0; i_haystack < haystack.size(); ++i_haystack) { while (j_needle >= 0 && needle[j_needle] != haystack[i_haystack]) j_needle = fail[j_needle]; ++j_needle; if (j_needle >= needle.size()) { matches->push_back(i_haystack - j_needle + 1); j_needle = fail[j_needle]; } } }
fail配列というのを作るのがミソ。
fail配列というのは、その時点までで入力された文字列(のsuffix)と、needleのprefixが何文字一致するかというオートマトン(pattern matching automaton)を配列の形で表現したものである。
つまり1. two pointersっぽいアルゴリズムでfail配列を構築するBuildと、と 2. それを使って効率的にneedleのポインタを移動させつつhaystackとのマッチングを行うMatchからKMPのアルゴリズムは成る。
1.のBuildについてはneedleの任意地点についてneedle自身の先頭とのマッチングを線形に取っているという風にも見ることができる。したがって、例えば文字列の周期をneedle.size() - fail.back()で取るなどの用途にも使える(例: needle = "abcabc" => needle.size() - fail.back() = 3 なぜならば"abc" x 2)。
空間計算量と構築はO(|needle|)分だけ食うが検索がO(|haystack| + |needle|)になる。