大学生 → 社会人の雑記

統計学や機械学習について気紛れにメモメモするブログです。ゆるふわな感じでやっています。

統計的学習の基礎を読んだよっていう記録

本当は今年中に読み終わればいいなと思っていた、カステラ本こと『統計的学習の基礎』を読み終えたので、記録しておこうと思います。




カステラ本やるべき?


この記事に辿り着いた人はこれが1番気になるんじゃないですかね?安直に言ってしまえばやるべきだと思います。


何がいいって、まず基本的なことは一通り載っている点です。これは当たり前のようで、とてもありがたいことです。機械学習やりたいんだけど、何やればいいかな?という漠然とした要求に答えてるのこの本ぐらいじゃないかなーと思います。

一通り読んだあとには辞書になるという点も◎です。


また、ストーリー立てがとてもわかりやすいです。基本的に統計学の観点をモチベーションにして話が展開されていくのですが、なんでこの考えに至ったのか、そこからどう話が発展するのか等が綺麗に書いてあります。

例えばAdaboostから勾配boostingに至る流れは鮮やかですし、バギングからランダムフォレストへの展開も「すげえ!」となりました。

さらに各章の後半では、問題提起や疑問をいだきそうな点への考察もされており、読み応えがあります。


ほんでもって参考文献は説明付で列挙されており、とても充実しています。もう少し説明が欲しい時に文献を探す手間を和らげてくれます。


そしてなんと言ってもデータへの適応例がとても詳しく載っています。


他に良い点を挙げるのであれば、教師無し学習が他の本よりもかなり詳しい点ですかね。網羅的な参考書で教師無し学習を詳しく書いてあるものをあまり知らないので。


また、個人的にはアンサンブル学習と正則化、それと汎化性能についてとても詳しい&スムーズな理解がしやすいという印象を受けました。
汎化の話は少し読みづらかったかも。でも詳しかったです。

アンサンブル学習や正則化なんかの基礎を勉強するという目的だけだったとしても、この本はとても役に立つと思います。


一度読んでしまえばあとは辞書のように使っていけます。分析していて気になったところの大抵はこの本に載っていますし、大抵じゃないところは論文かその分野に特化した本にしか載っていないです。


ここからが本編です(私の記録)


基本的には1週間に1章という感じで勉強していきました。

なぜこんなにも早く読み終えたか(想定よりも早いという意味です)というと、1日の勉強時間が思っていたよりも大幅に多くなったからですね。
1日2,3時間と考えていたのですが、だいたい6,7時間は使っていたような...
4年生って素晴らしい!時間がたっぷりある!!

まあ数時間は他のことを勉強していたのでこれが限度でしょうね。研究や授業に影響が出ているわけでもないので善戦したと言っていいでしょう。


さて、各章について具体的に触れることはここでは避けますが、勉強するにあたって良かったことや困ったことをまとめます。




1.なぜ『統計的学習の基礎』で勉強したのか

まず初めに何故『統計的学習の基礎』を選んだかという話をします。特別なことは何もないです。

機械学習を勉強するみなさんは、恐らく私と同じように「機械学習 参考書」や「機械学習 本」等でググると思います。するとどこもかしこも「はじぱた」や「統計的学習の基礎」を取り上げていると思います。そして

mark-n.hatenablog.com

ここでもデータサイエンティストになるために必要な知識を取り上げましたが、やはり統計的学習の基礎が挙げられています。指導教員にも機械学習を何で勉強したらいいか相談したところ、ここでも統計的学習の基礎を勧められました。

そこまでみんなが言うのであれば、ほぼ間違いないだろうということでこの本に手をつけました。





2.必要な数学のレベル

■追記:勉強した時に行間を埋めたものを作りました。カステラ本はPRMLと違ってあまりこういうのがないので、現在読み進めている方の参考になれば幸いです。

sites.google.com


さてさて、これについてはどの程度必要かという問に答えるのは難しいので、読み始めた頃の私のレベルを書きますね。

微積線形代数、確率、統計どれも一般的な理系(非数学科)が1年時に習う程度です。しかも完全に使いこなせているわけではなく、これらの話が出てきた時に何を言っているのかがわかる、そしてある程度の間違いには気が付くレベルです。



