¿Cómo debo comparar mi algoritmo con otros cuando su código no está disponible?

En informática, generalmente implementamos nuestro trabajo en algoritmos y códigos. Entonces, para comparar nuestro trabajo con otros, también debemos implementar sus enfoques.

Pero el problema es que, por lo general, hay trabajos publicados recientemente en cada área que han utilizado métodos matemáticos complicados y afirman superar a otros métodos anteriores. Pero algunos de ellos son difíciles de implementar simplemente leyendo los periódicos; o no han mencionado todos los detalles necesarios en el documento para una implementación precisa de su trabajo y tampoco han puesto a disposición su código.

¿Cómo debo comparar mi trabajo con estos algoritmos más recientes para los cuales el código no está disponible?

Puede comparar a nivel teórico, en lugar de a nivel práctico (implementación).
No hay implementación de trabajo publicada = ignóralo. De todos modos, es mala ciencia, ya que sus afirmaciones del artículo no son verificables.

Respuestas (3)

Pedir el código a los autores es, por supuesto, siempre una opción, pero según mi experiencia personal, esto casi nunca funciona (hay una razón por la que no lo pusieron en línea en primer lugar).

No sé de qué área de informática eres, pero normalmente hay alguna medida cuantitativa para determinar qué método es mejor y esas medidas están de alguna manera en el papel. Esos pueden ser cosas como tiempo de ejecución o curvas de recuperación de precisión en ciertos conjuntos de datos.

Si desea comparar en el mismo conjunto de datos, puede pedirles a los autores los números/gráficos y luego trazar sus propias curvas junto con ellos.

Si desea comparar un conjunto de datos diferente, puede pedir a los autores que ejecuten el código por usted. En mi experiencia, esto funciona con más frecuencia porque muchos códigos no se publican porque están desordenados y necesitan muchos ajustes de parámetros, por lo que es poco probable que alguien más produzca buenos resultados con él.

Si tiene estudiantes de Licenciatura/Máster para supervisar, puede darles la implementación como un proyecto (aunque necesita darles suficiente tiempo para hacerlo).

En mi opinión personal, no vale la pena el esfuerzo de implementar un método que no se describe con suficiente detalle en ninguna parte. Probablemente le costará una cantidad de tiempo irrazonable sin siquiera reproducir la calidad que se muestra en el documento (por varias razones).

"muchos códigos no se publican porque están desordenados y necesitan muchos ajustes de parámetros, por lo que es poco probable que alguien más produzca buenos resultados con ellos". Y ahí tenemos la diferencia entre una persona CompSci y un desarrollador de software. Aunque es cierto que a menudo hay cierta superposición... pero al mismo tiempo, no hay suficiente superposición.
Sé que es posible comparar los resultados con los números proporcionados en sus artículos, pero no puede tener una comparación justa a menos que esté seguro de usar la misma configuración experimental, por ejemplo, el tipo de validación cruzada o los preprocesamientos que usaron con respecto a los datos.
@ivanivan He sido un SE el tiempo suficiente para saber que la mayoría de los programadores piensan demasiado en el código muy mediocre. Al menos, el código CS de investigación tiene la ventaja de que nunca se pretende que se ejecute en producción.
Para cuantificar "esto casi nunca funciona": hay un estudio de Collberg et al. , en el que se pidió a los autores de 263 artículos que proporcionaran su código fuente. Los autores respondieron proporcionando su código fuente en 87 casos (33% de todos los casos).
Entonces, ¿cómo debo convencer a los revisores de que no pude reproducir los resultados de otros trabajos, excepto el de 2014 que proporcionó el código?
Parece que si los autores no pueden/no quieren proporcionar el código fuente y dificultan o imposibilitan activamente la verificación/reproducción de sus resultados, esto debería ser motivo para presentar una queja a la revista que publicó el resultado.
"If you want to compare on a different data set, you can ask the authors to run the code for you."En ese momento, su documento contiene resultados basados ​​en experimentos que no realizó utilizando un código que no tiene. ¿ Qué sucede cuando alguien se comunica contigo tratando de reproducir tus resultados?

¿Qué tiene de malo ser honesto?

Comparamos nuestro algoritmo con A y B. Nos hubiera gustado comparar también con X, Y y Z, pero el código no está disponible para ellos.

Al menos en nuestro campo está mal visto y se rechaza con "debería haber comparado con los métodos X, Y, Z". o "falta de comparación". Es increíblemente frustrante, pero incluso afirmar que no hay código disponible no parece convencer a todos los revisores.

Si publica su código y produce mejores resultados cuantificables que cualquier otro código publicado, entonces puede afirmar que es el mejor. Para que alguien discuta eso, necesitaría mostrar mejores resultados cuantificables. En ciencia, necesitamos poder probar teorías y en informática, eso significa probar algoritmos. La revisión por pares también se aplica a la informática.