A Day in the Life

2021年3月7日

完熟いちご。まだ食べていない。


今日は久しぶりに一日中仕事ではないプログラミングしたなぁ、という日だった。


機械学習学習日記 - 34日目

scikit-learnとTensorFlowによる実践機械学習の11章の演習課題をやっていなかったので、そこから。

課題をやり、keras の最低限の使い方が解ったので、なにかやってみようかなと、平仮名73文字の画像データセット約8万文字から、(ゐ|ゑ)を除いた平仮名を学習させる。まずは sklearn の RandomForestRegressor で GridSearchCV と cross_val_score で適当なパラメータを見繕ってスコアを出した所、0.84。続いて keras で NN を構築し、隠れ20層 x 100ニューロンと11章の各種パラメータをちょっと弄って学習させると、0.9849 で圧倒的。

間違い(softmaxの出力\n正解 - 間違った答え)を見るとこんな感じで、1に近く自信満々に間違っているのもあるけど、たいていそこまでは確率が高くない。濁点・半濁点のミスが多い。人間が見ればほぼ正しい平仮名と識別可能な間違いなので、0.9849とはいえまだまだ改善の余地はありそう。

img

最近NNを使うようになり、学習に時間がかかるようになったので新しいGPUが欲しくなる(今はGTX1080)。GPU周りを調べるとビットコインの値上がりによってマイニング需要が急激に増えてRTX3080周りは現在入手が適正価格ではほぼ無理なのね。また、DNNにはGPUメモリモリモリのほうが良い、という話を見て、そうするとRTX3090となり、なかなかのお値段になるのだよなぁ。

そして GPU の Load を見ると 20% ぐらいしか使われて無くて、今やってるぐらいの学習タスクだとGPUメモリ転送のオーバーヘッドのほうが大きく、むしろCPU(Ryzen 5900)を使ったほうがGPUより3倍速かったので、しばらくはCPUでやるかー。

撮影機材E-M1 Mark III/LEICA DG SUMMILUX 25/F1.4 II

土岐麻子ライブ・日本橋 / 2021年3月6日

日本橋三井ホールの窓際より。


土岐麻子さんのライブのため、日本橋へ。レストラン桂でランチを食べる。どのメニューもボリュームたっぷり、お年を召してもお店に立つおかみさん、という古いスタイルの洋食屋。また別のメニューも食べてみたいな。


昼食後、ライブまで少々時間があったのでブラブラする。日本橋、コレド室町が出来てきれいな日本風街角になって、散歩も楽しい。途中見かけたハリオのガラスアクセサリー屋に立ち寄る。あまり見ないデザインのガラスアクセサリーで珍しい。ハリオは実家そばに生産工場があり愛着もあるため、せっかくなので来た記念に妻にネックレスをプレゼントする。


土岐さんのライブは去年はいけなかったので2年ぶり。会場の席は格子状になっていて余裕あるスペース。ギターとボーカルという小編成のライブだったので、ドラムやベースの音圧が少なく体に音の衝撃を浴びる、という感じではなかったのだけど、久しぶりのリアルライブを楽しめた。ゲストの渡辺満里奈さん(昔好きだった)も生で見れたしね。

自分は精神的な部分で、大人数がいる静かな空間(クラシックコンサートや静かなライブ、荘厳なイベントなど)というのが大学の頃から苦手で。場をぶち壊すための行動を自分がとるのではなかろうか、例えば大声を上げるとか、いとも簡単にできるし、という強迫観念が出てきてしまい、その行動を抑えるために心拍数が上がり、手に汗が滲み、意識をそらすために体をつねったりしていた。

今日のライブもこれに該当するため、楽しめるのかなぁと思っていたのだけど、そうだ薬を飲んでみよう、と市販の精神鎮静薬ウットを飲んだ所、まったく症状が起きること無くライブを楽しむことが出来てよかった。


ライブ終了後、コレド室町にある台湾の本屋+雑貨屋、誠品生活に立ち寄り、よさそうな花瓶があったので購入する。