このレベルでやってみた感想は、正直言って結構つらかったです。ですが、良い復習になりましたし、何よりツラかったとは言いつつも無理というわけでもありませんでした。頑張れば読めるレベルです。


この本において数式は突然不思議な形に変形しますし、事実は事実だからあああああと言わんばかりに突然登場したりします。もちろんわかる人には簡単な話なのかもしれません。それぐらい知ってろよ、という話なのかもしれません。とはいっても初めて見るとなんじゃこれはああああああとなります。

もちろんページ数に限りがありますし、冗長に書きすぎても理解の妨げになりかねないので、数式の変形や事実の証明などを載せるのは実際問題不可能or不適切だとはわかっています。


そんなこと言っても気になるもんは気になりますし、せっかく勉強しているのだから納得して進めたいですよね。

数学が得意な人であれば、基礎がかなりしっかりとしていると思うので巧みに導出したり、証明したりすることに対してあまり苦労することはないかもしれません。一方で議論が厳密ではないため、数学科好きの人はこの本をあまり好まないかもしれません。まあ私は数学科ではないので、この辺りの感覚のことはよくわかりませんが…

かくいう私の場合は上にも書きましたが、経営システム工学科ということで、数学といえば線形代数と簡単な微積分、いわゆる理系教養程度の数学しか習ったことがありません(確率論や統計学,OR等はやりますが…)。

ということは知らない知識が出てきた場合にそれを新しく勉強する必要があり、体系的に学べているわけでもないので決して良いとはいえない効率の下で基本知識を詰めていくことになります。

これはなかなかキツい作業(?)でしたね。習っていたとしても覚えているとは限りませんしね。例えば行列の微分とかはほとんど扱ったことがなかったので、慣れるまでかなり苦労しました。

しかし、これを読み終えた頃には俗に言う「機械学習に必要な数学」とやらが身に付いていることになると思います。

もちろん体系的に事前知識として学べていればベストなのですが、人それぞれ異なる事情がありますし、まあ使っていく上では問題ないでしょう。





3.勉強していて困ったこと

上にも書きましたが数学的(算数的?)な話がなかなかツラかったです。
必要なことが最小限に書かれているため納得せずにとりあえずで進むと、わからないことが瞬く間に蓄積してすぐに何もわからなくなります。
逆にいえばそこらへんをしっかりと押さえておけば、本のタイトル通り統計的学習の基礎が身につくわけです。


例えば1章だか2章だかで、次元の呪いの話として

原点を中心とするp次元超球内に一様に分布するN個のデータのうち、原点に最も近い点と原点の距離をrとします。このrの中央値は(1-(\frac{1}{2})^{1/N})^\frac{1}{p}

というような話が世の中の常識だといわんばかりに出てくるのですが、常識もなく頭も残念な僕はこれの導出に苦労したりしました。

他にも例えばブースティングの話で「前向き段階的加法的モデリングの損失関数を指数損失にすることでAdaBoost.M1と等価になる」というのがどうもしっくりこなかったため、Friedman(2000)を読んでみたりと常識(?)になかなか時間を食われました。


ところで、Friedman(2000)を読んだと書きましたが、この本に参考文献として取り上げられている論文はどれも非常に読みやすいです。
是非一読してみるといいと思います。論文を読む練習にもなるかも。
(たしかこの論文はFriedman,Hastie,Tibshiraniと有名人のオンパレードだった気がする)

ここで私はその辺にいる大学生となんら変わらないということを忘れないでください。というのもたかが機械学習の本を1冊読むのにやれ論文だのやれ数学がどうだのって偉そうなことを書いていて、如何にもスゴそうなことを書いているような感じがするからです(僕がカステラ本を読むか悩んでる時に見たらちょっとした引くなと思っただけですが…)。

実際私は数学が得意でもなければ英語も得意ではないですし、論文は当然英語で書かれているので読みやすいと言っても、HAHAHAHAHAなんて読みやすいんだ!!というわけではなく他の論文に比べて読みやすいなーというレベルです。

逆にいえば、これから論文を読んでバリバリやっていきたいという人は、まずこの本に挙げられている論文を読んでみると、いい練習になるかもしれません。





4.勉強していてお世話になったもの

まずは卒研生ということで指導教員には大変お世話になりました。(今もなっていますが。)

