寒桜 / 2021年2月23日
昨日に引き続き、今日も結構暖かかったので近くの公園へランチボックスを持って行く。公園の寒桜も満開だ。そして花粉は薬を飲んだのだけど、昨日ほどに無いにしろ結構ひどく、ゆっくり本を読もうと思っていたのだけど読めず、そそくさと帰る。
朝食はホットプレートでパンケーキ。
機械学習の本が、もうちょっとで読み終わりそうだったので、ラストスパートで一気に読みすすめる。最後の方の章は機械学習あまり関係なかったため、思ったより速いペースで読み終えることが出来た。
機械学習学習日記 - 22日目
5.3.3 多クラス分類の基準。こちらも5.3.2の基本2クラス分類の基準と同じ。
5.3.4 回帰の基準では、~4章までで今までやってきたとおり、score 値であるR2が最も直感的な基準なのでこれを使うと良い。
5.3.5 ではGridSearchCV, cross_val_scoreの評価基準をAUCに変える方法。キーワード引数scoringにroc_auc
を指定すれば良い。この評価基準は他にも f1値やR2、平均二乗誤差などいろいろ使えるので、詳しくはsklearnのドキュメントを読むべし。
5.4 まとめと展望。初心者が見落としがちなのこと2つ。1つは訓練・検証・テストデータの3つにデータはわけよ。2つは現実世界では高い精度(score)がモデル評価における目標のことは殆どないので、何を解決したいかによって評価基準を定めよ。
6章 アルゴリズムチェーンとパイプライン。機械学習において、データの前処理・変換・特徴量学習から、いくつものモデル・アルゴリズムの組み合わせを連鎖的に実行する必要がある。
6章の内容は、機械学習と言うよりプログラミングの話で、EstimatorをうまくPipelineでつなげると簡単にかけ、パラメータも柔軟に作れるし、グリッドサーチもお手軽に、みたいな内容なので、サラッ読む。
6章内部で、再三出てきた訓練・検証・テストデータを間違ったタイミング、例として交差検出の外で特徴量抽出を行う(相関がある情報へと結びつけられる)か、内側で行うか(全く相関がないデータと正しく見られる)で全く結果が異なるよ、それを防ぐためにもPipelineつかうと間違えることが減るよ、という結果(ぜんぜん異なる)を踏まえた話が面白かった。
7章テキストデータの処理。ここでは今まで学んだことを用いての自然言語処理入門 + 機械学習。映画のコメントのネガ・ポジ判定を、まずはBoW(Bag of Words)による単純な単語カウントでロジスティック回帰で推測する。そこからストップワードやtf-idfを用いてのスケール変換、nグラムでの分割、正規化として語幹処理(stemming)や見出し語化(lemmatization)、LDAを用いたトピック分類等々、一連の自然言語処理の初歩と機械学習を組み合わせて並ぶ。N-グラム、tf-idf実装とか10年以上前にやったなぁ…。まとめと展望では、最近の勢いある手法として、word2vec と RNN について触れている。
8章 おわりに。包括的なまとめと、このさきに何を学ぶかの指針。
あー読み終わってしまった。学習日記の初日から、Pythonではじめる機械学習 scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎、を22日間にかけて、ほぼ全部のコードを Jupyter Notebook で実行しながら学んだ。累計40-50時間ぐらいかなぁ。自分の知識では何となく知っていたけど実際どうやるのだろう、ということの基本が学べてとても良かった。数学関連もほぼ出てこず、またプログラミングも非常にかんたんなコードとして書かれていて、プログラミング知識がない人も読みやすいのではないのだろうか。中身も順を追って説明しているため、事前知識がなくて全然わからない、ということは無く、すんなりと読み進めていけた。
ただ、機械学習(ML)について専門の人から見たらどう感じるのかはわからず。専門分野だと、説明はしょりすぎとか、逆に細部を書きすぎとか、もっと大事なことを教えるべきとか解るのだけど、そうではないので、内容の良さは現在の自分の知識での主観的な良さとなるのだけど、としてもMLを広く浅く知るのにとても良い本だったと思う。
あと電子書籍のフォーマットが、Kindle ではなく epub なのも良かった。epub リーダーにcalibreを使って Windows で読み進めていたのだけど、UI の使いづらさはあれど、Windows の Kindle アプリに比べたら軽く、なにより Kindle はコピペが正常にできない(へんな整形 + 引用文字列がつく)ので、ソースコードコピペが大変なのだ。Amazon になびかず、独自ストアで書籍を出し続けているオライリー偉いぞ。あと epub の評価もぐっと上がったので、これからは少なくとも技術書は安易に Kindle 版を買うのではなく、epub 版が無いか調べてから買うようにしたい。
今日の気付き: Jupyter Notebook は IPython カーネル(ipykernel)の皮を被ったモノなので、なにかやりたいときは IPython のドキュメントをあたるとサクッと見つかることもある。例えばセルの実行時間を測るマジックコメントの%%timeを調べたかったら IPython のほうを調べるとすぐ見つかった。