Random Forest y Gradient Boosting Trees
Clase 30 de 32 • Curso de Machine Learning Aplicado con Python
Contenido del curso
Clase 30 de 32 • Curso de Machine Learning Aplicado con Python
Contenido del curso
Loren Johanna Vásquez Rivera
Arturo Baduna
Luciano Gauchez
Alexis Alva Nuñez
Arnulfo Rojas Jimenez
Sandra Liliana Delgado Gómez
Mauricio Andrés Guerra Cubillos
Mauricio Andrés Guerra Cubillos
Darvin Orozco
Hugo Alexander Gonzalez Bocanegra
Mauricio Andrés Guerra Cubillos
Mauricio Andrés Guerra Cubillos
Darvin Orozco
Jhon Freddy Puentes Nuñez
Usuario anónimo
Usuario anónimo
Usuario anónimo
Usuario anónimo
Usuario anónimo
Usuario anónimo
Usuario anónimo
Usuario anónimo
María José Medina
Nelson Andrés Loyola Salas
Luis Rogelio Reyes Hernandez
Jean Paul
Luis Rogelio Reyes Hernandez
Usuario anónimo
Usuario anónimo
Usuario anónimo
Recuerden añadir al código la parte de mostrar el resultado de train_score para que no arroje error:
results = cross_validate(forest,X,y,cv=5,scoring='r2', return_train_score=True)
muy buen aporte
Gracias!!!
Ahora hay que agregar el parámetro return_train_score=True en la función cross_validate para que funcione correctamente. De la siguiente forma:
Sino puede que aparezca el siguiente error:
Esto también aparece en la documentación oficial: https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_validate.html
Es correcto. El parámetro return_train_score recibe valores booleanos y por defecto está en False
Con:
results.keys()
Podremos observar los valores que retorna cross_validate
['fit_time', 'score_time', 'test_score', 'train_score']
Gracias por tu aporte, me ayudo
Boosting
Una estrategia de ensemble que entrena una serie de modelos débiles, cada uno intentando predecir correctamente las observaciones que el modelo anterior cometió incorrectamente. Por Chris Albon
Bagging = bootstrap aggregation = Empaquetado.
Gracias, excelente resumen y me ayudaste a entender/escribir bien la palabra en inglés. Saludos.
comparto las ayudas de Crhis Albon:
Ensemble
Varios modelos son entrenados por separado, luego votan o se promedian para obtener una mejor predicción. Por ejemplo:
Gracias por el link/enlace, estaba buscando mal y no lo encontraba!
Puntos clave:
Los submodelos de random forest tiene buen poder de predicción. Los arboles del bosque no tienen correlación o tienen mala/baja correlación.
Esto hace que sea "justo" y poderoso.
El Gradient boosting implica tres elementos:
• Una función de perdida a optimizar . • Un algoritmo de aprendizaje débil para hacer las predicciones. • Un modelo aditivo para añadir los algoritmos de aprendizaje débiles que minimizan la función de perdida.
Cuando hago el cross_validate() al enviarlos a la variable results no me aparece el train_score, a qué se debe esto?
rom sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import cross_validate forest = RandomForestRegressor(200) results = cross_validate(forest, X, y, cv=5, scoring='r2') results {'fit_time': array([2.71002126, 2.78894472, 2.78960013, 2.5732379 , 2.83417106]), 'score_time': array([0.11221123, 0.03125691, 0.03125405, 0.03124952, 0.05081439]), 'test_score': array([0.46560367, 0.6881979 , 0.58033755, 0.40039743, 0.45769758])}
Buscando en por Google logré que la variable results retornara el train_score de la siguiente forma:
from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import cross_validate forest = RandomForestRegressor(200) results = cross_validate(forest, X, y, cv=5, scoring='r2', return_train_score=True) results {'fit_time': array([3.31588149, 3.39652395, 3.17247009, 2.58630633, 2.74490142]), 'score_time': array([0.06250572, 0.04688048, 0.03300834, 0.01669979, 0.03125262]), 'test_score': array([0.47217802, 0.70196215, 0.57145989, 0.39989006, 0.43831445]), 'train_score': array([0.96205352, 0.9678154 , 0.9668593 , 0.96654798, 0.96546444])}
y así pude capturar el valor de train_score en la variable train_scores
Debes agregar el siguiente parámetro al código para que el score de train este habilitado:
results = cross_validate(forest,X,y,cv=5,scoring='r2', return_train_score = True)
Excelente clase!
Al aplicar el código:
results = cross_validate(forest,X,y,cv=5,scoring='r2', return_train_score = True)
Tuve que agregar:
return_train_score = True
Porque me esataba generando un error al con el
train_scors
El objetivo de Boosting es el de mejorar el rendimiento del algoritmo de aprendizaje al tratarlo como una "caja negra" que se puede llamar repetidamente, como una subrutina.
Es bastante complejo el tema. Falta mucho por aprender.
🔄 Boosting
Consiste es ajustar, de forma secuencial, múltiples weak learners (modelos sencillos que predicen solo ligeramente mejor que lo esperado por azar). Cada nuevo modelo emplea información del modelo anterior para aprender de sus errores, mejorando iteración a iteración.
📌 ++Notas:++
En el caso de los árboles de predicción, un weak learners se consigue utilizando árboles con muy pocas ramificaciones.
A diferencia del método de bagging (random forest), el boosting no hace uso de muestreo repetido (bootstrapping), la diferencia entre los árboles que forman el ensemble se origina por que la importancia (peso) de las observaciones va cambiando en cada iteración.
📚 ++Referencias++:
Una buena fuente de aprendizaje de Chris Albon - https://chrisalbon.com/
Donde puedo encontrar el link para las flashcards que menciona en el video?
muchas gracias
La siguiente imaagen presenta los resultados obtenidos al ejecutar el código de esta sesión de clase:
Modelo Ensemble Es un conjunto de varios modelos que son entrenados por separado, para luego votar o se promedian para obtener una mejor predicción. Un ejemplo de esto es: Random Forest.
En resumen el Gradient boosting implica un proceso de tres elementos, a saber: • Una función de perdida que se debe optimizar . • Un algoritmo de aprendizaje débil que permite realizar predicciones. • Un modelo aditivo que permite añadir los algoritmos de aprendizaje débiles que buscan minimizar la perdida.