夕食は久しぶりに舎鈴でつけ麺。昔は舎鈴、味が薄くてあまり好みじゃなかったのだけど、今は程よい濃さと感じるようになり、美味しく頂いた。


機械学習学習日記 - 33日目

scikit-learnとTensorFlowによる実践機械学習の11章を読み終える。

11章は深層ニューラルネットワークの訓練。DNNの層が深く数十・数百万以上のニューロンを訓練する時に問題が発生する。時間がかかりすぎることもさることながら、勾配が消失してそもそも収束しないことも起こりやすくなる。

そのために初期値の設定、飽和しない活性化関数、バッチ正規化、交配クリッピング、学習済みの初期層を利用する転移学習、低コストで実行できる教師なし事前学習、オプティマイザ高速化、L1,L2正規化、早期打ち切り、ドロップアウトなどなどのテクニックと、それをKerasで実現するための説明。

とりわけ、転移学習はNNの仕組みを上手く活かした方法で面白い。

撮影機材Galaxy S20/α7C/Voigtlander NOKTON classic 35mm F1.4 II SC VM

PS5買えた / 2021年3月5日

先日、ヨドバシリアル店舗でのPS5購入に必要なヨドバシクレカを作ったのだけど、申込みから約10日たった今日午前中に届く。これで店舗にPS5が入荷されたら購入できる、とインターネットで調べてみると、丁度横浜ヨドバシにPS5入荷の報があり、昼頃買いに行き、ついにPS5(デジタルエディション)の購入に成功!長い戦いだった。

PS4からPS5へのゲーム含めたデータ移行は、有線LANだったこともあり5分ほどでサクッと終わる。プリインストールゲームの、アストロプレイルームをちょっと遊ぶと、PS5コントローラの新機能、ハプティックフィードバックとLRトリガーの抵抗が変わるアダプティブトリガーが楽しめる。ゲームの中の質感が手の中に伝わり、これらを活かしたPS5タイトルは楽しそうだなぁ。

アストロプレイルームは、ゲーム中に旧PSシリーズだったり、PSのメインタイトルゲームのオマージュが散りばめられており、おっさん的に懐かしい。そうそう、マルチタップアダプターなんかあったっけ、みたいな。PS本体はなんだかんだで1から5まで全部持っていたなぁ。

PS5(のPS4互換モード)でレンダリングされるナイトシティはPS4は何だったのか、という感じのテクスチャーで4Kでは無いにしろ60FPSでグリグリ動くし、ボーダーランズ3のPS5版は4Kと60FPSだし(激しい場面では処理落ちするが)で、同じゲームだけど解像度がアップグレードされた感じで快適。

とりわけボーダーランズ3のファストトラベルでは、今まではロードなが~~~い、という感じが、激速ではないにしろ、おっもうロード終わったんだ、という速度になり、SSDの快適さが体感できる。さらにPS5に最適化されているタイトルのゲームはロード一瞬なのだろうなあ。

あと、PS4ではOS部のUIがもっさり(とりわけストア)だったのだけど、PS5ではサクサクになり、その辺も地味に良い。

というわけで、久しぶりにPSのゲームを楽しんだのであった。


機械学習学習日記 - 32日目

scikit-learnとTensorFlowによる実践機械学習に戻り、読みすすめる。

前回読んだNNのはじめの10章をもう一度読み返してみると、NNの基本的な部分が理解が進んだため、スラスラと読める。急がば回れで、ゼロから作るDeepLearningをまず読むべきだった、そして読んで良かった。

2021年3月4日

クイーンズスクウェアの丸善ジュンク堂、今まで行ったことが無く、始めて行く。まぁまぁの広さで、技術書も結構あった。場所的に「ここに本屋がある」と知らないとたどり着かないような場所で、ちょっと場所が悪い気がする。


