Permítanme agregar una perspectiva desde el lado de ML [dado que las otras dos respuestas son de programadores competitivos].
- La primera diferencia entre la programación competitiva y las competiciones de ML es la naturaleza de los concursos. En la programación competitiva, el objetivo es implementar el algoritmo correcto en el menor tiempo posible. En las competiciones de ML, el objetivo es implementar un algoritmo dentro del marco de tiempo dado que logre la máxima precisión. Es decir, en la programación competitiva, su velocidad determina su rango, dado que ha escrito el código correcto, mientras que en las competiciones de ML, su precisión determina su rango, dado que terminó a tiempo.
- El punto anterior hace que la forma de abordar las competiciones sea muy diferente. En la programación competitiva, no hay un componente de modelado: usted sabe que el problema dado puede resolverse exactamente utilizando un algoritmo ya existente. En las competiciones de ML, muchos de los problemas están abiertos, es decir, nadie sabe cuál es el mejor método para ellos y, como tal, requieren una cantidad significativa de modelado. Puede que tenga que inventar nuevas técnicas para ganar estas competiciones. El famoso ejemplo es el desafío ImageNet 2012, que hizo que el aprendizaje profundo fuera tan popular. El equipo ganador usó técnicas que antes nadie usaba. Por lo tanto, las competiciones de ML pueden requerir mucha más lluvia de ideas y planes / visión / motivación a largo plazo en comparación con las competencias de programación.
- Así como la programación competitiva no cubre toda la programación de computadoras, las competiciones de ML no cubren todos los aspectos de ML. Más información sobre esto aquí: ¿puedo aprender Machine Learning completamente con Kaggle?