PyInv

プログラミングのメモ、海外投資のメモ

アルゴリズム思考術 問題解決の最強ツール



 読むべき時に読めた本。ちょうど最適化アルゴリズムを仕事で使う必要があったので、本書からのインサイトはすぐに役に立った。(自分で組んだわけではなく、納品されたものを検査する側)


 こういった本を読んでいて関心するのは、公私含めて普段なにげなく行っている行動の多く(例えば、本棚やメールの整理から配船計画まで)について大学院等の研究結果が公開されていることである。世間では当たり前のことなのだが、自分はほとんど意識していなかった。

 
 これに気が付いたとき、会社で働いているときのモヤモヤ感が一つ晴れた気がした。もっと研究結果を仕事に応用しよう。


 一個人に担える発明・発見の量は微々たるものか、もしくはすでに他のだれかが発見して使っているものでありうる。
 日本では事務系・技術系と区分された業務と思想が一般的である。一方、発見・発明の必要性は技術系に限らず事務系にも当てはまるのである。


 事務系ももっと外と交流して知見を広げることで会社の生産性をぐっと上げることができるのではないだろうか。なにも産学連携とは決して研究開発や技術系分野に限ったもんものではなく、もっと広義に捉えて活用すべきである。また、こういった機能をコンサルばかりに頼っていては会社にknowledgeを蓄積するノウハウが内なわれてしまう。


 今更こんなことを考えるとは、潤沢な投資をされた大学で教育を受けた身ながら大変恐縮である。



以下、本の内容のうち覚えておきたいものを抜粋


 本書では、代表的な事例に対するアルゴリズムが学術的にはどのように考えられているか、簡単なロジックとともに紹介されている。今後必要になったときに適宜文献を参照したい。大事なのは絶対的な解を見つける方法より少ない計算量による合理的な解見つける方法。

  • 最適停止問題
    • 最良の伴侶の見つけ方として巷では紹介されている。大事なのは何回「検討」する機会があるか。質が未知もしくは分布が均等ならば37%点以降に今までで最適なものを選ぶ

  • ソート
    • バブルソートは問題外。O(n)、O(n^2)という試行回数の基準をもちいて比較する。有効なのは比較数え上げ(分割して、分割された部分集合のなかでソートする)


  • ファイリング(キャッシュ)


  • 汎用スケジューリング
    • 各仕事の重要度を処理時間でわり、単位時間重要度で降順ソートする


  • スモールデータ問題(ベイズ
    • 既知の情報に対して乗法(べき分布:観測値になんらかの一定の値をかける)、平均(正規分布:そのうち平均になる)、加法(アーラン分布:残りは常に一定時間)のどれかを当てはめて未知の部分を予測する。メディアの取り上げは事前確率(既知の情報)を歪めるかも。


  • 離散最適化問題
    • 各種緩和法
      • 最小全域木(制約緩和)から始める。
      • 連続緩和により離散→連続に問題を置き換えて近似値を出す
      • ラグランジュ緩和(連続緩和)により制約条件をスコアに変換して考える。
    • ランダム性
      • 貪欲アルゴリズム(初期値をランダムに選択して、緩和された制約でラフに計画していく)で基本計画を作った後
      • +山登り法(局所的改善を繰り返す)
      • +ジッター(揺さぶってもう一度改善を始めさせる)
      • +メトロポリス(ランダムに再出発)
    • 焼きなまし法
      • 完全なランダムサンプリングで基本計画を作り、それに対応するエントロピーパラメータ(T)をおく。Tを徐々に減らしながら、またTに対応する大胆差で局所的改善をしていく by IBM。Machine LearningのGradient Boostingと同じ考え方。


  • アポを取るときはこちらから候補を絞ったほうが相手のメモリ消費を低減できる。