Métodos de conjunto. Extracto del libro.

imagen

Hola, Khabrozhiteli, hemos entregado a la imprenta un nuevo libro "Machine Learning: Algorithms for Business" . Aquí hay un extracto sobre los métodos de conjunto, su propósito es explicar qué los hace efectivos y cómo evitar errores comunes que conducen a su mal uso en las finanzas.

6.2. Tres fuentes de error.


Los modelos MO suelen sufrir tres errores .

1. Sesgo: este error es causado por suposiciones poco realistas. Cuando el sesgo es alto, esto significa que el algoritmo MO no pudo reconocer las relaciones importantes entre los rasgos y los resultados. En esta situación, se dice que el algoritmo está "no aprobado".

2. Dispersión: este error es causado por la sensibilidad a pequeños cambios en el subconjunto de entrenamiento. Cuando la varianza es alta, esto significa que el algoritmo se vuelve a alinear con el subconjunto de entrenamiento y, por lo tanto, incluso los cambios mínimos en el subconjunto de entrenamiento pueden producir predicciones terriblemente diferentes. En lugar de modelar patrones generales en un subconjunto de entrenamiento, el algoritmo toma por error el ruido de la señal.

3. Ruido: este error es causado por la dispersión de los valores observados, como cambios impredecibles o errores de medición. Este es un error fatal que no puede ser explicado por ningún modelo.

imagen

Un método de conjunto es un método que combina muchos estudiantes débiles, que se basan en el mismo algoritmo de aprendizaje, con el objetivo de crear un estudiante (más fuerte) cuyo rendimiento sea mejor que cualquiera de los estudiantes individuales. Las técnicas de conjunto ayudan a reducir el sesgo y / o la dispersión.

6.3. Agregación Bootstrap


El ensacado (agregación), o agregación de muestras de bootstrap, es una forma efectiva de reducir la variación en los pronósticos. Funciona de la siguiente manera: primero, es necesario generar N subconjuntos de datos de entrenamiento usando muestreo aleatorio con retorno. En segundo lugar, ajuste N evaluadores, uno para cada subconjunto de entrenamiento. Estos evaluadores se ajustan independientemente uno del otro, por lo tanto, los modelos se pueden ajustar en paralelo. En tercer lugar, el pronóstico conjunto es una media aritmética simple de pronósticos individuales de N modelos. En el caso de las variables categóricas, la probabilidad de que una observación pertenezca a una clase está determinada por la proporción de evaluadores que clasifican esta observación como miembro de esta clase (por mayoría de votos, es decir, por mayoría de votos). Cuando el tasador base puede hacer predicciones con la probabilidad de predicción, el clasificador en bolsas puede obtener el valor promedio de las probabilidades.

Si utiliza la clase BaggingClassifier de la biblioteca sklearn para calcular la precisión sin paquetes, entonces debe tener en cuenta este defecto: https://github.com/scikit-learn/scikitlearn/issues/8933 . Una solución alternativa es cambiar el nombre de las etiquetas en un orden secuencial entero.

6.3.1. Reducción de la dispersión


La principal ventaja del embolsado es que reduce la variación de las previsiones, lo que ayuda a resolver el problema del sobreajuste. La varianza en la predicción en bolsa (φi [c]) es una función del número de evaluadores en bolsa (N), la varianza promedio de la predicción realizada por un evaluador (σ̄) y la correlación promedio entre sus predicciones (ρ̄):

imagen

el arranque secuencial (capítulo 4) consiste en tomar muestras lo más independientes posible, reduciendo así ρ̄, lo que debería reducir la dispersión de clasificadores en bolsas. En la fig. 6.1, trazamos el diagrama de desviación estándar de la predicción en bolsas en función de N ∈ [5, 30], ρ̄ ∈ [0, 1] y σ̄ = 1.

imagen

6.3.2. Precisión mejorada


Considere un clasificador en bolsas, que hace predicciones sobre k clases por mayoría de votos entre N clasificadores independientes. Podemos designar predicciones como {0,1}, donde 1 significa predicción correcta. La precisión del clasificador es la probabilidad p de marcar la predicción como 1. En promedio, obtenemos predicciones de Np marcadas como 1 con una varianza de Np (1 - p). El voto mayoritario hace la predicción correcta cuando se observa la clase más predecible. Por ejemplo, para N = 10 yk = 3, el clasificador en bolsas hizo la predicción correcta cuando se observó

