実験に用いる実装はどうするべきかという疑問

データ構造とアルゴリズム,あるいは何らかのシステムを提案するとなれば,実験による評価は欠かせない存在です.理論的な評価も大切ですが,最終的には,実環境に置ける性能を評価することが求められます.でも,公平な評価とは難しいものです.

それぞれに利点・欠点,得意・不得意なデータ,環境の制限などがあるわけで,すべてを考慮して公平に評価することは不可能に近いことです.そんなわけで,環境を決めて,特徴的なデータを選択して…という具合に,実験設定を揃えることになります.

そして,実験において重要な問題の一つだと私が思っていることの一つが実装です.どの実装を使うのか,あるいはどうやって実装するのか….時間を評価するときは特に問題になります.

比較対象の実装が公開されていれば楽なのに…と思うこともありますが,それはそれで,悩みの種になる可能性があります.例えば,実装した人物のプログラミング・スキルがとても高く,巧妙な最適化が施されている場合,自分が相応の能力を持っていなければ,こちらが不利になります.逆の場合もあるでしょう.また,経験のない言語で実装されているときも,公平な実験は難しそうです.他にも,想定するデータや環境の違いなどがあるかもしれません.

すべてを自分で実装するのはどうかというと,思い入れの差があるので,無意識の内に,自分の手法・システムの実装に力を入れてしまうこと請け合いです.「他所の子よりうちの子の方がかわいいに決まってる!」というのは冗談にしても,自分で考えた手法・システムの方が最適化しやすいという状況は避けられません.各実装をどのくらい最適化するのか,何を想定して最適化するのか….そして,自分の実装で問題ないのか…?

…というような感じで,他の人たちはどういう風に考えているのか気になることがあります.