Hay una serie de dimensiones que puede observar para darle una idea de lo que será un algoritmo razonable para comenzar, a saber:
- Número de ejemplos de entrenamiento.
- Dimensionalidad del espacio de características
- ¿Espero que el problema sea linealmente separable?
- ¿Las características son independientes?
- ¿Se espera que las características dependan linealmente de la variable objetivo? * EDITAR: vea mi comentario sobre lo que quiero decir con esto
- ¿Se espera que el sobreajuste sea un problema?
- ¿Cuáles son los requisitos del sistema en términos de velocidad / rendimiento / uso de memoria …?
- …
Esta lista puede parecer un poco desalentadora porque hay muchos problemas que no son fáciles de responder. Sin embargo, la buena noticia es que, como muchos problemas en la vida, puede abordar esta pregunta siguiendo el principio de la Navaja de Occam: use el algoritmo menos complicado que pueda satisfacer sus necesidades y solo busque algo más complicado si es estrictamente necesario.
Regresión logística
- ¿Cuáles son algunas de las estructuras de datos / algoritmos de clasificación más interesantes?
- Cómo escribir un algoritmo
- Como desarrollador web full stack con 1 año de experiencia, ¿sería beneficioso para mí aprender algoritmo y estructura de datos?
- ¿Cuál es su opinión sobre Interview Cake para resolver algoritmos?
- Una computadora pequeña tiene 4 marcos de página. Un proceso hace la siguiente lista de referencias de página; 1,2,3,4,1,5,2,3,1,2. ¿Cuántas fallas de página ocurren usando los siguientes algoritmos de reemplazo de página?
Como regla general, recomendaría comenzar con Regresión logística. La regresión logística es un algoritmo de clasificación bastante bien comportado que se puede entrenar siempre que espere que sus características sean aproximadamente lineales y que el problema sea linealmente separable. Puede realizar algunas funciones de ingeniería para convertir la mayoría de las características no lineales en lineales con bastante facilidad. También es bastante robusto al ruido y puede evitar el sobreajuste e incluso hacer la selección de funciones utilizando la regularización l2 o l1. La regresión logística también se puede usar en escenarios de Big Data, ya que es bastante eficiente y se puede distribuir utilizando, por ejemplo, ADMM (ver logreg). Una ventaja final de LR es que la salida puede interpretarse como una probabilidad. Esto es algo que viene como un buen efecto secundario, ya que puede usarlo, por ejemplo, para clasificar en lugar de clasificar.
Incluso en el caso de que no espere que la Regresión logística funcione al 100%, hágase un favor y ejecute un LR simple regularizado con l2 para obtener una línea de base antes de comenzar a utilizar enfoques “más sofisticados”.
Bien, ahora que ha establecido su línea base con Regresión logística, ¿cuál debería ser su próximo paso? Básicamente, recomendaría dos direcciones posibles: (1) SVM o (2) Conjuntos de árbol. Si no supiera nada sobre su problema, definitivamente elegiría (2), pero comenzaré describiendo por qué los SVM podrían ser algo que valga la pena considerar.
Máquinas de vectores de soporte
Las máquinas de vectores de soporte (SVM) utilizan una función de pérdida (Bisagra) diferente de LR. También se interpretan de manera diferente (margen máximo). Sin embargo, en la práctica, un SVM con un núcleo lineal no es muy diferente de una regresión logística (si tiene curiosidad, puede ver cómo Andrew Ng deriva los SVM de la regresión logística en su curso Coursera Machine Learning). La razón principal por la que desearía usar un SVM en lugar de una Regresión logística es porque su problema podría no ser separable linealmente. En ese caso, tendrá que usar un SVM con un núcleo no lineal (por ejemplo, RBF). La verdad es que una regresión logística también se puede usar con un kernel diferente, pero en ese punto puede que sea mejor optar por SVM por razones prácticas. Otra razón relacionada para usar SVM es si se encuentra en un espacio altamente dimensional. Por ejemplo, se ha informado que las SVM funcionan mejor para la clasificación de texto.
Desafortunadamente, el principal inconveniente de los SVM es que pueden ser dolorosamente ineficientes para entrenar. Por lo tanto, no los recomendaría para ningún problema en el que tenga muchos ejemplos de capacitación. De hecho, iría aún más lejos y diría que no recomendaría SVM para la mayoría de las aplicaciones de “escala industrial”. Cualquier cosa más allá de un problema de juguete / laboratorio podría abordarse mejor con un algoritmo diferente.
Conjuntos de árboles
Esto me lleva a la tercera familia de algoritmos: Conjuntos de árboles. Básicamente, esto cubre dos algoritmos distintos: bosques aleatorios (algoritmo) y árboles potenciados por gradientes. Más adelante hablaré sobre las diferencias, pero por ahora permítanme tratarlas como una con el fin de compararlas con la Regresión logística.
Los conjuntos de árboles tienen diferentes ventajas sobre LR. Una ventaja principal es que no esperan características lineales o incluso características que interactúen linealmente. Algo que no mencioné en LR es que apenas puede manejar características categóricas (binarias). Los Conjuntos de árboles, porque no son más que un montón de árboles de decisión combinados, pueden manejar esto muy bien. La otra ventaja principal es que, debido a cómo se construyen (usando embolsado o refuerzo), estos algoritmos manejan muy bien espacios de alta dimensión, así como una gran cantidad de ejemplos de entrenamiento.
En cuanto a la diferencia entre Random Forests (RF) y Gradient Boosted Decision Trees (GBDT), no entraré en muchos detalles, pero una forma fácil de entenderlo es que los GBDT generalmente funcionan mejor, pero son más difíciles de acertar . Más concretamente, los GBDT tienen más hiperparámetros para sintonizar y también son más propensos al sobreajuste. Los RF casi pueden funcionar “fuera de la caja” y esa es una de las razones por las que son muy populares.
Aprendizaje profundo
Por último, pero no menos importante, esta respuesta no estaría completa sin al menos una pequeña referencia a Deep Learning. Definitivamente no recomendaría este enfoque como una técnica de propósito general para la clasificación. Pero, probablemente haya escuchado qué tan bien funcionan estos métodos en algunos casos, como la clasificación de imágenes. Si ha seguido los pasos anteriores y todavía siente que puede sacar algo de su problema, es posible que desee utilizar un enfoque de aprendizaje profundo. La verdad es que si usa una implementación de código abierto como Theano, puede tener una idea de cómo algunos de estos enfoques funcionan en su conjunto de datos con bastante rapidez.
Resumen
Entonces, recapitulando, comience con algo simple como Regresión logística para establecer una línea base y solo hacerla más complicada si es necesario. En ese punto, los conjuntos de árboles, y en particular los Bosques aleatorios, ya que son fáciles de sintonizar, podrían ser el camino correcto. Si cree que aún hay margen de mejora, pruebe GBDT o sea aún más elegante y aprenda Deep Learning.
También puedes echar un vistazo a las competiciones de Kaggle. Si busca la palabra clave “clasificación” y selecciona las que están completas, tendrá una buena idea de lo que la gente solía ganar en las competiciones que podrían ser similares a su problema actual. En ese punto, probablemente se dará cuenta de que usar un conjunto siempre mejorará las cosas. El único problema con los conjuntos, por supuesto, es que requieren mantener todos los métodos independientes trabajando en paralelo. Ese podría ser tu último paso para ponerte tan elegante como sea posible.