imagen

imagen

Listado 6.1. La corrección del clasificador en bolsas

from scipy.misc import comb N,p,k=100,1./3,3. p_=0 for i in xrange(0,int(N/k)+1): p_+=comb(N,i)*p**i*(1-p)**(Ni) print p,1-p_ 

Este es un argumento fuerte a favor de empacar cualquier clasificador en el caso general, cuando las capacidades computacionales lo permiten. Sin embargo, a diferencia del aumento, el embolsado no puede mejorar la precisión de los clasificadores débiles:

imagen

Para un análisis detallado de este tema, se aconseja al lector que recurra al teorema del jurado de Condorcet. Aunque este teorema se obtuvo con el propósito de votar por mayoría en la ciencia política, el problema abordado por este teorema tiene características comunes con el descrito anteriormente.

6.3.3. Redundancia de observaciones


En el Capítulo 4, examinamos una de las razones por las que las observaciones financieras no pueden considerarse igualmente distribuidas y mutuamente independientes. Las observaciones excesivas tienen dos efectos perjudiciales sobre el embolsado. En primer lugar, es más probable que las muestras tomadas con retorno sean casi idénticas, incluso si no tienen observaciones comunes. Lo hace imagen y el embolsado no reducirá la variación, independientemente de N. Por ejemplo, si cada caso en t está marcado de acuerdo con un rendimiento financiero entre t y t + 100, entonces debemos seleccionar el 1% de los casos por tasador en bolsa, pero no más. En el capítulo 4, sección 4.5, se recomiendan tres soluciones alternativas, una de las cuales fue establecer max_samples = out ['tW']. Mean () en la implementación de la clase de clasificador empaquetado en la biblioteca sklearn. Otra (mejor) solución fue la aplicación del método de selección secuencial de bootstrap.

El segundo efecto perjudicial de la redundancia de observación es que se inflará la precisión del paquete adicional. Esto se debe al hecho de que el muestreo aleatorio con muestreo regresa a las muestras del subconjunto de entrenamiento que son muy similares a las que están fuera del paquete. En este caso, la validación cruzada de bloques k estratificada correcta sin barajar antes de dividir mostrará una precisión mucho menor en el subconjunto de prueba que la que se evaluó fuera del paquete. Por esta razón, cuando se utiliza esta clase de biblioteca sklearn, se recomienda establecer KFold estratificado (n_splits = k, shuffle = False), verificar el clasificador empaquetado e ignorar los resultados de la precisión sin paquetes. Una k baja es preferible a una k alta, ya que la división excesiva volverá a colocar patrones en el subconjunto de prueba que son demasiado similares a los utilizados en el subconjunto de entrenamiento.

6.4. Bosque al azar


Los árboles de decisión son bien conocidos porque tienden a ajustarse en exceso, lo que aumenta la variación de los pronósticos. Para abordar este problema, se desarrolló un método de bosque aleatorio (RF) para generar pronósticos de conjunto con menor varianza.

Un bosque aleatorio tiene algunas similitudes comunes con el embolsado en el sentido de capacitar a evaluadores individuales de forma independiente en subconjuntos de datos de arranque. Una diferencia clave del ensacado es que se construye un segundo nivel de aleatoriedad en los bosques aleatorios: durante la optimización de cada fragmentación nodal, solo se evaluará una submuestra aleatoria (sin retorno) de los atributos a fin de relacionar aún más a los evaluadores.

Al igual que el ensacado, un bosque aleatorio reduce la variación de los pronósticos sin sobreajustar (recuérdelo hasta). La segunda ventaja es que un bosque aleatorio evalúa la importancia de los atributos, que discutiremos en detalle en el Capítulo 8. La tercera ventaja es que un bosque aleatorio proporciona estimaciones de precisión fuera del paquete, sin embargo, en aplicaciones financieras es probable que se inflen (como se describe en Sección 6.3.3). Pero al igual que el ensacado, un bosque aleatorio no necesariamente exhibirá un sesgo menor que los árboles de decisión individuales.

