Recursos para aprender a implementar métodos de conjunto

13

Entiendo teóricamente (más o menos) cómo funcionarían, pero no estoy seguro de cómo hacerlo utilizando un método de conjunto (como votación, mezclas ponderadas, etc.).

  • ¿Cuáles son buenos recursos para implementar métodos de conjunto?
  • ¿Hay algún recurso en particular con respecto a la implementación en Python?

EDITAR:

Para aclarar algunos basados ​​en la discusión de los comentarios, no estoy buscando algoritmos de conjunto como randomForest, etc. En cambio, me pregunto cómo puedes combinar diferentes clasificaciones de diferentes algoritmos.

Por ejemplo, supongamos que alguien usa regresión logística, SVM y algunos otros métodos para predecir la clase de una observación determinada. ¿Cuál es la mejor manera de capturar la mejor estimación de la clase basada en estas predicciones?

usuario1074057
fuente

Respuestas:

12

Un buen lugar para comenzar es obtener una visión general del aprendizaje conjunto. Especialmente querrás considerar el refuerzo y el embolsado . Otro método fue el utilizado por el equipo de "The Ensemble" en el Premio Netflix, que se llama "mezcla" o apilamiento de características .

Luego, solo encuentre algunas bibliotecas que las implementen y trabajen desde allí. Un google rápido apareció scikit y orange , los cuales deberían tener embolsado y refuerzo (y ambos son Python).

Si más allá de solo usar métodos de conjunto, le gustaría aprender un poco de la teoría, entonces creo que este documento sería un buen punto de partida (siga las referencias de las partes que le interesan).

Salud.

Stumpy Joe Pete
fuente
(+1) woa, excelentes referencias aquí: ¡Oh!
steffen
Gracias. Solo trato de aportar algo sobre uno de los pocos temas sobre los que sé algo.
Stumpy Joe Pete
4

'Métodos de conjunto en la minería de datos: mejora de la precisión mediante la combinación de predicciones', Seni y Elder: excelente referencia sobre la teoría e implementación prácticas de conjuntos, pero el código adjunto se basa en R.

'Machine Learning: An Algorithmic Perspective', S. Marsland: excelente texto práctico basado en Python, pero no tan dedicado a los conceptos de conjunto puro como la primera referencia.

palmadita
fuente
2

La respuesta de Stumpy Joe Pete fue perfecta, pero como usted mencionó la implementación de Python, quería mencionar el proyecto de preparación de la Universidad Federal de Pernambuco.

https://github.com/viisar/brew

from brew.base import Ensemble
from brew.base import EnsembleClassifier
from brew.combination import import Combiner

# create your Ensemble
clfs = your_list_of_classifiers # [clf1, clf2]
ens = Ensemble(classifiers = clfs)

# create your Combiner
# the rules can be 'majority_vote', 'max', 'min', 'mean' or 'median'
comb = Combiner(rule='majority_vote')

# now create your ensemble classifier
ensemble_clf = EnsembleClassifier(ensemble=ens, combiner=comb)
ensemble_clf.predict(X)

En este punto, tienen generación de conjunto, combinación, poda y selección dinámica.

Limitaciones: solo clasificación; sin apilamiento en la versión pública actual; No mucha documentación.

Dayvid Oliveira
fuente
0

Salford Systems tiene un paquete de software llamado Random Forests que implementa esto para conjuntos de árboles de clasificación y regresión. No tengo ningún paquete R gratuito para ofrecer. Me imagino que tienen un manual de usuario que explicará su implementación. Por analogía, probablemente podría descubrir cómo hacerlo para otros métodos de conjunto.

Michael R. Chernick
fuente
2
Hay muchos paquetes R excelentes para conjuntos de árboles: por ejemplo, randomForest (algoritmo clásico), party :: cforest (bosque aleatorio que usa árboles de inferencia condicional), gbm (aumento de gradiente de árboles), por nombrar algunos. Leí el OP como queriendo implementar conjuntos agnósticos de clasificación / regresión. El procedimiento más simple es, por supuesto, promediar las predicciones.
B_Miner
@B_Miner Es bueno saber que hay implementaciones disponibles en R. Quizás alguien podría explicarme por qué es deseable una implementación específica en Python (disculpe mi ignorancia sobre R). Leí el OP para querer conocer las fuentes que describen cómo implementar los métodos de conjunto. El paquete de Salford era uno que sabía que podría tener algo de documentación.
Michael R. Chernick
Si bien se basa en los trabajos de impulso de papel de Freund y Schapire en general, hasta donde yo sé, los mejores resultados han llegado con los clasificadores de árboles.
Michael R. Chernick
Personalmente obtengo resultados realmente buenos con un promedio simple de probabilidades, pero mi dominio está más interesado en las probabilidades que en elegir una etiqueta de clase.
B_Miner
@MichaelChernick Si estás haciendo un trabajo muy intenso predictivo (como ... una competición Kaggle), usted no va a recoger ya sea impulsando o al azar bosques. Querrá agregar tantos modelos posibles como sea de ayuda (que generalmente es mucho más que uno). Entonces, en ese contexto, otros métodos de conjunto serán importantes, incluso si los bosques aleatorios son mucho más maravillosos que cualquier otra cosa.
Stumpy Joe Pete
0

La guía de ensamblaje Scikit-learn proporciona embolsadoras y potenciadoras de metaclasificadores y regresores. Además, la biblioteca mlxtend proporciona implementaciones de metaclasificadores y regresores de apilamiento .

Vadim Smolyakov
fuente