1. Porque???
    1. Lo ideal seria tener conocimiento previo de los datos y poder inferir ciertas hipotesis o relaciones entre los atributos.
    2. Sin embargo, no siempre se tiene este conocimiento. Con grandes volumenes de datos se recomienda EDA o GDA (análisis gráfico de datos).
    3. EDA o GDA permite
      1. Profundizar en el conjunto de datos.
      2. Examinar las interrelaciones entre los atributos.
      3. Identificar subconjuntos de casos interesantes.
      4. Desarrollar una idea inicial de las posibles relaciones entre los atributos y los objetivos de clase.
  2. Conociendo los datos
    1. Pero primero, que son los datos?
      1. AttributesVsObjects.png
      2. Una colección de objetos describen los datos.
      3. Los objetos también son conocidos como instancias, registros, casos, ejemplos u observaciones.
      4. Una colección de atributos describen a un objeto.
      5. Los atributos también son conocidos como variables, campos o características.
    2. Tipos de datos
      1. Cualitativos o Categóricos
        1. Atributos representan distintas categorias en lugar de números. Operaciones matemáticas no tienen sentido
          1. Nominales
          2. Categorias sin orden.
          3. Color de ojos: Azul, Verde, Negros.
          4. Ordinales
          5. Categorias donde el orden es significativo
          6. Talla: S, M, L, XL
        2. Códigos de área, color de ojos, IP Address, talla.
        3. Poseen solamente un conjunto finito de valores.
        4. A menudo son representados por valores enteros. EJ: Estrato, Notas.
        5. Tipo String, Boolean, Enum, ...
      2. Cuantitativos o numéricos
        1. Los atributos son números y pueden ser tratados como tales.
          1. Intervalos
          2. No hay cero absoluto. La división no tiene sentido.
          3. Fechas, puntajes de examenes
          4. Radios
          5. Existe el cero absoluto. La división aplica.
          6. Longuitud, Tiempo, Peso.
        2. Fechas, Calificaciones, Peso, fallas por hora, temperatura.
        3. Aunque son numerales poseen un numero finito de valores, dependiendo del tamaño del conjunto de datos.
        4. Pueden ser calculados tan precisamente como los instrumentos lo permitan.
        5. Tipo integer, float, double, ...
      3. Propiedades de los atributos.
        1. Comparación
        2. Orden
        3. Adición
        4. Multiplicación
    3. Obtención de los datos
      1. Experimental
        1. Describe datos que fueron recogidos por alguien quien ejerció un estricto control sobre todos los atributos
        2. Generalmente la info se extrae a travéz de instrumentos y experimentos.
        3. Dioxdio de carbono en la atmosfera Vs Temperatura de la tierra.
      2. Observacional
        1. Describe datos que fueron recopilados sin mayor control. Muchas veces los datos ya estaban ahi cuando llegamos.
        2. Generalmente la info se recoge a travéz del uso de formularios o encuestas.
        3. Consumo de Diet-Coke Vs Peso
      3. El problema radica en que mucha de la información usada en proyectos de minería de datos es observacional asi que hay que tomar precauciones.
  3. Trabajando con conjuntos de datos
    1. Paquetes de software
      1. R Project
      2. Mondrian
      3. WEKA
    2. Conjunto Churn.csv
      1. Entiendase por churn la persona que abandona los servicios de una compañia
      2. 20 variables, 3333 registros
    3. Detectando Correlación en las variables.
      1. Se dice que existen variables correlacionadas cuando unas variables dependen de otras.
      2. Proveer de datos correlacionados a un modelo puede volverlo inestable o generar resultados poco confiables.
      3. Ej: Day minutes, Day calls, Day charge
      4. Técnicas de detección
        1. Graficos de dispersión
          1. > data<-read.csv(".../churn.csv")
          2. > plot(data[,c(8,9,10)])
        2. Matrices de correlación
          1. > cor(data[,8:10])
        3. Regresión lineal
          1. > lm(data[,10] ~ data[,8])
          2. > summary(lm(data[,10] ~ data[,8]))
      5. Después de idetificar variables correlacionadas se debería eliminar una de ellas
      6. Se reduce la dimensionalidad del conjunto beneficiando el desempeño de los algoritmos
    4. Usando EDA para descubrir datos anómalos.
      1. El campo area code solo tiene 3 valores y todos pertenecen al estado de California
        1. Topic
      2. Sin embargo, una tabulación cruzada muestra una (+/-) igual distribución sobre todos los estados.
      3. Esto puede reflegar un error de los datos en los campos area code o state. Un análisis más profundo es requerido.
    5. Explorando variables categóricas
      1. A travéz de EDA nos podemos hacer una idea de la variables que harán parte de nuestro modelo.
      2. Uso de gráficas de barras para comparar la clase contra variables categóricas
        1. International Plan Vs Churn?
          1. Barchart normal
          2. Barchar con igual longuitud de barras
          3. > table(data[,5],data[,21])
          4. Mosaic Chart con Mondrian
          5. Qué concluimos?
          6. Debemos investigar porque los usuarios del Plan internacional tienden a abandonar la compañia.
          7. Futuras implementaciones de minería de datos deberían incluir la variable Plan Internacional.
        2. Voice Plan Vs Churn?
    6. Explorando variables numéricas.
      1. Medidas sobre datos numéricos.
        1. Metricas de resumen como el máximo, el mínimo y el rango de los datos.
        2. Métricas de centro como media, mediana y moda.
        3. Métricas de variabilidad como varianza, desviación estandar e Indice Intercuartil.
      2. Varias son accesible a travéz de R con la función summary(data). Otras funciones utiles son...
        1. mean(x)
        2. median(x)
        3. min(x)
        4. max(x)
        5. sd(x)
      3. Una diferencia considerable entre la media y la mediana puede indicar asimetria de los datos.
        1. Caso Voice mail messages y Customer service calls
        2. Pueden indicar la presencia de outliers o un particular comportamiento de los datos.
        3. Usando funciones personalizadas en R para determinar una 'Diferencia considerable'.
          1. Funcion getDifference devuelve una lista con la informacion de una columna en particular.
          2. Podemos programar directamente desde la línea de comandos pero es más comodo usar cualquier editor de texto.
          3. Por comodidad seteamos nuestro directorio de trabajo con... > setwd("/mi/directorio/de/trabajo")
          4. En un archivo con extension .R programo mis funciones.
          5. Llamamos las fuentes desde R con... > source("Archivo.R")
          6. Funcion showDifferenceMeanMedian devuelve una data.frame con la información de todas las columnas consultadas.
          7. El resultado final
          8. Consultando la documentación en R > ?row.names
          9. Asignación: Construir una función que resuma información relevante a la correlación entre las variables indicando si existe una relación Débil, Mediana o Fuerte.
          10. > cor(data[,7:20], data[,8])
          11. Los valores del coeficiente de correlacion varian de -1 a 1.
          12. 1 implica una alta correlacion positiva (directamente proporcianales).
          13. 0 significa que no existe ninguna relación entre las variables.
          14. -1 implica una alta correlación negativa (inversamente proporcionales).
          15. Los parametros de la función deberán ser el conjunto de datos, las variables comparadas, la variable a comparar. Ej: > new_cor(data, 7:20, 8)
          16. La función retorna un data.frame con dos columnas: el coeficiente de correlación y la etiqueta Débil, Mediana o Fuerte según sea el caso.
          17. Si 0 <= coeficiente <= 0.33 entonces "Débil".
          18. Si 0.33 < coeficiente <= 0.66 entonces "Mediana".
          19. Si 0.66 < coeficiente <= 1 entonces "Fuerte".
        4. ¿¿¿Diferencia considerable???
      4. Usando histogramas para analizar el comportamiento de variables númericas.
        1. Customer service calls
          1. Histograma de Customer service calls.
          2. Histograma normalizado de Customer service calls.
          3. Conclusiones
          4. A la tercera llamada deben prestarse atención e intensivos especiales.
          5. Indagar al interior del departamento de atención al cliente.
          6. Incluir la variable Customer service calls dentro de futuros proyectos KDD.
        2. Day minutes
          1. Se aplica la misma metodología.
          2. Que concluimos...
          3. Cuando el número de minutos pase de 200 deben aplicarse incentivos especiales.
          4. Investigar porque usuarios tan frecuentes tienden a dejar la compañia.
          5. Incluir Day minutes en futuros proyectos KDD.
        3. ¿Que ocurre con la variable Evening minutes?
    7. Explorando relaciones multivariables.
      1. Debido a la interacción entre las variables es posible identificar subconjuntos de datos que cumplen cierto patron.
      2. Day Minutes Vs Customer Service Calls
        1. Gráfico de dispersión Day Mins Vs Customer Service Calls
        2. Que concluimos...
          1. Consumidores con alto número de llamadas a atención al cliente y bajo número de llamadas durante el día tienden a dejar la compañia.
          2. Las personas con varias llamadas al dia casi no consultan el servicio de atención al cliente y abandonan la compañia.
      3. Evening Minutes Vs Day Minutes
        1. Gráfico de dispersión Eve Mins Vs Day Mins
        2. Los consumidores con alto indice de llamadas en el día y en la tarde son tres veces mas probables de que dejan la compañia.
    8. Resumen del análisis exploratorio de datos sobre el conjunto churn.
      1. Resumen EDA sobre churn.csv
        1. 1
          1. Anomalo. Omitido.
          2. State
        2. 2
          1. Account length
          2. No existe relación obvia con churn pero retenido.
        3. 3
          1. Area code
          2. Anomalo, Omitido.
        4. 4
          1. Phone number
          2. ID, Omitido.
        5. 5
          1. Intenational plan
          2. Predictor de churn, Retenido.
        6. 6
          1. VoiceMail plan
          2. Predictor de churn, Retenido.
        7. 7
          1. VoiceMail messages
          2. No existe relación obvia con churn pero retenido.
        8. 8
          1. Total day minutes
          2. Predictor de churn, Retenido.
        9. 9
          1. Total day calls
          2. No existe relación obvia con churn pero retenido.
        10. 10
          1. Total day charge
          2. Función de minutes, Omitido.
        11. 11
          1. Total evening minutes
          2. Posible predictor de churn, Retenido.
        12. 12
          1. Total evening calls
          2. No existe relación obvia con churn pero retenido.
        13. 13
          1. Total evening charge
          2. Función de minutes, Omitido.
        14. 14
          1. Total night minutes
          2. No existe relación obvia con churn pero retenido.
        15. 15
          1. Total night calls
          2. No existe relación obvia con churn pero retenido.
        16. 16
          1. Total night charge
          2. Función de minutes, Omitido.
        17. 17
          1. Total international minutes
          2. No existe relación obvia con churn pero retenido.
        18. 18
          1. Total international calls
          2. No existe relación obvia con churn pero retenido.
        19. 19
          1. Total international charge
          2. Función de minutes, Omitido.
        20. 20
          1. Customer service calls
          2. Predictor de churn, Retenido.