¿Cómo puede funcionar un algoritmo con un conjunto de datos pequeño pero da valores incorrectos en un conjunto de datos más grande?

El conjunto de datos pequeño no cubre todas las variaciones en los datos. Los codificadores generalmente desarrollan piezas de software con datos pequeños que representan la forma más general de los datos, pero lagos de la variedad de datos. Uno de los proyectos en los que trabajé fue el sistema de gestión de Punjab Land Records. Punjab Govt. en Pakistán, se computarizaron los registros de tierras de toda la provincia paquistaní que se gestionaba manualmente en registros en papel. Punjab posee el 60% de la población de Pakistán y es la provincia más grande de Pakistán. Mi empresa desarrolla el software, pero cuando lo implementamos en centros de entrada de datos con más de 3000 agentes de entrada de datos, comienzan a surgir problemas. El software fue desarrollado y probado con datos de registros en papel de un distrito pequeño, cubrimos todas las áreas. Pero cuando todos los datos de la provincia entran en la entrada de datos, comenzamos a ver las variaciones que nunca salieron en el conjunto de datos inicial. Las personas que administraron los datos durante más de 100 años estaban usando sus propias convenciones pequeñas, estándares y formatos en registros en papel que eran pequeños en los papeles pero que rompen el software porque no puede manejar esas variaciones. Y tenemos que registrar lo que estaba en los registros sin ninguna modificación en los datos. Por lo tanto, el software se modificó continuamente todos los días durante todo el año. Hubo 6 centros con más de 3000 operadores de entrada de datos que ingresaron los datos y todos los días vengo a ver 100 BUGS en el software porque no puede manejar esa variación.

Y la historia no terminó ahí. Una vez que todos los datos fueron informatizados y desplegados en 100 centros de servicio en toda la provincia, comenzamos a recibir la misma cantidad de ERRORES todos los días de los centros de servicio. Porque no pueden manejar una situación específica a través del software mientras realizan las transacciones rutinarias relacionadas con la tierra. Punjab Govt. tiene que hacer un control de un año con la compañía para el mantenimiento y la corrección de errores en el software

Ese proceso aún continúa después de que abandoné la compañía hace 3 años.

Entonces, la respuesta es que un pequeño conjunto de datos nunca representa todas las variaciones en los datos en producción

Si el programa está usando números de coma flotante, probablemente esto se deba a la acumulación de errores de redondeo (error de redondeo – Wikipedia). Un primer paso es aumentar la precisión; si está utilizando el interruptor de float para double . Para aumentar aún más la precisión, reemplace los double con grandes racionales, suponiendo que tenga soporte para eso. Esto hará que el programa sea más lento, pero los resultados deben estar libres de errores de redondeo. Si el cálculo involucra irracionales, entonces es imposible evitar algunos redondeos y todo lo que puede hacer es aumentar la precisión.

Una vez que establezca que el problema es causado por errores de redondeo; Tal vez sea posible solucionar el problema con un diseño que evite la acumulación de errores.

Para más detalles: lo que todo informático debe saber sobre la aritmética de punto flotante

More Interesting

¿Cuál es la clave para diferenciar y comparar dos algoritmos de aprendizaje automático?

¿Es posible crear un algoritmo de proximidad a la muerte?

¿Existen buenos libros o recursos para resolver problemas y algoritmos en C #, para la preparación de entrevistas SDET?

¿Cuál es la sobrecarga máxima en el algoritmo de relleno de bytes?

¿En qué se diferencia un árbol de búsqueda binario de un árbol binario?

¿Es posible que el modelo de espacio vectorial que utilizamos para entrenar algoritmos de aprendizaje automático sea inadecuado para la representación del aprendizaje humano?

¿Qué tiene de malo el siguiente código C ++ para PRIME1 en SPOJ?

¿Qué tipos de algoritmos o códigos no valen la pena publicar en trabajos académicos de estudiantes graduados?

Cómo aprender la estrategia de algoritmos

¿Cuál es la complejidad temporal de las funciones incorporadas en C ++?

¿Cuáles son los mejores algoritmos de partición de gráficos para gráficos grandes?

¿Cuál es el mejor algoritmo para elegir para la tarea de aprendizaje automático de agrupar una base de datos de listados de casas con sus propiedades (algunos de los cuales son binarios y otros son numéricos y preferiblemente con la primera imagen)?

¿Qué canal / tutorial en YouTube es mejor para aprender algoritmos o estructuras de datos?

¿Cuál es la lógica y la intuición detrás del algoritmo de optimización de momento y por qué se considera mejor que el descenso de gradiente?

¿Cuántas puertas lógicas se necesitan para multiplicar dos enteros de n bits?