Как мне сравнить свой алгоритм с другими, если их код недоступен?

В информатике мы обычно реализуем нашу работу в виде алгоритмов и кодов. Поэтому, чтобы сравнивать нашу работу с другими, нам также необходимо применять их подходы.

Но проблема в том, что обычно в каждой области есть недавно опубликованные работы, в которых используются сложные математические методы и утверждается, что они превосходят предыдущие методы. Но некоторые из них трудно реализовать, просто читая статьи; или они не упомянули в документе все необходимые детали для точной реализации своей работы, а также не предоставили доступ к своему коду.

Как мне сравнить свою работу с этими самыми последними алгоритмами, код которых недоступен?

Сравнивать можно на теоретическом уровне, а не на практическом (реализации).
Нет опубликованной рабочей реализации = игнорировать ее. В любом случае, это плохая наука, поскольку их утверждения из статьи не поддаются проверке.

Ответы (3)

Запрашивать код у авторов, конечно, всегда можно, но, судя по моему личному опыту, это почти никогда не работает (есть причина, по которой они не разместили его в сети на первом месте).

Я не знаю, из какой области компьютерных наук вы работаете, но обычно есть некоторая количественная мера, чтобы определить, какой метод лучше, и эти меры каким-то образом отражены в статье. Это могут быть такие вещи, как время выполнения или кривые точного отзыва для определенных наборов данных.

Если вы хотите сравнить один и тот же набор данных, вы можете запросить у авторов сами числа / графики, а затем построить свои собственные кривые вместе с ними.

Если вы хотите сравнить другой набор данных, вы можете попросить авторов запустить код для вас. По моему опыту, это работает чаще, потому что многие коды не публикуются из-за их беспорядка и необходимости настройки большого количества параметров, поэтому маловероятно, что кто-то еще даст хорошие результаты с ним.

Если у вас есть студенты бакалавриата/магистратуры, которым нужно руководить, вы можете передать им реализацию в виде проекта (хотя вам нужно дать им достаточно времени для этого).

По моему личному мнению, не стоит затрачивать усилий на реализацию метода, который нигде достаточно подробно не описан. Это, вероятно, будет стоить вам неоправданного количества времени, даже не воспроизводя качество, показанное в статье (по разным причинам).

«многие коды не публикуются, потому что они запутаны и требуют настройки многих параметров, поэтому маловероятно, что кто-то еще даст хорошие результаты с ним». И здесь у нас есть разница между человеком CompSci и разработчиком программного обеспечения. Хотя, по общему признанию, часто есть некоторое совпадение... но в то же время, недостаточное совпадение.
Я знаю, что можно сравнить результаты с числами, приведенными в их статьях, но у вас не может быть справедливого сравнения, если вы не уверены, что используете ту же экспериментальную установку, например, тип перекрестной проверки или предварительную обработку, которую они использовали в отношении данные.
@ivanivan Я был SE достаточно долго, чтобы знать, что большинство программистов слишком высоко ценят очень посредственный код. По крайней мере, исследовательский код CS имеет то преимущество, что никогда не предназначался для запуска в производстве.
Для количественной оценки «это почти никогда не работает»: есть исследование Collberg et al. , в котором авторов 263 статей попросили предоставить их исходный код. Авторы ответили, предоставив свой исходный код в 87 случаях (33% всех случаев).
Итак, как мне убедить рецензентов, что я не могу воспроизвести результаты других работ, кроме той, что за 2014 год, которая предоставила код?
Похоже, что если авторы не могут/не хотят предоставить исходный код и активно затрудняют или делают невозможным проверку/воспроизведение своих результатов, это должно быть поводом для подачи жалобы в журнал, опубликовавший результат.
"If you want to compare on a different data set, you can ask the authors to run the code for you."В этот момент ваша статья содержит результаты, основанные на экспериментах, которые вы не проводили, используя код, которого у вас нет. Что происходит, когда кто-то связывается с вами , пытаясь воспроизвести ваши результаты?

Что плохого в том, чтобы быть честным?

Мы сравниваем наш алгоритм с A и с B. Мы хотели бы сравнить также с X, Y и Z, но код для них недоступен.

По крайней мере, в нашей области его не одобряют и отвергают со словами «следует сравнить с методами X, Y, Z». или «отсутствие сравнения». Это невероятно расстраивает, но даже заявление об отсутствии доступного кода, кажется, не повлияет на каждого рецензента.

Если вы публикуете свой код и он дает лучшие измеримые результаты, чем любой другой опубликованный фрагмент кода, вы можете заявить, что он лучший. Для того, чтобы оспорить это, они должны были бы показать более поддающиеся количественному измерению результаты. В науке нам нужно иметь возможность проверять теории, а в компьютерных науках это означает проверку алгоритмов. Рецензирование применимо и к компьютерным наукам.