Me concentré en un solo problema: quora-ml-respondida
Idioma utilizado: Python 2 con scikit learn
Mi enfoque fue bastante simple.
- ¿Podemos automatizar las búsquedas a través del aprendizaje automático? Tengo cientos de sitios web de diferentes fabricantes de automóviles, si tengo la intención de extraer toda la información (sobre todas las bicicletas / automóviles) junto con los enlaces.
- ¿Por qué podría ser preferible incluir menos predictores sobre muchos?
- ¿Qué es una herramienta Weka?
- ¿Existe algún uso práctico de la teoría de la información en los algoritmos de aprendizaje automático aplicados en la industria financiera?
- ¿Cómo funcionan los vectores de párrafo frente a codificadores automáticos variacionales?
Preprocesamiento:
Mi primera idea fue usar una etiqueta anónima de alguna manera. Entonces, agregué una cadena única (como “asdfAnony”) al texto de la pregunta. Pensé que mi Vectorizador y Transfermers convertirían la presencia de esta palabra en una característica. Finalmente agregué temas y seguidores (después del binning) al Texto de la pregunta.
Utilicé Vectorizer simple sin ningún hashing ya que quería pasar por las palabras / tokens principales para mi comprensión.
En mi caso, los unigramas se desempeñaron mejor que 2, 3, 4 y 5 gramos. (¡Los probé todos!)
No convertí datos dispersos a densos. Entonces, tuve que usar métodos que pueden tomar datos en formato disperso.
Selección de modelo:
Luego intenté usar varios modelos con estos datos. Algunos de ellos eran buenos, pero se restringió el tiempo para filtrar algunos de ellos.
Rendimiento de varios algos en el conjunto de datos de muestra:
Basado en esta prueba, elegí 3 mejores.
- Regresión logística (con penalización L2)
- Clasificador SGD (con penalización L2)
- SVC lineal
SGD era mejor que los dos modelos restantes, pero estaba tomando mucho tiempo. La regresión logística funcionó mejor que el SVC lineal (alrededor de un 2% de diferencia en precisión).
Nota: En un momento pensé en usar los 3 y usar los resultados para predecir la respuesta final. ¡Pero eso fue solo un pensamiento!
Decidí usar Regresión logística con penalización L2. Más tarde encontró parámetros óptimos para tolerancia y C, utilizando la búsqueda de cuadrícula. ¡Finalmente llegué al primer lugar en la tabla de posiciones!
Pero quería usar SGD. Entonces, tomé algunas palabras importantes del modelo clasificador SGD y les otorgé un peso adicional antes de suministrarlas a LogRegressor. Resultó en un aumento muy pequeño de 0.2% en precisión y estaba satisfecho de usar SGD de alguna maneraJ. En realidad, tenía mucho miedo de un ajuste excesivo debido a mi último paso. Pero el efecto fue insignificante.
Experimenté todo lo posible en mis límites (> 100 presentaciones en HackerRank y número de pruebas en mi máquina local) y disfruté de todas y cada una de las presentaciones que me llevaron a la clasificación. ¡Cruzar a Ben fue el mejor momento!
Si piensa en alguna sugerencia o corrección (como si algo no tiene sentido), ¡hágamelo saber!