『プログラマーなら知っておきたい 40 のアルゴリズム 定番・最新系を Python で実践!』(Imran Ahmad,インプレス,2021年10月21日)を読了。
端的に言うと,アルゴリズムとは,問題を解くために何らかの計算を実行するためのルールの集まりのことである。アルゴリズムは,厳密に定義された命令に従い,有効な入力に対して結果を生成するように設計されている。American Heritage などの英語の辞書で「アルゴリズム」という単語を調べてみると,次のような定義が見つかる。
「アルゴリズムとは,あいまいさのない命令からなる有限集合のことである。それらの命令は,ある初期条件が与えられたときに,特定の目標を達成するために既定の順番で実行することができる。また,アルゴリズムは明確な終了条件を持つ」(4 ページ)
あいまいなものから,あいまいさのない命令を見出す。
開発環境ではすばらしい働きをする機械学習モデルの性能が本番環境では目に見えて低下する場合,そのモデルは過学習(overfitting)に陥っている。過学習は,訓練済みのモデルが訓練データセットに適合しすぎている状態を指すもので,オーバーフィッティングとも呼ばれる。過学習はモデルによって作成されたルールが細かすぎることを示唆する。(172 ページ)
データ駆動型アルゴリズムが目下注目されているのは,データに有益な情報やパターンが含まれているという事実に起因する。正しく活用すれば,データは政策決定,マーケティング,ガバナンス,そしてトレンド分析の基盤になる可能性がある。(266 ページ)
データ駆動型の政策を続けていけば,より良くなっていくか試してみたい。
NP 困難問題が複雑である,あるいは利用できるリソースが限られているために解を求められそうにない場合は,次のいずれかの方法をとることができる。(331 ページ)
- 問題を単純化する
- 同じような問題に対する既知の解をカスタマイズする
- 確率論的な手法を使う
難しい問題に出会ったとき,上記の方法を試してみる。