¿En qué se centran los principales competidores de Kaggle? ¿Qué les ayudó a hacerlo mejor que otros?

Gracias por pedirme que responda a esta pregunta (¡supongo que al menos una persona cree que soy un gran competidor de Kaggle!). Cualquiera, por favor, siéntase libre de corregir cualquier cosa inexacta o fuera de lugar aquí.

Esta es una pregunta difícil de responder, porque al igual que cualquier esfuerzo competitivo, cualquier competencia de Kaggle requiere una combinación única de habilidades y varios factores diferentes. En algunas competiciones, la suerte juega un papel importante. En otros, un elemento que no había considerado en absoluto jugará un papel importante.

Por ejemplo, fui el primero y / o el segundo durante la mayor parte del tiempo que se realizó la Competencia de Predicción de Personalidad [1], pero terminé en el puesto 18, debido al sobreajuste en la etapa de selección de características, algo que nunca antes había encontrado con el método Solía. En el blog de Kaggle [2] se puede encontrar una buena publicación sobre algunos de los cambios aparentemente aleatorios que ocurren al final de una competencia.

Persistencia, persistencia y más persistencia

Ha esbozado algunos factores clave para el éxito. No todos son aplicables a todas las competiciones, pero encontrar la que se aplique es clave. En esto, la persistencia es muy importante. Es fácil desanimarse cuando no entra en el top 5 de inmediato, pero definitivamente vale la pena seguir intentándolo. En una competencia, creo que literalmente probé todos los métodos publicados sobre un tema.

En mi primera competencia de Kaggle, la competencia de Predicción de calidad fotográfica [3], terminé en el lugar 50 y no tenía idea de lo que los principales competidores habían hecho de manera diferente a mí.

Sin embargo, logré aprender de esta experiencia, y lo hice mucho mejor en mi segunda competencia, el Algorithmic Trading Challenge [4].

Lo que cambió el resultado de la competencia Photo Quality a la competencia Algorithmic Trading fue el aprendizaje y la persistencia. Realmente no pasé mucho tiempo en la competencia anterior, y se demostró en los resultados.

Espere hacer muchas presentaciones malas que no obtengan una buena puntuación. Debería estar leyendo la mayor cantidad de literatura relevante (y publicaciones de blog, etc.), mientras pueda mientras la competencia se está ejecutando. Siempre que aprenda algo nuevo que pueda aplicar a la competencia más tarde, o aprenda algo de su presentación fallida (tal vez que un algoritmo o enfoque particular no es adecuado para los datos), está en el camino correcto.

Sin embargo, esta persistencia debe venir de adentro. Para estar dispuesto a hacer esto, debe preguntarse por qué participa en una competencia en particular. ¿Quieres aprender? ¿Quieres ganar oportunidades colocando altamente? ¿Solo quieres probarte a ti mismo? La recompensa monetaria en la mayoría de las competencias de Kaggle no es suficiente para motivar una inversión de tiempo significativa, por lo que, a menos que sepa claramente lo que quiere y cómo motivarse, puede ser difícil seguir intentándolo. ¿El rango te importa? De lo contrario, puede darse el lujo de aprender sobre cosas interesantes que pueden o no afectar el puntaje, pero no si está tratando de obtener el primer lugar.

El resto de los factores

Ahora que he abordado lo que creo que está en el factor más importante (persistencia), abordaré el resto de su pregunta:

1. El factor más importante relacionado con los datos (para mí) es cómo prepara los datos y qué características diseña. La selección de algoritmos es importante, pero mucho menos. Realmente no he visto el uso de ninguna herramienta patentada entre los principales competidores, aunque un par de primeros clasificados han utilizado herramientas de código abierto que codificaron / mantienen.