妻が仕事の日だったので、お昼は弁当を買いに出かける。みなとみらい駅前の弁当屋、いろいろな店舗が道路脇で様々な弁当を売っており、バリエーションが楽しめるなぁ。400-500円ほどのお手頃価格だし良い。


機械学習学習日記 - 31日目

ゼロから作るDeep Learning ❷ ――自然言語処理編を読みすすめる。

シンプルなword2vecの実装として、CBOWとskip-gramモデルで実装を行い、速度が出ないのでレイヤの追加、解くべき課題を多分類から二値分類へと考え、Negative Samplingを取り入れることで計算量を変える。この辺まではなんとか理解できたのだけど、RNNの実装で時系列データ(文章も順序に意味がある、ということで時系列データなのね)を扱うあたりから、集中力も途切れちゃんと理解できなくなって、雰囲気理解で最後まで読み終える。必要に応じて読み返そう。

RNNの応用で、文章自動生成、seq2seqによる時系列データを別の時系列データへの置き換えなどなるほど。論文を読んで、こういう実装を自分でできるようになるには、もっと基礎を理解しないといけないのだろうけど、そこまでは短期間ではいけないのだろうなぁ。

また、GPUでも実行できるタスクが増えてきたので、Windows 環境に CUDA 11.0 周辺を入れて環境整備。cupy や TensorFlow2 から GPU が使えることを確認する。最新のほうが良いのだろうと CUDA 11.2 を入れるも、TF2.4 は CUDA 11.0 依存なのね。この辺は docker レイヤー挟んだほうが CUDA バージョンも気軽に分けられて便利そうだ。WSL2 周りも(まだ insider preview だけど) CUDA 対応しだしたみたいで、Windows 環境でも GPU がだいぶ使いやすくなってきた感。

そして本書籍で NumPy の互換 API で CUDA 使って GPU 処理できる CuPy を知ったのだけど、これPFNがChainerのGPU処理機構として作ったもの(今はChainerメンテモードだけど、cupyは開発継続してる模様)なのかー。PFNすごい。

撮影機材α7C/po3-3m 50mm f2

harbs の大きいケーキ / 2021年3月3日

なにやら妻がしょんぼりしていたので、気分転換にお茶でもしようと harbs へ。写真だと対比が無いのでわかりにくいのだけど、大きなケーキをもりもり食べる。繊細な味では無いのだけど、口の中たっぷり広がる美味しさだ。そして harbs、コーヒー代がそれなりにするのだけどおかわり自由なのか、お得感。


harbs への行き帰り。


ひな祭りの日だったけど、ひな祭りぽいものを全然見なかったなぁ。


機械学習学習日記 - 30日目

ゼロから作るDeep Learningを読みすすめる。

第7章ではCNNの実装。畳み込み層とプーリング層を実装し、今まで作ってきたNNを拡張して組み込む。画像識別でなぜこの層が必要不可欠なのかも理解できて面白い。その後は各種NNとDLにおけるニューラルネットの進化と現状、発展について述べて、一冊読み終える。勝手に難しい本だと思っていただけど、そうでなかった。分かりやすい良い本だったなぁ。

続編であるゼロから作るDeep Learning ❷ ――自然言語処理編の目次を読むと、まずword2vecを自前で実装し、その後RNNを実装する流れでこちらも興味深かったので購入する。

ゼロから作る~は、今や Python 関連の説明ではかなり使われている Jupyter Notebook ではなく、普通に .py の python コードとしてサンプルコードが実装・公開されている。

Jupyter Notebook に慣れ親しんでると .py をいちいち実行するのは不便...かと思いきや、python ソースコードにおもむろに #%% を書くだけで、VSCode のエディタ UI が拡張され、Jupyter サーバ(ipython)が立ち上がり、そのコンテキスト上でセルとして即実行できるのでめちゃくちゃ便利。