Si una gran cantidad de muestras es redundante (no distribuidas de manera equitativa e independientes entre sí), todavía habrá un nuevo ajuste: el muestreo aleatorio con retorno generará una gran cantidad de árboles casi idénticos (), donde cada árbol de decisión está sobreajustado (un inconveniente debido a que los árboles de decisión son notorios) . A diferencia del ensacado, un bosque aleatorio siempre establece el tamaño de las muestras de arranque de acuerdo con el tamaño del subconjunto de datos de entrenamiento. Veamos cómo podemos resolver este problema de reajustar bosques aleatorios en la biblioteca sklearn. Con fines ilustrativos, me referiré a las clases de la biblioteca sklearn; sin embargo, estas soluciones se pueden aplicar a cualquier implementación:

1. Establezca el parámetro max_features en un valor más bajo para lograr una discrepancia entre los árboles.

2. Parada temprana: establezca el parámetro de regularización min_weight_fraction_leaf en un valor suficientemente grande (por ejemplo, 5%) para que la precisión fuera del paquete converja con la corrección fuera de la muestra (bloque k).

3. Use el evaluador BaggingClassifier en el evaluador base DecisionTreeClassifier, donde max_samples se establece en unicidad promedio (avgU) entre muestras.

  • clf = DecisionTreeClassifier (criterio = 'entropía', max_features = 'auto', class_weight = 'balanceado')
  • bc = BaggingClassifier (base_estimator = clf, n_estimators = 1000, max_samples = avgU, max_features = 1.)

4. Utilice el evaluador BaggingClassifier en el evaluador RandomForestClassifier base, donde max_samples se establece en unicidad promedio (avgU) entre muestras.

  • clf = RandomForestClassifier (n_estimators = 1, criterio = 'entropía', bootstrap = False, class_weight = 'balance_subsample')
  • bc = BaggingClassifier (base_estimator = clf, n_estimators = 1000, max_samples = avgU, max_features = 1.)

5. Modifique la clase de bosque aleatorio para reemplazar los bootstraps estándar con bootstraps secuenciales.

Para resumir, el Listado 6.2 muestra tres formas alternativas de configurar un bosque aleatorio usando diferentes clases.

Listado 6.2. Tres formas de configurar un bosque aleatorio

 clf0=RandomForestClassifier(n_estimators=1000, class_weight='balanced_ subsample', criterion='entropy') clf1=DecisionTreeClassifier(criterion='entropy', max_features='auto', class_weight='balanced') clf1=BaggingClassifier(base_estimator=clf1, n_estimators=1000, max_samples=avgU) clf2=RandomForestClassifier(n_estimators=1, criterion='entropy', bootstrap=False, class_weight='balanced_subsample') clf2=BaggingClassifier(base_estimator=clf2, n_estimators=1000, max_samples=avgU, max_features=1.) 

Al ajustar los árboles de decisión, la rotación del espacio de características en la dirección que coincide con los ejes, como regla, reduce el número de niveles necesarios para el árbol. Por esta razón, le sugiero que ajuste un árbol aleatorio en el PCA de atributos, ya que esto puede acelerar los cálculos y reducir ligeramente el reajuste (más sobre esto en el Capítulo 8). Además, como se describe en el Capítulo 4, Sección 4.8, el argumento class_weight = 'balance_subsample' ayudará a evitar que los árboles clasifiquen erróneamente las clases minoritarias.

6.5. Impulsar


Kearns y Valiant [1989] estuvieron entre los primeros en preguntar si los valuadores débiles podrían combinarse para lograr la realización de un valorizador altamente preciso. Poco después, Schapire [1990] mostró una respuesta afirmativa a esta pregunta utilizando un procedimiento que hoy llamamos impulso (impulso, impulso, amplificación). En términos generales, funciona de la siguiente manera: primero, generar un subconjunto de entrenamiento mediante selección aleatoria con retorno de acuerdo con ciertos pesos de muestra (inicializados por pesos uniformes). En segundo lugar, ajuste un evaluador utilizando este subconjunto de capacitación. En tercer lugar, si un solo evaluador logra una precisión que excede el umbral de aceptabilidad (por ejemplo, en un clasificador binario es del 50% para que el clasificador funcione mejor que la adivinación aleatoria), entonces el evaluador permanece, de lo contrario se descarta. Cuarto, otorgue más peso a las observaciones clasificadas incorrectamente y menos peso a las observaciones clasificadas correctamente. Quinto, repita los pasos anteriores hasta que se reciban N tasadores. Sexto, el pronóstico conjunto es el promedio ponderado de los pronósticos individuales de N modelos, donde los pesos están determinados por la precisión de los evaluadores individuales. Hay una serie de algoritmos potenciados, de los cuales el refuerzo adaptativo AdaBoost es uno de los más populares (Geron [2017]). La Figura 6.3 resume el flujo de decisiones en la implementación estándar del algoritmo AdaBoost.