2. He tenido malos resultados con datos externos, por lo general. A menos que observe a alguien en la tabla de clasificación que tiene una gran cantidad de separación del resto del grupo (o un grupo que tiene separación), es poco probable que alguien haya encontrado datos externos “asesinos”. Dicho esto, debe intentar utilizar todos los datos que se le proporcionan, y a menudo hay formas innovadoras de utilizar lo que se le proporciona para generar conjuntos de capacitación más grandes. Un ejemplo es el Benchmark Bond Competition [5], donde los anfitriones de la competencia lanzaron dos conjuntos de datos porque el primero podría modificarse fácilmente. El uso de ambos más que duplicó los datos de entrenamiento disponibles (esto no ayudó a calificar, y no lo usé en el modelo final, pero es una ilustración del punto).

3. El conocimiento inicial específico del dominio puede ser útil (algunas fórmulas de fijación de precios de bonos, etc., me ayudaron en la competencia de Benchmark Bond), pero no es crítico, y lo que necesita generalmente se puede aprender aprendiendo mientras compite. Por ejemplo, aprendí métodos de PNL mientras competía en la competencia ASAP de la Fundación Hewlett. Dicho esto, definitivamente debes aprender rápidamente los elementos específicos del dominio relevantes que no conoces, o no podrás competir en la mayoría de las competiciones.

4. Elegir una competencia menos competitiva definitivamente puede ser útil al principio. Los concursos de investigación tienden a tener menos competidores que los que tienen grandes premios. Más adelante, me resulta útil competir en competencias más competitivas porque te obliga a aprender más y salir de tu zona de confort.

5. Formar un buen equipo es crítico. Tuve la suerte de trabajar con grandes personas en dos competencias diferentes (ASAP y Bond), y aprendí mucho de ellas. Las personas tienden a dividirse en aquellas que casi siempre trabajan solas y aquellas que casi siempre se unen, pero es útil tratar de hacer ambas cosas. Puedes aprender mucho trabajando en equipo, pero trabajar por tu cuenta puede hacerte aprender cosas para las que de otro modo dependerías de un compañero de equipo.

6. La suerte también juega un papel. En algunas competiciones, .001% separa el 3er y 4to lugar, por ejemplo. En ese punto, es difícil decir cuál es el enfoque “mejor”, pero en general solo uno es reconocido como ganador. Un hecho de Kaggle, supongo.

7. Lo mejor del aprendizaje automático es que puedes aplicar técnicas similares a casi cualquier problema. No creo que necesite elegir problemas sobre los que tenga una visión particular o un conocimiento particular, porque, francamente, es más interesante hacer algo nuevo y aprender sobre él a medida que avanza. Incluso si tiene una gran idea el primer día, es probable que otros lo piensen, pero pueden hacerlo el día 20 o el día 60.

8. No tengas miedo de obtener un rango bajo. A veces ves una competencia interesante, pero piensas que no podrás pasar mucho tiempo en ella y es posible que no obtengas un rango decente. No te preocupes por esto. ¡Nadie te va a juzgar!

9. Cada entrada ganadora de Kaggle es la combinación de docenas de pequeñas ideas. Rara vez hay un gran momento aha que te gane todo. Si hace todo lo anterior, asegúrese de seguir aprendiendo y seguir trabajando para repetir su solución, lo hará bien.

¿Aprender es divertido?

Creo que los dos elementos principales que subrayé aquí son la persistencia y el aprendizaje. Creo que estos dos conceptos encapsulan muy bien mi experiencia en Kaggle, e incluso si no ganas una competencia, siempre que hayas aprendido algo, pasaste tu tiempo sabiamente.

Referencias

1. http://www.kaggle.com/c/twitter-…
2. http://blog.kaggle.com/2012/07/0…
3. http://www.kaggle.com/c/PhotoQua…
4. http://www.kaggle.com/c/Algorith…
5. http://www.kaggle.com/c/benchmar…

He tenido la suerte de haber llegado a los primeros lugares de algunas competiciones de Kaggle, y me han sorprendido los factores que no importan tanto, como los que sí lo hacen. Aquí están mis observaciones y opiniones:

Persistencia y entusiasmo : Primero, estoy de acuerdo con los comentarios de Vik de que la persistencia juega un papel importante. Estos concursos son a la vez adictivos y frustrantes. Muchas veces he codificado lo que pensé que era una gran idea, solo para quedar atónito sobre por qué terminó perjudicando mi puntaje. La convergencia en un buen modelo lleva tiempo, por lo que para seguir adelante, realmente ayuda entusiasmarse con el problema, aprender algo nuevo o trabajar con sus compañeros de equipo.

