Selección de Clasificadores Introducción al Reconocimiento de Patrones IIE - FING - UdelaR 2013 Kuncheva, “Combining Pattern Classifiers: Methods and Algorithms”. Capítulos 6 y 7. Selección de Clasificadores Puedo identificar mejor experto para cada x Ej.: Clasificador lineal y k-nn. detecto zona de conflicto y allí uso k-nn en el resto uso clasificador lineal Debo medir Confianza del clasificador Confianza del Clasificador Asumimos que el clasificador puede determinar capacidad para etiquetar x Ej.: Clasificador 10-nn donde 9 vecinos indican clase ωj ⇒ alta confianza. Si salidas di,j = P̂(ωj |x, Di ) estiman posteriori ⇒ C(Di |x) = max P̂(ωj |x, Di ) es la confianza en Di dado x. j=1,..,c Selección en Cascada Si C(Di |x) alta (umbral λ) elegimos con Di . Si confianza es baja paso al siguiente. Al terminar puedo rechazar o escoger el más probable. Método usado en sistemas de tiempo real Preguntas a responder Cómo construir los clasificadores individuales? Cómo evaluar confianza de cada clasificador dado x? Cómo se resuelven los empates? Definir estrategias de selección: escoger un clasificador? fusionar salidas de los más confiables? Selección: porqué funciona? Sean D1 , · · · , DL clasificadores entrenados K regiones de selección R1 , · · · , RK en Rn D∗ = Dr clasificador con mayor precisión En Rj elijo P(Di(j) |Rj ) ≥ P(Dk |Rj ) ∀k ⇒ P(OK) = K X j=1 P(Rj )P(Di(j) |Rj ) ≥ P(D∗ ) Conclusión de porqué funciona Esquema de selección óptimo mejor o igual que el mejor clasificador. Esto es independiente de cómo se particione el espacio de características La única condición: que Di(j) sea óptimo en cada región Rj Estimación Dinámica de Confianza Se puede hacer 2 tipos de estimación a priori o independiente de decisión a posteriori o dependiente de decisión K-vecinos directa: tomo K vecinos de x y se determina exactitud de cada clasificador. K-vecinos basado en distancia: clasificadores con salida continua y Pi (l(zj )|zj ) probabilidad de clase verdadera P −1 zj ∈Nx Pi (l(zj )|zj )d(x, zj ) P C(Di |x) = −1 zj ∈Nx d(x, zj ) Resolución de Empates Dado x etiquetar con D1 , · · · , DL . Si coinciden ⇒ asignar; sino estimar confianza local C(Di |x) Si hay único ganador o los mejores tienen igual clase ⇒ asignar Si mejores determinan por mayoría ⇒ asignar Buscar siguiente de mayor confianza y desempatar Sino etiquetar por fusión (mayoría) o al azar Preestimación de regiones de confianza Estimación dinámica es ineficiente Opción: regiones de confianza predeterminadas Se divide a priori Rn en K regiones Determino mejor Di en cada Rj Si algún Di no escogido ⇒ lo descarto Ej.: Clustering and Selection Agrupamiento y Selección: algoritmo Diseñar D1 , · · · , DL en Z y elegir K Usar agrupamiento (K-means) ⇒ K clusters {C1 , · · · , CK } con centroides {v1 , · · · , vK } Estimar confianza de D1 , · · · , DL en cada Cj elegir mejor Di(j) Devolver vj y Di(j) j = 1, · · · , K Operación: dado x ∈ Rn encontrar centro vj más próximo clasificar usando Di(j) Mezcla de Expertos Usado con redes neuronales Usa gating network que dado x determina pj (x) ⇒ probabilidad que Di sea el más confiable. Selector usa pj (x) para determinar participación de cada Di en decisión Se usan 3 métodos de selección Selección estocástica Ganador lleva todo Suma ponderada Mezcla de Expertos: métodos de selección Selección estocástica: se elige clasificador por muestreo con probabilidades p1 (x), · · · , pL (x) Ganador lleva todo: se elige máximo pi (x) Suma ponderada: se usa pi (x) para ponderar las salidas di,j (x) se escoge la clase ωj que hace máximo ⇒ µj (x) = L X i=1 pi (x)di,j (x) Mezcla de Expertos: diagrama Modelo esquemático de mezcla de expertos L Predictores Bagging Bagging es acrónimo de Bootstrap AGGregatING Idea: colección de clasificadores por muestreo con repetición (bootstrap) del conjunto de entrenamiento. Salidas se combinan por mayoría. Idealmente conjuntos de entrenamiento serían generados a partir de la distribución. En la práctica un solo conjunto de entrenamiento (k) (k) Z = {z1 , · · · , xN } ⇒ bootstrap ⇒ Z(k) = {z1 , . . . , zN } Clasificador base inestable: redes neuronales, árboles de decisión. Bagging: algoritmo Entrenamiento: Inicializo D = ∅ y L (clasificadores) Para k = 1, · · · , L Sortear bootstrap Sk de Z Usando Sk entrenar clasificador Dk Agregarlo a la colección: D = D ∪ Dk Clasificación: Aplicar D1 , · · · , DL a la muestra x Asignar x a la clase ωj con mayoría de votos Porqué funciona Bagging? En Di independientes con misma probabilidad p el voto por mayoría garantiza mejora. Bagging intenta generar clasificadores indep. usando bootstrap en el conjunto de entrenamiento. En realidad son pseudo-independientes pues se toman muestras del mismo conjunto Z Bagging vs muestreo independiente Evolución de error al aumentar L Orígenes de Boosting Inspirado por algoritmo Hedge-β de aprendizaje online Se asignan pesos a estrategias Si Se actualiza online: para cada muestra; una salida correcta aumenta peso, incorrecta lo reduce. Correspondencia estrategias → clasificadores evento → etiquetado de zj ∈ Z Costo: 1 si etiqueta mal, 0 si etiqueta bien. Algoritmo Hedge-β: inicialización Evoluciona distribución de probabilidad en D para minimizar el costo de predicción Entrada D = {D1 , . . . , DL } y Z = {z1 , · · · , zN } Inicialización de parámetros elegir β ∈ [0, 1] pesos: wi = 1 L i = 1, · · · , L costo acumulado: Λ = 0 costos individuales: λi = 0 i = 1, · · · , L Algoritmo Hedge-β: aprendizaje Para cada zj Pji = j wi PN k=1 j = 1, . . . , N calcular: j wk i = 1, · · · , L = 1 en error; lij = 0 en exito P actualizar costo conjunto: Λ = Λ + Li=1 lij Pji Di (zj ) ⇒ lij actualizar costo individual: λi = λi + lij j actualizar pesos: wj+1 = wji β li i Devolver: Λ, λi , piN+1 i = 1, · · · , L Boosting Generar regla de predicción precisa en base a reglas simples Construye conjunto incremental de clasificadores En paso k clasificador por muestreo selectivo de Z Muestreo uniforme evoluciona a regiones difíciles D son los eventos y Z estrategias cuya probabilidad actualiza. Algoritmo ADA Boost: entrenamiento W1 con wi = 1 N ∀ i = 1, · · · , N; D = ∅ y elegir L. Para cada k = 1, · · · , L elegir Sk de Z usando Wk y construir Dk P calcular error ponderado ek = Ni=1 wki lki con lki = 1 si Dk falla en zi o 0 sino. Si 0 < ek < 0.5 ⇒ βk = ek 1−ek ∈ (0, 1) y actualizar j 1−lk wk+1 j wkj βk = P N i=1 1−lki wki βk Sino ignorar Dk y reiniciar wi = 1 N j = 1, · · · , N Algoritmo ADA Boost: clasificación Salida del entrenamiento: ⇒ D = {D1 , · · · , DL } y {β1 , · · · , βL } Clasificación: Dado x calcular apoyo a clase ωt µt (x) = X − ln(βk ) Dk (x)=ωt Elijo clase ωj con máximo apoyo µj (x) Porqué funciona Boostrap? En el conjunto de entrenamiento hace tender error a 0 en pocas iteraciones. Da menor error pero es sensible a ruido y outliers