とはいうものの先生もかなり忙しい方ですので、あまり質問に行く機会は多くなかったです。どうしても自力で解決できないところを質問にいってました。

では自力で勉強する上で何にお世話になったかというと、主に次にあげるものです。


slideshare

→これはとりあえず調べてみると出てきます。おそらく勉強会か何かで使ったものと思われます。
 
 最初の方は非常にたくさんヒットするのですが、章が進むにつれてほとんど出てこなくなります。みんな討ち死にしてしまったのかな...

 また内容を写している物だけというのが多く、良いスライドに巡り合えることはあまり多くないかも(この点はPRMLの方がいい)。



PRML

→正直言って統計的学習の基礎よりも読みやすいと思います(そういう章だけをたまたま読んだからかもしれませんが…)。

PRML読んだ後の追記:カステラ本の方が全然読みやすかった…


 同じ内容のものはこちらにも目を通して理解を深めようと試みました。実際にそれで深まったかは謎です。ただ、PRMLは基本的にはベイベイベイズなのでそこには留意しておく必要があるかも。


・参考文献に挙がっている論文(説明は上に書いたので略)


・その他参考書

→研究室においてある本や自分が持っている本ですね。これも説明は不要でしょう。
 
 



5.感想

全体がなんだかまとまりを失っていっているのでこのあたりで締めます。

いやー実際結構きつかった。1冊目にやる本だったのかとか聞かれるととても複雑な気持ちになります。


でも勉強を一通りやった感想は、やはり機械学習の基礎になる部分は身に付いたのかなという感じです。論文とかもある程度読めるようになったしね。

実際に何を持って基礎と言っているのかよくわかりませんが、後半に行くにつれて勉強のペースが上がっていきましたし、躓くことも減ったので基礎ができてるんじゃないかな~と安直ながらそう感じた次第です。

さて、このあと何を勉強するかまだ決めていませんが何かしらの勉強をすると思います。

巷で言われているほど難書ではなかったしPRMLかなぁ。。。

統計を勉強し始めてから1年が経ちました

厳密にというわけではなく、学校の授業等でではなく、自分で勉強し始めてから4月で1年が経ちました。

ここで1年間何をしていたかふりかえってみたいとおもいます。




【〜6月中旬】

とりあえず統計学に興味を持ち、勉強し始めたものの何をしていいのかわからない状態にありました。

統計検定2級は少し勉強すれば合格しそうだし、ちょうど準1級が6月にあるらしいということで、とりあえず申し込んでいました。

これは失敗だった。範囲がめちゃくちゃ広い。
なくせに内容は結構浅い…
結局1つの分野を勉強するのに教科書を1冊読むハメになります。証明などはすっ飛ばし、概要をひたすらに取り込む作業です。

学校の実験や課題も山のようにあったので時間を確保しにくい中、モヤモヤが爆発しそうになりながらとりあえず全体を網羅的に把握することに努めました。

当然落ちたのですが、意外と点数は高かったです(自己採)。

得られたものは網羅的な水溜りぐらいに浅い知識だけ。
無駄に用語やアルゴリズムの名前が覚えられたのでgoogle先生に質問するのにはめっぽう強くなりました。



【この時期に使った本】

史上最強図解 これならわかる!ベイズ統計学

史上最強図解 これならわかる!ベイズ統計学

割と有名な涌井さんの本です。ベイズについて全くの初心者が、入門以前に門の前に立つのには最適な1冊だと思います。多少誤植や誤りもありますが、「ああ、ちょっと間違ってるわ」ぐらいでサクサク読み進めるのがおすすめです。数理的な理解や厳密な議論は他の本で頑張りましょう。
繰り返しますが、ベイズの雰囲気を掴むのにはいい本です。



弱点克服大学生の確率・統計

弱点克服大学生の確率・統計

アクチュアリー等で有名な藤田先生の本です。基本的に統計の本という感じではなく、メインは確率の本です。勉強する時はいつも傍らに置いています。
受験数学で勉強してきた日本人には、ものすごく取りかかりやすい本だと思います。これで一通りに分布と確率に関する考え方と問題の解き方が学べます。全部(後半の保険数理や金融工学をぬいても)やるのにはやや時間を食うと思いますが、1冊やりきれば相当力がつくことは確かです。