(追記: ソースコードの頭に #%% を入れておかないと、前の文脈まで実行できないようだ。VSCode の jupyter.runFileInteractive で今のファイルを実行できるので、これにショートカットを割り当ててやりたいことはできる感じに。)

vscode-jupyter

IPython のコマンド、例えば ! pip install package なんかもセルとして実行できてしまうし、ベンチマーク図りたかったら %% time でセルの部分だけ速度計測できるし、(自分にとっては)次世代な開発環境という感じだ。

撮影機材α7C/po3-3m 50mm f2

すき焼きうまい / 2021年3月2日

ふるさと納税返礼品でもらったおいしいお肉で、晩御飯はすき焼き。久しぶりの脳に直撃する美味しさ!!!!!!!!1。すき焼きは良い肉だと家庭でもめちゃくちゃ美味しくなって偉い。定期的に家ですき焼き食べたい。

南さつま市の返礼品だったのだけど、今年も機会があれば申し込みたい。


散髪へ行く。2ヶ月ぶりのぐらいかなー、と思いきや、1ヶ月ちょいぶりだった。温かいけど強い風と小雨が降ったりやんだりの天気の日。


昼は妻作(家の料理はほぼ妻が作っているのだけど)のトマトパスタ。うまい。


機械学習学習日記 - 29日目

YouTube のNN説明動画、But what is a Neural Networkを観る。おおーわかりやすい。しかしながら、やはりニューラルネットワークについて知識がなさすぎる(雰囲気しか分からない)ことがわかり、 scikit-learnとTensorFlowによる実践機械学習を一旦読むのをやめて、ゼロから作るDeep Learningを読み始める。

第6章まで(CNNの実装の手前まで)読みすすめて、MLPのニューラルネットワークの実装を行ったのだけど、うろ覚え高校数学レベルの自分にも解りやすくて良い本だ。偏微分も簡単な微分から説明してるので理解できたし、バックプロパゲーション(誤差逆伝播法)も計算グラフから徐々に説明しているので(一部はまだ読みこめてないけど)、だいたい理解が出来た。そして数値微分で計算していた学習と実装の伝達を、バックプロパゲーションに変更したら超速いぞウォォォ~、なども味わえて楽しい。

この辺を実装途中で python.exe がシングルコア以上のパフォーマンスが出ているのに気づいて調べてみると、conda で入れた numpy が Intel MKL にリンクされたものを使っていて、行列演算でマルチスレッドが設定無しで動いていた。Python インタプリタレベルでいちいちマルチスレッドにしなくても、余ってるCPUコアの処理能力を使えるの良いね。あと名前が Intel MKL だけど AMD Ryzen 9 でも最適化はどうあれ問題なく動いていた。

撮影機材α7C/Galaxy S20/FE 55mm F1.8 ZA

月に一度のスカンディアの日 / 2021年3月1日

月に一度はスカンディアに行こう、と思っていたのだけど2月は行けずじまい。3月に入ってしまったが、妻の通院の帰りに時間が丁度マッチしたので、約1ヶ月ぶりのスカンディア。写真は私のローストビーフ。ホースラディッシュ(西洋わさび)をつけて食べると味に広がりが出て美味しい。


女神橋の謎のマーキング、写。工事現場内に二箇所ほどあって、□とか簡単なマーキングなら解るのだけど、わざわざ難しい写としているのが謎だ。


今日はだいぶ暖かく、スカンディアに行く前にgooz いちょう並木通り店でコーヒーを買って、外のベンチで飲みながら本を読む。密でもないし、ゆっくりと外で読書できるし、なかなか良いね。gooz のコーヒー、セルフサービスで自分で作り置きされているコーヒーメーカーから注ぐのだけど、12oz(約350ml)カップで150円という安さ。豆もちゃんとしたの使ってるぽいのにお得感も高い。

というか、gooz はスリーエフ経営だったのか。


機械学習学習日記 - 28日目

scikit-learnとTensorFlowによる実践機械学習を引き続き。

10章の残りの Keras チュートリアルを一通り。入力層、重み、バイアス、隠れ層、出力層、活性化関数、損失関数等々の使い方など。Keras API を使う部分はプログラミングなので難しくないのだけど、ニューラルネットワーク(NN)についての知識が無いのでよくわからないまま進めていく。

最後の演習課題の一つで、playground.tensorflow.orgを使っていろいろやってみよう、というのでこのサイトを知ったのだけど、ビジュアライズしつつ様々なパラメータをいじれるので大変わかりやすい。

あれこれ調べていると、第1回 初めてのニューラルネットワーク実装、まずは準備をしよう ― 仕組み理解×初実装(前編)の連載記事では、playground.tensorflow を日本語化 + もうちょっと機能追加をしたplaygroundを使いつつ日本語で解説しているので、こちらでも一通り学ぶ。10章だけだと理解不足だったNNの部分の理解がだいぶ深まる。このへんで、やっとパラメータ各種の意味をある程度理解する。

なお、playground.tensorflow.org は tensorflow と名前がついているけど、TF 関係なく NNの実装は素の TypeScript で書かれているので、PureJS(TS)のNNの小さな実装セットとしても参考になりそうだった。

撮影機材α7C/Helios-44M 58mm F2

2021年2月28日

今日はゆっくりするのも、学習するのもなにやら中途半端になってしまった一日。


機械学習学習日記 - 27日目

scikit-learnとTensorFlowによる実践機械学習を引き続き。

第I部のscikit-learnを使ったMLについて昨日読み終わる。振り返るとMLへの理解がまだまだ浅いので、違う角度から書いてあるこの本読んでおいてよかった。決定木~ランダムフォレストについて理解深まったしね。ただ、Pythonではじめる機械学習のほうをまず最初に読んでおいてよかったとも。Pythonではじめる~のほうが順を追って説明していて頭に入ってきやすかったのだよなぁ。この本は、色々すっ飛ばして後で説明する、もしくは詳細は論文のリンク、というのが多かった気がする。

第II部はニューラルネットワークと深層学習。10章は人工ニューラルネットワークとKerasの初歩で、前半はよくある生物学的ニューロンから人工ニューロン(ANN)へ、というわけでANNの論理演算(AND, OR,NOT)、パーセプトロン、TLUとステップ関数について。続いて層になったパーセプトロンでXORが実現でき、これが多層パーセプトロン(MLP)だよ、という説明。

この辺から、文章でアルゴリズムの説明がされ、徐々にわからなくなる、のでサラッと読む。ちゃんと学ぶには、書籍ゼロから作るDeep Learningを読んだほうが良いのだろうなぁ。目次を見る限りこの辺の実装を1から(0からか)作るようだし。必要が出てきたら読もう。

10.2 は Keras チュートリアル。Keras と PyTorch の API は似ている、なぜなら sklearn と Chainer API からヒントを得てるからだ、と書いてあってなんだか Chainer かっこいい。10.2.2 までチュートリアルを進める。

撮影機材α7C/po3-3m 50mm f2

2021年2月27日

今日は一歩も外に出なかったなぁ。中央のは100均で買った植物たち。100均でもときどき好みの元気な植物が入荷していることがあって、ついつい買ってしまう。


朝、テレビをつける(だいたい最初にEテレを見る)と、デザインあが200回スペシャルでコーネリアスによる「デザインあLIVE」で、生演奏デザインあが流れておりすこぶる良かった。しかし、コーネリアス好きな人はいいけど、ふつうのデザインあを楽しみにしている子供は普段のほうがよいのではなかろうか。


夜、適当に番組を回していたら、BS4Kでやっていた8Kタイムラプス紀行が美しい。GoPro のような安価なカメラではなくちゃんとしたカメラとレンズでタイムラプスを撮っていて、これぞ4K(もちろん8Kが映る環境ならBS8Kで見れるのだろうけど)という画質。自然の空、海、山、川の移り変わる様の美しさよ。

富士山の回では、ご来光を観に行く人たちの灯りが真夜中にずらーっと富士山中腹から列をなしていて、それがタイムラプス編集されていてほぉーっと魅入ってしまった。


機械学習学習日記 - 26日目

scikit-learnとTensorFlowによる実践機械学習を引き続き。

6章決定木。普通の決定木の説明。最後の演習問題でただの決定木を使って、同じ学習セットだけどランダムに取り出した別々の小さなセットを1000回学習させて、一番多い回答を多数決で決めると普通に学習するよりわずかながら精度が高い、というのを演習で実装させている(バギングを自前実装)のが面白かった。これで次の章につながるのね。

7章はアンサンブル学習とランダムフォレスト。以前読んだ本、Pythonではじめる機械学習ではこのへんはサラッと書いてあるだけだったので、こちらは1章を使って書いてあるだけあって理解が深まった。まったく同じ学習機でパラメータが同じでも精度向上することがあったり、弱学習器を束ねての精度向上だったりと、なるほど。

8章次元削減。次元削減、響きがかっこよいよね。次元削減のメリットについて、超次元を低次元に下げることで、2,3次元なら可視化できるし、データは圧縮され、データ少なくなったことで処理速度が上がる。データによってはモデルの精度が上がることもあるが、それほどは期待できない。次元削減の方法として、PCA(主成分分析),カーネルPCA,LLEの3つを説明している。章の例のデータに3次元データとしてスイスロールのデータセットを使って2次元に落とすということをやっていてイメージしやすい。「有名な」スイスロールデータセットと書いてあるから、メジャーなデータなのだろうなぁ。

8章演習では、PCA(因子寄与率95)で次元削減しても、例えばランダムフォレストモデルは速度も下がり精度も下がる、別のモデルでは速度はだいぶ上がって精度はほとんど一緒、なのでとりあえずPCAかければよいというわけではまったくない、という例を試させている。

9章教師なし学習のテクニック。クラスタリングでは、主にK-meansでのクラスタリングとDBSCAN。後半の混合ガウスモデルは複数の混ぜ合わさったガウス分布に対するモデル、という雰囲気だけ理解できた(= ちゃんと理解できなかった)。

撮影機材α7C/po3-3m 50mm f2

2021年2月26日

雨が降る予報だったけど一日どんより曇り空。花粉症患者的には雨降ってほしい。


SIGMAの新レンズ、28-70mm F2.8 DG DN | Contemporaryが発表される。以前スペック的には似たようなタムロンの28-75mm F/2.8(A036)を使っていたのだけど、画質はさておき、外観の安っぽさと各種リングの手になじまなさがしっくりと来ず、もう買うことは無いのだろうなぁと思っていたところに、スペック的には似ているレンズがシグマからも。写真で見る限り、プラスチックとはいえ外観が良い感じで、実際に使ってみたい。軽い(Lマウントは470g)のが良いのだよなぁ。後発で同価格帯だから、さすがにタムロン並の画質はあるのだろうし。

最近カメラ・レンズのニュースをやたら見かけると思ったら、カメラ最大のイベントCP+2021のオンライン開催が行われているのかぁ。本来なら家からすぐのパシフィコ横浜で開かれており、今まで一度も行ったことがなかったので行きたかった。昨年は周りのイベントが様子を見る中、早々にリアルイベントをやらないと決めた(国内の大きなイベントでは一番最初だったかも)CP+は偉い。


久しぶりの韓国ドラマ、キム秘書は一体、なぜ?の1,2話を見る。てっきり「なぜ?」の答えはドラマの最後に明かされるのかと思いきや、普通に1話で明かされて、2話からはラブコメとなるのだけど、何も考えず力を抜いて見れるので、これはこれで面白く見れる。


昨晩から調子が悪く、朝はだいぶ体調が悪くて、今日は一日寝て過ごそう。という感じだったのだが、午後から活動できる程度には良くなってきたので本を読みすすめる。


機械学習学習日記 - 25日目

scikit-learnとTensorFlowによる実践機械学習を引き続き。

3章 分類では二項分類・多クラス分類・交差検証・混合行列と性能指標(ROC/AUC)などなど。ちゃんとしたモデルの説明というよりはこんなふうやれるよ、細かいのは後の章で、というスタンスで進めている。

データベースはMNISTの手書き文字(7万個の28x28画像)を使ってるので、実データに比べたら大した事ないにせよそこそこ計算機コストがかかる。グリッドサーチの説明では実行するとハードウェアによって16時間かかったから注意、みたいなことも書いてあって、たしかに12コア(Ryzen9 3900)で n_jobs=-1 環境(コア全部使う)で1時間10分かかったのでそれなりだ。Pythonではじめる機械学習のほうはMNISTの縮小版で手書き認識をやっていたので、初心者への説明する時の手を動かしてやるデータとしては、そちらのほうが進めやすいなぁ。

この本は演習問題もあって、コードを読んでいても Python に慣れてない事もあって勉強になる。3章の演習では、画像を縦横1pxずつずらしたものをデータセットにし、データ量を5倍にしたものを学習させ、スコアが0.5%上がったことを確認させたり(訓練セットの拡張)。

他の演習問題では、こないだやったKaggleのタイタニック問題を解く。自分でやったときは pandas のDataFrameをこねくり回して居たけど、こちらの本の解説ではうまく scikit-learn のインターフェイスとパイプラインに合わせて実装する方法を解説している。例えばカテゴリ変数なら、以下のように最頻値で欠損値を穴埋めするクラスを定義して、それをパイプラインで処理していく。なるほど~。(なお、書籍のコードは大半をしめなければ自由に使って良いとのこと)

class DataFrameSelector(BaseEstimator, TransformerMixin):
    def __init__(self, attribute_names):
        self.attribute_names = attribute_names
    def fit(self, X, y=None):
        return self
    def transform(self, X):
        return X[self.attribute_names]

# Inspired from stackoverflow.com/questions/25239958
class MostFrequentImputer(BaseEstimator, TransformerMixin):
    def fit(self, X, y=None):
        self.most_frequent_ = pd.Series([X[c].value_counts().index[0] for c in X],
                                        index=X.columns)
        return self
    def transform(self, X, y=None):
        return X.fillna(self.most_frequent_)

cat_pipeline = Pipeline([
        ("select_cat", DataFrameSelector(["Pclass", "Sex", "Embarked"])),
        ("imputer", MostFrequentImputer()),
        ("cat_encoder", OneHotEncoder(sparse=False)),
    ])

続いてスパム分類器を作る演習。データセットからemailをパース、本文、ヘッダを見る、メールbodyからプレーンテキストへの変換、単語カウントとstemming(表記ゆれ)変換、スパース行列のcsr_matrixへの格納、Estimator化、などなど一通り。

4章 モデルの訓練では、線形回帰・勾配降下法・線形モデル正規化(Ridge/Lasso/ElasticNet)、ロジスティック回帰・ソフトマックス回帰など。数式が結構手出てきて、シンプルなのは python コードで実装に落としてあるものもあり理解しやすいのだけど、難しいのはなるほどわからん、という感じに…。

5章 サポートベクトルマシン(SVM)。線形SVMの説明は、サポートベクトルが解りやすくプロットされてる図ですんなりと理解できた。マージン境界とパラメータもわかりやすい。続いてカーネルトリックを用いたいわゆるSVMの話。カーネルトリックを使うと、特徴量を追加せずに多項式特徴量を追加したかのような結果が得られる。その代表的なカーネル各種の紹介と説明。

5.4 からカーネルトリックの理論なのだけど、今の知識じゃ全然分からずさらっと読み流す。

5章の演習問題で、MNISTデータセットをSVMで訓練する項目があるのだけど、6万のデータセット中1000個のパラメータで試していて、それぐらい減らしてデータセットによっては良いのか。またグリッドサーチでは RandomizedSearchCV にパラメータに scipy.stats の統計関数、 reciprocal, uniform の離散値の関数を使っていて、こんな書き方できるのかー。

撮影機材α7C/po3-3m 50mm f2