👉 Xiperia ofrece consultoría empresarial que transforma datos en conocimiento accionable para alcanzar los objetivos de tu negocio. Conoce más en www.xiperia.com
Estimado Octavio, siempre es un gusto ver tus videos. Eres muy claro para explicar los conceptos y eso lo agradezco enormemente. Otra cosa que se agradece es poder tener acceso a los códigos y datos usados en el video. Sigue con tu canal, muchas gracias.
Excelente video Octavio, ahora a tunear el modelo con CV y la definición de una matriz de confusión. ¿Es posible que puedas generar un caso considerando lo anterior mencionado, sobre todo con la inclusión con las métricas de la matriz de confusión?, muchas gracias.
Hola Octavio. Primero que todo quiero mencionar que tienes una pedagogía que es muy escasa en estos días, y eso es importantísimo y que bueno que hay videos como los tuyos. Sobre todo en temas que tienen cierta complejidad. Soy relativamente nuevo creando modelos de clasificación en random forest, y aunque creo entender los puntos mas básicos, tengo aun dudas con respecto al muestreo. Si entiendo bien, el algoritmo de RF usa el bootstrapping para crear cada arbol. Con las muestras OOB se puede calcular el error de clasificación en cada arbol, si comprendo bien. Ahora, si yo decido usar como control la validación cruzada para mi modelo ¿que ocurre en el bootstrapping? ¿el algoritmo sigue aplicando este método en cada arbol? El asunto es que he leído que el error OOB puede estar sesgado para evaluar el modelo. Bueno, espero no molestar tanto. Mil gracias de antemano.
Muchas gracias por tus comentarios y por la pregunta tan interesante. Sobre todo en foros he llegado a leer lo que comentas sobre OOB vs cross-validation para el caso de Random Forest. Podría dar mi punto de vista al respecto, pero en estos casos no hay nada mejor que citar a un experto de nivel mundial Leo Breiman: "In random forests, there is no need for cross-validation or a separate test set to get an unbiased estimate of the test set error. It is estimated internally, during the run, as follows: Each tree is constructed using a different bootstrap sample from the original data. About one-third of the cases are left out of the bootstrap sample and not used in the construction of the kth tree. Put each case left out in the construction of the kth tree down the kth tree to get a classification. In this way, a test set classification is obtained for each case in about one-third of the trees. At the end of the run, take j to be the class that got most of the votes every time case n was oob. The proportion of times that j is not equal to the true class of n averaged over all cases is the oob error estimate. This has proven to be unbiased in many tests." La información la extraje del siguiente vínculo: www.stat.berkeley.edu/~breiman/RandomForests/cc_home.htm
Hola Octavio Tengo algunos comentarios 1. Gracias por compartir tus conocimientos, haces de internet una herramienta muy poderosa. 2. Tienen que hacer una estudio de neurociencia-pedagogia sobre tu forma de explicar, hay muchos videos con el mismo formato, pero tu tono de voz, gestos, y forma de explicar hacen que no pierda el foco en temas complejos. Sin dudas tenes un patrón que sería util comprender. 3. Cuando consiga mis primeros trabajos en datos serán en gran parte a tus contenidos. Saludos desde Argentina.
Tengo una duda, en este algoritmo no hay necesidad de definir datos de entrenamiento y prueba. ¿O con los hiperparametros max_sample y oob es suficiente?
Hola! Saludos desde Argentina. Muchas gracias por el video y muy bien explicado. Tengo una pregunta respecto a un caso que estoy analizando. No tengo en claro como encarar el problema ni con qué algoritmo. Tengo un data set de 200 chicos de la escuela que en cierto punto de su adolesencia se inclinan por practicar un determinado deporte (futbol, tenis, basket, etc). Dado este data set, quisiera predecir a qué deporte se inclinaría una nueva persona, teniendo en cuenta ciertas caracteristicas (edad, zona donde vive, estatura, peso, etc, etc.) y con qué probabilidad. Me ayudas? Saludos.
Me dejaste en el aire.... Despues de generar los arboles, que cosa sigue? Cual seria el modelo final de predicción? Es este entonces: bosque0RandomForrestClassifier(n_estimators=100,criterion='gini',max_features='sqrt',bootstrap=True,max_samples=2/3,oob_score=True).... gracias por la explicacion
Pedro muchas gracias por interactuar en el canal. Con respecto a tu pregunta, el modelo efectivamente está almacenado en la variable "bosque" y para utilizarlo se utiliza el método predict. Si quisieras ver el detalle de todos los árboles que conforma al bosque, se puede hacer, de hecho todos los árboles se encuentran en bosque.estimators_ (favor de ver el minuto 38:15)
Me encanta como explicas Tengo una duda este modelo se puede usar para clasificar si un equipo de béisbol le gana al otro o no? Tomando en consideración las estadísticas importantes?
Excelente video, nuevo suscriptor, muy bien explicado más bien una duda, si tuviera una data que se trata de una encuesta osea un ejemplo: Pregunta 1 Come carne: si o no Pregunta 2 Se lava las manos: después de cada comida, 1 vez al día, 2 veces Pregunta 3 Como sería en este caso por random forest, saludos desde Perú.
Gracias por tus comentarios y por la pregunta. En teoría los árboles de decisión que componen al random forest, sí aceptan variables categóricas (como la encuesta que mencionas). Sin embargo, la implementación de sklearn no maneja directamente ese tipo de variables. No obstante, es muy fácil pre-procesar los datos para convertirlos en numéricos y poder crear un random forest o árboles de decisión. Te recomiendo echarle un ojo a dos videos que ya tenemos en el canal donde justo platico sobre manejo de variables categóricas para machine learning: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-cp7Uo5MSFSE.html ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-KUEsLv8EaVY.html ¡Gracias por ver el canal!
Buenísimo video, pero yo tengo una duda si es aplicable a este caso: Un fenómeno es observado en 10 equipos diferentes, todos los días durante 2 años. Con las mismas condiciones se registran frecuencias diferentes, las mismas son registradas en una base excel diariamente. Distribución: Fecha, Eq1,......Eq8 y su freq correspondiente abajo. Es posible montar ese algoritmo para predecir las posibles frecuencias para cada 1 de los equipamentos, teniendo 732 registros anteriores? Si no es aplicable, podrías recomendar el algoritmo más indicado?. Muchas gracias.
Muchas gracias por esta pregunta tan interesante. Al parecer tienes un caso muy especial. Sin conocer el tema a detalle pareciera que te convendría hacer uso de técnicas de series de tiempo "tradicionales" aunque hay muchísimas otras opciones y seguro se requerirá de mucho esfuerzo antes de encontrar la mejor técnica y modelo. Te recomiendo un libro gratuito de Hyndman & Athanasopoulos: otexts.com/fpp3/
Buenos dias, quisiera saber si yo pudiera usar el metodo predict, para usar el modelo bosque con una data de diferentes dimensiones en cuanto a cantidad de registros (pero igual numero de columnas), y al querer visualizar esto en una matriz de confusion como podria hacerlo, muchas gracias, excelente explicación.
Julian Arturo gracias por la pregunta. Al respecto, efectivamente es posible realizar el proceso que describes, de hecho, prácticamente lo único que se tendrían que incorporar es la matriz de confusión. Te dejo aquí un video que podría ayudarte a combinar ambas temáticas: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-uaGMk43XTOw.html
Excelente Canal, tengo una pregunta, un modelo de random forest se podria utilizar para por ejemplo saber cual sera el proximo entrenamiento que un estudiante va a tomar basandose en su historial de entrenamientos_
Osvaldo muchas gracias por la pregunta. Sin conocer a detalle el contexto, me da la impresión que hay un componente temporal en tus datos y de que se estaría utilizando el modelo de random forest para series de tiempo. Comúnmente random forest se utiliza para regresión y/o clasificación, sin embargo, sí hay trabajos que llegan a utilizar random forest con datos con características de series de tiempo. Tal vez te interesaría echarle un ojo al siguiente artículo: Moore, P. J., Lyons, T. J., Gallacher, J., & Alzheimer’s Disease Neuroimaging Initiative. (2019). Random forest prediction of Alzheimer’s disease using pairwise selection from time series data. PloS one, 14(2), e0211558.
Gracias por esta pregunta tan interesante. De hecho, la respuesta a esa pregunta es un tema de investigación abierto. Algunos miden la relevancia de las reglas utilizando la frecuencia con la que aparece la regla en el bosque, sin embargo, como comento esto es un tema abierto. Aquí te paso una referencia en dado caso de que desees entrar en detalles: proceedings.mlr.press/v130/benard21a/benard21a.pdf
@@CodigoMaquina muchas graciass, en r usé un paquete llamado intrees que utiliza dicha frecuencia para extraer las reglas más relevantes. En pyhton si he visto métodos pero no funciones como tal que lo hagan.
Gran vídeo y explicación! ¿Cómo podría posteriormente introducir nuevos datos sin saber el ingreso para que el lo clasifique usando los datos de entrenamiento?
Muchas gracias por tus comentarios :) Con respecto a tu pregunta, para clasificar nuevas instancias se utiliza el método predict. En el caso del código presentado en el video sería bosque.predict([[50, 16, 1, 1, 40]]). Lo que recibe de entrada el método es la nueva instancia a clasificar correspondiente a ['edad', 'estudio', 'genero', 'tipo_trabajo', 'horas']
Estimado Bruno: Muchas gracias por tus comentarios y por creer en este proyecto a la par de apoyarnos con un Super Gracias. Con este apoyo eres parte de este proyecto que busca un impacto social ¡MUCHAS GRACIAS!
Utilizó solo dos clases para simplificar la explicación. Sin embargo, utilizar más clases, por ejemplo, ingreso bajo, ingreso medio, e ingreso alto, es enteramente transparente. Prácticamente lo único que se necesitaría hacer para clasificar n clases, sería tener instancias etiquetadas con cada una de las clases que desees clasificar independientemente de cuántas sean. Gracias por interactuar en el canal :)
Gracias por la sugerencia y por tu comentario. Te comento que ya tenemos ese tema en la lista de espera. Primero meteremos unos cuantos videos más sobre fundamentos, y justo después, uno de pipelines :)