学生の頃、表題のアルゴリズムを研究に応用しようとしていましたが、すっかり忘れているので、思い出すために改めてPythonで実装してみました。当時は、matlabでfor文を回して実現していましたが、今回は、勉強がてらラムダ式やら再帰呼び出しやらを駆使して書いてみようと思います。 シーケンシャルデータのセグメンテーションとは まず、今回取り上げる問題はどういうものか、等間隔でサンプリングされた離散的な時系列データを例にとって説明します。下図のように、時系列データを個のセグメント分割すると、それぞれのセグメントごとに何らかのスコアが得られるとします。さて、セグメントの境界をどこに置けば、スコアの合計値を最大化できるのでしょう?というのが今回解きたい問題です。 具体的な応用を1つ挙げると時系列データの近似があります。例えば、下図のようにセグメント内の平均値で時系列データを近似し、その二乗誤差平均