Conozca sus datos (también conocido como Análisis de datos exploratorios) : cada conjunto de datos es único, por lo que creo que es realmente importante analizar los datos y conocer sus peculiaridades e inconsistencias al revés. Debe hacer esto antes de siquiera pensar en arrojar los datos en algún algoritmo de ML o hacer un preprocesamiento. Escriba código que genere miles de gráficos que pueda escanear, para que tenga una buena idea de lo que están haciendo las variables en el conjunto de datos sin procesar. A veces, las peculiaridades pueden proporcionar información, mientras que otras veces brindan oportunidades. Grandes valores atípicos me han quemado más de una vez, por lo que una lección que he aprendido es tener siempre una estrategia sensata para encontrarlos y tratarlos, en lugar de ignorarlos.

Ingeniería de características : creo que esta es una de las habilidades más importantes, si no la más importante. La buena noticia, sin embargo, es que no es exclusivamente una habilidad altamente técnica. Una buena dosis de creatividad y sentido común puede llevarte lejos cuando sueñas con nuevas características. Además, si el dominio del concurso es completamente nuevo para mí, generalmente busco algunos documentos en el campo y los escaneo para tener una idea general de las características / factores que ya son muy importantes. Pero no me detengo en investigar demasiado (es decir, no más del 5% -10% de la duración de la competencia). La mayoría de las veces, me divierto generando tantas ideas locas para las características como sea posible, y luego dejo que un algoritmo de selección de características o de priorización de características elimine los que no funcionan bien.

Evitar el sobreajuste : cuando cada 0.000001 es importante, una habilidad técnica crucial es evitar sobreajustar su modelo a los datos. Cuando los líderes de un concurso están separados solo por una cantidad muy pequeña, incluso un poco de sobreajuste puede hacer que pierdas muchos lugares en la clasificación final.

Escogiendo un problema sobre el que tenía una idea particular : me ha sorprendido que esto no haya sido particularmente importante. A veces, me ha ido mal en problemas sobre los que pensé que tenía conocimientos, mientras que otras veces me ha ido bien en áreas completamente nuevas para mí. Entonces, para mí, creo que hay una correlación muy floja (en el mejor de los casos) entre ideas / experiencia y éxito en un concurso. Muchos ganadores de Kaggle provienen de campos fuera del dominio del concurso, por lo que las ideas anteriores no parecen ser obligatorias. Pero conocer un área problemática ya puede significar que estás interesado en él, lo que significa que probablemente trabajarás más duro en el concurso y serás más exitoso.

Sobre el uso de datos externos : es muy tentador usar datos externos, pero en general, no he encontrado útil usarlos. Una publicación de blog realmente interesante sobre este tema surgió durante el Premio Netflix, donde los miembros del equipo ganador comentaron que los datos externos ayudaron a sus modelos más débiles al principio, pero a medida que progresaron, no los ayudó en absoluto. http: //pragmatictheory.blogspot

Conocimiento superior de las sutilezas de ML : hoy en día, con todos los que usan bibliotecas de rutinas de ML, puede usar técnicas que no comprende completamente y que no hace bastante bien. Esto es bueno y malo. Conocer las sutilezas y los detalles de cada algoritmo es útil para la optimización, pero uno podría tropezar con el mejor algoritmo o parámetros simplemente por prueba y error. Yo diría que la mayoría de los competidores probablemente tengan acceso al mismo conjunto de algoritmos de aprendizaje automático ‘estándar’ que se proporcionan en las bibliotecas ML, por lo que esto realmente no ofrece una gran ventaja competitiva.

Herramientas propietarias : no creo que esto sea una ventaja en absoluto, dadas todas las herramientas y bibliotecas de código abierto que existen. Nunca he usado una herramienta patentada para estos concursos (bueno, en realidad eso no es cierto, a veces hago gráficos en Excel …)