imagen

6.6. Bagging vs aumento de finanzas


De la descripción anterior, varios aspectos hacen que el impulso sea completamente diferente del embolsado :

  • El ajuste de clasificadores individuales se lleva a cabo secuencialmente.
  • Los clasificadores pobres son rechazados.
  • En cada iteración, las observaciones se ponderan de manera diferente.

El pronóstico del conjunto es el promedio ponderado de estudiantes individuales.

La principal ventaja de impulsar es que reduce tanto la varianza como el sesgo en los pronósticos. No obstante, la corrección de sesgo se produce debido a un mayor riesgo de sobreajuste. Se puede argumentar que en las aplicaciones financieras, el embolsado suele ser preferible a impulsar. El embolsado resuelve el problema de sobreajuste, mientras que el refuerzo resuelve el problema de sobreajuste. El sobreajuste es a menudo un problema más serio que el subadaptado, ya que ajustar demasiado el algoritmo MO a los datos financieros no es en absoluto difícil debido a la baja relación señal / ruido. Además, el embolsado se puede paralelizar, mientras que el aumento generalmente requiere una ejecución secuencial.

6.7. Embolsado para escalabilidad


Como sabe, algunos algoritmos MO populares no se escalan muy bien según el tamaño de la muestra. El método de máquinas de vectores de soporte (SVM) es un excelente ejemplo. Si intenta ajustar el evaluador SVM a más de un millón de observaciones, puede llevar mucho tiempo hasta que el algoritmo converja. E incluso después de converger, no hay garantía de que la solución sea un óptimo global o que no se realinee.

Un enfoque práctico es construir un algoritmo en bolsas donde el evaluador base pertenezca a una clase que no escala bien con el tamaño de la muestra, como SVM. Al definir este tasador básico, introducimos una condición estricta para una parada temprana. Por ejemplo, en la implementación de máquinas de vectores de soporte (SVM) en la biblioteca sklearn, puede establecer un valor bajo para el parámetro max_iter, por ejemplo, iteraciones 1E5. El valor predeterminado es max_iter = -1, que le dice al evaluador que continúe iterando hasta que los errores caigan por debajo del nivel de tolerancia. Por otro lado, puede aumentar el nivel de tolerancia con el parámetro tol, que por defecto es tol = iE-3. Cualquiera de estas dos opciones llevará a una parada anticipada. Puede detener otros algoritmos antes de tiempo utilizando parámetros equivalentes, como el número de niveles en un bosque aleatorio (max_depth) o la fracción mínima ponderada de la suma total de pesos (todas las muestras de entrada) necesarias para estar en un nodo hoja (min_weight_fraction_leaf).

Dado que los algoritmos empaquetados pueden ser paralelos, transformamos una tarea secuencial grande en una serie de tareas más pequeñas que se ejecutan simultáneamente. Por supuesto, una parada temprana aumentará la variación de los resultados de los evaluadores de bases individuales; sin embargo, este aumento puede ser más que compensado por la disminución de la varianza asociada con el algoritmo empaquetado. Puede controlar esta reducción agregando nuevos valoradores de base independientes. Utilizado de esta manera, el ensacado le permite obtener estimaciones rápidas y sólidas en conjuntos de datos muy grandes.

»Se puede encontrar más información sobre el libro en el sitio web del editor
» Contenidos
» Extracto

25% de descuento para libros de reserva Khabrozhiteley en un cupón - Machine Learning

Source: https://habr.com/ru/post/445780/


All Articles