大満足な朝食 / 2021年2月19日
朝食は中華街のお粥屋、謝甜記 貮号店へ。前回行った時は平日ランチメニュー(朝でもランチメニューなのだ)を知らず、普通にお粥を頼んだのだけど、今回はAランチとエビ粥ランチを頼む。
するとランチというよりは中華大集合な感じのにぎやかな食事に。炒めもの、点心、唐揚げ、粥、デザート、何故かおまけに牡蠣の時雨煮をたらふく出してくれ、どれも美味しく大満足。とりわけ、鶏の唐揚げがなにか食べ慣れないスパイスがちょっと効いていて美味しく、かつ骨を持って先の肉を食べるという手が汚れない形でとても良かった。
朝から充実した食事だったなぁ、また行きたい。
コーヒーを1ヶ月半ほど止めてみた、おっ、あのコーヒー好きの typo さんが!
最近サーモスの保温水筒が我が家に導入され、朝600mlぐらいコーヒーを淹れても夕方までかなりきちんと保温されていて、1日コーヒー成分が欲しくなるとそれを飲んで過ごしていて、ベンリコーヒーサイコーと思っていたのだけど、過剰摂取の気がするので自分もデカフェ生活してみようかなぁ。
いままで VSCode 上 Jupyter Notebook でコードを実行してきたけど、VSCode 上でインタラクティブに Jupyter のセルとして実行できる[Working with the Python Interactive window
](https://code.visualstudio.com/docs/python/jupyter-support-py)の方法、非常に便利だ。
# %%
を python ソースコード上に埋め込むと、必要な部分だけ Jupyter のセルとしてインタラクティブに実行できて、エディタでソースコード書くことに慣れているエンジニアだとこちらのほうが使いやすい気がする。
機械学習学習日記 - 18日目
4.3 交互作用と多項式では、特徴量を豊かにする方法として、交互作用特徴量(interaction feature)と多項式特徴量(polynomial feature)を加える方法の紹介。
交互作用特徴量の例として、4.2 で行った瓶わけの、瓶ごとのの傾きのデータ(特徴量の積)を加えることで、個々のビンがオフセットと傾きを持つ。
続いて多項式特徴量の例として、sklearn.preprocessing.PolynomialFeatures を使い元のデータに多項式、x, x**2, x**3, ...
といった特徴量を加える。これをそのまま線形回帰に適用すると、古典的な多項式回帰モデルとなるが、極端な振る舞いをする傾向がある。比較として、カーネル法を用いたSVMと比べると、カーネル法SVMのほうが、とてもよい比較曲線が描かれている。
ビンのデータから、より現実的な boston_housing のデータへ多項式特徴量を適用する。まず0-1の範囲になるようにMinMaxScalerを用いて変換し、2次までの多項式特徴量と交互作用を抽出する。13個の特徴量で2次、105の交互作用特徴量が取得できた。この105が何によって計算されたかはget_feature_names()
で解りやすく出力できる。
この交互作用特徴量あり・ナシでRidge回帰でスコアを求めると、ありのほうがだいぶスコアが良い。ただ、別のモデル、例えばランダムフォレストを適用すると、交互作用ありRidge回帰よりそもそもランダムフォレストのほうが性能がよく、かつ交互作用ランダムフォレストだと僅かな性能低下が見られる。ので、当たり前の話だけど、なんでもとりあえず特徴量を増やせば良い結果になるわけではない。
4.4 単変量非線形変換では、数学関数 log, exp, sin などを用いて変換する。例では、ポワソン分布になっているカウント数を対数変換してRidgeモデルにかけ、性能が良くなったことを確認している。この恩恵は、比較的単純な線形モデルで多く受けられ、SVM,近傍法,ニューラルネットワークでも受けられることがある。決定木の場合は自身で交互作用を見つけることができるため、データの明示的な変換は必要ない。