日本統計学会公式認定 統計検定 1級・準1級 公式問題集[2016〜2017年]

日本統計学会公式認定 統計検定 1級・準1級 公式問題集[2016〜2017年]

統計検定準1級を受けたので...
この時期は正直なところグーグルで検索することに頼っていました。統計検定の範囲が広過ぎたので全部の教科書を買うのがきつかったからです。
ただ、こういう勉強の仕方はあまりお勧めできないですね。幅広い知識が身につくことはメリットなのですが、詳細が理解できずモヤモヤが止まりませんでした。インターネットに重きを置いた勉強はしっかりと基本が身についてからがいいと思います。





【8〜9月】

7月はテストや授業の最終レポート等もあったので少しお休みしました。夏休みはアルバイトが塾講師のため夏期講習が14日あり、インターンにも1,2,3,6,と4社に合計12日参加、旅行にも2回行きましたので実質勉強していたのはそうでもないかも。

この2ヶ月は『自然科学の統計学』の『線形モデル』について勉強していました。これが本格的に勉強し始めた最初といってもいいと思います。

線形代数の授業はテストを乗り切っただけだったので(つまりは日本全国の理系大学生の大半と同じぐらいの実力)この章には相当苦労しました。なんせ固有値の出し方は忘れたし、核や像もわからないし、そもそも線形ってなんだよの状態でしたので…


ただ、大学の授業で回帰についてはRでよく扱っていたので、やりたいことがわかっていた分まだマシだったかもしれません。



【この時期に使った本】

自然科学の統計学 (基礎統計学)

自然科学の統計学 (基礎統計学)

東大出版の所謂『青本』です。説明がわかりやすく、統計学に本格的な入門をするにはいい1冊だと思います。
特に「重回帰とかをいつも使っているけど、中身はよくわかっていないんだよね」という人が線形モデルに入門する際には、是非ともお勧めしたいです。



教養の線形代数

教養の線形代数

千葉大線形代数の教科書にしているものです。幼馴染が千葉大なので頂いてきました。自分の大学の線形代数の教科書は恐ろしくわかりにくかったため、ものすごく読みやすく感じました。
線形代数は、線形モデルを理解する際に必須で(線形っていうぐらいですしねぇ...)先述したように、青本で線形モデルを勉強していた際に、行列がでてきて「こりゃ、勉強し直さないとダメだぁ」ということで1から勉強し直しました。
授業でやった時は、1年かけてよくわからなかったのに、自分で復習してみると2週間ほどで終わりました。
なにをあんなに難しく感じていたんだろうか...
とはいうものの、やはり行列の演算には慣れていない部分が多く、瞬時に頭に浮かばないことばかりです。時間をかけて慣れていくしかないですね。






【10月】

『自然科学の統計学』の『線形モデル』以外について勉強しました。検定理論や最尤法のすごさ等、いろんなことがわかるようになりました。
みんな大好き「p値」がどのような考えの下で与えられているのか皆さん気になったりしませんか??意外と面白いですよ!

この時期はビジネス書に若干ハマっていたので統計はややおろそかだったかな~



【この時期に使った本】

自然科学の統計学 (基礎統計学)

自然科学の統計学 (基礎統計学)





【11月】


後期の授業で扱ったものをひと通り復習していただけですかね。なんか就活もあって忙しかったような気がします。




【12月】

この時期は「なんかSVMがすごいらしい」ということでSVMの勉強をしました。

グーグル先生に質問しても釈然とする答えにたどり着かなかったので、本を使ってちゃんと勉強しました。

とは言うものの、勉強して多少理解した後にもう一度グーグル先生に質問してみると、SVMに関するブログ記事や講義資料、勉強会資料などは良質のものが実は多かったんだなと思いました。

SVMのこころのようなところが掴めていないだけだったということです。

でもこういうのって1からちゃんと書かれている本じゃないと、なかなかわからないですよね。



【この時期に使った本】

カーネル多変量解析―非線形データ解析の新しい展開 (シリーズ確率と情報の科学)

カーネル多変量解析―非線形データ解析の新しい展開 (シリーズ確率と情報の科学)

SVMにも用いられている「カーネル法」について書かれた本です。僕は損失関数の設計のところでSVMを理解できた気がしました(理解したとは言っていない)。
カーネル法については、再生獲ヒルベルト空間についての話から書いてあるので、割と内容に置いてきぼりにはされませんでした。

