『機械学習のエッセンス』を読んだ

とりあえずのメモ

  • 第3章の「機械学習に必要な数学」は、知っている内容だったので読んでいない。
  • 上記の部分についても、濃い内容だった。
  • 掲載されているおおよそのコードの動きは把握し、必要に応じて写経した上で動かした。
  • 自分でスクラッチで書いてみとと言われたら、まだまだ難しい。
  • (なので)必要に応じて振り返りたい。
  • 数値計算の基本ということで、桁落ちの話題が載っているのは、ありがたい。参考分家に「数値計算の常識」が出てきて、元物理学徒としておおぉとなった。
  • 量子力学で使われているブラケット記法は便利だったなと。縦ベクトルと横ベクトルや射影演算子をブラケットに変換せずに考えられるようにならねば・・・。
  • Lagrange multiplierについてはSemidefinite programの文脈でdualityやKKT conditionまでさらっと勉強したことがあるのだけど、\lambda の符号の取り方とか、なんだかわからなくなってモヤモヤしているので、一般的な記述で扱われている何か他の本を当たってスッキリさせておきたい。
  • Principal Component Analysis(PCA)って単語では聞いたことあったのだけど、「特徴量をできる限り保ったまま、次元をへらしたい」という、結構シンプルなことを目指しているのだと知れたのはよかった。読んでいて、singular value decompositionすればいいじゃんと思ったら、案の定したので、とても懐かしかった。
  • (自分のバックグラウンドのせいもあって、)数式を追ったりする場合は、もう少し抽象化された記述だと楽だなぁと感じた(のでそういった本も読まねばな。)
  • Pythonの知識が足りない。(この本に書かれているコードの動きを把握したり、必要に応じてググって理解したりするために必要なことはおよそ書いてあると思います。が、pythonやプログラミングについて全く知識がない訳ではないので、全く知識がない人が読んだら読めるのか、というのは正直分からん。全く知識がない人は本書を最初に手に取ることもないのではないか、と思う。本屋でみたら結構分厚かったし。)

あーそっかと思ったところ

言われれば「確かにそうか」と思うのだけど、言われるまで自分の頭の中で整理できていないことってあるよね。

p280において、一般的な(機械学習の)手続きが書かれていて、例えば教師あり学習については、

model = Algorithm(parameters) #インスタンス化
model.fit(x, y)               # 学習
y_predicted = model.predict(X_test) # 評価用データについての予測値を取得

と、シンプルに整理されている。その後にスクラッチで書いていくコードも、上記の手順の整理を踏まえたものになっている。もちろん、この手順の他にも、そもそもparameterとなるデータをきれいにしたりだとか、性能評価や、そもそもどのアルゴリズム使うねん、という(泥臭い)手順がたくさんあるのだけど、上記の3行で記述されている部分が、機械学習の「エッセンス」なんだろうなぁと読み取った。

次どうする

どうなんでしょう。『見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑』読んで、もう少し広く把握したあと、python自体について勉強したい。(業務で「きれいなグラフ作って」という雑な仕事が舞い込んで来る可能性があるので、そこまでにはpythonでのデータ処理と可視化をスムーズにできるようにせねば。最悪Rでやろう。)