Existen muchas técnicas diferentes, y muchas de ellas tienen sus propios parámetros de ajuste. En mi opinión, elegir los mejores parámetros o la mejor técnica estándar está sobrevalorado.

En cambio, las claves son:
1) Ingeniería de características: Extraer los datos en un formato que cree buenas variables / características predictivas. Dependiendo de la situación, generalmente es mejor crear demasiadas funciones en lugar de muy pocas … la mayoría de los algoritmos resolverán qué es relevante y qué no. La preparación de datos y la ingeniería de características es el mayor determinante del rango final.

2) Invierta tiempo temprano en la competencia en la construcción de un flujo de trabajo / infraestructura para trabajar con los datos.
Por ejemplo, trabajé duro para simplificar mi flujo de trabajo en el EC2 de Amazon, por lo que no necesito futz con su interfaz web cuando necesito usar mucha memoria.
El tiempo dedicado a configurar el control de versiones y automatizar tareas repetitivas dará sus frutos rápidamente.

3) La combinación / ensamblaje puede conducir a grandes mejoras. Algunos de los algoritmos de mezcla se han discutido en los foros de Kaggle. Tenga un poco de cuidado para no sobreajustarse al armar … pero cualquier conjunto que haga probablemente mejorará su puntaje sobre su mejor modelo individual.

A partir de mis observaciones del blog de Kaggle, el conocimiento específico del dominio se usa ligeramente en general. La normalización y el procesamiento de características junto con muchas pruebas para ajustar un método de clasificación (bosques aleatorios la mayoría de las veces) arroja la victoria.

Depende de la competencia particular. Consideremos actualmente la competencia activa (20-12-2015) de ‘ Reconocimiento de ballenas francas ‘. Creo que el problema más importante aquí es: ¿dónde obtener un sistema con 8 procesadores y una GPU NVIDIA Titan X con Ubuntu? De lo contrario, probablemente tendrá dificultades para ejecutar el código, que se publicó anteriormente en el sitio web de Kaggle. No estoy seguro de si tales preocupaciones tienen o no una relación directa con la ciencia de datos, pero es un problema bastante típico en la plataforma Kaggle.

¿Cuál es la disposición de la tierra para Kaggle dada su incursión en la industria energética y sus recientes despidos? ¿Está Kaggle adelantado a su tiempo o un puente demasiado lejos para el período comercial?

More Interesting

¿Cuáles son las relaciones entre el aprendizaje automático, el aprendizaje profundo, el aprendizaje supervisado y el aprendizaje no supervisado?

¿Qué tan útil es el aprendizaje profundo para problemas P> N?

¿Cuáles son los roles de probabilidad y estadística en el aprendizaje automático? ¿Qué tan importantes son? ¿Cuáles son sus aplicaciones en el aprendizaje automático?

¿Qué enfoque se debe tomar para decidir el modelo de clasificación?

¿Por qué se hace referencia a la validación como 'dev' en algunos ejemplos de programas de aprendizaje automático?

¿Qué podríamos hacer con Asimo si la computadora dentro estuviera con el poder de la caja de aprendizaje profundo Nvidia DGX-1?

¿Cuál es la mejor manera de aprender el aprendizaje automático, en línea o sin conexión?

¿Es un análisis de regresión múltiple más útil / perspicaz para la relación entre IV y DV que un ANOVA?

¿Cuál es un ejemplo de un sistema, proceso o actividad que no puede ser modelado por un proceso de decisión de Markov?

¿Cómo debo seguir el curso de Andrew NG si quiero aprender el aprendizaje automático en Python y cómo debo progresar después de completar el curso?

¿Cómo funciona el texto predictivo?

¿Por qué la función de activación de softmax se llama "softmax"?

Cómo crear un conjunto de datos a partir de imágenes

¿McKinsey consideró el crecimiento del software de Machine Learning al predecir la escasez de habilidades analíticas en el documento técnico de Big Data?

¿Cuál es una explicación intuitiva del modelo gráfico de la asignación de Dirichlet latente?