※こちらの方が読みやすいという方もいたので紹介までに...(僕はこっちは読んでいません)

カーネル法入門―正定値カーネルによるデータ解析 (シリーズ 多変量データの統計科学)

カーネル法入門―正定値カーネルによるデータ解析 (シリーズ 多変量データの統計科学)






【1月~3月】

就職活動で忙しく、ちゃんとした勉強はあまりできなかったような気がします。所謂ES(エントリーシート)や履歴書ってホント時間食うしメンドクサイデスヨネ。

基本的には電車でTwitter等で回ってきたブログやら論文やらを読んでいることが多かったです。
その場で「ん?」となってしまうと紙に書けないのがもどかしかったですね。

まぁそのかいあって就活は全勝だったので良かったんですけどね。

以上、統計学を1年学んだ人の備忘録でした。








まとめ

書き出してみると、思っていたよりも勉強してなくね?という感想が芽生えた。
んー、でも思い出せる限りのメインで勉強したものなので細かいことを書き出せばもっと増えるか。

まぁ、大学の授業とかもあるしね!頑張った!!






おまけ:2018年度

研究室の活動が始まり、僕は就職活動が終了していることもあり、勉強に励んでいます。

基本的には『統計的学習の基礎』で勉強しているのですが、非常につらいです...

何がツライかって、証明の省略だらけなんですよね。自力で証明してみるのですが、なかなかわからないことも少なくなく、半日に1個証明できないこともしばしば(*_*)頭が悪いのがいけないんですけどね。


【現在使っている本】

統計的学習の基礎 ―データマイニング・推論・予測―

統計的学習の基礎 ―データマイニング・推論・予測―

  • 作者: Trevor Hastie,Robert Tibshirani,Jerome Friedman,杉山将,井手剛,神嶌敏弘,栗田多喜夫,前田英作,井尻善久,岩田具治,金森敬文,兼村厚範,烏山昌幸,河原吉伸,木村昭悟,小西嘉典,酒井智弥,鈴木大慈,竹内一郎,玉木徹,出口大輔,冨岡亮太,波部斉,前田新一,持橋大地,山田誠
  • 出版社/メーカー: 共立出版
  • 発売日: 2014/06/25
  • メディア: 単行本
  • この商品を含むブログ (6件) を見る

鈍器...いえ、なんでもありません!これは界隈でいわゆる「カステラ本」呼ばれる本です。

The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition (Springer Series in Statistics)
たしかにカステラっぽいですねw

統計学に基づく、機械学習の話が網羅的に取り扱われています。誰に効いてもこれは「いい本だ」というのですが、先述したとおり結構やっていて辛い場面に遭遇します。



ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ディープラーニングとかも勉強しなきゃなーというわけで手に取った本です。
ド素人にもわかりやすいように記述されていて、非常に勉強しやすいです。特にいいところはストーリー立てがしっかりしていることです。
従って自然な流れで学習することができます。



これはやった本ですが、Rで入門していくのにはやりやすかったです。ただ、ストーリー立てがややわかりにくく、万人受けするような感じではないかもしれません。たたd、MCMC、なかでもメトロポリス法をじぶんで書いて実感できること、サポートページが充実いていること、また究極の話ですが著者の奥村先生にTwitterで質問できること等、利点はたくさんあります。ただし、勉強不足で質問するというのは失礼に値するので気をつけましょう。ちなみに僕は質問したことがありませんってかそんなに難しい話は出てきません。



ベイズを本格的にやるかーってことで超有名なこの1冊を図書室から借りてきました。7割がたやったところで返却期限が来てしまい、まだ途中です。買う価値が十二分にあるので、近々購入しようと思います。stanを使ってみたい人や、ベイズモデリングしてみたいという人は是非お勧めします。

評判通り、噂通りの本でした。



確率モデルの基礎―金融工学を視野に入れた確率論的考え方

確率モデルの基礎―金融工学を視野に入れた確率論的考え方

確率過程の勉強に使っています。演習問題も充実していて、答えも丁寧に記述されているので使いやすいです。
確率過程は前期のうちに基本をマスターしておきたいと思っています。
意外とごちゃごちゃしやすいので気をつけなきゃね!