<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1878830333587702955</id><updated>2012-02-11T13:34:42.868-08:00</updated><category term='Selección de variables'/><category term='Rendimiento de un modelo predictivo'/><category term='Balancear datos'/><category term='Ruido'/><category term='Entropía'/><category term='Señal'/><category term='Data Mining'/><category term='Preparación de datos'/><category term='Redes Neuronales'/><category term='Score'/><category term='Teoría de Detección de Señales'/><category term='Modelos'/><category term='Información'/><category term='Teoría de la Información'/><category term='Segmentos'/><category term='Datos representativos'/><category term='Informatio Theory'/><category term='Signal Detection Theory'/><category term='Variables Mixtas'/><category term='Ensamblado de datos'/><title type='text'>Data Mining basado en Teoría de la Información</title><subtitle type='html'>En este blog se exploran las posibilidades de analizar datos y crear modelos basados en la Teoría de la Información</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-2706592749093801674</id><published>2012-02-11T13:34:00.000-08:00</published><updated>2012-02-11T13:34:42.881-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Signal Detection Theory'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruido'/><category scheme='http://www.blogger.com/atom/ns#' term='Información'/><category scheme='http://www.blogger.com/atom/ns#' term='Entropía'/><category scheme='http://www.blogger.com/atom/ns#' term='Rendimiento de un modelo predictivo'/><category scheme='http://www.blogger.com/atom/ns#' term='Informatio Theory'/><category scheme='http://www.blogger.com/atom/ns#' term='Teoría de la Información'/><category scheme='http://www.blogger.com/atom/ns#' term='Señal'/><category scheme='http://www.blogger.com/atom/ns#' term='Teoría de Detección de Señales'/><category scheme='http://www.blogger.com/atom/ns#' term='Modelos'/><title type='text'>Un Modelo para separar la Señal del Ruido</title><content type='html'>&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Qué bueno sería que los datos contuvieran toda la información necesaria para realizar predicciones, pero lamentablemente no es así. No solamente no contamos con toda la información, además esta información está mezclada con ruido.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;La tarea de un modelo predictivo es separar la información útil o señal, del ruido. Veamos un ejemplo paso a paso. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Utilizaré 2 casos similares a fin de comparar sus resultados. Ambos pertenecen a campañas de marketing. El primero proviene de una competencia de Data Mining que organizó la Universidad de Chile en 2005 y que a juzgar por los resultados, no incluía datos reales. El segundo es un ejemplo real de una campaña ofreciendo una nueva tarjeta de crédito a clientes existentes de un banco.&lt;/span&gt;&lt;/div&gt;&lt;h1 style="margin: 24pt 0cm 0pt;"&gt;&lt;span style="color: #365f91; font-family: Cambria; font-size: large;"&gt;Paso 1: análisis de la información&lt;/span&gt;&lt;/h1&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Una vez que los datos son preparados y las variables son seleccionadas, es posible realizar un análisis infométrico (para conocer más detalles de este tipo de análisis se pueden consultar otros artículos en este mismo blog)&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;El caso de la Universidad de Chile&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;muestra que los datos están bastante limpios y es probable que se pueda desarrollar un buen modelo&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-utMVw8WP2Gc/Tzbblpt3PLI/AAAAAAAAASo/uE8v087EkSI/s1600/sn-uch-imap.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="196" src="http://2.bp.blogspot.com/-utMVw8WP2Gc/Tzbblpt3PLI/AAAAAAAAASo/uE8v087EkSI/s320/sn-uch-imap.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;La información que se necesita para que el modelo sea perfecto es 0.15 bits (este bajo valor indica que existe un desbalance importante, lo cual es cierto ya que sólo aceptan la oferta alrededor de un 2%). Las variables seleccionadas aportan un total de 7.74 bits, pero gran parte de esta información es equívoca, lo que desde el punto de vista de la Teoría de la Información significa que existen muchas maneras de decir lo mismo. Al canal de información ingresan 0.11 bits de la entrada (7.74-7.63) más 0.04 bits de ruido.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vrmCuIssG-U/Tzbb3Or3_FI/AAAAAAAAASw/65hO8_CqoVg/s1600/sn-uch-dist.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-vrmCuIssG-U/Tzbb3Or3_FI/AAAAAAAAASw/65hO8_CqoVg/s1600/sn-uch-dist.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;    &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;La tarea del modelo es separar el 75% de la señal del 25% del ruido.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;El caso real es un poco más complejo de modelar&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-yeVpvFXz1-s/TzbcELxlHfI/AAAAAAAAAS4/X9IaYF6NKI8/s1600/sn-cred-imap.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="196" src="http://2.bp.blogspot.com/-yeVpvFXz1-s/TzbcELxlHfI/AAAAAAAAAS4/X9IaYF6NKI8/s320/sn-cred-imap.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;    &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;La variable a predecir necesita 0.11 bits de información, indicando como en el caso anterior, que existe un desbalance muy pronunciado (en este caso, sólo el 1.4% de los clientes aceptan la nueva tarjeta). El ruido (54%) supera la señal (46%). Esto implica que es probable que el modelo que utilice estos datos no sea tan bueno como el anterior, ya que por más que haga un buen trabajo separando la señal del ruido, sólo existe un 46% de información.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Q5-E6D5vgms/TzbcRwFH34I/AAAAAAAAATA/uwrnygFMOws/s1600/sn-cred-dist.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Q5-E6D5vgms/TzbcRwFH34I/AAAAAAAAATA/uwrnygFMOws/s1600/sn-cred-dist.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;    &lt;/div&gt;&lt;h1 style="margin: 24pt 0cm 0pt;"&gt;&lt;span style="color: #365f91; font-family: Cambria; font-size: large;"&gt;Paso 2: Evaluación del modelo&lt;/span&gt;&lt;/h1&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Veamos ahora si el análisis infométrico anterior se condice con los resultados de los modelos. Existen varias métricas que pueden utilizarse para evaluar un modelo. En este caso, en donde la variable a predecir contiene 2 estados (Compra/No compra) lo más adecuado puede ser el estadístico KS, o las curvas Lift y ROC.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;La siguiente tabla compara los modelos&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fmFJdI_kuOU/TzbcmZThPTI/AAAAAAAAATQ/QI2GzrBLG44/s1600/sn-mod-cmp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="57" src="http://4.bp.blogspot.com/-fmFJdI_kuOU/TzbcmZThPTI/AAAAAAAAATQ/QI2GzrBLG44/s320/sn-mod-cmp.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;    &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;El rendimiento de los modelos está de acuerdo al análisis llevado a cabo en el paso anterior. Es más, desde mi experiencia jamás tuve la suerte de trabajar con datos tan limpios como los de la Universidad de Chile, por lo que supongo que son datos creados artificialmente para la competencia. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Antes de continuar haré un breve repaso sobre la curva ROC. Quienes deseen más información al respecto pueden consultar excelentes artículos que existen en Internet.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="color: #4f81bd; font-family: Cambria; font-size: medium;"&gt;Curva ROC&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;En medio de la segunda guerra mundial se necesitaba mucha práctica para que los operadores de Radar pudieran distinguir un objeto sólido en una maza de puntos verdes que aparecía en una pequeña pantalla de 7.5 cm de diámetro. A fin de medir el rendimiento de los operadores de Radar, los Británicos inventaron las curvas ROC, que viene del acrónimo Receiver Operator Characteristics (a veces es llamada, erróneamente, Receiver Operat&lt;b style="mso-bidi-font-weight: normal;"&gt;ing&lt;/b&gt; Characteristic curve).&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;La curva ROC del modelo con datos real luce como sigue:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Z5B9hSbs3UE/Tzbc3jsXocI/AAAAAAAAATY/OdN9O1hcENQ/s1600/sn-roc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="219" src="http://4.bp.blogspot.com/-Z5B9hSbs3UE/Tzbc3jsXocI/AAAAAAAAATY/OdN9O1hcENQ/s320/sn-roc.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;    &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Si se trata de distinguir un avión, o se trata de distinguir si un cliente comprará o no el producto habrá 4 posibilidades:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-iDq_hDxEEAs/TzbchT7ZSGI/AAAAAAAAATI/ZBYRTzFAm-A/s1600/sn-confmatrix.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-iDq_hDxEEAs/TzbchT7ZSGI/AAAAAAAAATI/ZBYRTzFAm-A/s1600/sn-confmatrix.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;    &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Si se predice Positivo y en realidad es Positivo, tenemos un Verdadero Positivo (VP), si se predice Negativo y en realidad es Negativo, tenemos un Verdadero Negativo (VN). Caso contrario tenemos los Falsos Positivos (FP) y los Falsos Negativos (FN).&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;La curva ROC se concentra en la predicción de los Positivos (por ejemplo, en aquellos clientes que compran) y en cómo el modelo acierta o no. Cuanto mayor sea la diferencia entre los VP&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;y los FP, mayor será el poder de discriminación que tendrá el operador o el modelo. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;El área comprendida entre la parte superior de la diagonal y la curva representa el rendimiento de operador o del modelo, ya que la separación de la curva de la diagonal indica la separación entre los VP y los FP. &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;A mayor área, mayor rendimiento. Un modelo perfecto tendrá un área del 100%, mientras que el área de un modelo inservible será del 0%.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="color: #4f81bd; font-family: Cambria; font-size: medium;"&gt;Señal y Ruido&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Ahora viene la parte interesante. Los datos representan algún proceso o sistema que genera una señal mezclada con ruido. Lo que deseamos es separar esta señal del ruido. Resulta que la Teoría de Detección de Señales (Signal Detection Theory) nos permite obtener la distribución de la señal y del ruido a través de la Curva ROC.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Los cálculos necesarios para dibujar estas distribuciones son demasiado complejos para describir en este artículo y tampoco vienen al caso. Lo importante que quiero recalcar es que es posible obtener&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;una gráfica que &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;muestra claramente la señal y el ruido además del trabajo del modelo para separarlos.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="color: #4f81bd; font-family: Cambria; font-size: medium;"&gt;Señal/Ruido en datos de la Universidad de Chile&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;El modelo de los datos artificiales muestra una separación bastante buena. La curva roja representa el ruido y la azul la señal, que se crea en relación a la primera. En estos datos el ruido parece estar bastante acotado como lo muestra su baja dispersión. En cambio la señal, está un poco más dispersa. Las medias de la señal y el ruido están bastante alejadas, permitiendo que el modelo realice una buena separación. &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-I7NimDXVgR8/TzbdWQ8G0mI/AAAAAAAAATg/nB1V8DlWJWE/s1600/sn-cn-uch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="http://2.bp.blogspot.com/-I7NimDXVgR8/TzbdWQ8G0mI/AAAAAAAAATg/nB1V8DlWJWE/s320/sn-cn-uch.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;    &lt;/div&gt;&lt;h2 style="margin: 10pt 0cm 0pt;"&gt;&lt;span style="color: #4f81bd; font-family: Cambria; font-size: medium;"&gt;Señal/Ruido en datos de tarjeta de crédito&lt;/span&gt;&lt;/h2&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Este caso tiene dos diferencias con respecto al anterior. Por un lado, ambas dispersiones son similares, pero lo más llamativo es que ambas distribuciones tienen sus medias muy cercanas, haciendo demasiado dificultoso la separación de la señal de ruido. Esto explica por qué el modelo sobre los datos de tarjeta de crédito tiene un rendimiento muy inferior al anterior.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Lbs0ne1J-Qk/TzbdjlfGV3I/AAAAAAAAATo/E_mh1_S-8Wo/s1600/sn-cn-cred.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="http://1.bp.blogspot.com/-Lbs0ne1J-Qk/TzbdjlfGV3I/AAAAAAAAATo/E_mh1_S-8Wo/s320/sn-cn-cred.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;    &lt;/div&gt;&lt;h1 style="margin: 24pt 0cm 0pt;"&gt;&lt;span style="color: #365f91; font-family: Cambria; font-size: large;"&gt;Conclusión&lt;/span&gt;&lt;/h1&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Muchas veces nos encontramos con casos en que es muy difícil desarrollar un modelo predictivo que sea útil para el negocio y nos preguntamos si existirá algún algoritmo que sea capaz de lidiar con los datos.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Un análisis de la información, al que Dorian Pyle llama Data Survey&lt;sup&gt;&lt;span style="font-size: x-small;"&gt;(*),&lt;/span&gt;&lt;/sup&gt; es inmensamente útil en estos casos, porque es capaz de mostrar si los datos realmente contienen información. Si no es el caso, entonces ningún algoritmo podrá ser útil para crear un modelo. Las medidas de información establecen límites teóricos que sirven para evaluar el rendimiento de los modelos. &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Cuando intentamos modelar datos que no conocemos, el Data Survey construye un mapa que nos guiará por el buen camino.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Una vez construido el modelo, a partir de la Teoría de Detección de Señales y con algunas presunciones (por ejemplo que el ruido y la señal están distribuidas normalmente), es posible visualizar la forma de ambos, la señal y el ruido. Estos gráficos pasan a ser otras herramientas útiles para explicar el rendimiento de un modelo.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Tanto la señal como el ruido están presentes en las variables de entrada, llamadas también variables independientes. La tarea principal del modelo es descubrir la señal aún en presencia del ruido.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-size: 9pt; line-height: 115%;"&gt;&lt;span style="font-family: Calibri;"&gt;(*) Aquellos que deseen una explicación detallada del Data Survey pueden referirse al excelente tratamiento que hace Dorian Pyle en el capítulo 11 de su libro &lt;a href="http://www.amazon.com/Preparation-Mining-Kaufmann-Management-Systems/dp/1558605290/ref=ntt_at_ep_dpt_2"&gt;DataPreparation for Data Mining&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-2706592749093801674?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/2706592749093801674/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=2706592749093801674' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/2706592749093801674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/2706592749093801674'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2012/02/un-modelo-para-separar-la-senal-del.html' title='Un Modelo para separar la Señal del Ruido'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-utMVw8WP2Gc/Tzbblpt3PLI/AAAAAAAAASo/uE8v087EkSI/s72-c/sn-uch-imap.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-1176974831062311166</id><published>2012-01-17T15:33:00.000-08:00</published><updated>2012-01-17T15:33:39.252-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Segmentos'/><title type='text'>¿Por qué segmentar en forma automática si puedo hacerlo manualmente?</title><content type='html'>&lt;span style="font-family: Calibri;"&gt;Es una práctica bastante común segmentar una cartera de clientes utilizando métodos manuales. Pero una segmentación automática tiene varias ventajas y en este artículo trataré de comparar ambos métodos utilizando un ejemplo con datos reales.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Calibri;"&gt;El objetivo de una segmentación es encontrar grupos de clientes que se parezcan entre sí y que como grupo se distingan de otros segmentos.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;La comparación entre clientes se realiza en base a las variables elegidas para identificarlos. Por ejemplo, una empresa que vende electrodomésticos procesó las ventas de 5 años de una muestra de 10.000 clientes y eligió las siguientes variables para crear los segmentos:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;  &lt;span style="font-family: Calibri;"&gt;Visitas anuales&lt;/span&gt;&lt;/li&gt;&lt;li&gt;  &lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Calibri;"&gt;Productos comprados anualmente&lt;/span&gt;&lt;/li&gt;&lt;li&gt; &lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Calibri;"&gt;Venta anual&lt;/span&gt;&lt;/li&gt;&lt;li&gt;  &lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Calibri;"&gt;Margen porcentual anual&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Antes de realizar la segmentación se calcularon los promedios de cada variable en el total de la muestra &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-87HQI_mtblk/TxX-r-zCNaI/AAAAAAAAASI/6RSFUOjwf5w/s1600/margen-pop.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="44" src="http://3.bp.blogspot.com/-87HQI_mtblk/TxX-r-zCNaI/AAAAAAAAASI/6RSFUOjwf5w/s320/margen-pop.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;El primer intento de segmentación lo realizó utilizando el Margen, ya que uno de los objetivos del proyecto fue encontrar segmentos con distintos márgenes. Se utilizó el siguiente criterio (arbitrario):&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  Si el margen &amp;lt;= 5%, segmento 1.&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;Si es &amp;gt;5% y &amp;lt;= 15%, segmento 2, &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Si es &amp;gt;15%, segmento 3&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;La siguiente tabla muestra los promedios de cada variable en su segmento&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PnjzV2VCxkc/TxX_Alwd2qI/AAAAAAAAASQ/lAA1tlr1EKU/s1600/magen-samp-man1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="66" src="http://3.bp.blogspot.com/-PnjzV2VCxkc/TxX_Alwd2qI/AAAAAAAAASQ/lAA1tlr1EKU/s320/magen-samp-man1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;    &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Los segmentos discriminan muy bien el margen, lo cual es lógico debido al método utilizado para agrupar los clientes. Pero el resto de las variables no muestra demasiadas diferencias. Esto es razonable. De hecho, dos segmentos distintos podrían tener algunas de sus variables con promedios similares. El problema de esta segmentación es que la única variable que distingue los segmentos es el margen, por lo que la utilidad de los mismos es casi nula.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;El segundo intento se realizó utilizando las visitas y los productos comprados.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;span style="font-family: Calibri;"&gt;Combinando 3 intervalos de visitas y 2 intervalos de productos comprados,&amp;nbsp;se obtuvieron&amp;nbsp;4 segmentos (combinando 3 intervalos con otros 2, deberíamos obtener 6 pares, pero&amp;nbsp;como existe una correlación muy alta entre&amp;nbsp;la cantidad de visitas y los productos comprados, se obtienen solamente 3 pares).&amp;nbsp;La siguiente tabla muestra&amp;nbsp;los promedios&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-NWvR5wkipE8/TxX_LUiEn_I/AAAAAAAAASY/XlYZdspuv24/s1600/magen-samp-man2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="83" src="http://4.bp.blogspot.com/-NWvR5wkipE8/TxX_LUiEn_I/AAAAAAAAASY/XlYZdspuv24/s320/magen-samp-man2.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;  &lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Las visitas y los productos ahora están bien discriminados entre los segmentos. La venta, debido a que es función de las visitas y productos comprados, también está discriminada. Pero el margen es casi el mismo en todos los segmentos!&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Una tercera alternativa sería incluir el margen en los criterios de separación, pero en este método manual existen varios criterios arbitrarios:&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;  &lt;span style="font-family: Calibri;"&gt;Las variables elegidas para discriminar los segmentos&lt;/span&gt;&lt;/li&gt;&lt;li&gt;  &lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Calibri;"&gt;Los intervalos de las variables &lt;/span&gt;&lt;/li&gt;&lt;li&gt;  &lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Calibri;"&gt;La cantidad de segmentos a crear&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;¿Quién nos asegura que los criterios de separación coinciden con una segmentación natural? O sea, cómo sabemos por ejemplo, que un grupo de clientes similares visitan 5 y no 8 veces al año el local. En una segmentación manual, este valor (5, 8 o cualquier otro valor) es uno de los criterios de separación que debe elegirse.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;¿Cómo sabemos que una variable, por ejemplo la edad, realmente discrimina el comportamiento de los clientes?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Calibri;"&gt;Una segmentación realizada con un algoritmo que sea capaz de resolver estas cuestiones utilizando todas las variables a la vez, podrá encontrar los segmentos naturales que muy probablemente resuelvan el problema de negocio original.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Calibri;"&gt;La siguiente tabla de promedios muestra los segmentos encontrados por Powerhouse &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-yI-FDCv3nas/TxX_krs36gI/AAAAAAAAASg/x6pZAgOIk4g/s1600/margen-samp-ph.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="83" src="http://4.bp.blogspot.com/-yI-FDCv3nas/TxX_krs36gI/AAAAAAAAASg/x6pZAgOIk4g/s320/margen-samp-ph.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;El segmento 4 tiene el mayor margen, pero como la venta es casi la cuarta parte de la venta del segmento 3, quizás este último sea el segmento más interesante.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;El segmento 1 merece un análisis más profundo para averiguar las razones de por qué, siendo muy similar al 2, el margen es negativo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Calibri;"&gt;En este ejemplo utilicé un modelo con pocas variables para mostrar las ventajas de utilizar métodos automáticos de segmentación. Si la cantidad de variables es mayor, el método manual es más complicado y con más razón se justifica utilizar métodos automáticos de búsqueda de segmentos naturales.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-1176974831062311166?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/1176974831062311166/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=1176974831062311166' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/1176974831062311166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/1176974831062311166'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2012/01/por-que-segmentar-en-forma-automatica.html' title='¿Por qué segmentar en forma automática si puedo hacerlo manualmente?'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-87HQI_mtblk/TxX-r-zCNaI/AAAAAAAAASI/6RSFUOjwf5w/s72-c/margen-pop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-7195391710622513809</id><published>2011-10-02T12:20:00.000-07:00</published><updated>2011-10-02T12:20:55.566-07:00</updated><title type='text'>La información vs. el número de bins</title><content type='html'>&lt;span style="font-family: Calibri;"&gt;La semana pasada, un alumno de la maestría de Data Mining de la Universidad de Buenos Aires, me preguntó qué tan estable eran las mediciones de información con respecto al número de bins elegidos. Esta es una respuesta detallada y con un ejemplo realizado en Powerhouse.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;La cantidad de información absoluta, medida por su entropía en bits, depende del número de bins (o de la cantidad de categorías en variables categóricas). Por lo tanto este análisis utiliza las medidas de información expresadas en forma relativa.&lt;/span&gt;&lt;/div&gt;T&lt;span style="font-family: Calibri;"&gt;anto el ruido como la información transmitida se calculan como un porcentaje de la información necesaria para reducir completamente la incertidumbre de la variable a predecir. Por lo tanto el ruido y la información transmitida vienen dadas por:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Ruido% = H(Y|X) / H(Y)&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;Información transmitida% = T(X:Y)/H(Y)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;La variable a predecir Y tiene una entropía dada por su distribución y representa su incertidumbre. Cuando un modelo codifica la información proveniente de un conjunto de variables X y la transmite,&amp;nbsp;la incertidumbre de Y se reduce. Cuanto mayor sea esta reducción, más preciso será el modelo.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;Lo que resta de incertidumbre luego de utilizar la información transmitida por el modelo, lleva el nombre de &lt;strong&gt;ruido&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Calibri;"&gt;La siguiente tabla muestra diferentes medidas de información sobre una misma tabla de datos y utilizando las mismas variables predictoras. Lo que cambia es el número de bins de X y de Y, que varía entre 5 y 200.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-EtkPb0jv5pw/Toi5EpxGzoI/AAAAAAAAARc/DFwdF0anZkU/s1600/inf-bins.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="92" src="http://4.bp.blogspot.com/-EtkPb0jv5pw/Toi5EpxGzoI/AAAAAAAAARc/DFwdF0anZkU/s400/inf-bins.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Se puede notar que la información transmitida relativa (dada por Tx%) es muy estable en todo el rango de bins. Lo mismo sucede con el Ruido, lo que no debería sorprender ya que es función de la transmisión (H(Y)-T(X:Y)=Ruido). &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;Otro punto interesante es el R&lt;sup&gt;&lt;span style="font-size: x-small;"&gt;2&lt;/span&gt;&lt;/sup&gt; del modelo, ya que se mantiene muy estable en todos los rangos, tanto sobre la muestra de desarrollo (TR) como la de prueba (TS)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Los datos usados en este ejemplo fueron obtenidos de&lt;/span&gt;&lt;/div&gt;&lt;span style="mso-spacerun: yes;"&gt;&lt;span style="font-family: Calibri;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://astrostatistics.psu.edu/datasets/SDSS_quasar.html"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;http://astrostatistics.psu.edu/datasets/SDSS_quasar.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Se utilizó el 70% de los datos para la muestra de desarrollo y el 30% restante para la de pruebas. La variable z (redshift) fue elegida para predecir. El método de binning fue el de Menor Pérdida de Información (LIL).&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;Las variables seleccionadas para realizar el modelo fueron r_mag, z_mag y M_i.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-7195391710622513809?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/7195391710622513809/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=7195391710622513809' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7195391710622513809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7195391710622513809'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2011/10/la-informacion-vs-el-numero-de-bins.html' title='La información vs. el número de bins'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-EtkPb0jv5pw/Toi5EpxGzoI/AAAAAAAAARc/DFwdF0anZkU/s72-c/inf-bins.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-6900224010520258885</id><published>2011-09-21T08:06:00.000-07:00</published><updated>2011-09-21T08:06:54.372-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Información'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><category scheme='http://www.blogger.com/atom/ns#' term='Selección de variables'/><title type='text'>La información como marco de referencia (Parte IV)</title><content type='html'>&lt;span style="font-family: Calibri;"&gt;En el artículo anterior analizamos un modelo de scoring desde una perspectiva infométrica. El modelo canaliza y codifica la información de entrada en una forma que define los mensajes o estados de la salida. Parte de la información de entrada se pierde por equivocación y parte se transmite como ruido. Pero ¿cómo seleccionamos las variables que transmitan la mayor información con el menor ruido posible?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Esta es otra de las ventajas que nos ofrece la capacidad de medir información. Antes de analizar un algoritmo para seleccionar variables me gustaría hacer un comentario respecto de la información. Cuando decimos que una variable transmite información acerca de otra variable, haciendo que se reduzca su incertidumbre, estamos asumiendo implícitamente que existe una relación entre ambas variables. Lo que no estamos asumiendo, y esto es muy importante, es el tipo de relación.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Dicho de otro modo, la relación entre variables puede ser lineal o no. La información mutua entre variables no asume un tipo particular de relación, por lo tanto puede aplicarse a datos cuyas variables se relacionen en forma no lineal. Para más detalles sobre este tema se puede consultar el siguiente artículo: &lt;/span&gt;&lt;a href="http://powerhousedm.blogspot.com/2008/10/correlacin-e-informacin-mutua.html"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;http://powerhousedm.blogspot.com/2008/10/correlacin-e-informacin-mutua.html&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Ahora estamos en condiciones de describir el algoritmo de selección de variables. Supongamos que contamos con unas 100 variables que podrían servir para predecir otra variable:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Paso 1&lt;/b&gt;: recorremos las 100 variables en busca de aquella que transmita la mayor información posible acerca de la variable a predecir. Esta será la primera variable seleccionada.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Paso 2&lt;/b&gt;: recorremos las variables restantes y calculamos la información transmitida por las variables seleccionadas anteriormente más la que estamos evaluando.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;El grupo de variables con mayor cantidad de información define la variable a seleccionar.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Paso 3&lt;/b&gt;: continuamos con el paso 2 hasta que la información ganada por la nueva variable seleccionada no justifique la pérdida de representatividad.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Este último paso merece una mayor explicación. A medida que se agregan variables, la &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;información transmitida aumenta pero se necesita una mayor cantidad de casos para cubrir todas las posibilidades. Cuando la cantidad de casos es fija, agregar variables simplemente reduce las posibilidades de que los datos representen la población. Es esta la razón por la cual los modelos que resultan confiables, suelen estar basados en unas pocas variables. Para más detalles se puede consultar el artículo &lt;/span&gt;&lt;a href="http://powerhousedm.blogspot.com/2007/11/cuntos-datos-necesito-para-obtener-un.html"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;http://powerhousedm.blogspot.com/2007/11/cuntos-datos-necesito-para-obtener-un.html&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;El algoritmo descripto aquí trabaja muy bien en la práctica ya que tiene las siguientes características:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpFirst" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-family: Calibri;"&gt;1.&lt;/span&gt;&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Calibri;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;Aumenta las probabilidades de seleccionar una variable que interactúe con una o más variables seleccionadas previamente. Esto se debe a que dos o más variables que interactúan &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;agregan más información que tomadas por separado.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="margin: 0cm 0cm 0pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-family: Calibri;"&gt;2.&lt;/span&gt;&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Calibri;"&gt;Minimiza la posibilidad de seleccionar variables colineales. Esto se debe a que si dos variables están fuertemente relacionadas, una vez que se seleccionó una de ellas, la otra aportará muy poca información nueva.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoListParagraphCxSpLast" style="margin: 0cm 0cm 10pt 36pt; mso-list: l0 level1 lfo1; text-indent: -18pt;"&gt;&lt;span style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font-family: Calibri;"&gt;3.&lt;/span&gt;&lt;span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: Calibri;"&gt;La cantidad de variables seleccionadas depende exclusivamente de los datos (cantidad y calidad) y se calcula automáticamente en cada ciclo.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Aquellos que deseen probar el algoritmo pueden descargar Powerhouse y seguir paso a paso los tutoriales: &lt;/span&gt;&lt;a href="http://www.dataxplore.com.ar/descargas.php"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;http://www.dataxplore.com.ar/descargas.php&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-6900224010520258885?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/6900224010520258885/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=6900224010520258885' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/6900224010520258885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/6900224010520258885'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2011/09/la-informacion-como-marco-de-referencia_21.html' title='La información como marco de referencia (Parte IV)'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-4700789040323703374</id><published>2011-09-16T07:42:00.000-07:00</published><updated>2011-09-16T07:42:09.525-07:00</updated><title type='text'>La información como marco de referencia (Parte III)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: left;"&gt;  &lt;span style="font-family: Calibri;"&gt;Las variables independientes contienen información. En el ejemplo que estamos analizando llevan en conjunto, 12.16 bits de información (no es necesario conocer cómo calcular este valor pero para aquellos que les interese pueden consultar &lt;/span&gt;&lt;a href="http://powerhousedm.blogspot.com/2011/09/la-informacion-como-marco-de-referencia.html"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;http://powerhousedm.blogspot.com/2011/09/la-informacion-como-marco-de-referencia.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Pero no toda esta información es útil para predecir la variable deseada. De hecho vimos en el artículo anterior que la información útil, la que se transmite, es 0.24 bits.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Entonces, ¿qué sucede con los 11.92 bits restantes? (12.16-0.24=11.92) ¿Dónde fue a parar esta información?&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;span style="font-family: Calibri;"&gt;La respuesta tiene que ver con los diferentes patrones de comportamiento &lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%; mso-ansi-language: ES-AR; mso-ascii-theme-font: minor-latin; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-bidi-language: AR-SA; mso-bidi-theme-font: minor-bidi; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin;"&gt;que se asocian a&amp;nbsp;&lt;/span&gt;un mismo estado o mensaje de salida. Dicho de otro modo, hay varias maneras de decir lo mismo. Esto se denomina técnicamente Equivocación.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Un esquema general de lo visto hasta el momento aclarará este tema&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9obHl1_K7r4/TnNdKCVv6RI/AAAAAAAAARU/nX8I0o1mw08/s1600/info-II.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://2.bp.blogspot.com/-9obHl1_K7r4/TnNdKCVv6RI/AAAAAAAAARU/nX8I0o1mw08/s320/info-II.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;    &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;El modelo recibe a través de las variables independientes,&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;12.16 bits de información.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Parte de esta información se considera Equivocación y parte se Transmite. Ya que se transmiten 0.24 bits, el resto 11.92 bits&amp;nbsp; se considera Equivocación y nos indica que existen muchos patrones distintos que se asocian con un mismo mensaje de salida.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt; &lt;span style="font-family: Calibri;"&gt;Siempre se cumple la siguiente ecuación: &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;span style="font-family: Calibri;"&gt;Información de Entrada = Información Transmitida + Equivocación&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;span style="font-family: Calibri;"&gt;En el ejemplo&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;span style="font-family: Calibri;"&gt;12.16 bits = 0.24 bits + 11.92 bits&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Calibri;"&gt;La información que se necesitaría para predecir sin errores si un cliente se fugará o no, es de 0.39 bits (en los ejemplos anteriores tomamos 0.40). Al canal de transmisión ingresan 0.24 bits provenientes de la entrada más 0.15 bits de Ruido.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;span style="font-family: Calibri;"&gt;Siempre se cumple la siguiente ecuación:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Información Requerida = Información Transmitida + Ruido&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;span style="font-family: Calibri;"&gt;En el ejemplo &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;span style="font-family: Calibri;"&gt;0.39 bits = 0.24 bits + 0.15 bits&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;span style="font-family: Calibri;"&gt;Para lograr un buen modelo es necesario que las variables seleccionadas contengan la mayor información útil y el menor ruido posible. En el ejemplo, las variables independientes, también llamadas variables de entrada, transmiten 0.24 bits o 61% de la información necesaria para predecir la variable de salida (¿se fuga o no?).&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;La incertidumbre restante, 0.15 bits o 39% es lo que denominamos Ruido.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;span style="font-family: Calibri;"&gt;&lt;span style="font-family: Times New Roman;"&gt;  &lt;/span&gt;En el siguiente artículo veremos que este nuevo enfoque nos permite diseñar un método para seleccionar las variables con mayor información y menor ruido posible.&lt;/span&gt;&lt;span style="font-family: Times New Roman;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-4700789040323703374?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/4700789040323703374/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=4700789040323703374' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/4700789040323703374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/4700789040323703374'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2011/09/la-informacion-como-marco-de-referencia_16.html' title='La información como marco de referencia (Parte III)'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-9obHl1_K7r4/TnNdKCVv6RI/AAAAAAAAARU/nX8I0o1mw08/s72-c/info-II.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-3740532165472482531</id><published>2011-09-15T07:09:00.000-07:00</published><updated>2011-09-15T07:09:40.839-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruido'/><category scheme='http://www.blogger.com/atom/ns#' term='Información'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><title type='text'>La información como marco de referencia (Parte II)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;  &lt;span style="font-family: Calibri;"&gt;En el artículo anterior (&lt;/span&gt;&lt;a href="http://powerhousedm.blogspot.com/2011/09/la-informacion-como-marco-de-referencia.html"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;http://powerhousedm.blogspot.com/2011/09/la-informacion-como-marco-de-referencia.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;"&gt;) vimos que las variables independientes de un modelo transmiten información que ayuda a reducir la incertidumbre de la variable a predecir.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;En el ejemplo anterior, la incertidumbre de lo que hará el cliente es de 0.40 bits pero conociendo su comportamiento (a través de las variables independientes) la reducimos a 0.16 bits. O sea, gracias al modelo tenemos más certeza de lo que hará el cliente. Pero no podemos estar 100% seguros. Todavía hay 0.16 bits de incertidumbre. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;¿Por qué no es posible reducir a 0 bits? El culpable es el ruido. Supongamos que identificamos un patrón de comportamiento que se repite 100 veces en los datos. Este patrón no es otra cosa que una determinada combinación de valores de las variables independientes. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Si este patrón siempre estuviera asociado al mismo resultado final (se Fuga SI o No), entonces el ruido sería 0. Pero generalmente esto no sucede. De las veces que aparece el mismo patrón, algunas veces está asociado con Fuga=Si y otras con Fuga=No. Cuanto más similar sea esta distribución con la distribución de la variable a predecir, más ruido contendrán los datos, al menos en este patrón.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;El modelo no podrá hacer mucho si los datos contienen demasiado ruido.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; Es más, estos 0.16 bits establecen un límite teórico a lo que &lt;em&gt;cualquier&lt;/em&gt; herramienta de modelado podrá obtener de estos datos.&amp;nbsp;&lt;/span&gt;En este ejemplo&amp;nbsp;los datos contienen un 40% de ruido (0.16/0.40).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;En el siguiente artículo analizaremos la información desde el punto de vista de las variables independientes&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-3740532165472482531?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/3740532165472482531/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=3740532165472482531' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/3740532165472482531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/3740532165472482531'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2011/09/la-informacion-como-marco-de-referencia_15.html' title='La información como marco de referencia (Parte II)'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-4595123574447760601</id><published>2011-09-14T11:18:00.000-07:00</published><updated>2011-09-14T13:16:06.547-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Información'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><category scheme='http://www.blogger.com/atom/ns#' term='Modelos'/><title type='text'>La información como marco de referencia (Parte I)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-family: Calibri;"&gt;La compañía ACME tiene un serio problema: cada mes pierde alrededor de un 8% de sus clientes. Si bien es cierto que también adquiere nuevos clientes, el resultado neto es una pérdida del 3%. A este paso en 9 meses habrá perdido un 25% de sus clientes.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Para mejorar la situación, decide identificar los clientes con altas probabilidades de fuga y tratar de retenerlos. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;Veamos cómo se ve esta situación desde el punto de vista de la información&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-u9yGg5ORK0k/TnDvRTEIoKI/AAAAAAAAARQ/L51HGVNkenQ/s1600/info-I.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="122" src="http://2.bp.blogspot.com/-u9yGg5ORK0k/TnDvRTEIoKI/AAAAAAAAARQ/L51HGVNkenQ/s320/info-I.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;La compañía tiene sus Clientes que se comportan de determinada manera. Este patrón de comportamiento es representado como Mensajes que serán codificados por el Modelo para transmitir uno de dos mensajes: el cliente se va o se queda.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;Los mensajes de entrada están formados por las variables que capturan el comportamiento de los clientes. El modelo fue armado para identificar patrones y asociarlos con una de dos respuestas posibles.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Antes de armar el modelo, existe una incertidumbre acerca de si los clientes permanecerán o se irán a la competencia, que puede expresarse en bits. En este ejemplo la incertidumbre es aproximadamente 0.40 bits (los detalles de cómo se mide esta información no son necesarios para el propósito de este artículo, pero pueden consultarse en &lt;/span&gt;&lt;a href="http://powerhousedm.blogspot.com/2010/05/como-medir-la-informacion-que-lleva-un.html"&gt;&lt;span style="color: blue; font-family: Calibri;"&gt;http://powerhousedm.blogspot.com/2010/05/como-medir-la-informacion-que-lleva-un.html&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: Calibri;"&gt;)&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;Las variables que capturan su comportamiento envían información a través del modelo, con el propósito de reducir la incertidumbre. En este ejemplo, las variables aportan 0.24 bits de información. Entonces gracias al modelo la incertidumbre sobre lo que hará el cliente (permanece o se va), se reduce de 0.40 bits a 0.16 bits (0.40 – 0.24). Si en vez de valores absolutos queremos expresar la reducción de incertidumbre en valores relativos, diríamos que el conjunto de variables con los que se desarrolló el modelo aportan el 60% (0.24 bits) de la información necesaria para predecir si el cliente se fugará o no con un 100% de exactitud (0.40 bits).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;También podríamos decir que la incertidumbre de la variable a predecir se reduce a un 40%, una vez que se conocen las variables independientes.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Calibri;"&gt;En el siguiente artículo veremos cómo se interpretan estos 0.16 bits de incertidumbre restante.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-4595123574447760601?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/4595123574447760601/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=4595123574447760601' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/4595123574447760601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/4595123574447760601'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2011/09/la-informacion-como-marco-de-referencia.html' title='La información como marco de referencia (Parte I)'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-u9yGg5ORK0k/TnDvRTEIoKI/AAAAAAAAARQ/L51HGVNkenQ/s72-c/info-I.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-8403427072615576048</id><published>2011-09-07T15:24:00.000-07:00</published><updated>2011-09-07T15:24:03.274-07:00</updated><title type='text'>Powerhouse para descargar</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A partir de esta semana se encuentra una licencia de demostración de Powerhouse para bajar libremente en &lt;a href="http://www.dataxplore.com.ar/descargas.php"&gt;http://www.dataxplore.com.ar/descargas.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Una vez completados los datos, se recibirá un mail con un link para acceder al instalador. También están disponibles 3 tutoriales y los datos para seguir paso a paso el desarrollo de tres modelos, predicción, scoring y clustering.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-8403427072615576048?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/8403427072615576048/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=8403427072615576048' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/8403427072615576048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/8403427072615576048'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2011/09/powerhouse-para-descargar.html' title='Powerhouse para descargar'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-7552154690845157566</id><published>2011-03-19T14:21:00.000-07:00</published><updated>2011-03-19T14:21:02.768-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Información'/><category scheme='http://www.blogger.com/atom/ns#' term='Entropía'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><title type='text'>La entropía como medida de la información - Parte II</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;En este artículo contestaré las preguntas planteadas en el &lt;a href="http://powerhousedm.blogspot.com/2011/02/la-entropia-como-medida-de-la.html"&gt;anterior&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cualquier set de datos utilizado en Data Mining puede representarse en un espacio de estados, que no es más que un espacio ordinario pero con tantas dimensiones como variables disponibles. Por ejemplo, supongamos que los datos contienen solamente dos variables. Entonces, cada fila puede representarse como un punto en un espacio dado por las dos variables.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-BYP4lOEDp1A/TYUdW8HNhjI/AAAAAAAAAQ8/FMlKo3ebris/s1600/im1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" r6="true" src="https://lh6.googleusercontent.com/-BYP4lOEDp1A/TYUdW8HNhjI/AAAAAAAAAQ8/FMlKo3ebris/s320/im1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;En el gráfico anterior el espacio de estados es de dos dimensiones y se ha representado un sólo estado por medio de un punto dado por las coordenadas 5030 y 130. &lt;br /&gt;&lt;br /&gt;La representación de todo el set de datos podría ser algo similar al siguiente gráfico&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-IhcyUIJ1OlM/TYUdg6i_PFI/AAAAAAAAARA/cMfhEZr5Dbs/s1600/im2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="215" r6="true" src="https://lh4.googleusercontent.com/-IhcyUIJ1OlM/TYUdg6i_PFI/AAAAAAAAARA/cMfhEZr5Dbs/s320/im2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;Si en vez de tener dos variables tuviéramos 3, el gráfico sería en 3 dimensiones, por ejemplo:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-5SE5WZL9PMI/TYUdnwOrVOI/AAAAAAAAARE/1ggebbjjMkw/s1600/im3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" r6="true" src="https://lh4.googleusercontent.com/-5SE5WZL9PMI/TYUdnwOrVOI/AAAAAAAAARE/1ggebbjjMkw/s1600/im3.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Para más de 3 variables es imposible dibujarlo, pero la idea es la misma. Cada fila representa un estado por medio de la combinación de los valores de todas sus variables. &lt;br /&gt;&lt;br /&gt;Luego de esta pequeña introducción al espacio de estados, podemos analizar cómo serían las tablas T1 y T2.&lt;br /&gt;&lt;br /&gt;En el caso de T1, en donde supuestamente no existe ninguna relación entre las variables, los estados llenarán todo el espacio disponible, por lo tanto podría ser algo similar al siguiente gráfico&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-vasSmPljpnc/TYUdwDjTPBI/AAAAAAAAARI/OkMO1Tl9AJk/s1600/im4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="203" r6="true" src="https://lh5.googleusercontent.com/-vasSmPljpnc/TYUdwDjTPBI/AAAAAAAAARI/OkMO1Tl9AJk/s320/im4.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="margin: 0cm 0cm 10pt;"&gt;&lt;span style="font-family: Calibri;"&gt;En cambio, en el caso de la tabla T2, que se supone que existe algún tipo de relación entre las variables, los estados ya no se dispersan como en el caso de T1 sino que están obligados a mantenerse dentro de alguna forma específica.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-gftP6lYNfsc/TYUd2beqvlI/AAAAAAAAARM/FmKsS-ahjQ0/s1600/im5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="204" r6="true" src="https://lh5.googleusercontent.com/-gftP6lYNfsc/TYUd2beqvlI/AAAAAAAAARM/FmKsS-ahjQ0/s320/im5.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;El proceso que origina estos datos es el responsable de darle la forma a la nube de puntos. &lt;br /&gt;&lt;br /&gt;Ahora podemos responder las preguntas:&lt;br /&gt;&lt;br /&gt;¿Qué tabla está más ordenada? T1 tiene desparramado los puntos por todo su espacio, mientras que t2 los tiene confinados en un volumen más pequeño, por lo tanto estarán más ordenados en T2 que en T1. O sea, la relación entre variables genera un orden interno.&lt;br /&gt;&lt;br /&gt;Cuánto mayor orden, menor entropía, por lo tanto T1 tendrá mayor entropía que T2&lt;br /&gt;&lt;br /&gt;La entropía máxima es la que tiene sus estados dispersos por todo el volumen, o sea cuando las variables no tienen relación entre sí.&lt;br /&gt;&lt;br /&gt;En el caso extremo, tendremos una relación perfecta entre las variables y los estados estarán confinados en un volumen muy pequeño. Podemos imaginar el gráfico de la tabla T2 en donde los puntos caen en una línea recta.&lt;br /&gt;&lt;br /&gt;La última pregunta es acerca de la información que llevan estas variables. Asumiendo que cada variable lleve algo de información sobre una cuarta variable, ¿qué es preferible? ¿Mayor o menor entropía de las variables independientes?&lt;br /&gt;&lt;br /&gt;Acabamos de ver que una menor entropía implica que existe cierta relación entre las variables. Esto significa que parte de la información que trae cada variable es compartida por el resto de las variables (o al menos por una de ellas).&lt;br /&gt;&lt;br /&gt;En cambio, si las variables tienen mayor entropía, no existirá relación entre ellas. Por lo tanto toda la información que aporte cada una de las variables será usada plenamente para predecir la cuarta variable.&lt;br /&gt;&lt;br /&gt;Los dos últimos párrafos sugieren que un buen data set debería contener variables que estén relacionadas con la variable a predecir, pero no entre sí. De esto se deduce que la entropía de las variables independientes debería ser la mayor posible.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-7552154690845157566?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/7552154690845157566/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=7552154690845157566' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7552154690845157566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7552154690845157566'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2011/03/la-entropia-como-medida-de-la.html' title='La entropía como medida de la información - Parte II'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/-BYP4lOEDp1A/TYUdW8HNhjI/AAAAAAAAAQ8/FMlKo3ebris/s72-c/im1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-3243424989962665217</id><published>2011-02-25T07:47:00.000-08:00</published><updated>2011-02-25T07:47:07.058-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Información'/><category scheme='http://www.blogger.com/atom/ns#' term='Entropía'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><category scheme='http://www.blogger.com/atom/ns#' term='Modelos'/><title type='text'>La entropía como medida de la información</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;En el artículo anterior mostré cómo es posible medir la &lt;a href="http://powerhousedm.blogspot.com/2010/05/como-medir-la-informacion-que-lleva-un.html"&gt;información que un grupo de variables lleva sobre otra&lt;/a&gt; y en el artículo sobre &lt;a href="http://powerhousedm.blogspot.com/2007/11/informacin-incertidumbre-y-sorpresa.html"&gt;Información, incertidumbre y sorpresa&lt;/a&gt; expliqué cómo medir la información de una variable. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En este artículo mostraré cómo la entropía también es útil cuando medimos la información de un conjunto de variables.&lt;br /&gt;&lt;br /&gt;Supongamos que tenemos dos tablas con 3 variables numéricas con similar distribución cada una (podemos asumir una distribución uniforme o normal).&lt;br /&gt;&lt;br /&gt;Supongamos que la primer tabla, que llamaré T1, tiene las variables sin ningún tipo de relación entre ellas, mientras que la tabla T2 contiene algún tipo de relación entre las variables.&lt;br /&gt;&lt;br /&gt;Voy a dejar algunas preguntas para que las responda el que lo desee y en breve publicaré las respuestas.&lt;br /&gt;&lt;br /&gt;¿Qué tabla contiene más “orden”? ¿La T1 o la T2?&lt;br /&gt;&lt;br /&gt;¿Cuál de las dos tablas tendrán una entropía mayor? ¿por qué?&lt;br /&gt;&lt;br /&gt;¿Cómo debería ser el tipo de relación para que la entropía sea mínima o máxima?&lt;br /&gt;&lt;br /&gt;Asumiendo que cada una de las tres variables lleva algo de información sobre una cuarta variable, ¿qué tabla es preferible para armar un modelo de predicción?&lt;br /&gt;&lt;br /&gt;Quedo a la espera de respuestas y/o comentarios.&lt;br /&gt;&lt;br /&gt;Gracias&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-3243424989962665217?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/3243424989962665217/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=3243424989962665217' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/3243424989962665217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/3243424989962665217'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2011/02/la-entropia-como-medida-de-la.html' title='La entropía como medida de la información'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-7134487885432577913</id><published>2011-02-09T03:05:00.000-08:00</published><updated>2011-02-09T03:08:27.606-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><title type='text'>Nuevo Blog</title><content type='html'>Abrí un nuevo Blog en el que escribiré artículos menos técnicos que los de este Blog.&lt;br /&gt;&lt;br /&gt;http://dataxplore.wordpress.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-7134487885432577913?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/7134487885432577913/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=7134487885432577913' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7134487885432577913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7134487885432577913'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2011/02/nuevo-blog.html' title='Nuevo Blog'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-7660515407604864169</id><published>2010-05-12T06:54:00.000-07:00</published><updated>2011-02-09T07:21:45.946-08:00</updated><title type='text'>¿Cómo medir la información que lleva un grupo de variables?</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;link href="file:///D:/DOCUME%7E1/MARCEL%7E1/CONFIG%7E1/Temp/msoclip1/01/clip_filelist.xml" rel="File-List"&gt;&lt;link href="file:///D:/DOCUME%7E1/MARCEL%7E1/CONFIG%7E1/Temp/msoclip1/01/clip_editdata.mso" rel="Edit-Time-Data"&gt;&lt;link href="file:///D:/DOCUME%7E1/MARCEL%7E1/CONFIG%7E1/Temp/msoclip1/01/clip_oledata.mso" rel="OLE-Object-Data"&gt;&lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt;&lt;style&gt; &lt;!--  /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-parent:""; 	margin:0cm; 	margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:12.0pt; 	font-family:"Times New Roman"; 	mso-fareast-font-family:"Times New Roman";} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 3.0cm 70.85pt 3.0cm; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Varias veces me preguntaron cómo es posible aplicar la Teoría de la Información de Shannon cuando existe más de una variable en juego. La respuesta es muy simple si hacemos una distinción entre variables y estados.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Para medir la información que genera una fuente Shannon propone utilizar la entropía definida como:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://1.bp.blogspot.com/_1pmfjujlzUI/S-qz61gBCWI/AAAAAAAAAP0/8mk0g5wOLqM/s1600/H1.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5470382520770038114" src="http://1.bp.blogspot.com/_1pmfjujlzUI/S-qz61gBCWI/AAAAAAAAAP0/8mk0g5wOLqM/s400/H1.gif" style="cursor: pointer; display: block; height: 44px; margin: 0px auto 10px; text-align: center; width: 157px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;en donde p&lt;sub&gt;i&lt;/sub&gt; representa la probabilidad de ocurrencia del estado i. La entropía se mide en bits.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Por ejemplo, si una fuente de información es capaz de generar 3 estados distintos con probabilidades 0.3, 0.5 y 0.2, entonces la entropía será:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://2.bp.blogspot.com/_1pmfjujlzUI/S-q0adhkMuI/AAAAAAAAAP8/-j403_0IkmY/s1600/H2.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5470383064089899746" src="http://2.bp.blogspot.com/_1pmfjujlzUI/S-q0adhkMuI/AAAAAAAAAP8/-j403_0IkmY/s400/H2.gif" style="cursor: pointer; display: block; height: 32px; margin: 0px auto 10px; text-align: center; width: 389px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: left;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;i&gt;H&lt;/i&gt; &lt;/span&gt;&lt;span style="font-size: 100%;"&gt;= 1.486 bits&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: left;"&gt;&lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;El ejemplo anterior podría referirse a una variable que contenga 3 valores distintos, cuya distribución sea 0.3, 0.5 y 0.2. En este caso diríamos que esta variable contiene 1.486 bits de información.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;La duda aparece cuando consideramos más de una variable. ¿Cómo podemos aplicar la misma ecuación?&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;La clave está en considerar los estados a los que se refiere el cálculo de la entropía no como valores de una variable, sino como puntos en un espacio n-dimensional. Cada variable representa una dimensión del espacio.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Cuando queremos analizar una tabla con datos que representan distintos casos (cada fila es un caso y cada columna es una variable que toma diferentes valores según los atributos del caso), podemos representarlos mediante un espacio cuya dimensión está dada por la cantidad de variables. Cada caso es un punto en el espacio. Casos similares estarán situados en una región próxima del espacio. Si los casos se refieren a clientes y las variables representan comportamientos, entonces el espacio representará los distintos comportamientos de los clientes mediante los puntos, o estados. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;La información que contiene este espacio dependerá de cómo se sitúan estos puntos y puede medirse mediante la entropía, utilizando cada punto como un estado.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-7660515407604864169?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/7660515407604864169/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=7660515407604864169' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7660515407604864169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7660515407604864169'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2010/05/como-medir-la-informacion-que-lleva-un.html' title='¿Cómo medir la información que lleva un grupo de variables?'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1pmfjujlzUI/S-qz61gBCWI/AAAAAAAAAP0/8mk0g5wOLqM/s72-c/H1.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-7018029731942486229</id><published>2009-04-21T16:42:00.000-07:00</published><updated>2009-04-21T16:59:08.189-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Selección de variables'/><title type='text'>Selección de variables</title><content type='html'>&lt;div align="left"&gt;Seleccionar las mejores variables puede llegar a ser uno de los principales problemas en un proyecto de Data Mining.&lt;br /&gt;&lt;br /&gt;Una opción es elegir aquellas variables que desde el punto de vista del negocio parecen importantes. Claro que para esto se debe conocer muy bien el negocio y se puede correr el riesgo de elegir variables altamente correlacionadas. Además es muy posible que el grupo de variables seleccionadas diste mucho de ser el óptimo (por ejemplo, podrían quedar afuera ciertas variables que aportan buena información).&lt;br /&gt;&lt;br /&gt;Otra alternativa es la fuerza bruta, pero sólo en casos con muy pocas variables disponibles. Cuando la cantidad de variables comienza a ser importante, este enfoque queda descartado debido a la enorme cantidad de pruebas que hay que realizar. Por ejemplo, suponiendo que hay 20 variables disponibles y se deben elegir 6, la cantidad de combinaciones posibles es mayor a 38.000. Si en vez de 20 tenemos 100, las diferentes combinaciones superan los 1.000 millones.&lt;br /&gt;&lt;br /&gt;Un método que ha demostrado ser muy eficiente es el que se basa en la Teoría de la Información. Sin entrar en demasiados detalles, los pasos a seguir son los siguientes:&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Seleccionar del total de las variables, aquella que transmite mayor cantidad de información.&lt;/li&gt;&lt;li&gt;Seleccionar del resto de variables disponibles, aquella que transmita la mayor cantidad de información nueva&lt;/li&gt;&lt;li&gt;Continuar en el paso 2 hasta que la ganancia de información ya no justifique la pérdida de representatividad de población (ver artículo &lt;a href="http://powerhousedm.blogspot.com/2007/11/cuntos-datos-necesito-para-obtener-un.html"&gt;¿Cuántos datos necesito para obtener un buen modelo?&lt;/a&gt;)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Este procedimiento toma muy poco tiempo y crea un conjunto de variables que cumple con las siguientes características:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Contiene la mayor cantidad de información dado los datos disponibles&lt;/li&gt;&lt;li&gt;Contiene la mejor relación señal/&lt;a href="http://powerhousedm.blogspot.com/2007/10/qu-es-el-ruido.html"&gt;ruido&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Las variables seleccionadas no son colineales&lt;/li&gt;&lt;li&gt;Tiene en cuenta las interacciones entre variables&lt;/li&gt;&lt;li&gt;Usualmente aparecen seleccionadas variables que son consideradas como muy importantes desde el punto de vista del negocio &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Aquellos interesados en conocer más acerca de la Teoría de la Información pueden leer el artículo &lt;a href="http://www.dataxplore.com.ar/Powerhouse,%20Data%20Mining%20usando%20Teoría%20de%20la%20Información.pdf"&gt;Powerhouse: Data Mining usando Teoría de la Información&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-7018029731942486229?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/7018029731942486229/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=7018029731942486229' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7018029731942486229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7018029731942486229'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2009/04/seleccion-de-variables-seleccionar-las.html' title='Selección de variables'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-1125928003695095246</id><published>2008-10-02T06:46:00.000-07:00</published><updated>2008-10-03T06:12:37.162-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Información'/><title type='text'>Correlación e Información Mutua</title><content type='html'>El coeficiente de correlación entre dos variables está basado en la covarianza (y normalizado mediante las varianzas de cada variable) y asume, entre otras cosas, que la relación entre las variables es lineal. Esto significa que el coeficiente de correlación (o de determinación r2) no es suficiente para saber si dos variables están correlacionadas. El siguiente es un ejemplo tomado del libro “The Visual Display of Quantitative Information” de Edward Tufte y basado en 4 pares de variables ideadas por Francis Anscombe.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5252553223212172290" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://3.bp.blogspot.com/_1pmfjujlzUI/SOTRU8llBAI/AAAAAAAAAKo/gcEuV4h9LDE/s400/Anscombe.JPG" border="0" /&gt;Las 4 variables Y tienen la misma media y desviación estándar. Además el coeficiente de correlación entre X e Y es el mismo en los 4 casos (0.816) y comparten la misma recta de regresión y = 0.5 x + 3&lt;br /&gt;&lt;br /&gt;Las cuatro relaciones con distintas entre si, pero sus correlaciones son las mismas. Esto nos enseña la importancia de usar gráficos de dispersión para visualizar la relación entre dos variables, más que confiar en su correlación.&lt;br /&gt;&lt;br /&gt;¿Pero qué sucede si analizamos estas relaciones usando medidas de información?&lt;br /&gt;&lt;br /&gt;La primera diferencia que encontramos es que las entropías de las variables Y son distintas, excepto las dos últimas. La diferencia más importante es que la información transmitida entre cada par de valores es diferente en los 4 casos, como puede verse en la siguiente tabla&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5252553641833019010" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/SOTRtUEkNoI/AAAAAAAAAKw/ruMfhES0aZ8/s400/Anscombetab.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;En los tres primeros casos, la información transmitida nos indica que es posible realizar un buen modelo, mientras que en el último caso, un valor de sólo 18% nos dice que ningún modelo será capaz de hacer un buen trabajo para representar esta relación (lo cual es obvio mirando el gráfico de dispersión).&lt;br /&gt;&lt;br /&gt;La información transmitida no asume ningún tipo de relación, como lo hace el coeficiente de correlación. Esta es una gran ventaja, porque muchos data sets contienen relaciones no-lineales que son descartadas al utilizar correlaciones lineales.&lt;br /&gt;&lt;br /&gt;En casos que involucran sólo dos variables, una manera de confirmar si la relación es lineal es usar los gráficos de dispersión, pero cuando aparecen más variables independientes, graficar la relación no sirve. Una solución es utilizar medidas de información mutua como la información transmitida.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-1125928003695095246?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/1125928003695095246/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=1125928003695095246' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/1125928003695095246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/1125928003695095246'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2008/10/correlacin-e-informacin-mutua.html' title='Correlación e Información Mutua'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1pmfjujlzUI/SOTRU8llBAI/AAAAAAAAAKo/gcEuV4h9LDE/s72-c/Anscombe.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-9135865772045780530</id><published>2008-04-25T15:37:00.000-07:00</published><updated>2008-04-25T15:42:02.725-07:00</updated><title type='text'>Ya no es necesario torturar los datos</title><content type='html'>Existe un concepto muy arraigado y que se basa en las viejas tecnologías de análisis de datos: &lt;em&gt;para obtener un buen modelo hay que hacer una enorme cantidad de pruebas.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;¿Cuál es la mejor transformación para cada variable? ¿Cuál es el mejor valor para reemplazar los nulos? ¿Cuáles son las variables más adecuadas para realizar el modelo? ¿Cuántas variables se deben incluir? ¿Qué tipo de modelo es el mejor? Éstas son algunas de las tantas preguntas que se deben contestar para crear un modelo, con lo que no es de extrañar que muchos piensen que no sólo tienen que hacer muchos intentos sino que además deben saber de estadística y necesitan tener mucha experiencia.&lt;br /&gt;&lt;br /&gt;Afortunadamente la teoría de la información responde a cada una de estas preguntas. La clave está en medir la información que contiene cada variable disponible. Hay sólo una transformación de la variable que maximiza la información y reduce el &lt;a href="http://powerhousedm.blogspot.com/2007/10/qu-es-el-ruido.html"&gt;ruido&lt;/a&gt;. Existe sólo un grupo de variables que lleva la mayor información posible con el menor ruido posible.&lt;br /&gt;&lt;br /&gt;Una vez realizada la mejor transformación y elegidas las mejores variables, toda la información disponible está expuesta de tal manera que con una simple regresión se obtiene un modelo excelente y muy fácil de interpretar.&lt;br /&gt;&lt;br /&gt;En resumen, con la teoría de la información ya no es necesario ensayar diferentes transformaciones de variables, distintas combinaciones de variables y algoritmos para ver cuál es el que mejores resultados genera.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hay un solo camino para hacer las cosas: el óptimo.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;¿Utopía? No, realidad.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dataxplore.com.ar/Cars.html"&gt;Powerhouse &lt;/a&gt; es la prueba.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-9135865772045780530?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/9135865772045780530/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=9135865772045780530' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/9135865772045780530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/9135865772045780530'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2008/04/ya-no-es-necesario-torturar-los-datos.html' title='Ya no es necesario torturar los datos'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-2475978080012577275</id><published>2008-03-28T07:47:00.000-07:00</published><updated>2008-03-28T09:42:49.499-07:00</updated><title type='text'>Modelos de predicción usando modelos de segmentos</title><content type='html'>En el artículo anterior comenté que los modelos de clusters o segmentos pueden usarse para varios propósitos. Hoy mostraré cómo es posible usar un modelo de segmentos para predecir.&lt;br /&gt;&lt;br /&gt;Powerhouse permite generar modelos de clusters con distintas cantidades de segmentos. Cuando se usa el modelo para explicar los datos, se prefieren pocos segmentos, pero si el modelo se usa para predecir, es preferible que la cantidad de segmentos o clusters sea grande.&lt;br /&gt;&lt;br /&gt;Un modelo de clusters es normalmente un modelo no supervisado. Dicho de otro modo, no existe una variable output que sirve como guía en la creación del modelo. La utilidad de un modelo no supervisado está relacionada con la manera en que se distribuyen los valores de las variables en cada uno de los clusters.&lt;br /&gt;&lt;br /&gt;Si los valores de la variable output (variable a predecir) se distribuyen con diferentes rangos en cada cluster, es posible usar el promedio de los valores de cada cluster como valor predicho. Por ejemplo, supongamos que un modelo contiene 10 clusters. Supongamos también que la variable a predecir es del tipo SI/NO.  Si asignamos 1 para SI y 0 para NO, podemos calcular el promedio por cada cluster y cada valor representará la probabilidad de que la variable tome valor SI. La siguiente tabla muestra lo que podrían ser estos valores&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1pmfjujlzUI/R-0aDjvUdwI/AAAAAAAAAKY/7iICF_VoqPs/s1600-h/cl-tab.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_1pmfjujlzUI/R-0aDjvUdwI/AAAAAAAAAKY/7iICF_VoqPs/s400/cl-tab.JPG" alt="" id="BLOGGER_PHOTO_ID_5182827394608953090" border="0" /&gt;&lt;/a&gt;Con esta tabla podemos armar el modelo de predicción de la siguiente manera: cuando tenemos un caso nuevo, representado por las mismas variables con las que se armó el modelo de cluster, sólo hay que calcular el cluster al que corresponde. Luego, la predicción, que en este ejemplo será la probabilidad de ser "SI", será la probabilidad asignada al cluster en la tabla de arriba.&lt;br /&gt;&lt;br /&gt;Como ejemplo práctico usé datos acerca de los clientes de un banco para armar un modelo de riesgo crediticio. Luego construí un modelo de cluster, que en Powerhouse se llama OPTICL. Modifiqué la cantidad de clusters llevándolo al máximo. Esto resultó en un modelo con 64 clusters. Luego calculé la probabilidad de encontrar valores SI de la variable output usando los datos de entrenamiento.&lt;br /&gt;&lt;br /&gt;Es importante aclarar que Powerhouse no usa la variable output para construir un modelo de cluster (si lo hiciera ya no sería un modelo no supervisado).&lt;br /&gt;&lt;br /&gt;Finalmente apliqué el modelo en los datos de prueba (esto genera un número de cluster para cada caso) y reemplacé los números de cluster de cada caso por la probabilidad calculada anteriormente.&lt;br /&gt;&lt;br /&gt;¿El resultado? Un modelo con un KS de 51% (es un excelente valor). Para comparar, realicé un modelo de predicción utilizando el Scorecard de Powerhouse sobre los mismos datos y encontré que el rendimiento fue levemente superior con un KS de 55% sobre los datos de prueba.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusiones&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;Los modelos de predicción no tienen que ser necesariamente supervisados. En este artículo vimos cómo es posible realizar un modelo no supervisado con una muy buena respuesta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-2475978080012577275?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/2475978080012577275/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=2475978080012577275' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/2475978080012577275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/2475978080012577275'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2008/03/modelos-de-prediccin-usando-modelos-de.html' title='Modelos de predicción usando modelos de segmentos'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1pmfjujlzUI/R-0aDjvUdwI/AAAAAAAAAKY/7iICF_VoqPs/s72-c/cl-tab.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-5367651315311874045</id><published>2008-03-27T11:48:00.000-07:00</published><updated>2008-03-27T13:12:42.997-07:00</updated><title type='text'>Segmentaciones con Powerhouse</title><content type='html'>Los modelos de clustering tienen varios usos, uno de los cuales es la segmentación de clientes.&lt;br /&gt;&lt;br /&gt;Se pueden segmentar los clientes en base a diferentes criterios y utilizando distintas variables. Powerhouse tiene la capacidad de encontrar los segmentos naturales que puedan existir en los datos en forma completamente automática. Sólo es necesario indicarle cuáles serán las variables con las que deberá trabajar y elegir algunos de sus modelos.&lt;br /&gt;&lt;br /&gt;Como ejemplo de segmentación elegí los datos provenientes de una línea de POS (cajas registradoras). Uno de los módulos de Powerhouse es capaz de leer cada ticket y en base a una serie de parámetros generar automáticamente los datos en el formato usado en cualquier proyecto de Data Mining. En este artículo mostraré unos pocos ejemplos de la información encontrada en la comparación de los clusters o segmentos.&lt;br /&gt;&lt;br /&gt;La representación gráfica de los segmentos que muestra Powerhouse es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/R-vwTTvUdtI/AAAAAAAAAKA/P1lt-Qkr0lA/s1600-h/cl-dm.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/R-vwTTvUdtI/AAAAAAAAAKA/P1lt-Qkr0lA/s400/cl-dm.JPG" alt="" id="BLOGGER_PHOTO_ID_5182500010726815442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Los puntos negros representan los clientes. Cuando dos clientes son similares, o sea, los valores que toman todas las variables que los identifican son parecidos, aparecen juntos. Cuanto más se parezcan más juntos estarán. En cambio si dos clientes son muy distintos, ya no serán vecinos sino que estarán situados en zonas separadas.&lt;br /&gt;&lt;br /&gt;Cuando la densidad de puntos es alta (o lo que es lo mismo, cuando en una zona se agrupen gran cantidad de clientes similares), el color de la zona es rojo. Cuando una zona tiene muy baja densidad, el color es azul. Los colores intermedios indican zonas con densidades intermedias.&lt;br /&gt;&lt;br /&gt;Powerhouse busca las zonas de más baja densidad para delimitar los distintos segmentos. En el gráfico de arriba estos límites están representados por líneas blancas.&lt;br /&gt;&lt;br /&gt;Basado en estos datos Powerhouse identificó 3 segmentos (este es el número de segmentos que mejor se ajusta, pero el usuario tiene la posibilidad de elegir un número distinto de segmentos).&lt;br /&gt;&lt;br /&gt;Ahora es momento de encontrar qué características tiene cada segmento. O sea, en qué se parecen y en qué se distinguen los segmentos encontrados.&lt;br /&gt;&lt;br /&gt;Una manera de hacerlo (y no es la única ofrecida por Powerhouse), es mediante la comparación de clusters que se genera automáticamente con un clic.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/R-v0wzvUduI/AAAAAAAAAKI/_Qj_Ex1_Gqw/s1600-h/cl-cc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_1pmfjujlzUI/R-v0wzvUduI/AAAAAAAAAKI/_Qj_Ex1_Gqw/s400/cl-cc.JPG" alt="" id="BLOGGER_PHOTO_ID_5182504915579467490" border="0" /&gt;&lt;/a&gt;La ventana de Estadísticas de los Clusters nos permite ver cómo se distribuyen los valores de cada una de las variables entre los distintos segmentos. En este caso vemos que el monto promedio gastado en cada ticket es distinto en cada segmento. La columna que dice Todos indica cuál es el promedio, el valor mínimo y el máximo de esta variable considerando todos los clientes, en este caso 114,81$. El resto de las columnas indica también los valores promedios, mínimo y máximo pero para cada segmento. Abajo aparecen un pequeño gráfico de la distribución de estas variables.&lt;br /&gt;&lt;br /&gt;Es posible hacer análisis similares para otras variables y encontrar el perfil de los clientes de cada segmento para luego tomar algún tipo de acción.&lt;br /&gt;&lt;br /&gt;En este proyecto se encontraron muchas diferencias interesantes, por ejemplo una de ellas es que el segmento que deja el márgen bruto más alto también es el que compra pocos productos de indumentaria pero el que más gasta en frutas y verduras.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-5367651315311874045?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/5367651315311874045/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=5367651315311874045' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/5367651315311874045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/5367651315311874045'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2008/03/segmentaciones-con-powerhouse.html' title='Segmentaciones con Powerhouse'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1pmfjujlzUI/R-vwTTvUdtI/AAAAAAAAAKA/P1lt-Qkr0lA/s72-c/cl-dm.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-6159595429641012895</id><published>2008-01-09T06:49:00.000-08:00</published><updated>2008-01-09T07:21:28.671-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Score'/><category scheme='http://www.blogger.com/atom/ns#' term='Modelos'/><title type='text'>¿Cómo medir el rendimiento de un modelo? (Parte II)</title><content type='html'>En el &lt;a href="http://powerhousedm.blogspot.com/2007/12/cmo-medir-el-rendimiento-de-un-modelo.html"&gt;artículo anterior &lt;/a&gt;vimos cómo nos puede ayudar una matriz de confusión en la tarea de evaluar un modelo de score. En el análisis que vimos como ejemplo, asumimos que las equivocaciones y los aciertos tenían el mismo peso tanto para los clientes &lt;strong&gt;Activos&lt;/strong&gt; como los &lt;strong&gt;No Activos&lt;/strong&gt;, pero esto no tiene que ser necesariamente así.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;En ciertos casos conviene ponderar los aciertos y errores según la categoría que se está prediciendo. Por ejemplo, equivocarse cuando se predice que un cliente no se irá a la competencia cuando realmente se va, podría tener más graves consecuencias que equivocarse en el caso contrario: se predice que se irá a la competencia pero se quedará. Para tratar estos casos de aciertos y errores ponderados simplemente se puede asignar un costo al error cometido. Por ejemplo, supongamos el siguiente caso:&lt;br /&gt;&lt;br /&gt;1. Predecir erróneamente que el cliente se queda (se predice &lt;strong&gt;Activo&lt;/strong&gt; pero el cliente es &lt;strong&gt;No Activo&lt;/strong&gt;), tiene un costo de &lt;strong&gt;5&lt;/strong&gt; unidades.&lt;br /&gt;2. Predecir erróneamente que el cliente se va (se predice &lt;strong&gt;No Activo&lt;/strong&gt; pero el cliente es &lt;strong&gt;Activo&lt;/strong&gt;), tiene un costo de &lt;strong&gt;1&lt;/strong&gt; unidad.&lt;br /&gt;&lt;br /&gt;Considerando la matriz de confusión del artículo anterior &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5153489519660830914" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_1pmfjujlzUI/R4Tfae0VEMI/AAAAAAAAAJg/b0umNdamdM0/s400/rm-mc.JPG" border="0" /&gt; El costo total de esta prueba sería:&lt;br /&gt;&lt;br /&gt;Costo total = 1.884 * 5 + 1.651 * 1 = 11.071&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Curva Lift&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Otra manera de evaluar un modelo es mediante una curva lift.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5153490065121677522" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/R4Tf6O0VENI/AAAAAAAAAJo/sYMdyat_88Y/s400/rm-cl.JPG" border="0" /&gt; &lt;p&gt;Para entender este gráfico comencemos con la curva roja que representa un modelo perfecto, o sea, aquel con un 100% de aciertos.&lt;br /&gt;&lt;br /&gt;Supongamos que tenemos un modelo perfecto que predice un score 100 para todos los clientes que son &lt;strong&gt;No Activos&lt;/strong&gt; y un score 0 para todos los &lt;strong&gt;Activos&lt;/strong&gt;. Aplicamos el modelo a los datos de prueba y luego ordenamos por el score, de mayor a menor. Tendremos una tabla similar a la siguiente:&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5153490361474420962" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_1pmfjujlzUI/R4TgLe0VEOI/AAAAAAAAAJw/h_8-puva7H8/s400/rm-tab.JPG" border="0" /&gt;La curva perfecta (curva roja) representa el porcentaje de clientes &lt;strong&gt;No Activos&lt;/strong&gt; que van apareciendo a medida que recorremos la tabla ordenada por el score del modelo Perfecto. Vemos que aproximadamente el 8% de los primeros clientes que aparecen (el porcentaje de clientes o casos aparece en el eje horizontal), son todos los clientes &lt;strong&gt;No Activos&lt;/strong&gt; que encontraremos en esta tabla, o sea el 100% (representado con un 1 en el eje vertical). Esto es lógico, ya que el modelo perfecto es capaz de separar perfectamente las dos clases a predecir.&lt;br /&gt;&lt;br /&gt;La curva perfecta continúa horizontalmente ya que no hay más clientes &lt;strong&gt;No Activos&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;La curva del modelo naïve (color azul)  se construye con una tabla similar a la anterior pero en donde el score es un número al azar. Una vez ordenada la tabla por este valor aleatorio, se necesitará recorrer toda la tabla para que aparezca el 100% de los clientes &lt;strong&gt;No Activos&lt;/strong&gt;. O sea, esta curva es una línea recta que comienza en 0 y termina 1 (el 100% de los clientes &lt;strong&gt;No Activos&lt;/strong&gt;). En cualquier punto el porcentaje de clientes &lt;strong&gt;No Activos&lt;/strong&gt; será exactamente el mismo que el porcentaje de clientes en ese punto. Por ejemplo, tomando el 40% de clientes habremos seleccionado el 40% de los clientes &lt;strong&gt;No Activos&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Si todavía no queda claro qué representa la curva del modelo naïve se puede pensar un ejemplo concreto. Supongamos que tenemos 1.000 clientes y 100 de ellos son &lt;strong&gt;No Activos&lt;/strong&gt;. Si no sabemos nada acerca de cada cliente, ¿cuántos clientes tendremos que tomar para estar seguros que seleccionamos los 100 &lt;strong&gt;No Activos&lt;/strong&gt;? La respuesta es 1.000, o sea el 100% de los clientes. Y si seleccionamos un 40% de los clientes al azar, ¿cuántos clientes &lt;strong&gt;No Activos&lt;/strong&gt; encontraremos? La respuesta es 40, o sea un 40% de los &lt;strong&gt;No Activos&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;La curva del modelo se encontrará entre estas dos curvas extremas (la curva del modelo perfecto y la curva del modelo naïve). En el gráfico de arriba es la curva verde y nos indica el porcentaje de clientes &lt;strong&gt;No Activos&lt;/strong&gt; que tendremos para cada grupo de clientes seleccionados en base al score del modelo. Por ejemplo, tomando un 20% de clientes (20% en el eje horizontal) obtendremos un 55% (0.55 en el eje vertical) de los clientes &lt;strong&gt;No Activos&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Cuanto más se parezcan la curva del modelo con la curva perfecta, mejor será el modelo.&lt;br /&gt;&lt;br /&gt;Otra manera de ver esta información es mediante una tabla que muestre los valores de la curva en puntos específicos, por ejemplo en cada decil (cada 10%).&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5153490640647295218" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_1pmfjujlzUI/R4Tgbu0VEPI/AAAAAAAAAJ4/zfH1mP5aBz8/s400/rm-tl.JPG" border="0" /&gt;&lt;br /&gt;El decil 1, o sea el primer 10% de los clientes ordenados por el score del modelo, contiene el 40% de los clientes &lt;strong&gt;No Activos&lt;/strong&gt;. El Lift que tiene el modelo en este punto se calcula como el cociente entre el porcentaje de clientes &lt;strong&gt;No Activos&lt;/strong&gt; encontrados por el modelo y el que encontraría el modelo naïve, o sea 40%/10% = 4 (el valor de lift mostrado es 3,95 porque los porcentajes mostrados están redondeados).&lt;br /&gt;&lt;br /&gt;Todos los ejemplos de estos dos artículos se basaron en un modelo de fuga de clientes o attrition, pero debe tenerse en cuenta que un modelo de score es simplemente un modelo de predicción que a cada predicción le asigna un score. Normalmente cada score tiene asociada una probabilidad de la clase a predecir. Por ejemplo, un score 76 podría significar una probabilidad del 58% de que el cliente se vaya a la competencia, de comprar un determinado producto, de aceptar una determinada oferta, de que el cliente no pague, etc.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-6159595429641012895?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/6159595429641012895/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=6159595429641012895' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/6159595429641012895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/6159595429641012895'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2008/01/cmo-medir-el-rendimiento-de-un-modelo.html' title='¿Cómo medir el rendimiento de un modelo? (Parte II)'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1pmfjujlzUI/R4Tfae0VEMI/AAAAAAAAAJg/b0umNdamdM0/s72-c/rm-mc.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-4450867854944303681</id><published>2007-12-24T07:11:00.000-08:00</published><updated>2007-12-24T07:25:14.047-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Score'/><category scheme='http://www.blogger.com/atom/ns#' term='Modelos'/><title type='text'>¿Cómo medir el rendimiento de un modelo? (Parte I)</title><content type='html'>Una vez que se construye un modelo de predicción se debe medir su rendimiento tanto sobre los datos con los que fue construido como sobre datos nunca vistos. Un buen modelo debería tener rendimientos similares con ambos datos. Si la diferencia es muy grande y a favor de los datos de entrenamiento, es probable que el modelo haya copiado parte del ruido. Para conocer más acerca de estos temas se puede consultar los artículos “¿Qué es el ruido” y “Datos de prueba contaminados”.&lt;br /&gt;&lt;br /&gt;En este artículo trataré sobre cómo medir el rendimiento de un modelo de score, en particular para variables dependientes de dos estados, o categorías, por ejemplo, un modelo de score para estimar la probabilidad de fuga de clientes (attrition).&lt;br /&gt;&lt;br /&gt;En un modelo de attrition que realicé el año pasado los resultados sobre los datos de prueba se resumen con la siguiente tabla:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5147557630824302514" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/R2_MZG4iR7I/AAAAAAAAAJQ/UY7eVJI_IYQ/s400/rm-mc.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Esta tabla, llamada matriz de confusión, es una de las herramientas que se pueden usar para medir el rendimiento de un modelo que predice dos posibles resultados. En este caso los estados en que se encuentran los clientes son:&lt;br /&gt;&lt;br /&gt;1. Activos, son aquellos que siguen operando con la empresa&lt;br /&gt;2. No Activos, son los que dejaron de operar con la empresa&lt;br /&gt;&lt;br /&gt;Los datos que se usaron para probar el modelo contenían 36.292 clientes en total, de los cuales había 33.417 clientes Activos y 2.875 clientes No Activos, tal como se puede ver en la matriz de confusión. O sea, en esta tabla, las filas representan la variable dependiente o como figura a la izquierda, la Categoría Actual.&lt;br /&gt;&lt;br /&gt;La distribución de los estados de la variable dependiente es:&lt;br /&gt;&lt;br /&gt;Porcentaje de Activos = 33.417 / 36.292 = 92,08%&lt;br /&gt;Porcentaje de No Activos = 2.875 / 36.292 = 7,92%&lt;br /&gt;&lt;br /&gt;Una vez que se aplicó el modelo sobre estos datos, se obtuvieron las predicciones correspondientes. Se predijeron 33.650 clientes como Activos y 2.642 como No Activos.&lt;br /&gt;&lt;br /&gt;Con esta tabla podríamos calcular cuántos aciertos tuvo el modelo. Para esto sólo hay que sumar los casos en los que el modelo acertó. O sea, se predijo No Activo y el cliente es No Activo, y se predijo Activo y el cliente es Activo.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5147558060321032130" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/R2_MyG4iR8I/AAAAAAAAAJY/bOWpHIu0YW4/s400/rm-mc2.JPG" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;O sea el modelo acertó&lt;br /&gt;&lt;br /&gt;Aciertos: 991 + 31.766 = 32.757 veces&lt;br /&gt;&lt;br /&gt;El porcentaje de aciertos se calcula como la cantidad de aciertos dividido la cantidad total de casos&lt;br /&gt;&lt;br /&gt;Porcentaje de aciertos = 32.757 / 36.292 = 90,26%&lt;br /&gt;&lt;br /&gt;La pregunta es, ¿es útil esta medición? Antes de contestar esta pregunta vamos a calcular cuánto sería el porcentaje de aciertos de un modelo que sólo responda al azar pero respetando la distribución de la variable dependiente. O sea, un modelo que responda Activo el 92,08% de las veces y No Activo el 7,92% restante de las veces.&lt;br /&gt;&lt;br /&gt;Haciendo un poco de cálculos encontramos que este modelo tendría un porcentaje de aciertos de&lt;br /&gt;&lt;br /&gt;Aciertos = 7,92% * 2.875 + 92,08% * 33.417 = 30.998&lt;br /&gt;&lt;br /&gt;% Aciertos = 30.998 / 36.292 = 85.41%&lt;br /&gt;&lt;br /&gt;En principio parece que el primer modelo (el que tiene un acierto de 90.26%) no es mucho mejor que un modelo al azar. Es más, hay casos en que el porcentaje de aciertos de un modelo al azar supera al de un modelo hecho con alguna herramienta de Data Mining. Pero entonces ¿de qué sirve trabajar tanto en un modelo si hacer predicciones al azar podría tener un mayor porcentaje de aciertos?&lt;br /&gt;&lt;br /&gt;Una de las diferencias está en las predicciones de la clase o categoría menos representada. O sea, en nuestro ejemplo, en las predicciones de los clientes No Activos. Si comparamos los aciertos de ambos modelos, veremos una gran diferencia:&lt;br /&gt;&lt;br /&gt;%Aciertos = Aciertos de No Activos / Total de No Activos predichos&lt;br /&gt;&lt;br /&gt;%Aciertos modelo DM = 991 / 2.642 = 37.41%&lt;br /&gt;&lt;br /&gt;En el caso de predicciones al azar, se predijeron 7,92% del total de casos, o sea 2.875 = 7,92% * 36.292&lt;br /&gt;&lt;br /&gt;%Aciertos modelo al azar = 227 / 2.875 = 7.92%&lt;br /&gt;&lt;br /&gt;Ahora se puede apreciar el valor de un modelo realizado con técnicas de Data Mining, ya que es capaz de predecir mucho mejor los clientes No Activos.&lt;br /&gt;&lt;br /&gt;En el siguiente artículo seguiré con este tema.&lt;br /&gt;&lt;br /&gt;Durante este año que viene me gustaría recibir algunos comentarios acerca de los artículos o los temas tratados. Al no tener feedback no tengo claro si los temas son interesantes o de la profundidad esperada.&lt;br /&gt;&lt;br /&gt;Les deseo a todos los lectores del blog que tengan unas Felices Fiestas y un excelente 2008.&lt;br /&gt;&lt;br /&gt;Hasta pronto,&lt;br /&gt;&lt;br /&gt;Marcelo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-4450867854944303681?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/4450867854944303681/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=4450867854944303681' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/4450867854944303681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/4450867854944303681'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/12/cmo-medir-el-rendimiento-de-un-modelo.html' title='¿Cómo medir el rendimiento de un modelo? (Parte I)'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1pmfjujlzUI/R2_MZG4iR7I/AAAAAAAAAJQ/UY7eVJI_IYQ/s72-c/rm-mc.JPG' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-3309257014324454495</id><published>2007-12-13T05:13:00.000-08:00</published><updated>2008-04-15T04:58:02.554-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><title type='text'>¿Qué es Data Mining?</title><content type='html'>El libro “Data Mining Techniques” de M. Berry y G. Linoff  comienza con un pequeño ejemplo de cómo el dueño de un local en donde uno de los autores compra vino, conoce sus gustos y es capaz de hacerle buenas recomendaciones.&lt;br /&gt;&lt;br /&gt;En este artículo expandiré este ejemplo porque creo que es una buena analogía de lo que busca encontrar cualquier proyecto de Minería de Datos o Data Mining.&lt;br /&gt;&lt;br /&gt;Imaginemos un pequeño local de ventas de vinos y especialidades tales como quesos, paté y embutidos, atendido por su dueño, Pedro, desde hace 5 años.&lt;br /&gt;&lt;br /&gt;Cada vez que recibe un cliente, Pedro lo conoce lo suficientemente bien como hacerle varias recomendaciones. A Carlos le ofrece un buen Cabernet Sauvignon de una nueva bodega que acaba de recibir y un Provolone Piccante italiano. En cambio a Raúl, que prefiere los vinos blancos, le ofrece un Chardonnay acompañado de un Parmesano, porque otros clientes les han comentado lo bien que se lleva este vino con este queso.&lt;br /&gt;&lt;br /&gt;Resumiendo, basado en su experiencia de atender a sus clientes por 5 años, Pedro es capaz de conocer las preferencias de sus clientes tan bien que podría &lt;strong&gt;clasificarlos&lt;/strong&gt; en distintos &lt;strong&gt;segmentos&lt;/strong&gt;. También es capaz de sugerir recomendaciones (&lt;strong&gt;predecir&lt;/strong&gt; que producto llevar) a cada cliente y ofrecer nuevos productos en base a lo que otros han combinado con buenos resultados (&lt;strong&gt;cross selling&lt;/strong&gt;)&lt;br /&gt;&lt;br /&gt;Conocer a los clientes lo mejor posible ha sido la estrategia de Pedro para dejar a sus clientes conformes y a la vez incrementar sus ventas. Esto establece una situación ganar-ganar. Ganan los clientes visitando un negocio en donde reciben lo que ellos quieren y gana Pedro manteniendo a sus clientes e incrementando sus ventas. Pero esto es posible porque la cantidad de clientes de Pedro es lo suficientemente pequeña como para conocerlos personalmente.&lt;br /&gt;&lt;br /&gt;Muchas empresas que cuentan con miles de clientes no tienen esta posibilidad, aunque no tienen por qué renunciar al uso de una estrategia similar. La diferencia está en el tipo de herramienta usada para conocer las preferencias e inferir recomendaciones. En el caso de Pedro, su herramienta es su cerebro, en el caso de una gran empresa su herramienta deberá ser una computadora.&lt;br /&gt;&lt;br /&gt;Pedro guarda la relación de sus clientes con su negocio en su memoria y usa su capacidad de razonar en base a su lógica inductiva y deductiva, para hacer sus recomendaciones.&lt;br /&gt;&lt;br /&gt;Una empresa con miles de clientes deberá almacenar su relación con los mismos en una base de datos y deberá usar programas que tengan capacidades inductivas (para encontrar reglas o patrones de comportamiento) y deductivas (para usar estas reglas a fin de hacer recomendaciones).&lt;br /&gt;&lt;br /&gt;Esta tecnología que utiliza datos almacenados en sus bases y programas que buscan patrones de comportamientos lleva el nombre de Minería de Datos o Data Mining.&lt;br /&gt;&lt;br /&gt;Hay personas a las que cuesta seguir en su línea de razonamiento e incluso en ciertas ocasiones no quedan claras las razones de por qué se toman ciertas decisiones. Hay personas que son capaces de sacar conclusiones rápidamente y otras que les cuesta más. Con los programas de Data Mining pasa lo mismo. Hay programas complicados de usar y otros que son muy simples. Hay algoritmos que dejan claras las razones de sus recomendaciones y otros que son como cajas negras, hay programas que llegan a un resultado en pocos segundos y otros que tardan horas.&lt;br /&gt;&lt;br /&gt;Todas las herramientas de Data Mining tienen sus pros y sus contras, pero lo importante es no perder de vista el objetivo principal, así como la tarea principal de Pedro no es analizar a sus clientes, sino venderles lo máximo posible, Data Mining no se trata de analizar datos, se trata de optimizar los negocios, ya sea vendiendo más, ya sea gastando menos.&lt;br /&gt;&lt;br /&gt;Una herramienta de Data Mining ideal debería pasar desapercibida. Uno debería gastar el menor tiempo posible preparando datos, y concentrarse en los resultados. Ver el problema desde un punto de vista de negocios y no desde la perspectiva estadística.&lt;br /&gt;&lt;br /&gt;La siguiente demostración intenta mostrar que hacer Data Mining no tiene por qué ser complicado.... si se cuenta con la herramienta adecuada.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a style="color: rgb(204, 0, 0);" href="http://mrfyra.googlepages.com/Cars.html"&gt;&lt;/a&gt;&lt;a href="http://www.dataxplore.com.ar/Cars.html"&gt;Demostración online de Data Mining con Powerhouse&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-3309257014324454495?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/3309257014324454495/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=3309257014324454495' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/3309257014324454495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/3309257014324454495'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/12/qu-es-data-mining.html' title='¿Qué es Data Mining?'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-6703204817666274404</id><published>2007-11-29T05:38:00.000-08:00</published><updated>2007-11-29T10:29:16.395-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Preparación de datos'/><title type='text'>Más sobre preparación de datos</title><content type='html'>El último propósito de un proyecto de Data Mining o Minería de Datos es obtener el conocimiento necesario acerca de alguna situación a fin de controlarla o al menos predecir qué sucederá frente a determinadas condiciones. Esto es muy similar a lo que hacemos cada vez que nos enfrentamos a situaciones de la vida diaria. No sólo obtenemos la mayor información posible por medio de nuestra experiencia, sino que la vamos almacenando en nuestra memoria y tratamos de encontrar cómo se relacionan diferentes hechos u objetos. Una vez que conocemos lo suficiente estamos en posición de predecir qué sucederá, y si además somos capaces de modificar las condiciones actuales, podremos actuar para obtener lo que deseamos.&lt;br /&gt;&lt;br /&gt;Cuando elaboramos un proyecto de Data Mining, los datos que usamos están en la memoria de una computadora y el motor analítico es un programa o algoritmo capaz de encontrar esas relaciones. Una vez encontradas las mismas, nos permitirán entender los datos que asumimos fueron generados por algún mecanismo y provenientes de algún sistema o situación de interés, por ejemplo la interacción de los clientes con una empresa.&lt;br /&gt;&lt;br /&gt;Si la situación de interés fuera simple, quizás no haría falta recurrir a una computadora, pero si se torna compleja o demasiado grande para manejarla en nuestro cerebro, necesitamos alguna herramienta que nos asista, y qué mejor que una computadora. El único requisito es contar con datos que contengan la información necesaria para nuestro propósito.&lt;br /&gt;&lt;br /&gt;En Data Mining los datos generalmente están en forma de tabla, en donde cada fila representa el objeto de interés, por ejemplo, un cliente, un producto o un paciente, y cada columna contiene información acerca de algún atributo del objeto. Por ejemplo en el caso de un paciente podría ser la edad, el peso, la presión arterial, etc. Muchas veces los datos vienen en forma transaccional y se necesita un trabajo de ensamblado previo a fin de obtener la tabla mencionada.&lt;br /&gt;&lt;br /&gt;Tanto algoritmos de Data Mining como seres humanos recurrimos a un método común para hacer la cantidad de datos manejable: usamos modelos.&lt;br /&gt;&lt;br /&gt;Un buen modelo debería capturar las partes más importantes de la situación y dejar de lado los detalles que no hacen al comportamiento. Si lo logra, entonces parte del trabajo ya está hecho. Sólo resta interpretar este modelo (entender las relaciones explícitas en el modelo) y ponerlo a trabajar, ya sea para predecir o para controlar.&lt;br /&gt;Así como existen distintas clases de modelos, también existen diferentes tipos de herramientas para crearlos. Cuando los datos están preparados, es posible utilizar modelos más simples y aún obtener excelentes resultados. &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Preparación de variables&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Además de decidir qué hacer con los nulos, con los outliers y con datos no balanceados, la preparación de datos implica modificar la distribución de variables numéricas, transformarlas en categóricas y transformar variables categóricas en numéricas si es necesario.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tratamiento de nulos&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;El tratamiento de los nulos está tratado en otro artículo, &lt;a href="http://powerhousedm.blogspot.com/2007/10/qu-hacer-con-los-nulls.html"&gt;"¿Qué hacer con los Nulos'"&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Qué hacer con los outliers&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Un outlier es un valor muy alejado de la mayoría de los valores que toma una variable. ¿Es un error? Quizás si, quizás no. Si es posible asegurar que se trata de un error, podría corregirse o en el último de los casos ser tratado como un nulo. Caso contrario habrá que hacer algo con estos valores para que no creen problemas con la herramienta de modelado.&lt;br /&gt;&lt;br /&gt;Un método que podría funcionar es acercar los outliers al resto de los valores lo suficiente como para que no traigan problemas en la etapa de modelado, pero no tanto como para que dejen de ser casos extremos. Existe una función que puede mapear una serie de valores en forma lineal en su parte central y logarítmica en sus extremos. Esta es la función logística&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5138258998025627010" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_1pmfjujlzUI/R07DVcVFpYI/AAAAAAAAAIQ/ArWiYx9sagA/s400/dp-log.JPG" border="0" /&gt;En donde Vi es el valor a transformar y Vn es el transformado. Los dos gráficos siguientes muestran el efecto de usar la función logística sobre una serie de valores que contienen dos outliers. Los valores originales están en el gráfico de la izquierda y los transformados a la derecha.&lt;/div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5138260763257185682" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_1pmfjujlzUI/R07E8MVFpZI/AAAAAAAAAIY/ifi_k7TIevc/s400/dp-ol.JPG" border="0" /&gt;&lt;br /&gt;&lt;p&gt;En el gráfico de la derecha se puede notar que los outliers, tanto el valor máximo como el mínimo, se acercaron al resto de los datos. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Balanceo de datos&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Más frecuentemente de lo que uno quisiera, la variable a predecir tiene una distribución lo suficientemente desequilibrada como para causarle problemas a la gran mayoría de los algoritmos que generan un modelo de predicción. El caso típico es el siguiente:&lt;br /&gt;Una empresa desea llevar a cabo una campaña de marketing uno a uno acerca de un nuevo producto, pero como cuenta con un presupuesto fijo desea enviar el folleto solamente a aquellos clientes que mayor probabilidad de comprar el producto tengan. Para este fin selecciona una muestra de un pequeño porcentaje de clientes y les envía el folleto. De esta manera obtendrá una base de datos con información sobre sus clientes más una variable con una indicación sobre si el cliente compró o no el producto. Esta será la variable a predecir. &lt;/p&gt;&lt;p&gt;Una vez armado el modelo que estime la probabilidad de compra (podría ser un modelo de score), sólo necesitará aplicarlo sobre el resto de los clientes (aquellos que no fueron contactados en la primer campaña usando la muestra de clientes) y luego seleccionar aquellos con mayor probabilidad.&lt;/p&gt;&lt;p&gt;El problema que aparece en este proyecto es que es normal que los clientes pertenecientes a la muestra que responden afirmativamente durante la campaña sean muy pocos (quizás menos de un 5% o 10%). Entonces la variable a predecir contendrá, por ejemplo, 95% de respuestas negativas y 5% de positivas.&lt;/p&gt;&lt;p&gt;Esta clase de distribución tan desequilibrada hace que muchas herramientas generen un modelo cuya respuesta será siempre &lt;strong&gt;No Compra&lt;/strong&gt; para todos los clientes. La razón es que prediciendo la clase más frecuente (No Compra), el modelo obtiene un alto grado de aciertos. En este caso, obtiene ¡un 95% de aciertos!&lt;/p&gt;&lt;p&gt;¿Qué hacer entonces para solucionar este tema? La práctica común es balancear los datos. Esto significa que se toman todos los clientes que respondieron afirmativamente y luego una cantidad igual y al azar de clientes que respondieron negativamente. De esta manera se obtiene una muestra con una distribución de un 50% de Compra y un 50% de No Compra. Cuando la cantidad de clientes con respuesta positiva es demasiado pequeña, se acostumbra a probar con varias distribuciones para ver cuál es la adecuada (por ejemplo, 40%/60% y 30%/70%).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Si el software usado es Powerhouse, no hace falta balancear los datos. Los artículos &lt;a href="http://powerhousedm.blogspot.com/2007/10/es-necesario-balancear-los-datos.html"&gt;¿Es necesario balancear los datos?&lt;/a&gt; y &lt;a href="http://powerhousedm.blogspot.com/2007/11/un-ejemplo-con-datos-no-balanceados.html"&gt;Un ejemplo con datos no balanceados &lt;/a&gt;dan más detalles y ejemplos sobre este tema.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Transformación de variables numéricas&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Existen dos tipos de transformaciones que pueden aplicarse a las variables numéricas: cambiar su distribución y convertir a categórica.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Cambio de la distribución&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Hay veces en que la distribución de los valores de una variable está lejos de ser normal, por ejemplo tiene una larga cola como es el caso de una variable que contenga el ingreso o sueldo de las personas. La mayoría de las personas tienen un sueldo que podría ir desde digamos 500$ hasta 5.000$. Pero existen personas cuyos ingresos son mayores, llegando incluso a valores muy altos, como por ejemplo 50.000$. Si se desea un modelo que pueda predecir la probabilidad de que un cliente compre un determinado artículo, esta variable podría ser útil. Pero su poder de discriminación se verá afectado por su distribución. La diferencia entre dos clientes con ingresos de 1.000$ y 2.000$ parece ser lo suficientemente importante como para que afecte la probabilidad de comprar un producto, pero la herramienta de modelado sólo verá una diferencia del 2% (aproximadamente 1000/50.000) en estos dos valores.&lt;br /&gt;&lt;br /&gt;Si en vez de usar la variable tal como está, se aplica la función logaritmo a cada valor, la diferencia entre estos dos valores transformados pasa a ser 15%, mas de 7 veces que el caso anterior. Cualquier herramienta que trate con esta variable transformada tendrá más posibilidades de encontrar una relación con el hecho de que un cliente haya comprado o no un artículo. La función logaritmo expande los valores bajos de una variable y comprime los altos, dejando más al descubierto la relación que podría existir con otra variable. En el gráfico de la izquierda se muestra una relación con variables sin transformar y en el de la derecha la misma relación pero con las variables transformadas.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5138264066087036322" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_1pmfjujlzUI/R07H8cVFpaI/AAAAAAAAAIg/FOICa5A5hBs/s400/dp-dist.JPG" border="0" /&gt;&lt;br /&gt;&lt;p&gt;Hay que considerar que no siempre es posible aplicar un logaritmo ya que la función sólo está definida para valores mayores que cero, y tampoco es siempre la mejor transformación, pero siempre es posible encontrar otras funciones similares (la función logística por ejemplo), o modificar la distribución de la variable con métodos numéricos.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Transformación en categóricas&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Otro tipo de transformación posible es convertir la variable numérica en categórica. Se debe determinar cuáles serán los puntos de corte para que a cada rango resultante se le asigne una categoría. Existen dos métodos para encontrar los puntos de corte: supervisado y no supervisado.&lt;br /&gt;&lt;br /&gt;Uno de los mejores métodos no supervisados es aquel que asigna a cada categoría una misma cantidad de valores. Para lograrlo se ordena la variable de menor a mayor y luego se encuentran los puntos de corte de acuerdo a la cantidad de categorías que se desean. Por ejemplo, si la variable tiene 1000 valores y se desean 10 categorías, el primer punto de corte se lo ubica en la posición 100 (1000/10) de la variable ordenada. El segundo en la 200, el tercero en la 300, y así sucesivamente.&lt;br /&gt;&lt;br /&gt;Por ejemplo, la tabla siguiente asigna 8 categorías a una variable que va desde -10 hasta 100&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5138267295902442930" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_1pmfjujlzUI/R07K4cVFpbI/AAAAAAAAAIo/Fd6VC5pqkVo/s400/dp-bin.JPG" border="0" /&gt;Estos rangos agrupan la misma cantidad de valores en cada categoría.&lt;br /&gt;&lt;br /&gt;Los métodos supervisados necesitan de la variable dependiente para encontrar sus puntos de corte. Uno de los más conocidos es el llamado LIL por sus siglas en inglés Least Information Loss ("Menor Pérdida de Información") y se basa en Teoría de la Información.&lt;br /&gt;&lt;br /&gt;Cada vez que se transforma una variable numérica en categórica, se pierde información, ya que valores que antes eran distinguibles por ser diferentes, ahora serán los mismos (por ejemplo, con la tabla anterior los números 13.5, 17 y 28 pasan a ser exactamente iguales, ya que a los tres se les asigna la categoría Cat4). El método LIL trata de encontrar cuáles son los puntos de corte para que la información perdida sea mínima posible. Powerhouse tiene disponible varios métodos de binning y se usa por default el método LIL.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Transformación de variables categóricas&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Los datos que integran cada fila de una tabla tienen una estructura. Los valores de cada variable están más o menos relacionados y es esta relación la que debe preservarse cada vez que se aplica algún tipo de transformación en las variables. Cuando es necesario asignar un valor numérico a variables del tipo categórico, es una práctica común hacerlo en forma arbitraria pero sin advertir que se está corriendo el riesgo de destruir la estructura interna de los datos.&lt;br /&gt;&lt;br /&gt;La altura y el peso son ejemplos de variables que mantienen una relación entre si. Supongamos que el peso viene dado en kilogramos como una variable numérica y la altura como una variable categórica tal como se muestra en la siguiente tabla&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5138268313809692098" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/R07LzsVFpcI/AAAAAAAAAIw/y9qxHi0Hmvo/s400/dp-tab1.JPG" border="0" /&gt;Una manera de asignar valores numéricos a la variable altura sin tratar de preservar la relación entre estas dos variables es por orden alfabético:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5138269069723936210" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/R07MfsVFpdI/AAAAAAAAAI4/nKn8Y26dm0Y/s400/dp-tab2.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;El gráfico de la izquierda muestra cómo queda la relación entre estas dos variables usando la asignación numérica arbitraria dada en la tabla de arriba y el gráfico de la derecha muestra la misma relación pero usando un método de asignación numérica que no destruya la estructura.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5138271157078042082" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_1pmfjujlzUI/R07OZMVFpeI/AAAAAAAAAJA/o68s_RG5wYU/s400/dp-cat.JPG" border="0" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;La relación entre estas dos variables es más simple en el gráfico de la derecha (que podría considerarse lineal) que en el de la izquierda (que es definitivamente no lineal). En este caso, para obtener la tabla de asignaciones numéricas que preservaran la relación simplemente se obtuvo el promedio de pesos para cada categoría de la variable altura y luego se normalizó de 0 a 1. El resultado es el siguiente&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5138271835682874866" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/R07PAsVFpfI/AAAAAAAAAJI/KngXfQyAttQ/s400/dp-tab3.JPG" border="0" /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Conclusiones&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Estos son algunos de los métodos recomendados para transformar datos. Esta es una tarea que puede llevar mucho tiempo, de hecho se estima que podría consumir el 70% del tiempo total de un proyecto de Data Mining, pero las ventajas son enormes.&lt;br /&gt;&lt;br /&gt;Una vez que los datos han sido preparados las relaciones que contienen quedan mejor expuestas, facilitando de esta manera el trabajo que tiene que hacer la herramienta que vaya a crear el modelo.&lt;br /&gt;&lt;br /&gt;Esto a su vez tiene una consecuencia muy importante: como las relaciones quedaron al descubierto, el riesgo de sobre-entrenamiento se minimiza. Además, herramientas tan simples como una regresión lineal podrían generar un modelo excelente.&lt;/p&gt;&lt;p&gt;Powerhouse utiliza parte de esta metodología para preparar los datos automáticamente y evitar tener que hacerlo manualmente.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-6703204817666274404?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/6703204817666274404/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=6703204817666274404' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/6703204817666274404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/6703204817666274404'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/11/ms-sobre-preparacin-de-datos.html' title='Más sobre preparación de datos'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1pmfjujlzUI/R07DVcVFpYI/AAAAAAAAAIQ/ArWiYx9sagA/s72-c/dp-log.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-4955421473478885820</id><published>2007-11-26T14:33:00.000-08:00</published><updated>2007-11-29T10:34:04.024-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ensamblado de datos'/><title type='text'>Cómo ensamblar datos transaccionales</title><content type='html'>La semana pasada recibí una consulta de un analista de una empresa de telefonía celular que está llevando adelante un proyecto para predecir las líneas que deberían participar en una campaña de marketing. &lt;p class="MsoNormal"&gt;Éste, como muchos proyectos, utiliza una base histórica transaccional que debe ser ensamblada en un formato apropiado para que cualquier herramienta de Data Mining pueda trabajar con ella. La consulta fue acerca de cómo ensamblar los datos.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Es muy difícil dar una respuesta simple y completa, ya que depende de cada caso en particular, pero existen varias sugerencias que podrían ayudar:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;1. Definir cuál será el objeto de estudio&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Es imprescindible que tengamos en claro cuál será el objeto a focalizar. Por ejemplo, supongamos que estamos analizando datos provenientes de una línea de POS (Point Of Sale) de supermercados. ¿Qué deseamos analizar? ¿Productos? ¿Tickets? ¿Clientes?&lt;/p&gt;&lt;p class="MsoNormal"&gt;La tabla final deberá contener una fila por cada objeto. Por ejemplo, si el objeto es el cliente entonces cada fila se referirá a un cliente y no existirán dos filas que se refieran al mismo cliente.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;2. Definir la variable a predecir&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Tener claro el objeto de estudio no implica que se conozca la variable a predecir (OP). De hecho, en algunos casos, definir la OP es un tema crucial para el éxito del proyecto. Por ejemplo, si el proyecto es acerca de clientes (el objeto de estudio &lt;i&gt;es&lt;/i&gt; el cliente) y se desea obtener un modelo de score para predecir la probabilidad de cesación de pagos, primero habrá que definir qué significa cesación de pagos. ¿Un cliente que no paga sus cuotas por un período de 2 meses debe considerarse moroso? ¿O deben pasar 3 meses? &lt;/p&gt;&lt;p class="MsoNormal"&gt;En el caso de predecir riesgo de fuga de clientes (attrition) es similar. ¿Cuántos meses de inactividad debo tomar para considerar que perdí el cliente? ¿Qué significa inactividad?&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;3. Fijar tiempo histórico, presente y futuro&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Cuando se trabaja con datos transaccionales existe una línea de tiempo que hay que considerar. Cuando se arma un modelo, uno conoce el pasado, el presente y el futuro. Cuando el modelo se pone en producción, sólo se conocerá el pasado y el presente.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Definimos el tiempo presente como cualquier punto en la línea de tiempo, aunque dependiendo de dónde lo ubicamos, existirá o no el tiempo pasado o futuro.&lt;/p&gt;&lt;p class="MsoNormal"&gt;El tiempo pasado es el período que está antes (temporalmente) que el presente. Normalmente un modelo tiene en cuenta sólo unos meses de tiempo pasado. Por ejemplo, se podría definir como tiempo pasado los 12 meses anteriores al tiempo presente.&lt;/p&gt;&lt;p class="MsoNormal"&gt;En muchos casos es útil definir varios presentes (y por lo tanto, varios tiempos pasados). Un ejemplo aclarará este tema.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Supongamos que deseamos armar un modelo de riesgo crediticio y la base de datos contiene información acerca de cada transacción que realizó cada cliente durante los últimos 24 meses. El siguiente gráfico representa algunos clientes durante estos 24 meses de historia. Como asumimos que la base de datos histórica es nueva (recién armada), ponemos la marca HOY a las transacciones más recientes, y por supuesto no tenemos datos del futuro.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/R0tKLcVFpWI/AAAAAAAAAIA/c5supx7yvK4/s1600-h/lt1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5137281360389842274" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/R0tKLcVFpWI/AAAAAAAAAIA/c5supx7yvK4/s400/lt1.JPG" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Las flechas azules indican clientes que nunca entraron en mora. Las rojas indican clientes morosos. Existirán clientes que comenzaron su crédito hace 24 meses y aún continúan sin ser morosos (flechas azules que van desde el comienzo hasta HOY). Otros clientes que tomaron sus créditos hace menos de 24 meses y aún continúan sin ser morosos (azules que no empiezan desde el comienzo pero llegan hasta HOY). Finalmente clientes que alguna vez se convirtieron en morosos. Empiezan en cualquier momento (como los azules), pero normalmente no llegan hasta HOY porque dejaron de pagar sus cuotas en la fecha a la que llega la flecha roja. O sea, la flecha roja indica el último mes en que el cliente pagó su cuota.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para el caso de los clientes morosos el tiempo presente será el punto en que es declarado moroso, o sea donde llega la flecha roja. Como cada cliente moroso deja de pagar en cualquier momento dentro de los 24 meses de historia, entonces tendremos distintos tiempos presentes para estos clientes.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Con respecto a los clientes que nunca entraron en mora, si bien por simplicidad se podría tomar siempre los datos desde la última fecha (HOY), es conveniente que se tomen puntos al azar en toda la historia para obtener mayor representatividad.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/R0tKhMVFpXI/AAAAAAAAAII/ZS2OvGiOc6M/s1600-h/lt2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5137281734051997042" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://3.bp.blogspot.com/_1pmfjujlzUI/R0tKhMVFpXI/AAAAAAAAAII/ZS2OvGiOc6M/s400/lt2.JPG" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;La primera flecha roja no parece contener tiempo pasado suficiente, así que este cliente podría dejarse de lado.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Las flechas azules, representando clientes vigentes, tienen sus tiempos presentes tomados al azar.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;4. Agregar variables acerca de atributos del objeto de estudio&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Este tipo de variables se refieren a diferentes atributos que el objeto de estudio tenía en el tiempo histórico. En el caso de clientes se podrían tomar variables demográficas, ratios (por ejemplo, valor de la cuota con respecto al sueldo), etc.. En caso de productos las variables podrían ser diferentes características, clase de producto, precios relativos, etc.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-weight: bold;"&gt;5. Agregar variables de comportamiento&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Estas variables deben ser calculadas para el tiempo pasado. Normalmente se usan promedios, tendencias, variabilidad, máximos, mínimos, etc. Muchas veces es conveniente calcular distintas variables considerando diferentes períodos. Por ejemplo, si el tiempo histórico es de 12 meses, se podrían generar variables promedio de 3, 6 y 12 meses. &lt;/p&gt;&lt;p class="MsoNormal"&gt;Finalmente, existen dos puntos importantes a considerar:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div class="MsoNormal"&gt;Verificar que la variable OP (la variable dependiente) se refiera al tiempo futuro y no se solape con el pasado.&lt;/div&gt;&lt;/li&gt;&lt;li class="MsoNormal"&gt;Verificar que las variables IP (variables independientes) no utilicen información que no estará disponible cuando el modelo se ponga en producción&lt;/li&gt;&lt;/ol&gt;&lt;p class="MsoNormal"&gt;La tabla final contendrá tantas filas como objetos de análisis existen y tantas columnas como variables del objeto.  Ya que normalmente la cantidad de variables que contendrá la tabla es muy grande (normalmente más de 100), habrá que seleccionar aquellas con mayor información acerca de la OP antes de hacer el modelo.&lt;/p&gt;&lt;p class="MsoNormal"&gt;En caso de usar Powerhouse, la selección de variables puede dar una pista importante si se violaron alguno de los dos puntos anteriores. ¿Cómo darse cuenta? Simple, si aparece una primera variable con enorme cantidad de información acerca de la OP (por ejemplo, un 70%) es probable que esta variable esté usando información que no estará disponible cuando el modelo esté en producción o que el período usado para calcular la OP se solape con el pasado.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-4955421473478885820?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/4955421473478885820/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=4955421473478885820' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/4955421473478885820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/4955421473478885820'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/11/cmo-ensamblar-datos-transaccionales.html' title='Cómo ensamblar datos transaccionales'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1pmfjujlzUI/R0tKLcVFpWI/AAAAAAAAAIA/c5supx7yvK4/s72-c/lt1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-5596330988791248048</id><published>2007-11-14T05:20:00.000-08:00</published><updated>2007-11-29T10:52:02.982-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Datos representativos'/><title type='text'>¿Cuántos datos necesito para obtener un buen modelo?</title><content type='html'>Esta es una pregunta que cualquier que haya trabajado en Data Mining se ha hecho alguna vez y la respuesta es las misma en todos los casos: depende de la naturaleza de los datos. &lt;p class="MsoNormal"&gt;A fin de entender por qué la cantidad de datos necesaria para obtener un buen modelo depende de los datos analizaremos detalladamente qué representa un modelo de predicción, aunque la misma idea es válida para un modelo de explicación (clustering).&lt;/p&gt;&lt;p class="MsoNormal"&gt;Supongamos que queremos analizar diferentes características de automóviles. La industria automotriz puede ser considerada como un sistema que va generando distintas marcas y modelos. Una vez que elegimos qué atributos comparar, podremos ir armando una tabla de datos con una fila por vehículo y una variable por atributo.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Una manera de analizar estos datos es a través de lo que se llama un &lt;i&gt;espacio de estados&lt;/i&gt;. Comencemos con un ejemplo simple. Supongamos que sólo decidimos medir dos atributos: la cilindrada y la potencia. Si dibujamos un espacio de dos dimensiones (un plano) y a cada dimensión le asignamos una variable, obtenemos el espacio de estados. La combinación de cada par de valores representada por un punto en el plano es el estado para ese automóvil&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/Rzr2sFUfPvI/AAAAAAAAAHY/TkCLbKlc1ag/s1600-h/manifold.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5132685962544889586" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/Rzr2sFUfPvI/AAAAAAAAAHY/TkCLbKlc1ag/s400/manifold.JPG" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;La distribución de los puntos en el plano adquiere una determinada forma dada por el tipo de relación entre las variables. Podríamos suponer que la verdadera distribución es una línea en el plano que puede ser inferida en base a los puntos. O sea, estamos asumiendo que la forma en que se distribuyen los puntos debería ser una línea pero la representación que obtenemos es algo difusa. Si en vez de usar sólo dos variables hubiéramos usado tres, el espacio de estado tendría 3 dimensiones y la forma de la distribución podría ser un cuerpo con volumen o un plano, probablemente curvado, en un espacio de 3D. Si usáramos más de 3 variables, ya no podríamos visualizar el espacio pero la idea sigue siendo la misma: la nube de puntos (estados) representaría en forma difusa un cuerpo hiperdimensional. A este cuerpo se lo llama &lt;i&gt;manifold&lt;/i&gt;.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Un modelo de predicción sobre estos datos debe contener un mapa que relacione cada zona del manifold con un valor de la variable dependiente. La forma que adquiere el mapa depende del tipo de herramienta usada, puede ser una función (lineal o no), un conjunto de reglas, un gráfico, etc, pero lo importante es que el modelo es un mapa, pero hay que recordar que el mapa no es el territorio. Dicho de otra forma, el mapa podría no ser perfecto, y generalmente no lo es por varias razones. &lt;/p&gt;&lt;p class="MsoNormal"&gt;La nube de puntos nos da una idea del verdadero manifold, pero normalmente es imposible conocerlo. Sólo podemos inferir cómo debería serlo basándonos en los puntos. Cuánto más cantidad de puntos tengamos a disposición, más fiel será nuestra representación del manifold.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si no tenemos suficientes puntos, el manifold tendrá muchas zonas vacías cuya forma deberá ser inferida corriendo el riesgo de cometer errores. El manifold podría tener cualquier forma, desde muy simple hasta muy complejo. Cuánto más complejo sea, más necesidad de puntos tendremos para representar lo mejor posible su verdadera forma.&lt;/p&gt;&lt;p class="MsoNormal"&gt;El párrafo anterior sugiere que la cantidad de filas, o lo que es lo mismo, la cantidad de puntos del manifold, necesarias para tener una buena representación depende de la cantidad de variables y de la complejidad de las relaciones entre estas variables. ¿Por qué?&lt;/p&gt;&lt;p class="MsoNormal"&gt;Supongamos un manifold simple formado por dos variables. ¿Cuántos puntos serán necesarios para tener una idea más o menos clara del mismo? ¿Son suficientes 100? ¿o se necesitan 1000? Supongamos que intuitivamente creemos que con 100 puntos alcanza (el manifold del gráfico antrior está formado por 400 puntos). Si agregamos una nueva variable, el espacio pasa a ser de 3D y el manifold pasará de ser una línea a ser un plano. Aún continuando con la suposición de que el manifold es simple, serán necesarios más puntos para obtener una buena definición de un plano (curvado) que de una línea (curvada). Esta es la razón de por qué para realizar un buen modelo generalmente se necesitan más casos (filas) cuando la cantidad de variables se incrementa. De hecho, para obtener una buena representación del manifold con 20 o 30 variables podrían ser necesarias tantos casos que no sería posible obtenerlos.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Por otro lado, cuánto más compleja sea la relación entre las variables, más complejo será el manifold y por lo tanto mayor cantidad de puntos, o casos se necesitarán para crear un buen modelo.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Estimación de la cantidad de datos necesarios&lt;/p&gt;&lt;p class="MsoNormal"&gt;Una manera de estimar los datos necesarios para tener una buena representación del manifold es ir construyendo un gráfico de la distribución de los datos. Supongamos que empezamos construyendo la distribución con muy pocos datos. Luego agregamos varios datos más y volvemos a crear otro gráfico con la distribución. Es probable que ambas distribuciones no sean muy parecidas, pero a medida que se agreguen más valores, la forma de la distribución irá convergiendo a la distribución de la población.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Supongamos que tenemos una distribución construida con &lt;span style="FONT-STYLE: italic"&gt;n&lt;/span&gt; casos. Luego agregamos &lt;span style="FONT-STYLE: italic"&gt;m&lt;/span&gt; casos más y volvemos a construir la distribución. Si ambas distribuciones no cambian demasiado, podremos asumir que la muestra de &lt;span style="FONT-STYLE: italic"&gt;n&lt;/span&gt; casos ha capturado la distribución de la población.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Los siguientes gráficos muestran cómo va variando la distribución a medida que se agregan datos. El primer gráfico está construido con 20 casos, el segundo con 40 y el tercero con 100. En cada caso se acompaña la distribución de la población para comparar cómo la distribución de la muestra se va acercando a la de la población a medida que crece su tamaño.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/Rzr3H1UfPwI/AAAAAAAAAHg/fQQum03hdG4/s1600-h/dist1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5132686439286259458" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_1pmfjujlzUI/Rzr3H1UfPwI/AAAAAAAAAHg/fQQum03hdG4/s400/dist1.JPG" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: center"&gt;Distribución con 20 casos&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/Rzr3bFUfPxI/AAAAAAAAAHo/-6vCBdb64p8/s1600-h/dist2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5132686769998741266" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/Rzr3bFUfPxI/AAAAAAAAAHo/-6vCBdb64p8/s400/dist2.JPG" border="0" /&gt;&lt;/a&gt; &lt;p class="MsoNormal" style="TEXT-ALIGN: center"&gt;Distribución con 40 casos&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/Rzr3qFUfPyI/AAAAAAAAAHw/zAMEwKJqC0k/s1600-h/dist3.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5132687027696779042" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_1pmfjujlzUI/Rzr3qFUfPyI/AAAAAAAAAHw/zAMEwKJqC0k/s400/dist3.JPG" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: center"&gt;Distribución con 100 casos&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: left"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Las distribuciones anteriores fueron construidas en base a una sola variable. Cuando existen más de una variable, se puede usar el mismo procedimiento, teniendo en cuenta que ahora la distribución ya no será en un plano sino en un espacio de 3 o más dimensiones. Por ejemplo, el siguiente gráfico muestra la distribución conjunta de dos variables&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/Rzr3_1UfPzI/AAAAAAAAAH4/LiP-5Hd3eFM/s1600-h/dist3d.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5132687401358933810" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_1pmfjujlzUI/Rzr3_1UfPzI/AAAAAAAAAH4/LiP-5Hd3eFM/s400/dist3d.JPG" border="0" /&gt;&lt;/a&gt;Tomando muestras al azar cada vez mayores se puede encontrar el tamaño mínimo tal que tomando una muestra más grande, la forma de la distribución no se modifique significativamente. &lt;p class="MsoNormal"&gt;Este tamaño mínimo, es la cantidad de datos que se necesitará para crear un buen modelo sobre &lt;i&gt;esos&lt;/i&gt; datos con &lt;i&gt;esas&lt;/i&gt; variables.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Powerhouse va calculando la probabilidad de contar con una muestra que tenga una distribición representativa de la población a medida que agrega variables en una selección de las mejores variables. El proceso de selección para automáticamente cuando la cantidad de información que aporta una nueva variable no justifica la pérdida de representatividad de la muestra.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Este método ha demostrado ser muy confiable y permite generar modelos con rendimientos muy similares entre los datos de entrenamiento y los de prueba, aumentando así la probabilidad de que el modelo funcione correctamente cuando se ponga en producción.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-5596330988791248048?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/5596330988791248048/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=5596330988791248048' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/5596330988791248048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/5596330988791248048'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/11/cuntos-datos-necesito-para-obtener-un.html' title='¿Cuántos datos necesito para obtener un buen modelo?'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1pmfjujlzUI/Rzr2sFUfPvI/AAAAAAAAAHY/TkCLbKlc1ag/s72-c/manifold.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-3420788646587544203</id><published>2007-11-09T09:35:00.000-08:00</published><updated>2007-11-29T10:33:21.578-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Información'/><title type='text'>Información, incertidumbre y sorpresa</title><content type='html'>Usamos la palabra información muy frecuentemente, sobre todo cuando nos referimos a Data Mining. Decimos que una base de datos contiene información y que con algoritmos apropiados es posible obtenerla. Pero, ¿qué es la información? &lt;p class="MsoNormal"&gt;Definir información en un sentido amplio puede llegar a ser una tarea muy complicada, así que sólo me referiré al concepto de información desde el punto de vista de la Teoría de la Información.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La información está relacionada con el grado de incertidumbre acerca de un mensaje que recibiremos. A mayor incertidumbre, mayor información contendrá la fuente de mensajes. El lanzamiento de una moneda contiene dos posibles mensajes, cara y cruz. En cambio el lanzamiento de un dado tiene 6 posibles resultados, con lo que existirán 6 posibles mensajes para indicar el resultado. El lanzamiento de un dado contiene mayor información que el de una moneda.&lt;/p&gt;&lt;p class="MsoNormal"&gt;El grado de incertidumbre, o lo que es lo mismo, la información, se mide por medio de la entropía y su unidad es el bit. Una fuente con dos posibles mensajes tiene 1 bit de información. Si la cantidad de mensajes se duplica, la cantidad de bits se duplica. O sea una fuente con 4 mensajes posibles tendrá 2 bits. En general y siempre suponiendo que todos los mensajes tienen igual probabilidad de aparecer, la cantidad de bits viene dada por:&lt;/p&gt;&lt;p class="MsoNormal"&gt;Cantidad de información en bits = log&lt;sub&gt;2&lt;/sub&gt;(número de posibles mensajes)&lt;/p&gt;&lt;p class="MsoNormal"&gt;Así la cantidad de información que contiene el lanzamiento de un dado está dada por H, la entropía de una fuente de información con 6 mensajes posibles:&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span lang="EN-GB"&gt;H = log&lt;sub&gt;2&lt;/sub&gt;(6) = 2.58 bits&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Un mensaje contiene información porque reduce la incertidumbre. Antes de tirar el dado existe una incertidumbre de 2.58 bits. Una vez recibido el mensaje (el mensaje es el número que salió), la incertidumbre se reduce a 0 bits, así que el mensaje contiene 2.58 bits de información.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Cuando la probabilidad de recibir cada mensaje no es la misma para todos, el cálculo de la cantidad de información que contiene una fuente debe tener en cuenta la probabilidad de cada mensaje.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/RzSdWoEwgLI/AAAAAAAAAHA/6ROCJFZpHqQ/s1600-h/h.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5130898887521894578" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_1pmfjujlzUI/RzSdWoEwgLI/AAAAAAAAAHA/6ROCJFZpHqQ/s400/h.JPG" border="0" /&gt; &lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Supongamos que la fuente de información está compuesta por dos dados y los mensajes que envía es la suma de los mismos. Existen 11 posibles mensajes dados por la suma 1+1, 1+2, ..., 6+6&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/RzSzXoEwgNI/AAAAAAAAAHQ/3nQ38lTMje0/s1600-h/dosdados.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5130923093957574866" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_1pmfjujlzUI/RzSzXoEwgNI/AAAAAAAAAHQ/3nQ38lTMje0/s400/dosdados.JPG" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/RzSduYEwgMI/AAAAAAAAAHI/TgzAvat_Hpo/s1600-h/dosdados.JPG"&gt;&lt;/a&gt; &lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;El mensaje más frecuente es la suma 7 y los menos frecuentes son la suma 2 y 12. La entropía total del sistema es 3.27 bits.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La columna log&lt;sub&gt;2&lt;/sub&gt;(1/p) contiene la cantidad de información que lleva cada mensaje. Vemos que los mensajes menos frecuentes son los que mayor cantidad de información llevan. Sacar un 1 en cada dado lleva 5.17 bits de información, así como también sacar dos 6. Por otro lado, un mensaje cuya suma sea 7 lleva 2.58 bits de información. &lt;/p&gt;&lt;p class="MsoNormal"&gt;Dicho de otro modo, a mayor sorpresa, mayor información llevará el mensaje.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Resumiendo, la información está relacionada con el grado de incertidumbre que tenga una fuente de información. Además, cada mensaje que envíe esta fuente llevará una cantidad de información relacionada con el grado de sorpresa que cause. A mayor sorpresa, mayor información.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-3420788646587544203?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/3420788646587544203/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=3420788646587544203' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/3420788646587544203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/3420788646587544203'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/11/informacin-incertidumbre-y-sorpresa.html' title='Información, incertidumbre y sorpresa'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1pmfjujlzUI/RzSdWoEwgLI/AAAAAAAAAHA/6ROCJFZpHqQ/s72-c/h.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-9160562110851115661</id><published>2007-11-07T05:36:00.000-08:00</published><updated>2007-11-26T15:11:51.916-08:00</updated><title type='text'>¿Tuvo éxito la última campaña de marketing? Regresión a la media</title><content type='html'>&lt;p class="MsoNormal"&gt;Una empresa decidió mejorar la rentabilidad de un segmento de clientes con el peor rendimiento mediante una campaña de marketing realizada exclusivamente sobre estos clientes. Para evaluar el éxito de la campaña se midió la rentabilidad de este grupo de clientes en un período y luego volvió a medirla en otro posterior. La diferencia fue notable. Este grupo tuvo un incremento en su rentabilidad lo suficientemente alto como para que la campaña haya sido considerada como un éxito total.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La pregunta es &lt;span style="FONT-WEIGHT: bold"&gt;¿realmente la campaña fue un éxito?&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Existe un fenómeno llamado regresión a la media que hay que considerar antes de decidir si la campaña tuvo el supuesto éxito.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La regresión a la media se puede definir como la tendencia de los valores extremos a acercarse a los promedios a medida que pasa el tiempo. La razón está en el azar. Cuando se mide alguna propiedad, parte de los casos serán extremos debidos al azar. Si estos casos son seleccionados y luego de un cierto período se vuelve a medir la misma propiedad sobre estos mismos casos, es probable que muchos de ellos ya no sean extremos.&lt;/p&gt;&lt;p class="MsoNormal"&gt;La distribución de la rentabilidad de los clientes en un determinado período está dada, en parte por lo que podríamos llamar la verdadera distribución que tiene que ver con las tendencias generales de compra de los clientes a largo plazo, y en parte por el azar. Un cliente podría históricamente comprar 5 productos al año, pero sólo por azar no haber comprado nada durante el período de medición, con lo que la rentabilidad sería 0 o negativa (si es que mantener el cliente implica un costo, como usualmente sucede). Durante el siguiente período, la probabilidad de que los clientes seleccionados previamente compren algún producto es mayor que cero, con lo que la rentabilidad será necesariamente mayor. Y todo esto sucede naturalmente sin que se haya llevado a cabo ningún tipo de acción sobre estos clientes. &lt;/p&gt;&lt;p class="MsoNormal"&gt;El haber seleccionado los clientes con menor rentabilidad y luego volver a medirla sobre &lt;i&gt;los mismos&lt;/i&gt; clientes es lo que produce este efecto. Esto no quiere decir que para la siguiente medición se deba seleccionar nuevamente el grupo de clientes con menor rentabilidad, ya que lo que se desea es hacer un seguimiento a los clientes seleccionados sólo una vez. Lo que se debe hacer es tener en cuenta el efecto de regresión a la media para descontarlo de las mediciones realizadas en el siguiente período luego de haber realizado la campaña.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Una manera de medir este efecto es mediante la correlación lineal entre las mediciones de dos períodos anteriores. Si la correlación es &lt;i&gt;r&lt;/i&gt;, entonces se debe esperar un corrimiento hacia la media dado por&lt;/p&gt;&lt;p class="MsoNormal"&gt;Regresión a la media en % = 100 * (1 – r)&lt;/p&gt;&lt;p class="MsoNormal"&gt;Por ejemplo, si la rentabilidad promedio de todos los clientes es de 100$, la rentabilidad de los clientes seleccionados es de 30$ y la correlación entre dos períodos anteriores es de 0.96, entonces se debería esperar una regresión a la media de&lt;/p&gt;&lt;p class="MsoNormal"&gt;Regresión a la media = 100 * (1 – 0.96) = 4%&lt;/p&gt;&lt;p class="MsoNormal"&gt;La distancia entre la rentabilidad promedio de todos los clientes y la rentabilidad promedio de los clientes seleccionados es de 100$ - 30$ = 70$&lt;/p&gt;&lt;p class="MsoNormal"&gt;Así que sólo por el efecto de regresión a la media se espera que los clientes mejoren un 4% de esta diferencia, 4% de 70$ igual a 2.8$, o sea, se esperaría medir una rentabilidad promedio de 30$ + 2.8$ = 32.8$ durante el siguiente período.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Si luego de la campaña de marketing se hubiera medido un incremento del 9% en la rentabilidad de los clientes, se podría asumir que la misma no tuvo efecto sobre los clientes, ya que esta diferencia se puede explicar completamente mediante la regresión a la media.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Para más detalles de este fenómeno se puede consultar el libro de Dorian Pyle, &lt;a href="http://www.amazon.com/Business-Modeling-Kaufmann-Management-Systems/dp/155860653X/ref=pd_bbs_sr_2/102-7757836-3718550?ie=UTF8&amp;amp;s=books&amp;amp;qid=1194442791&amp;amp;sr=8-2"&gt;“Business Modeling and Data Mining”&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-9160562110851115661?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/9160562110851115661/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=9160562110851115661' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/9160562110851115661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/9160562110851115661'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/11/tuvo-xito-la-ltima-campaa-de-marketing.html' title='¿Tuvo éxito la última campaña de marketing? Regresión a la media'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-507379614196922243</id><published>2007-11-01T11:08:00.000-07:00</published><updated>2007-11-29T10:35:27.279-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Balancear datos'/><title type='text'>Un ejemplo con datos No Balanceados</title><content type='html'>En un &lt;a href="http://powerhousedm.blogspot.com/2007/10/es-necesario-balancear-los-datos.html"&gt;artículo anterior&lt;/a&gt; comenté que en Powerhouse no es necesario balancear los datos. De hecho podría llegar a ser contraproducente. En este artículo mostraré un ejemplo que con muchas herramientas de Data Mining necesitaría un ajuste en los datos a fin de balancear la variable a predecir.&lt;br /&gt;&lt;br /&gt;Los datos son acerca de una campaña de marketing para la venta de tarjetas de crédito. Existen &gt;11.000 casos, 39 variables independientes y una variable dependiente que es un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;flag&lt;/span&gt; indicando si el cliente contactado con la oferta de la tarjeta, la aceptó o no.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/Ryoa9-HfdUI/AAAAAAAAAFw/8dbRtvkOEg4/s1600-h/Accept_Hist.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/Ryoa9-HfdUI/AAAAAAAAAFw/8dbRtvkOEg4/s400/Accept_Hist.JPG" alt="" id="BLOGGER_PHOTO_ID_5127940777663493442" border="0" /&gt;&lt;/a&gt;La particularidad de estos datos es que la variable dependiente tiene muy pocas respuestas positivas, alrededor de 1.5%, como puede verse en el gráfico o en la tabla. Esta clase de distribución en datos de campañas de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;marketing&lt;/span&gt; no es &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;inusual&lt;/span&gt; y complica la creación de un modelo de predicción en más de una forma.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Si la herramienta de modelado necesita trabajar con datos balanceados (por eje&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/RyodfeHfdWI/AAAAAAAAAGA/nE45EyIg0FU/s1600-h/Accept_Dist.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_1pmfjujlzUI/RyodfeHfdWI/AAAAAAAAAGA/nE45EyIg0FU/s400/Accept_Dist.JPG" alt="" id="BLOGGER_PHOTO_ID_5127943552212366690" border="0" /&gt;&lt;/a&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;mplo&lt;/span&gt; una red neuronal) hay que seleccionar parte de los datos para lograr una distribución más equitativa con la consecuente disminución de la cantidad de datos disponibles para realizar el modelo. Otra alternativa es generar nuevos datos artificiales con una distribución similar a los casos poco representados, aunque este último método no es recomendado.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Powerhouse&lt;/span&gt; puede trabajar con los datos tal como están. Al cargar la tabla con los datos, se dejó de lado un 40% de casos para verificar el modelo.&lt;br /&gt;&lt;br /&gt;El primer paso es crear una selección de variables&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/RyoiJeHfdYI/AAAAAAAAAGQ/Ow6b15v136U/s1600-h/Accept_VS.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_1pmfjujlzUI/RyoiJeHfdYI/AAAAAAAAAGQ/Ow6b15v136U/s400/Accept_VS.JPG" alt="" id="BLOGGER_PHOTO_ID_5127948671813383554" border="0" /&gt;&lt;/a&gt;Se seleccionaron 4 variables que llevan la mayor información libre de ruido y con una buena probabilidad de ser una muestra representativa de la población. Estas variables llevan el 75.07% de la información necesaria para predecir la variable independiente.&lt;br /&gt;&lt;br /&gt;El siguiente paso es construir un modelo &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;OPFIT&lt;/span&gt; ya que es el que normalmente obtiene los mejores resultados. La siguiente ventana muestra el desempeño del modelo&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/Ryoj5-HfdaI/AAAAAAAAAGg/08ItjmM4_VQ/s1600-h/Accept_CG1.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/Ryoj5-HfdaI/AAAAAAAAAGg/08ItjmM4_VQ/s400/Accept_CG1.JPG" alt="" id="BLOGGER_PHOTO_ID_5127950604548666786" border="0" /&gt;&lt;/a&gt;El &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;KS&lt;/span&gt; es 40.7 sobre los datos de entrenamiento (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;trainining&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;set&lt;/span&gt;) y 36.6 sobre los de prueba (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;test&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;set&lt;/span&gt;). Considerando que los datos de prueba no se usan en ningún momento para crear el modelo, este sería el valor aproximado de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;KS&lt;/span&gt; que debería esperarse cuando el modelo se ponga en producción.&lt;br /&gt;&lt;br /&gt;El valor del R2 no parece ser muy bueno, pero esto es debido a que este parámetro de medición no es adecuado para este tipo de problemas.&lt;br /&gt;&lt;br /&gt;La curva de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Lift&lt;/span&gt; muestra que sobre los datos de prueba, con un 20% de los clientes se pueden conseguir alrededor de un 50% de clientes que aceptaron la oferta. Para tener datos más precisos se puede consultar la tabla de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Lift&lt;/span&gt; que muestra que efectivamente el valor es 50% o un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;lift&lt;/span&gt; de 2.5&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1pmfjujlzUI/RyonauHfdbI/AAAAAAAAAGo/Wz9vRMrd18Y/s1600-h/Accept_Lift1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_1pmfjujlzUI/RyonauHfdbI/AAAAAAAAAGo/Wz9vRMrd18Y/s400/Accept_Lift1.JPG" alt="" id="BLOGGER_PHOTO_ID_5127954465724265906" border="0" /&gt;&lt;/a&gt;Ya que la variable a predecir está tan &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;desequilabrada&lt;/span&gt; (1.45%/98.55% en este caso), vamos a probar de cargar un 75% de los datos para realizar el modelo (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Training&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;set&lt;/span&gt;) y el 25% restante para prueba y compararemos las variables seleccionadas y el rendimiento de los modelos.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/RyopmOHfdcI/AAAAAAAAAGw/fqO0Gwi3Qhg/s1600-h/Accept_VS2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_1pmfjujlzUI/RyopmOHfdcI/AAAAAAAAAGw/fqO0Gwi3Qhg/s400/Accept_VS2.JPG" alt="" id="BLOGGER_PHOTO_ID_5127956862316017090" border="0" /&gt;&lt;/a&gt;La ganancia de información es algo menor pero mejora la confianza de tener una muestra representativa, lo que podría mejorar el desempeño del modelo en los datos de prueba (y por consiguiente con datos nuevos). Las variables seleccionadas son las mismas. El modelo tiene un &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;KS&lt;/span&gt; de 41.5 y 38 sobre los datos de entrenamiento y prueba. Se puede notar que la brecha entre ambas tablas disminuyó (antes era un poco más de 4 puntos y ahora es de 3.5). La tabla de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Lift&lt;/span&gt; muestra un desempeño algo superior al anterior&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/RyoyLOHfddI/AAAAAAAAAG4/gTPEXiETSdM/s1600-h/Accept_Lift2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_1pmfjujlzUI/RyoyLOHfddI/AAAAAAAAAG4/gTPEXiETSdM/s400/Accept_Lift2.JPG" alt="" id="BLOGGER_PHOTO_ID_5127966294064199122" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;Con &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Powerhouse&lt;/span&gt; existe la posibilidad de realizar un nuevo modelo usando todos los datos disponibles ya que casi no existe riesgo de sobre-entrenamiento, sobre todo una vez que se comprobó que el modelo funciona bien con datos de prueba.&lt;br /&gt;&lt;br /&gt;Es más, en este ejercicio pudimos ver que aumentando la cantidad de datos para el entrenamiento, el desempeño del modelo sobre los datos de pruebas fue más cercano al desempeño sobre los datos de entrenamiento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-507379614196922243?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/507379614196922243/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=507379614196922243' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/507379614196922243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/507379614196922243'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/11/un-ejemplo-con-datos-no-balanceados.html' title='Un ejemplo con datos No Balanceados'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1pmfjujlzUI/Ryoa9-HfdUI/AAAAAAAAAFw/8dbRtvkOEg4/s72-c/Accept_Hist.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-8859651553021085834</id><published>2007-10-22T15:04:00.000-07:00</published><updated>2007-11-29T10:54:29.077-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Modelos'/><category scheme='http://www.blogger.com/atom/ns#' term='Redes Neuronales'/><title type='text'>El problema XOR</title><content type='html'>A principios de los 60 Frank Rosenblatt propuso una técnica llamada Perceptron Convergence Procedure para entrenar una red neuronal capaz de resolver simples problemas de reconocimiento de patrones.&lt;br /&gt;&lt;br /&gt;El Perceptron era una red neuronal sin unidades ocultas, lo que no le permitía resolver ciertos problemas. Esta dificultad fue el tema principal del libro Perceptrones de Seymour Papert y Marvin Minsky.&lt;br /&gt;&lt;br /&gt;Uno de los problemas más conocidos que no podía resolver el Perceptron era una función lógica llamada  OR Exclusiva o simplemente XOR. Las funciones lógicas tienen normalmente dos entradas y una salida que depende de los valores de las entradas. Las entradas y las salidas pueden tomar dos valores: Verdadero y Falso, ó 0 y 1. Así para cada función lógica existe una tabla que indica cuál será la salida dada la combinación de los valores de la entrada. Para la función XOR la tabla es la siguiente:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/Rx0rkZ6gIuI/AAAAAAAAAFM/RpLgISDs0WY/s1600-h/cgc2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_1pmfjujlzUI/Rx0rkZ6gIuI/AAAAAAAAAFM/RpLgISDs0WY/s400/cgc2.JPG" alt="" id="BLOGGER_PHOTO_ID_5124299855449039586" border="0" /&gt;&lt;/a&gt;El resultado de XOR será Verdadero (1) sólo si las dos entradas son distintas, sino será Falso (0).&lt;br /&gt;&lt;br /&gt;Una manera de ver por qué este aparentemente simple problema ponía en dificultades al Perceptron, es representar cada entrada en un espacio de dos dimensiones, una para X y la otra para Y.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1pmfjujlzUI/Rx0vBp6gIvI/AAAAAAAAAFU/Gb_aA9Bg9aI/s1600-h/cgc3.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_1pmfjujlzUI/Rx0vBp6gIvI/AAAAAAAAAFU/Gb_aA9Bg9aI/s400/cgc3.JPG" alt="" id="BLOGGER_PHOTO_ID_5124303656495096562" border="0" /&gt;&lt;/a&gt;El Perceptron puede resolver problemas que son linealmente separables, o sea, que exista una línea (o hiperplano) que separe grupos de entradas que tengan la misma salida. En el caso del XOR es imposible encontrar tal solución, como puede verse en el siguiente gráfico&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/Rx0woZ6gIwI/AAAAAAAAAFc/XuvdoxmPRMQ/s1600-h/cgc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_1pmfjujlzUI/Rx0woZ6gIwI/AAAAAAAAAFc/XuvdoxmPRMQ/s400/cgc.JPG" alt="" id="BLOGGER_PHOTO_ID_5124305421726655234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;La entradas que tienen el mismo resultado en la función XOR son 0,1 y 1,0 por un lado, y 0,0 y 1,1 por el otro. En el gráfico se puede notar que  no es posible encontrar una línea que separe estas entradas en dos grupos.&lt;br /&gt;&lt;br /&gt;Luego de la publicación del libro de Minsky y Papert, el campo de la investigación de las redes neuronales comenzó a debilitarse y la mayoría de sus investigadores se pasaron al área del la Inteligencia Artificial simbólica.&lt;br /&gt;&lt;br /&gt;A fines de los 70 y principios de los 80 se descubre cómo entrenar redes neuronales multicapas capaces de resolver cualquier tipo de problemas, incluyendo el XOR.&lt;br /&gt;&lt;br /&gt;Resumiendo, una red neuronal con una capa oculta (hidden layer) resuelve sin inconvenientes el problema del XOR.&lt;br /&gt;&lt;br /&gt;¿Qué pasa con Powerhouse? ¿Es capaz de resolver el XOR?&lt;br /&gt;&lt;br /&gt;coinciden con las reglas del El modelo OPFIT no puede lograrlo, pero sí el MAXIT. Abajo se ve el modelo que se obtiene. Tiene 4 reglas y logra un 100% de aciertos. Las reglas que encuentra el modelo MAXIT son las reglas que definen las función XOR.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1pmfjujlzUI/Rx3PXp6gIxI/AAAAAAAAAFk/FijBuD4E_Vw/s1600-h/cgc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_1pmfjujlzUI/Rx3PXp6gIxI/AAAAAAAAAFk/FijBuD4E_Vw/s400/cgc.JPG" alt="" id="BLOGGER_PHOTO_ID_5124479956312662802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Para encontrar el modelo se usaron datos de entrenamiento que contenían alrededor de 1000 ejemplos del XOR&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-8859651553021085834?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/8859651553021085834/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=8859651553021085834' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/8859651553021085834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/8859651553021085834'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/10/el-problema-xor.html' title='El problema XOR'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1pmfjujlzUI/Rx0rkZ6gIuI/AAAAAAAAAFM/RpLgISDs0WY/s72-c/cgc2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-3310085878843417045</id><published>2007-10-22T10:39:00.000-07:00</published><updated>2007-10-22T11:37:00.169-07:00</updated><title type='text'>Datos de prueba contaminados</title><content type='html'>Una de las claves para asegurarnos que un modelo tendrá el rendimiento esperado cuando lo pongamos a trabajar con datos nuevos es haberlo probado con datos históricos que no se hayan usado absolutamente para nada.&lt;br /&gt;&lt;br /&gt;Esto parece una obviedad pero muchas veces se toman ciertas decisiones que terminan contaminando los datos de prueba.&lt;br /&gt;&lt;br /&gt;Hay dos maneras de contaminar los datos de prueba, en el armado de los mismos y en las pruebas del modelo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Armado de los datos de prueba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Los datos de prueba (test set) deben ser armados de la misma manera en que se armaron los datos de entrenamiento (training set). Quiero decir, si a una variable se la transformó de una determinada manera, por ejemplo, se la transformó de continua a discreta utilizando determinados rangos, a la misma variable de los datos de prueba se la debe tranformar usando los mismos rangos. Esto está claro y rara vez trae inconvenientes. El problema está en la manera en que se obtuvo la transformación. En nuestro ejemplo, cómo se obtuvieron los rangos.&lt;br /&gt;&lt;br /&gt;Los datos de prueba no deben ser usados para obtener una transformación.&lt;br /&gt;&lt;br /&gt;Es imprescindible separar los datos de prueba &lt;span style="font-style: italic;"&gt;antes &lt;/span&gt;de obtener cualquier transformación que se desee aplicar tanto a los datos de entrenamiento como  a los de prueba.&lt;br /&gt;&lt;br /&gt;El primer paso de cualquier proyecto de Data Mining debe ser separar los datos de entrenamiento y de prueba. Esta separación debe ser al azar y sin reemplazo.&lt;br /&gt;&lt;br /&gt;Luego, si se desea trabajar los datos para encontrar las mejores transformaciones, se deben usar sólo los datos de entrenamiento. Una vez que se encuentran todos los parámetros necesarios para transformar las variables, se usarán estos mismos parámetros para transformar las variables de los datos de prueba.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Uso de los datos de prueba&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una vez que se cuenta con los datos de entrenamiento y de prueba se deben usar los datos de entrenamiento para crear el modelo y solamente cuando uno está convencido de tener el modelo final, recién ahora será el momento de usar los datos de prueba para estimar rendimiento que el modelo tendrá cuando trabaje con datos nuevos.&lt;br /&gt;&lt;br /&gt;Si la herramienta que se usa para encontrar el modelo necesita de un conjunto de datos de prueba, entonces es necesario que haya dos tablas de datos de prueba: una para que use la herramienta de modelado y otra que nos reservamos para la prueba final.&lt;br /&gt;&lt;br /&gt;Por ejemplo, las redes neuronales necesitan un conjunto de datos de prueba, normalmente llamado test set, para evitar que la red copie el ruido (Para una discusión detallada de lo que significa el ruido en los datos se puede consultar &lt;a href="http://powerhousedm.blogspot.com/2007/10/qu-es-el-ruido.html"&gt;¿Qué es el ruido?&lt;/a&gt;). A medida que la red va modificando sus ponderadores (weights) probando una y otra vez los datos de entrenamiento, se corre el riesgo que la red aprenda detalles que sólo aparecen en estos datos. Para evitar este comportamiento no deseable, una vez cada n ciclos de entrenamiento, a la red se la prueba con otros datos, los datos de prueba, para confirmar que su rendimiento sigue mejorando no solo en los datos de entrenamiento sino con otros independientes. Cuando, el rendimiento sobre los datos de prueba deja de mejorar, se detiene el entrenamiento y la red queda entrenada.&lt;br /&gt;&lt;br /&gt;El problema es que los datos usados durante el entrenamiento, de alguna manera formaron parte de este entrenamiento y de esta manera quedaron contaminados. Así, que en el caso de las redes neuronales es necesario un tercer conjunto de prueba. El rendimiento de la red será estimado usando este tercer conjunto de datos.&lt;br /&gt;&lt;br /&gt;Powerhouse no necesita de datos de prueba para crear los modelos. Los algoritmos basados en la Teoría de la Información son tan simples y directos que no requieren que los datos de entrenamiento sean evaluados una y otra vez.&lt;br /&gt;&lt;br /&gt;De todas maneras, si usando Powerhouse o alguna otra herramienta que no necesita datos de prueba (como una regresión lineal por ejemplo) &lt;span style="font-style: italic;"&gt;se usan&lt;/span&gt; los datos de prueba para elegir el mejor modelo, entonces estos datos también se contaminan y se debería contar con un tercer conjunto de datos para la prueba final.&lt;br /&gt;&lt;br /&gt;En resumen, los datos de prueba final (a veces llamados datos de evaluación) deben usarse sólo una vez, ya que al ser usados quedarán automáticamente contaminados.&lt;br /&gt;&lt;br /&gt;Una manera de obtener nuevos datos de prueba es volver a empezar todo desde el principio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-3310085878843417045?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/3310085878843417045/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=3310085878843417045' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/3310085878843417045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/3310085878843417045'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/10/datos-de-prueba-contaminados.html' title='Datos de prueba contaminados'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-6810738269912755924</id><published>2007-10-18T13:07:00.000-07:00</published><updated>2007-11-29T10:47:32.935-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Score'/><title type='text'>Pasos para construir un score</title><content type='html'>En este artículo explicaré lo simple que es armar un score en Powerhouse. Como ejemplo utilizaré  datos de una compañia de seguros publicados para una competencia de Data Mining y que actualmente sirven como benchmark.&lt;br /&gt;&lt;br /&gt;El problema a resolver es muy simple:&lt;br /&gt;&lt;br /&gt;¿Podría decirme quién está interesado en comprar una póliza de seguros para una casa rodante (caravan) y explicarme por qué?&lt;br /&gt;&lt;br /&gt;Para resolver el problema se publicaron dos tablas de datos, una con 85 variables explicatorias acerca de quién compró o no una póliza en el pasado. O sea, cada fila consiste de 85 variables independientes más otra variable dependiente que indica con 1 ó 0 si la persona compró o no. La otra tabla es similar a la anterior excepto porque no contiene la variable que indica si la persona compró la póliza o no.&lt;br /&gt;&lt;br /&gt;Si estuviéramos trabajando en un proyecto real con una compañía de seguros, la primera tabla de datos podría venir de una campaña de marketing realizada con una muestra de los clientes y la segunda tabla estaría formada por los clientes que no participaron en la campaña anterior.&lt;br /&gt;&lt;br /&gt;Con el propósito de minimizar los costos de la segunda campaña (la que se hará con la segunda lista de clientes), la oferta no será enviada a toda la lista de clientes, sino a aquellos 800 clientes con mayor probabilidad de que compren el seguro.&lt;br /&gt;&lt;br /&gt;Así que los pasos a realizar en el proyecto serán:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Construir un modelo usando los datos de la primera tabla&lt;/li&gt;&lt;li&gt;Aplicar el modelo a la segunda tabla para obtener una probabilidad de que el cliente compre el seguro&lt;/li&gt;&lt;li&gt;Seleccionar los 800 clientes con mayor probablidad&lt;/li&gt;&lt;/ol&gt;En un proyecto real se enviarían los folletos a estos 800 clientes con la esperanza que compraran la póliza un porcentaje similar al obtenido en las pruebas con la primera tabla. Pero en nuestro caso usaremos un dato que fue publicado luego que la competencia finalizó. Este dato fue la lista de los clientes pertenecientes a la segunda tabla y que compraron la póliza. Dicho de otro modo, nuestra segunda tabla &lt;span style="font-style: italic;"&gt;contiene &lt;/span&gt;la variable a predecir. De este modo podremos probar el modelo y compararlo con los resultados obtenidos por los participantes de la competencia.&lt;br /&gt;&lt;br /&gt;En la página web &lt;a href="http://www.liacs.nl/%7Eputten/library/cc2000/"&gt;The Insurance Company (TIC) Benchmark&lt;/a&gt; hay más detalles del problema con los datos y los resultados.&lt;br /&gt;&lt;br /&gt;Un score es un número que tiene asociada una probabilidad. Un score de riesgo de crédito indicará la probabilidad de falta de pago.&lt;br /&gt;&lt;br /&gt;En este caso, el score tendrá asociada la probabilidad de que el cliente compre la póliza de seguros.&lt;br /&gt;&lt;br /&gt;Bueno, luego de esta larga introducción podemos comenzar con el proyecto.&lt;br /&gt;&lt;br /&gt;Powerhouse tiene tres modelos que generan un score, el OPFIT, el MAXIT y el Scorecard. Para esta tarea podemos usar el modelo OPFIT o el Socrecard.&lt;br /&gt;&lt;br /&gt;Comenzamos cargando los datos y definiendo CARAVAN como la variable a predecir (es la variable 86). Hay que tener en cuenta que no hace falta hacer ninguna preparación previa de los datos. Cuando los mismos son cargados en Powerhouse, quedan automáticamente preparados para que cada variable exponga al máximo la información que pueda contener acerca de la variable a predecir.&lt;br /&gt;&lt;br /&gt;Al terminar la carga y la preparación de los datos (esta preparación en realidad forma parte de algo más complejo que es un mapeo de información, pero para este ejercicio no hace falta considerar este tema), aparece una ventana de estadísticas que sirve para realizar un análisis exploratorio&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/Rxfugp6gImI/AAAAAAAAAEM/H3dhWusjxfA/s1600-h/st.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_1pmfjujlzUI/Rxfugp6gImI/AAAAAAAAAEM/H3dhWusjxfA/s400/st.JPG" alt="" id="BLOGGER_PHOTO_ID_5122825345931682402" border="0" /&gt;&lt;/a&gt;La pantalla muestra una lista de todas las variables con varias columnas con información acerca de la misma. La parte inferior de la ventana muestra más detalles acerca de la variable que está seleccionada en ese momento.&lt;br /&gt;&lt;br /&gt;En un proyecto real esta información es muy útil para verificar si las variables contienen la información que se espera que tengan.&lt;br /&gt;&lt;br /&gt;El siguiente paso es seleccionar las variables más importantes. El modelo que vayamos a construir debe estar basado en una pocas variables por varias razones:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Es más simple de entender&lt;/li&gt;&lt;li&gt;Existe mayor probabilidad de que funcione correctamente con datos nuevos&lt;/li&gt;&lt;li&gt;Se facilita la preparación de variables para el área de sistemas&lt;/li&gt;&lt;/ol&gt;En un siguiente artículo discutiré este tema con mayor profundidad.&lt;br /&gt;&lt;br /&gt;Tenemos a disposición 85 variables. ¿Cómo seleccionar un grupo óptimo de variables? La tarea no es simple debido a la explosión combinatoria que aparece si se desean probar todos los grupos posibles.  Afortunadamente Powerhouse usa un método basado en la Teoría de la Información que le permite encontrar un grupo óptimo de variables en muy poco tiempo (para este caso Powerhouse tardó 30 segundos para encontrar las variables con mayor información acerca de la variable a predecir). La siguiente tabla muestra las variables seleccionadas&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/RxiwOp6gInI/AAAAAAAAAEU/2xB0Gl-_wrY/s1600-h/tab.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_1pmfjujlzUI/RxiwOp6gInI/AAAAAAAAAEU/2xB0Gl-_wrY/s400/tab.jpg" alt="" id="BLOGGER_PHOTO_ID_5123038341949825650" border="0" /&gt;&lt;/a&gt;Las variables aparecen en orden. O sea, PPERSAUT es la variable que mayor información aporta acerca de si el cliente comprará o no la póliza. La siguiente variable es la que mayor información &lt;span style="font-style: italic;"&gt;adicional &lt;/span&gt;aporta., y así sucesivamente. Las 5 variables juntas aportan un 58% de la información necesaria para predecir sin errores si el cliente comprará o no la póliza.&lt;br /&gt;&lt;br /&gt;Powerhouse no continuó seleccionando más variables porque la siguiente variable no aportaría la suficiente información adicional para justificar la pérdida de representatividad de la muestra con la que se construirá el modelo. Dicho de otro modo, Powerhouse nos dice: "&lt;span style="font-style: italic;"&gt;Para obtener un buen modelo que funcione tanto con datos del training set como con datos nuevos, éstas son las 5 variables recomendadas&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Si bien no es necesario para este artículo profundizar más en el análisis de las variables seleccionadas, vale la pena notar que las últimas dos variables parecen aportar más información que cada una del resto, tomadas por separado. O sea, la última variable aporta 58.11% - 36.90% = 21.21% de información adicional. De la misma manera, la variable anterior aporta 17.26%. Esto parece contradecir lo que dije anteriormente, que la primer variable es la que lleva la mayor cantidad de información posible. Pero esta contradicción es sólo aparente. Lo que está sucediendo es que las variables que van siendo agregadas están interactuando con las ya seleccionadas previamente, entonces la información que aportan es mayor que si las tomáramos aisladamente.&lt;br /&gt;&lt;br /&gt;Continuando con la creación del score, lo que falta ahora es realizar un modelo con estas 5 variables. Con un clic sobre esta selección elegimos construir un OPFIT. El modelo se construye en unos pocos segundos y se muestra una ventana con el modelo, pero no analizaremos esta ventana, solo nos concetraremos en el rendimiento, especificamente en la curva de Lift sobre el Test set.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1pmfjujlzUI/RxjGb56gIoI/AAAAAAAAAEc/JP5gGpJCKZ0/s1600-h/cgc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_1pmfjujlzUI/RxjGb56gIoI/AAAAAAAAAEc/JP5gGpJCKZ0/s400/cgc.JPG" alt="" id="BLOGGER_PHOTO_ID_5123062758838903426" border="0" /&gt;&lt;/a&gt;El problema original nos pide elegir los 800 clientes entre 4.000 con mayor probabilidad de comprar una póliza, o sea, el 20%. Del gráfico de Lift podemos notar que  20% de los clientes (escala horizontal) seleccionados con el modelo contiene aproximadamente un 50% de compradores de póliza. Los datos de la primera tabla muestran que un 5.72% de los clientes compraron la póliza (este dato sale de la distribución de la variable a predecir). Por lo tanto podemos estimar la cantidad de clientes que comprarán la póliza en la segunda tabla. Debe ser 5.72% de 4.000 ó lo que es lo mismo, 229 clientes. Así que en base a estos cálculos deberíamos esperar que el modelo seleccione aproximadamente un 50% de 229, o sea unos 114 clientes.&lt;br /&gt;&lt;br /&gt;Veamos si esto es cierto. Recordemos que nosotros ya conocemos cuáles clientes de la segunda tabla realmente compraron la póliza, así que simplemente aplicaremos el modelo a la segunda tabla de clientes, los ordenamos en base al score de mayor a menor, seleccionamos los primeros 800 y contamos cuántos clientes compraron la póliza.&lt;br /&gt;&lt;br /&gt;Para aplicar el modelo a la segunda tabla, primero debemos agrega esta nueva tabla al proyecto haciendo clic derecho sobre el proyecto y elegiendo "Agregar Fuente de Datos".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/RxjRcZ6gIpI/AAAAAAAAAEk/bbPhHVTaEdk/s1600-h/cgc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_1pmfjujlzUI/RxjRcZ6gIpI/AAAAAAAAAEk/bbPhHVTaEdk/s400/cgc.JPG" alt="" id="BLOGGER_PHOTO_ID_5123074862056743570" border="0" /&gt;&lt;/a&gt;Luego hacemos clic sobre el signo + de la tabla agregada y buscamos la variable CARAVAN que es la que nos dice si el cliente compró o no la póliza. La arrastramos hasta el área de trabajo para crear una vista con esta variable. Luego arrastramos el modelo OPFIT hasta esta vista y obtendremos el score para cada cliente.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1pmfjujlzUI/RxjTW56gIrI/AAAAAAAAAE0/UHIv8rFZb3U/s1600-h/cgc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_1pmfjujlzUI/RxjTW56gIrI/AAAAAAAAAE0/UHIv8rFZb3U/s400/cgc.JPG" alt="" id="BLOGGER_PHOTO_ID_5123076966590718642" border="0" /&gt;&lt;/a&gt;Ahora podemos exportar esta Vista para cargarla en Excel y seleccionar los clientes con mayor probabilidad. ¿El resultado? 118 clientes, aproximadamente lo que esperábamos (114).&lt;br /&gt;&lt;br /&gt;El ganador de este concurso obtuvo 121 clientes y el segundo 115, así que Powerhouse no lo hizo tan mal. Es más, si consideramos que el tiempo total del proyecto fue inferior a 5 minutos, podemos asumir que los resultados han sido más que satisfactorios.&lt;br /&gt;&lt;br /&gt;Ya está listo y probado el modelo de score, pero todavía falta algo para terminar con el proyecto, falta explicar por qué. Para esto usaremos el modelo Scorecard. Este modelo podríamos haberlo usado en un principio en vez del OPFIT, pero se supone que OPFIT es levemente más preciso que el Scorecard. De hecho, una prueba rápida revela que el Scorecard encuentra 117 clientes en los 800 (OPFIT encontró 118), así que la diferencia es realmente muy pequeña.&lt;br /&gt;&lt;br /&gt;Pero el Scorecard que construiremos será más simple y menos preciso, ya que solo lo quereos para explicar las relaciones encontradas en los datos. Así que en vez de usar los parámetros default en las opciones del modelo, cambiaremos uno de ellos. En vez de usar 5 rangos (o 5 bins) para las variables, usaremos solo dos, así el modelo será más simple de entender&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/RxjbdJ6gIsI/AAAAAAAAAE8/EH8XTiq-Gc8/s1600-h/cgc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/RxjbdJ6gIsI/AAAAAAAAAE8/EH8XTiq-Gc8/s400/cgc.JPG" alt="" id="BLOGGER_PHOTO_ID_5123085870057923266" border="0" /&gt;&lt;/a&gt;El modelo es el siguiente:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/RxjcPJ6gItI/AAAAAAAAAFE/hKILR5IoZJg/s1600-h/cgc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/RxjcPJ6gItI/AAAAAAAAAFE/hKILR5IoZJg/s400/cgc.JPG" alt="" id="BLOGGER_PHOTO_ID_5123086729051382482" border="0" /&gt;&lt;/a&gt;El modelo de score se interpreta de la siguiente manera. El score será un número entre 0 y 100. A mayor score, mayor probabilidad de que el cliente compre una póliza. Cada variable aporta parte del score. Así por ejemplo, para la variable PPERSAUT tenemos dos valores de score, si la variable toma un valor menor que 5.5, entonces para esta variable, el score es 0. En cambio, si el valor de PPERSAUT es mayor o igual a 5.5, entonces el score será 40. El resto de las variables se interpretan de la misma manera.&lt;br /&gt;&lt;br /&gt;La tercera columna "Si es nulo" es para el caso de que el valor de esa variable no se conozca. En ese caso el score asociado a esa variable será el indicado en esta columna. Por ejemplo, para la primera variable es 17.&lt;br /&gt;&lt;br /&gt;El score total de un cliente es la suma de los scores individuales de cada variable.&lt;br /&gt;&lt;br /&gt;La variable PPERSAUT se refiere a "Contribution car policies", y según el modelo a mayores valores que tome, mayor será la probabilidad de que el cliente compre la póliza.&lt;br /&gt;&lt;br /&gt;Con el resto de las variables se puede hacer una análisis similar. En particular se puede ver que la variable MOSHOOFD tiene una relación inversa con la probabilidad: a mayores valores, menor es la probabilidad.&lt;br /&gt;&lt;br /&gt;Este modelo puede exportarse a Excel y se obtendrá, entre otras cosas, una tabla con las probabilidades asociadas a cada score.&lt;br /&gt;&lt;br /&gt;Conclusión, realizar un score con Powerhouse es una tarea muy simple que lleva pocos minutos una vez que se cuenta con la tabla de datos correspondiente.&lt;br /&gt;&lt;br /&gt;Powerhouse no sólo obtiene modelos precisos y robustos (trabajan muy bien con datos nuevos), sino que a su vez  estos modelos son muy simples de entender.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-6810738269912755924?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/6810738269912755924/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=6810738269912755924' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/6810738269912755924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/6810738269912755924'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/10/pasos-para-construir-un-score.html' title='Pasos para construir un score'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1pmfjujlzUI/Rxfugp6gImI/AAAAAAAAAEM/H3dhWusjxfA/s72-c/st.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-8631079000748417772</id><published>2007-10-18T05:53:00.000-07:00</published><updated>2007-11-29T10:42:49.586-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Variables Mixtas'/><title type='text'>Un ejemplo del uso de variables mixtas</title><content type='html'>Hoy encontré un data set en Internet acerca de créditos. Se llama &lt;a href="http://sasenterpriseminer.com/data/HMEQ.xls"&gt;Home Equity Loan Data Set&lt;/a&gt; y lo usan en varios documentos con ejemplos del uso de SAS Enterprise Miner.&lt;br /&gt;&lt;br /&gt;Quise comparar los resultados publicados con los que podría obtener con Powerhouse. Para obtener un resultado rápido, usé el AutoWizard, que una vez seleccionados los datos e identificada la variable a predecir, generó un modelo de segmentación y el de predicción en 10 segundos.&lt;br /&gt;&lt;br /&gt;Luego generé el reporte de rendimiento del modelo de predicción OPFIT. Sobre el Training set el modelo acertó un 82.9% de la veces y sobre el Test set un 82.4%. El KS &lt;span style="font-size:100%;"&gt;(&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Kolmogorov-Smirn Statistic) fue de 56.3% en el Trainig set y 45.4 en el Test set. La siguiente gráfica muestra el Lift&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/RxdvBZ6gIhI/AAAAAAAAADk/VZteFOlJx4g/s1600-h/cgc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/RxdvBZ6gIhI/AAAAAAAAADk/VZteFOlJx4g/s400/cgc.JPG" alt="" id="BLOGGER_PHOTO_ID_5122685171084042770" border="0" /&gt;&lt;/a&gt;La tabla muestra el Lift por decil&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/RxdvX56gIiI/AAAAAAAAADs/odHwK4kItBg/s1600-h/tab.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_1pmfjujlzUI/RxdvX56gIiI/AAAAAAAAADs/odHwK4kItBg/s400/tab.jpg" alt="" id="BLOGGER_PHOTO_ID_5122685557631099426" border="0" /&gt;&lt;/a&gt;No es un mal modelo y tiene un rendimiento similar al Modelo de Regresión costruído en SAS y publicado en el documento &lt;a href="http://adm3308.misig.net/wp-content/uploads/2006/07/saspublishingdataminingusingsasenterprisemineracasestudyapproachebook-ddu.pdf"&gt;Data Mining using SAS Enterprise Miner. A case study approach&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Luego hice algo de análisis exploratorio usando el reporte de Estadísticas de Powerhouse (debería haberlo analizado antes) y me di cuenta que una variable que podría ser muy importante, había sido ignorada por tener un porcentaje de Nulos demasiado elevado.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/Rxdxz56gIjI/AAAAAAAAAD0/M7uhR4pzhus/s1600-h/st.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_1pmfjujlzUI/Rxdxz56gIjI/AAAAAAAAAD0/M7uhR4pzhus/s400/st.JPG" alt="" id="BLOGGER_PHOTO_ID_5122688237690692146" border="0" /&gt;&lt;/a&gt;La variable ignorada es DEBTINC que representa la relación entre la deuda y los ingresos (Debt to Income). Esta variable normalmente lleva mucha información acerca de la capacidad de pago de una persona. Cuanto mayor es esta relación, mayor probabilidad de mora existe.&lt;br /&gt;&lt;br /&gt;Tenía varias opciones para incluir esta variable, aumentar el porcentaje permitido de Nulls en las variables (el valor prefijado era de 20%), hacer que Powehouse reemplace los Nulos o tratar esta variable como Mixta, asignando un valor no numérico a cada valor faltante.&lt;br /&gt;&lt;br /&gt;Lo primero que hice fue reemplazar los Nulos, pero DEBTINC no apareció en la selección de variables y el modelo que obtuve no fue mejor que el anterior. Esto concuerda con la idea principal dada en &lt;a href="http://powerhousedm.blogspot.com/2007/10/qu-hacer-con-los-nulls.html"&gt;¿Qué hacer con los Nulls?&lt;/a&gt;, no reemplazar los Nulos salvo en casos absolutamente necesarios.&lt;br /&gt;&lt;br /&gt;Luego pensé que quizás tratar a DEBTINC como Mixta podría funcionar. Probablemente el hecho de que este valor no esté completado lleve información acerca de la variable a predecir (para más detalles de este enfoque llamado Missing Value Pattern, se puede consultar el capítulo 8 de Data Preparation for Data Mining de Dorian Pyle), así que simplemente hice un nuevo proyecto en el que en la variable DEBTINC reemplacé los Nulos por "N/C" y declaré esta variable como Mixta. Luego procedí como lo hice anteriormente y estos fueron los resultados:&lt;br /&gt;&lt;br /&gt;La variable DEBTINC fue seleccionada en primer lugar. El porcentaje de aciertos subió a un 88.66% y 88.77% para el TR y el TS respectivamente. El KS también mejoró mucho, 68.2 y 67.8 para el TR y TS. La curva Lift sobre el Test set mejoró notablemente&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/RxeHGp6gIkI/AAAAAAAAAD8/K1t8ZayrY_A/s1600-h/cgc.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_1pmfjujlzUI/RxeHGp6gIkI/AAAAAAAAAD8/K1t8ZayrY_A/s400/cgc.JPG" alt="" id="BLOGGER_PHOTO_ID_5122711649557422658" border="0" /&gt;&lt;/a&gt;De la tabla de Lift se puede ver por ejemplo que el Lift para el decil 1 y 2 es 4.43 y 3.61 respectivamente, lo cual comparado con 2.90 y 2.34 del modelo anterior, es una mejora de alrededor de un 50%!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1pmfjujlzUI/RxeJ6J6gIlI/AAAAAAAAAEE/nV-TovKySko/s1600-h/tab.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_1pmfjujlzUI/RxeJ6J6gIlI/AAAAAAAAAEE/nV-TovKySko/s400/tab.JPG" alt="" id="BLOGGER_PHOTO_ID_5122714733343941202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Conclusión, las variables Mixtas no sólo sirven para reemplazar valores vacíos, también pueden hacer un buen trabajo con valores faltantes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-8631079000748417772?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/8631079000748417772/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=8631079000748417772' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/8631079000748417772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/8631079000748417772'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/10/un-ejemplo-del-uso-de-variables-mixtas.html' title='Un ejemplo del uso de variables mixtas'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1pmfjujlzUI/RxdvBZ6gIhI/AAAAAAAAADk/VZteFOlJx4g/s72-c/cgc.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-1875718668992883797</id><published>2007-10-16T05:52:00.000-07:00</published><updated>2007-11-29T10:35:27.280-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Balancear datos'/><title type='text'>¿Es necesario balancear los datos?</title><content type='html'>Supongamos un proyecto de Data Mining del área de marketing de una empresa en donde el objetivo es construir un modelo para predecir quién responderá a la oferta de un producto.&lt;br /&gt;&lt;br /&gt;Existen distintas maneras de llevar adelante un proyecto de este tipo, una de ellas es realizar una campaña ofertando el producto a una muestra al azar de clientes con el objeto de recabar información que será usada en el proyecto. La idea es usar una muestra que sea lo más pequeña posible pero que contenga la suficiente información para hacer el modelo. Por ejemplo, si la empresa tuviera 100.000 clientes, se podría tomar una muestra al azar de 10.000 para enviarles el folleto. Una vez que pase un tiempo prudencial, se puede armar la tabla con todas las variables disponibles de los clientes de la muestra más una variable que indique si el cliente compró o no el producto. O sea, la variable a predecir será "Compra" cuyos dos únicos valores serán "SI" o "NO".&lt;br /&gt;&lt;br /&gt;Depende el tipo de producto, podría ser que el porcentaje de gente que compre el producto sea muy bajo, por ejemplo, sólo el 1%.&lt;br /&gt;&lt;br /&gt;Así que la variable "Compra" tendrá la distribución de valores:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/RxS51J6gIeI/AAAAAAAAADM/u3RdZr332ZU/s1600-h/tab.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/RxS51J6gIeI/AAAAAAAAADM/u3RdZr332ZU/s400/tab.JPG" alt="" id="BLOGGER_PHOTO_ID_5121922999072596450" border="0" /&gt;&lt;/a&gt;Muchas herramientas para construir modelos tienen problemas con este tipo de distribución de la variable a predecir. Por ejemplo, si se entrena  una red neuronal con un nodo como Salida (Output) se obtendrá un modelo cuya respuesta será la misma para todos los clientes: "NO". ¿Por qué? Porque los algoritmos de entrenamiento están diseñados para reducir el error. Si la respuesta es para todos los casos "NO", el error que se comete es del 1%, o dicho de otro modo, el modelo acertará el 99% de las veces!&lt;br /&gt;&lt;br /&gt;A este tipo de modelo, el que siempre contesta lo mismo para cometer el mínimo error, se lo conoce como modelo naïve.&lt;br /&gt;&lt;br /&gt;Lo que se necesita es un modelo que supere el modelo naïve.&lt;br /&gt;&lt;br /&gt;Una vía para lograr que la herramienta de modelado no produzca un modelo naïve es balancear los datos, o lo que es lo mismo, modificar la distribución de la variable a predecir para que sea 50%/50%. Una manera de lograr esto es la siguiente:&lt;br /&gt;&lt;br /&gt;Seleccionar todas las filas en donde la variable a predecir toma el valor "SI". En nuestro caso hipotético de la campaña de marketing nos quedaríamos con unas 100 filas (el 1% de 10.000). Luego se deben incluir otros 100 casos en los que el cliente no compró el producto ("NO"). Ahora tendremos una tabla de datos en los que la distribución de la variable a predecir es 50%/50%.&lt;br /&gt;&lt;br /&gt;Pero estos datos tienen dos problemas: la distribución de la variable a predecir no es real (¡ya lo sabíamos!) y son insuficientes para realizar un buen modelo, al menos en nuestro caso en que sólo conseguimos 200 filas.&lt;br /&gt;&lt;br /&gt;¿Cómo solucionamos la falta de datos? Existen dos maneras. Hay herramientas que generan nuevas filas artificiales en las que la variable de salida toma el valor menos representado (en nuestro caso "SI"). No tengo claro la validez de este método y si realmente ayuda. En mi caso particular, hace unos años utilicé esta práctica con redes neuronales y no obtuve ningún beneficio.&lt;br /&gt;&lt;br /&gt;La otra solución es aumentar el tamaño de la muestra, pero esto incrementa los costos del proyecto (para tener una muestra representativa de la población, el costo podría aumentar hasta¡ 10 veces!)&lt;br /&gt;&lt;br /&gt;¿Qué hacer si la herramienta de Data Mining es Powerhouse? &lt;span style="font-weight: bold;"&gt;Nada&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una de las grandes ventajas que tiene Powerhouse es que no es necesario (ni aconsejable) balancear los datos. Todas las pruebas realizadas por nosotros y por muchos usuarios de Powerhouse, indicaron que es mejor no balancear que hacerlo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-1875718668992883797?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/1875718668992883797/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=1875718668992883797' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/1875718668992883797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/1875718668992883797'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/10/es-necesario-balancear-los-datos.html' title='¿Es necesario balancear los datos?'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1pmfjujlzUI/RxS51J6gIeI/AAAAAAAAADM/u3RdZr332ZU/s72-c/tab.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-1142972154621599852</id><published>2007-10-12T06:48:00.000-07:00</published><updated>2007-11-29T10:42:49.586-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Variables Mixtas'/><title type='text'>¿Qué hacer con los NULLS?</title><content type='html'>Llamaré NULL a una posición de una variable que debería tener un valor pero está vacía. Por ejemplo, la siguiente variable tiene un NULL en la fila 4&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/Rw-vBp6gIdI/AAAAAAAAADA/0pynIz0XLOs/s1600-h/tab.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_1pmfjujlzUI/Rw-vBp6gIdI/AAAAAAAAADA/0pynIz0XLOs/s400/tab.jpg" alt="" id="BLOGGER_PHOTO_ID_5120503744309502418" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;Los NULLS pueden ser de dos tipos: &lt;span style="font-style: italic;"&gt;valores faltantes&lt;/span&gt; y &lt;span style="font-style: italic;"&gt;valores vacíos&lt;/span&gt;. Es muy importante tener en claro la diferencia entre los dos.&lt;br /&gt;&lt;br /&gt;Un valor faltante es un valor que tiene sentido que exista. El ejemplo de arriba muestra una variable llamada Hpwr (potencia) y que pertenece a una tabla de datos acerca de vehículos. Otras variables de la misma tabla son MiGal (millas por galón), Cyl (cantidad de cilindros), WtLbs (peso en libras), Acc0-60 (aceleración de 0 a 60 mph), etc. En esta tabla, al vehículo representado en la fila 4 le falta el valor de la potencia. Debería existir un valor, pero no está. Este es un NULL del tipo &lt;span style="font-style: italic;"&gt;valor faltante&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;En cambio, un valor vacío es un valor que no tiene sentido que exista. Por ejemplo, consideremos una variable que indique el saldo en la cuenta corriente de un cliente. Si el cliente no posee cuenta corriente, ¿qué valor debería tener esa variable para ese cliente? Cero no puede ser, porque esto significaría que el cliente decidió tener cuenta corriente y en su saldo tiene 0$, y esto no es cierto. Veremos un poco más adelante cómo tratar con este caso.&lt;br /&gt;&lt;br /&gt;Ahora que tenemos claro los dos tipos de NULLS veremos qué hacer en cada caso.&lt;br /&gt;&lt;br /&gt;El caso más simple es el de valores faltantes. Por alguna razón el valor no está presente, aunque debería estarlo. ¿Qué hacer? La respuesta más simple es ignorar toda la fila. Hay veces en que los valores faltantes aparecen desparramados al azar en toda la tabla de datos, pero con suerte no hay demasiados. O sea, si tomáramos la decisión de ignorar las filas que tienen al menos un valor faltante, todavía nos quedaríamos con un porcentaje importante de total de filas (por ejemplo, sólo el 10% de las filas serían ignoradas así que nos quedaría el 90% para trabajar). Esta es la mejor solución, pero no siempre es posible.&lt;br /&gt;&lt;br /&gt;Hay ocasiones en que si bien ninguna variable tiene individualmente más que un pequeño porcentaje de valores faltantes, el hecho de considerar todas las variables en conjunto hace que la cantidad de filas ignoradas sea&lt;span style="color: rgb(51, 102, 255);"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;lo suficientemente grande&lt;/span&gt; &lt;/span&gt;como para quedarnos sin datos para analizar. En este caso la única respuesta es completar los valores vacíos. El problema es con qué valor. Con cualquier valor que pongamos estaremos introduciendo un sesgo. En el artículo sobre la preparación de datos hablé sobre la estructura que conserva una fila. Si reemplazamos el valor faltante por un valor que no es apropiado, estaremos modificando esta estructura.  Completar con el valor promedio de la variable no es una buena idea, por la razón expuesta anteriormente.&lt;br /&gt;&lt;br /&gt;Dorian Pyle en su libro &lt;a href="http://www.amazon.com/Preparation-Mining-Kaufmann-Management-Systems/dp/1558605290/ref=sr_1_1/102-9409716-0077734?ie=UTF8&amp;amp;s=books&amp;amp;qid=1192201180&amp;amp;sr=1-1"&gt;Data Preparation for Data Mining&lt;/a&gt; hace un tratamiento exhaustivo sobre el reemplazo de NULLS. Powerhouse se basa en &lt;span style="color: rgb(0, 0, 0);"&gt;uno&lt;/span&gt; de estos métodos para realizar el reemplazo automático de valores faltantes que tiene que ver con interferir lo mínimo posible con la estructura entre variables.&lt;br /&gt;&lt;br /&gt;Antes de pasar al tratamiento de valores vacíos vale la pena tener en cuenta un caso que aparece muy a menudo. Muchas veces las variables que tienen sólo dos valores, por ejemplo SI y NO,  vienen con un solo valor completado (por ejemplo SI) y el otro valor está vacío (significando en realidad que debería ser un NO). O sea, si nos guiamos por la cantidad de NULL reportados podríamos descartar esta variable por contener demasidos NULLS, pero un análisis más detallado indicará que sólo hay que cambiar los valores faltantes por NO. Powerhouse puede hacer esto en forma automática por medio de la opción VRN (o NRV en Inglés) durante la carga de datos.&lt;br /&gt;&lt;br /&gt;Veamos ahora cómo tratar los NULLS cuando son del tipo valor vacío, o sea, que están sin completar porque no tiene sentido poner un valor.&lt;br /&gt;&lt;br /&gt;En Powerhouse existe un tipo de variable llamada Mixta. La misma puede contener valores numéricos y categóricos a la vez. En el ejemplo del saldo de la cuenta corriente, si el cliente tiene cuenta corriente, el valor será el saldo, caso contrario, el valor será alguna indicación tal como "SIN CUENTA".&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/Rw-uUZ6gIcI/AAAAAAAAAC4/gxfLsMcDnyU/s1600-h/tab.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/Rw-uUZ6gIcI/AAAAAAAAAC4/gxfLsMcDnyU/s400/tab.jpg" alt="" id="BLOGGER_PHOTO_ID_5120502966920421826" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Powerhouse tratará esta variable como si fuera numérica para clientes con cuenta corriente y como si fuera categórica para el resto de los clientes.&lt;br /&gt;&lt;br /&gt;Resumiendo, si la cantidad de valores faltantes no es demasiado grande, lo ideal es ignorar las filas que contienen valores faltantes, caso contrario reemplazarlos de manera que se interfiera lo mínimo posible con la estructura interna de los datos.&lt;br /&gt;&lt;br /&gt;Si los NULLS representan valores vacíos, usar un string cualquiera para reemplazar los vacíos para que Powerhouse automáticamente trate esta variable como Mixta.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-1142972154621599852?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/1142972154621599852/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=1142972154621599852' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/1142972154621599852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/1142972154621599852'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/10/qu-hacer-con-los-nulls.html' title='¿Qué hacer con los NULLS?'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1pmfjujlzUI/Rw-vBp6gIdI/AAAAAAAAADA/0pynIz0XLOs/s72-c/tab.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-8204682691625162505</id><published>2007-10-11T13:25:00.000-07:00</published><updated>2007-11-29T10:45:23.174-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruido'/><title type='text'>¿Qué es el ruido?</title><content type='html'>La Teoría de la Información tiene una definición precisa del ruido, pero en este artículo trataré este tema de una manera más informal. Aquel que quiera conocer  más acerca de la Teoría de la Información y cómo es posible usarla para medir el ruido y la señal que contienen los datos puede leer &lt;a href="http://www.pti.com/espanol/Data%20Mining%20y%20Teor%EDa%20de%20la%20Informaci%F3n.pdf"&gt;Data Mining y Teoría de la Información&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En cualquier tipo de comunicación, el ruido es algo que hay que evitar, ya que ensucia el mensaje que se está transmitiendo.&lt;br /&gt;&lt;br /&gt;Cuando nos referimos a un modelo de predicción, podemos asumir que las variables independientes transmiten información sobre la variable dependiente. Dicho de otro modo, existen variables que comunican información que nos será útil para predecir la variable de interés.&lt;br /&gt;&lt;br /&gt;Ahora bien, no siempre los modelos alcanzan un alto grado de precisión en sus predicciones debido a distintas razones. Por ejemplo, podría ser que las relaciones entre las variables independientes y la dependiente no sean lineales y la herramienta usada para construir el modelo sólo tenga en cuenta relaciones lineales.&lt;br /&gt;&lt;br /&gt;Otra razón que muchas veces escuchamos tiene que ver con el &lt;span style="font-style: italic;"&gt;ruido &lt;/span&gt;en los datos. Se suele decir que los datos contienen ruido y esto interfiere con la creación de un buen modelo. Pero ¿qué es el ruido?&lt;br /&gt;&lt;br /&gt;Podemos definir el ruido como una señal aleatoria que se suporpone a la señal original y confunde al destinatario. Veamos un ejemplo viendo primero una señal sin ruido y luego con rudio superpuesto.&lt;br /&gt;&lt;br /&gt;Supongamos que tenemos la siguiente relación entre dos variables&lt;br /&gt;&lt;span style=""&gt;&lt;span style=""&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" style="'width:66.75pt;" ole=""&gt;  &lt;v:imagedata src="file:///D:/DOCUME~1/MARCEL~1/CONFIG~1/Temp/msoclip1/01/clip_image001.wmz" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1025" drawaspect="Content" objectid="_1253630363"&gt;  &lt;/o:OLEObject&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;/span&gt;  &lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;span style="font-size:16;"&gt;y = x&lt;sup&gt;2 &lt;/sup&gt;– x + 2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  Una tabla de datos que contenga esta relación tendrá dos variables X e Y. La variable X será la variable independiente e Y la dependiente. Podemos asumir que X transmite información acerca de Y y un buen modelo será capaz de usar la información de X para estimar Y.&lt;br /&gt;&lt;br /&gt;Si graficamos esta relación veremos que para cada valor de X existe solamente un valor de Y posible&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/Rw6Qsp6gIZI/AAAAAAAAACg/kMON3lGgWc4/s1600-h/ruido.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/Rw6Qsp6gIZI/AAAAAAAAACg/kMON3lGgWc4/s400/ruido.JPG" alt="" id="BLOGGER_PHOTO_ID_5120188923206705554" border="0" /&gt;&lt;/a&gt;Los datos podrán contener varios valores de X iguales, por ejemplo, varias filas en donde X es 5, pero en cada una de estas filas, la variable Y tendrá el mismo valor: 22 (que es el resultado de la ecuación dada más arriba).&lt;br /&gt;&lt;br /&gt;Supongamos ahora que los datos tienen la siguiente particularidad: para un mismo valor de X pueden existir varios valores de Y. O sea, ahora si existen varias filas en donde X es 5, no necesariamente el valor de Y será en todas ellas 22. Podría ser que en algunas sea 20, en otras 22 y en otras 30.&lt;br /&gt;&lt;br /&gt;El gráfico de estos nuevos datos se verá así:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/Rw6Tip6gIaI/AAAAAAAAACo/4HaMZczQ5qM/s1600-h/ruido.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/Rw6Tip6gIaI/AAAAAAAAACo/4HaMZczQ5qM/s400/ruido.JPG" alt="" id="BLOGGER_PHOTO_ID_5120192049942897058" border="0" /&gt;&lt;/a&gt;Estos nuevos datos contienen &lt;span style="font-style: italic;"&gt;ruido&lt;/span&gt; porque para una misma señal (en nuestro ejemplo la señal es el valor de X) existen distintos valores que puede tomar la variable a predecir.&lt;br /&gt;&lt;br /&gt;El ruido, así como la información, se mide en bits. Powerhouse mide el ruido que contienen los datos y la información que queda luego de suprimir el ruido. Por ejemplo, si los datos contaminados con ruido son analizados con Powerhouse, resulta que el 58% de la información es ruido, con lo que sólo el 42% servirá para estimar exactamente Y. Dicho de otro modo, un modelo construido con estos datos nunca será lo suficientemente preciso debido a que parte de la información contiene ruido. Es importante notar que no importa el tipo de herramienta usada para construir el modelo. Si los datos contienen ruido, el modelo no será perfecto, y el grado de precisión dependerá justamente del nivel de rudio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-8204682691625162505?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/8204682691625162505/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=8204682691625162505' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/8204682691625162505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/8204682691625162505'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/10/qu-es-el-ruido.html' title='¿Qué es el ruido?'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1pmfjujlzUI/Rw6Qsp6gIZI/AAAAAAAAACg/kMON3lGgWc4/s72-c/ruido.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-302799992996678815</id><published>2007-10-11T06:09:00.000-07:00</published><updated>2007-11-29T10:54:09.568-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruido'/><category scheme='http://www.blogger.com/atom/ns#' term='Información'/><category scheme='http://www.blogger.com/atom/ns#' term='Modelos'/><category scheme='http://www.blogger.com/atom/ns#' term='Redes Neuronales'/><title type='text'>La información en los datos</title><content type='html'>Hace unas semanas encontré una tesis de grado en la que se mostraba cómo una red neuronal (NN) resolvía un problema de clasificación. El &lt;a href="http://archive.ics.uci.edu/beta/datasets/Waveform+Database+Generator+%28Version+2%29"&gt;dataset &lt;/a&gt;usado tiene 41 variables independientes mas la variable dependiente. Se trata de clasificar el tipo de onda (hay tres clases) en base a los atributos dados por las variables. Si bien todas las variables contienen ruido, las últimas 20 no contienen información acerca del tipo de onda (son solo ruido).&lt;br /&gt;&lt;br /&gt;La tesis muestra cómo con una NN se logra un modelo con aproximadamente un 83% de aciertos en la clasificación.&lt;br /&gt;&lt;br /&gt;Quise ver si Powerhouse era capaz de lograr resultados similares, y en este artículo contaré paso por paso lo que fui logrando y las sorpresas que tuve.&lt;br /&gt;&lt;br /&gt;Comencé como siempre lo hago, realizando un modelo default. Para ser más preciso, usé solamente las variables seleccionadas y luego el modelo OPFIT (una especie de regresión logística aplicada a los datos preparados por Powerhouse).&lt;br /&gt;&lt;br /&gt;La siguiente pantalla de Powerhouse muestra la información que había disponible para resolver el problema&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/Rw4nS56gISI/AAAAAAAAABk/tL6iYMrG5wQ/s1600-h/info.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_1pmfjujlzUI/Rw4nS56gISI/AAAAAAAAABk/tL6iYMrG5wQ/s400/info.JPG" alt="" id="BLOGGER_PHOTO_ID_5120073032104157474" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="file:///D:/DOCUME%7E1/MARCEL%7E1/CONFIG%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;br /&gt;Para mantener las cosas simples, solo usaré 2 columnas de esta pantalla en todos los análisis de este artículo, la que muestra las variables seleccionadas y la que muestra la ganancia de información.&lt;br /&gt;&lt;br /&gt;Powerhouse seleccionó solamente 3 variables  x7, x11 y x15. Estas tres variables llevan más del 60% de la información necesaria para clasificar correctamente la forma de onda.&lt;br /&gt;&lt;br /&gt;Esto significa que el modelo construído  con estas tres variables sería bastante bueno, pero seguramente no tan bueno como el de las redes neuronales.&lt;br /&gt;&lt;br /&gt;El modelo OPFIT basado en estas tres variables confirmó mi sospecha de que no lograría demasiado. Sólo se logra un 59% de aciertos en el Training Set (datos usados para construir el modelo) y un 56% en el Test Set (datos nunca vistos. Hay que considerar que en Powerhouse, a diferencia de una NN, el Test Set realmente &lt;span style="font-style: italic;"&gt;no se usa para nada&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;La matriz de confusión da un poco más de detalles sobre los resultados&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt; &lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1pmfjujlzUI/Rw4v_p6gIUI/AAAAAAAAAB0/HTlTyai7iG8/s1600-h/mc2.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_1pmfjujlzUI/Rw4v_p6gIUI/AAAAAAAAAB0/HTlTyai7iG8/s400/mc2.JPG" alt="" id="BLOGGER_PHOTO_ID_5120082596996325698" border="0" /&gt;&lt;/a&gt;&lt;/div&gt; &lt;/div&gt;&lt;br /&gt;Ya que el modelo OPFIT no lograba discriminar la clase "0",  probé con otro modelo de Powerhouse llamado MAXIT.&lt;br /&gt;&lt;br /&gt;Este modelo, al igual que el OPFIT, se basa en el mapa de información creado por Powerhouse. La diferencia es que mientras que OPFIT mapea la información usando una simple función de transferencia lineal, MAXIT lo hace mediante un conjunto de reglas. En general, OPFIT funciona bien con la mayoría de los problemas que aparecen en áreas de negocios, ya que las no linealidades encontradas en los datos son resueltas en la transformación de datos que se realiza cuando se construye el mapa de información, pero hay veces en que, si bien existe información, OPFIT no puede acceder a ella mientras que MAXIT si lo hace.&lt;br /&gt;&lt;br /&gt;Los resultados del modelo MAXIT con estas mismas tres variables mejoraron respecto del OPFIT&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/Rw4xh56gIXI/AAAAAAAAACM/zBqCwZNyYJg/s1600-h/mc2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_1pmfjujlzUI/Rw4xh56gIXI/AAAAAAAAACM/zBqCwZNyYJg/s400/mc2.JPG" alt="" id="BLOGGER_PHOTO_ID_5120084284918473074" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/Rw4w5J6gIVI/AAAAAAAAAB8/_0uzbCuWAIY/s1600-h/mc2.JPG"&gt;&lt;/a&gt;&lt;div style="text-align: left;"&gt;Ahora el porcentaje de aciertos subió al 66% en el Training Set y 64% en el Test Set, y además los aciertos de la clase "0" mejoraron bastante. De todas maneras, todavía estaba lejos del 83% logrado por una NN. Pero claro, la NN usó todas las variables disponibles y estos modelos sólo usaron 3 variables.&lt;br /&gt;&lt;br /&gt;Así que el siguiente paso fue construir los modelos con todas las variables disponibles. Pero en Powerhouse no es posible construir un modelo sin antes haber seleccionado las variables, así que primero se debe hacer una selección aclarando que se desean todas las variales disponibles. O sea, se espera lograr una lista de variables ordenadas según la información que aportan. Y acá  fue donde apareció la sorpresa, no hacen falta todas las variables ya que ¡11 de ellas contienen el 100% de la información necesaria para predecir la clase!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1pmfjujlzUI/Rw41SJ6gIYI/AAAAAAAAACU/6JZW-OpF7-8/s1600-h/se2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_1pmfjujlzUI/Rw41SJ6gIYI/AAAAAAAAACU/6JZW-OpF7-8/s400/se2.JPG" alt="" id="BLOGGER_PHOTO_ID_5120088412382044546" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;En la columna de la ganancia de información se puede ver que las últimas 3 variables aportan menos que el 1% de información. Es más, también se puede comprobar que el algoritmo de selección de variables es muy robusto respecto del ruido, ya que variables que sólo aportan ruido (x21 hasta x41, según se aclara en el sitio donde se obtuvieron los datos) aparecen al final de una selección forzada a elegir todas las variables. Powerhouse no continúa seleccionando variables porque ya no es necesario. Estas 11 variables contienen &lt;span style="font-style: italic;"&gt;toda &lt;/span&gt;la información necesaria.&lt;br /&gt;&lt;br /&gt;El modelo MAXIT sobre estas 11 variables no mejoró demasiado, 72% para el TR y 67% para el TS. Así que me pregunté por qué MAXIT no estaba capturando toda la información disponible si una red neuronal lo hacía. Entonces recordé que la red (al menos la que yo construí usando un producto comercial llamado NeuralWare) contiene 3 nodos de salida, uno para cada clase. Así que intenté un método que muchas veces mejoró mis resultados: construir tres modelos distintos, uno para cada clase, en vez de pretender que un solo modelo prediga las tres clases.&lt;br /&gt;&lt;br /&gt;Lo único que tuve que hacer es agregar tres variables a la tabla de datos. La primera contenía un 1 cada vez que la clase a predecir era "0" y un 0 cada vez que la clase era "1" ó "2". La segunda contenía un 1 cada vez que la clase era "1" y un 0 si era "0" ó "2". La tercera, un 1 si la clase era "2" y un 0 si era "0" ó "1". Así que primero construí un modelo (ahora usé el OPFIT) para predecir la primera variable agregada, o sea para predecir si la clase es "0". Luego hice los otros dos modelos (también OPFIT) , uno para predecir si la clase es "1" y otro para "2".&lt;br /&gt;&lt;br /&gt;Luego los apliqué a los datos y consideré que la clase sería aquella en que el modelo OPFIT diera el score más alto (el modelo OPFIT no solo predice categorías y valores continuos, sino que en cada predicción muestra un score). Por ejemplo, si los scores eran 0.89, 0.95 y 0.32 para las clases "0", "1" y "2" respectivamente, la predicción sería la clase "1" por tener el score más alto.&lt;br /&gt;&lt;br /&gt;¿El resultado? ¡Un 86% de aciertos en el Training set y un 83% en el Test set!&lt;br /&gt;&lt;br /&gt;En este ejercicio podemos ver dos cosas importantes:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Muchas veces unas pocas variables contienen toda la información necesaria para resolver el modelo. Agregar más variables complejiza el modelo innecesariamente.&lt;/li&gt;&lt;li&gt;Una manera de mejorar los resultados es construir varios modelos y luego unirlos para obtener el resultado buscado.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-302799992996678815?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/302799992996678815/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=302799992996678815' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/302799992996678815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/302799992996678815'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/10/la-informacin-en-los-datos.html' title='La información en los datos'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1pmfjujlzUI/Rw4nS56gISI/AAAAAAAAABk/tL6iYMrG5wQ/s72-c/info.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-8344435580433062033</id><published>2007-10-10T13:21:00.000-07:00</published><updated>2007-10-11T11:39:35.643-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Preparación de datos'/><title type='text'>La importancia de preparar los datos</title><content type='html'>Preparar los datos antes de construir un modelo con cualquier herramienta es esencial para obtener los mejores resultados. Veamos por qué.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Variables numéricas&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Supongamos que estamos trabajando con una variable cuya distribución tiene una larga cola. Un ejemplo podría ser el sueldo de una persona, tal como se puede ver en el siguiente gráfico&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1pmfjujlzUI/Rw1K6J6gIQI/AAAAAAAAABU/m0uuLyJBakY/s1600-h/dist.JPG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_1pmfjujlzUI/Rw1K6J6gIQI/AAAAAAAAABU/m0uuLyJBakY/s400/dist.JPG" alt="" id="BLOGGER_PHOTO_ID_5119830714344284418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Esta variable tiene una mediana de 1.200$ y una media de aproximadamente 1.700$, pero contiene sueldos mucho mayores, llegando a un máximo de 130.000$.&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoBodyTextIndent"&gt;&lt;span lang="ES-AR"&gt;Cuando se usa esta variable sin ningún tratamiento previo, salvo expresarla en una nueva escala, como ser 0 a 1 ó –1 a +1, como lo requeriría una red neuronal, se estaría desaprovechando gran parte de la información que pudiera contener. ¿Por qué? La razón es simple, los algoritmos que trabajan con los diferentes valores de la variable tratarán de encontrar intervalos en que la variable puede discriminar valores de la variable dependiente. Pero estos intervalos siempre son relativos al rango total de la variable.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoBodyTextIndent"&gt;&lt;span lang="ES-AR"&gt;Por ejemplo, supongamos que estamos modelando un score para predecir la probabilidad de que un cliente acepte un determinado producto y creemos que el sueldo podría ser una buena variable predictora. Intuitivamente podríamos asumir que una persona con un sueldo de 1.000$ se debería comportar de manera diferente que otra cuyo sueldo sea 5.000$. Después de todo hay una diferencia de 4.000$ en los sueldos. Pero la herramienta que usemos para modelar, por ejemplo una red neuronal, verá una diferencia muy pequeña porque ambos valores solo difieren apenas en un 2%, ya que 1.000$ representa el 0.77% respecto del rango total de la variable (0 a 130.000$) y 4.000$ representa el 3.08%.&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoBodyTextIndent"&gt;&lt;span lang="ES-AR"&gt;¿Cómo solucionamos esto? Existen varios métodos. Uno de ellos es aplicar la función matemática logaritmo a esta variable. El logaritmo tiene la propiedad de comprimir los valores altos y expandir los bajos. Por ejemplo, si aplicamos el logaritmo en base 10 a nuestro ejemplo y luego calculamos los valores relativos, nos queda:&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyTextIndent"&gt;&lt;span lang="ES-AR"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div align="center"&gt;  &lt;div align="center"&gt;  &lt;table style="width: 174pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="232"&gt;  &lt;tbody&gt;&lt;tr style="height: 13.5pt;"&gt;   &lt;td style="border: 0.5pt solid windowtext; padding: 0cm; background: rgb(51, 204, 204) none repeat scroll 0% 50%; width: 73pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 13.5pt;" nowrap="nowrap" valign="bottom" width="97"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;Valor   Original&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: solid solid solid none; padding: 0cm; background: rgb(51, 204, 204) none repeat scroll 0% 50%; width: 41pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 13.5pt;color:windowtext windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom" width="55"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;Log&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: solid solid solid none; padding: 0cm; background: rgb(51, 204, 204) none repeat scroll 0% 50%; width: 60pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 13.5pt;color:windowtext windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom" width="80"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;Log   Relativo&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 12.75pt;"&gt;   &lt;td  style="border-style: none solid solid; padding: 0cm; height: 12.75pt;color:-moz-use-text-color windowtext windowtext;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;span style=""&gt;           &lt;/span&gt;1,000 $ &lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: none solid solid none; padding: 0cm; height: 12.75pt;color:-moz-use-text-color windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;3.00&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: none solid solid none; padding: 0cm; height: 12.75pt;color:-moz-use-text-color windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;59%&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 12.75pt;"&gt;   &lt;td  style="border-style: none solid solid; padding: 0cm; height: 12.75pt;color:-moz-use-text-color windowtext windowtext;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;span style=""&gt;           &lt;/span&gt;4,000 $ &lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: none solid solid none; padding: 0cm; height: 12.75pt;color:-moz-use-text-color windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;3.60&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: none solid solid none; padding: 0cm; height: 12.75pt;color:-moz-use-text-color windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;70%&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;  &lt;/div&gt;  &lt;p class="MsoBodyTextIndent" style="text-indent: 0cm;"&gt;&lt;span lang="ES-AR"&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoBodyTextIndent" style="text-indent: 0cm;"&gt;&lt;span lang="ES-AR"&gt;&lt;span style=""&gt;&lt;/span&gt;Ahora la diferencia entre los dos sueldos es de un 11%, cinco veces más que en el caso anterior. De todas maneras hay que tener en cuenta que los logaritmos no son ni la solución ideal ni una solución universal. Por ejemplo, no es posible aplicar el logaritmo si existen valores menores o iguales a cero. Afortunadamente existen métodos numéricos capaces de modificar la forma de la distribución para que la variable incremente su poder discriminatorio, pero la explicación de los mismos quedará para un &lt;span style="font-family:georgia;"&gt;siguiente &lt;/span&gt;artículo.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoBodyTextIndent" style="text-indent: 0cm;"&gt;&lt;span lang="ES-AR"&gt;&lt;span style="font-weight: bold;"&gt;Variables categóricas&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoBodyTextIndent" style="text-indent: 0cm;"&gt;&lt;span style=""&gt;&lt;span style="font-family:georgia;"&gt;Otro problema comúnmente encontrado en proyectos de Data Mining es la asignación de valores numéricos a variables categóricas. La práctica normal es asignar los valores numéricos al azar, sin seguir ningún método particular.&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;p class="MsoBodyTextIndent" style="text-indent: 0cm;"&gt;&lt;span style=""&gt;&lt;span style="font-family:georgia;"&gt;El problema con este método es que asignar valores numéricos arbitrarios a cada categoría podría destruir la estructura interna de los datos. Para aclarar esto supongamos que tomamos una fila de una tabla de datos. En general, los valores que toman las variables mantienen una cierta relación, por ejemplo, la altura y el peso de una persona. Esta relación entre variables es la que debemos mantener cuando le asignamos valores numéricos a las categorías. Si no lo hacemos, podríamos estar modificando las relaciones internas de modo que la herramienta de modelado tenga que lidiar con relaciones más complejas.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoBodyTextIndent" style="text-indent: 0cm; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="font-family:georgia;"&gt;Como ejemplo práctico de preparar los datos antes de modelarlos veremos un caso real obtenido de Internet. En el sitio web de &lt;a href="http://archive.ics.uci.edu/beta/datasets/Adult"&gt;UCI Machine Learning Repository&lt;/a&gt; existe una tabla de datos llamada Adult. Con Powerhouse se seleccionaron 5 variables para predecir si la persona tiene ingresos mayores a 50 mil dólares anuales o no. Luego se prepararon dos modelos de regresión lineal, uno con los datos sin preparar (en donde las variables categóricas fueron numeradas en forma arbitraria) y otro con los datos preparados con Powerhouse.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoBodyTextIndent" style="text-indent: 0cm;"&gt;Los resultados se resumen en la siguiente tabla&lt;/p&gt;&lt;p class="MsoBodyTextIndent" style="text-indent: 0cm;"&gt;  &lt;/p&gt;&lt;p class="MsoBodyTextIndent" style="text-indent: 0cm;"&gt;  &lt;/p&gt;  &lt;div align="center"&gt;  &lt;div align="center"&gt;  &lt;table style="width: 232pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="309"&gt;  &lt;tbody&gt;&lt;tr style="height: 12.75pt;"&gt;   &lt;td style="border: 0.5pt solid windowtext; padding: 0.75pt 0.75pt 0cm; width: 60pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="80"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt; &lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;br /&gt;&lt;/td&gt;   &lt;td  style="border-style: solid solid solid none; padding: 0.75pt 0.75pt 0cm; background: rgb(51, 204, 204) none repeat scroll 0% 50%; width: 86pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 12.75pt;color:windowtext windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom" width="115"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;Datos sin   Preparar&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: solid solid solid none; padding: 0.75pt 0.75pt 0cm; background: rgb(51, 204, 204) none repeat scroll 0% 50%; width: 86pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 12.75pt;color:windowtext windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom" width="115"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;Datos   Preparados&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 12.75pt;"&gt;   &lt;td  style="border-style: none solid solid; padding: 0.75pt 0.75pt 0cm; background: rgb(51, 204, 204) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 12.75pt;color:-moz-use-text-color windowtext windowtext;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;KS&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: none solid solid none; padding: 0.75pt 0.75pt 0cm; height: 12.75pt;color:-moz-use-text-color windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;44&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: none solid solid none; padding: 0.75pt 0.75pt 0cm; height: 12.75pt;color:-moz-use-text-color windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;60&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="height: 12.75pt;"&gt;   &lt;td  style="border-style: none solid solid; padding: 0.75pt 0.75pt 0cm; background: rgb(51, 204, 204) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 12.75pt;color:-moz-use-text-color windowtext windowtext;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;R2&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: none solid solid none; padding: 0.75pt 0.75pt 0cm; height: 12.75pt;color:-moz-use-text-color windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;0.19&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td  style="border-style: none solid solid none; padding: 0.75pt 0.75pt 0cm; height: 12.75pt;color:-moz-use-text-color windowtext windowtext -moz-use-text-color;" nowrap="nowrap" valign="bottom"&gt;   &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;0.32&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;  &lt;/div&gt;&lt;br /&gt;&lt;span style=";font-family:Times;font-size:100%;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:georgia;"&gt;Con datos preparados el estadístico &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Times;font-size:14;"  &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:georgia;"&gt;KS (Kolmogorov-Smirnoff) mejora casi un 50% y el coeficiente de determinación mejora más de un 50%.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Un libro que desarrolla de manera excelente el tema de preparación de datos es &lt;a href="http://www.amazon.com/Preparation-Mining-Kaufmann-Management-Systems/dp/1558605290/ref=pd_bbs_sr_1/102-9409716-0077734?ie=UTF8&amp;amp;s=books&amp;amp;qid=1192057962&amp;amp;sr=8-1"&gt;Data Preparation for Data Mining&lt;/a&gt; de Dorian Pyle.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;  &lt;/div&gt;&lt;p class="MsoBodyTextIndent" style="text-indent: 0cm;"&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;span style="font-family:georgia;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-8344435580433062033?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/8344435580433062033/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=8344435580433062033' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/8344435580433062033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/8344435580433062033'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/10/la-importancia-de-preparar-los-datos.html' title='La importancia de preparar los datos'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1pmfjujlzUI/Rw1K6J6gIQI/AAAAAAAAABU/m0uuLyJBakY/s72-c/dist.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1878830333587702955.post-7234858134698426964</id><published>2007-10-10T06:13:00.000-07:00</published><updated>2009-04-21T15:24:36.780-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruido'/><category scheme='http://www.blogger.com/atom/ns#' term='Información'/><title type='text'>Powerhouse, una manera diferente de hacer Data Mining</title><content type='html'>Powerhouse es una herramienta de Data Mining basada en un enfoque completamente distinto que el usado normalmente para analizar datos.&lt;br /&gt;&lt;br /&gt;Cuando se intenta realizar un modelo de predicción, generalmente se &lt;span style="font-style: italic;"&gt;asume &lt;/span&gt;que los datos contienen la información  suficiente para lograr un buen modelo.&lt;br /&gt;&lt;br /&gt;Powerhouse no &lt;span style="font-style: italic;"&gt;supone &lt;/span&gt;que existe información, la &lt;span style="font-style: italic;"&gt;mide&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Claude Shannon detalló en su Teoría de la Información cómo es posible medir la información en bits usando un concepto llamado entropía.&lt;br /&gt;&lt;br /&gt;Powerhouse sienta sus bases en la Teoría de la Información y logra mejorar la práctica de hacer Data Mining mediante las siguientes ventajas que le otorga este enfoque:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Los datos son preparados automáticamente a fin de exponer al máximo la información que puedan contener&lt;/li&gt;&lt;li&gt;La selección de variables es un proceso directo, rápido y que garantiza un grupo óptimo de variables con información libre de ruido&lt;/li&gt;&lt;li&gt;Crea modelos de predicción simples de entender y con rendimientos similares a las redes neuronales&lt;/li&gt;&lt;li&gt;Descubre modelos de segmentación que exponen clusters naturales en los datos&lt;/li&gt;&lt;/ul&gt;El &lt;a href="http://www.dataxplore.com.ar/powerhouse.htm"&gt;sitio web &lt;/a&gt;de Powerhouse contiene información más detallada sobre sus características y ventajas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1878830333587702955-7234858134698426964?l=powerhousedm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://powerhousedm.blogspot.com/feeds/7234858134698426964/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1878830333587702955&amp;postID=7234858134698426964' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7234858134698426964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1878830333587702955/posts/default/7234858134698426964'/><link rel='alternate' type='text/html' href='http://powerhousedm.blogspot.com/2007/10/powerhouse-una-manera-diferente-de.html' title='Powerhouse, una manera diferente de hacer Data Mining'/><author><name>Marcelo R. Ferreyra</name><uri>http://www.blogger.com/profile/09788981697728043482</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://3.bp.blogspot.com/_1pmfjujlzUI/TVKp2dmZcLI/AAAAAAAAAQc/DgIriGrKM7Y/s220/Mrf.jpg'/></author><thr:total>0</thr:total></entry></feed>
