Skip to main content
QUICK REVIEW

[論文レビュー] GuessCompx: An empirical complexity estimation in R.

Marc Agenis-Nevers, Neeraj Dhanraj Bokde|arXiv (Cornell University)|Nov 4, 2019
Data Analysis with R被引用数 4
ひとこと要約

GuessCompx は、Rパッケージであり、増加するデータサイズのテストを行い、LOO-MSE を用いて7つの標準的複雑度モデル(例:O(N)、O(N²))にフィッティングすることで、アルゴリズムや関数の実行時間およびメモリ使用量の複雑度を経験的に推定する。全データセットの性能予測と有意性検定、プロットを返すことで、対象関数のソースコードにアクセスせずに複雑度分析が可能になる。

ABSTRACT

This article introduces GuessCompx which is an R package that performs an empirical estimation on the time and memory complexities of an algorithm or a function. It tests multiple increasing-sizes samples of the user's data and attempts to fit one of seven complexity functions: O(N), O(N^2), O(log(N)), etc. Based on a best fit procedure using LOO-MSE (leave one out-mean squared error), it also predicts the full computation time and memory usage on the whole dataset. Conceptually, it relies on the base R functions system.time and memory.size, the latter being only suitable for Windows users. Together with this results, a plot and a significance test are returned. Complexity is assessed with regard to the user's actual dataset through its size (and no other parameter). This article provides several examples demonstrating several cases (e.g., distance function, time series and custom function) and optimal parameters tuning. The subject of the empirical computational complexity has been relatively little studied in computer sciences, and such a package provides a reliable, convenient and simple procedure for estimation process. Further, the package does not require to have the code of the target function.

研究の動機と目的

  • コンピュータサイエンス分野において未だ十分に検討されていない経験的計算複雑度推定の分野に対処すること。
  • 対象関数のソースコードにアクセスせずに、信頼性が高く使いやすい実行時間およびメモリ使用量の複雑度推定手法を提供すること。
  • 研究者および実務家が、経験的プロファイリングに基づいて、全データセットの実行時間およびメモリ使用量を予測できるようにすること。
  • 距離関数、時系列、カスタム関数など、多様なユースケースにおける複雑度分析を支援すること。
  • 標準的な R 関数および統計的フィッティングを用いた、シンプルで自動化された複雑度推定手順を提供すること。

提案手法

  • ベース R の system.time および memory.size(Windows専用)関数を用いて、実行時間およびメモリ使用量を経験的に測定する。
  • ユーザーのデータセットの複数の増加するサイズのサンプルに対して、対象関数を実行する。
  • 観測されたパフォーマンスデータを、LOO-MSE(1つずつ除外した平均二乗誤差)を用いて7つの候補となる複雑度モデル(例:O(N)、O(N²)、O(log N))にフィッティングする。
  • すべての候補モデルの中で最小の LOO-MSE を示すモデルを、最良のフィットモデルとして選択する。
  • モデルのフィット度および複雑度の傾向を評価するための有意性検定および可視化プロットを生成する。
  • 最良のフィットモデルに基づいて、全データセットの実行時間およびメモリ使用量を予測する。

実験結果

リサーチクエスチョン

  • RQ1増加するデータサイズで実行された関数の経験的実行時間複雑度は何か?
  • RQ2関数の経験的メモリ使用量は何か、そして入力サイズに伴ってどのように変化するか?
  • RQ37つの標準的複雑度モデル(例:O(N)、O(N²))の中で、観測されたパフォーマンス行動に最もフィットするのはどれか?
  • RQ4小規模な測定結果から、全データセットの実行時間およびメモリ使用量を信頼性高く予測できるか?
  • RQ5真のアルゴリズム的複雑度を特定する際、LOO-MSE を用いたモデル選択はどれほど頑健で正確か?

主な発見

  • GuessCompx は、多様なテストケースにおいて LOO-MSE を用いて、最良のフィットする複雑度モデル(例:O(N)、O(N²))を的確に同定した。
  • このパッケージは、経験的プロファイリングに基づいて、全データセットの実行時間およびメモリ使用量を予測可能である。
  • この手法は、フィットした複雑度モデルの信頼性を評価する有意性検定を提供する。
  • このアプローチは、対象関数のソースコードにアクセスせずに機能するため、使いやすさが向上する。
  • このパッケージは、距離計算、時系列解析、カスタム関数など、さまざまな分野での実用的応用をサポートする。
  • 経験的結果から、実行時間およびメモリ使用量の測定値のみを用いて、増加するデータサイズで複雑度を信頼性高く推定できることが示された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。