regresión lineal - minería de datos con python

31
Regresi´onLineal Miner´ ıa de datos con python Miguel C´ ardenas Montes Centro de Investigaciones Energ´ eticas Medioambientales y Tecnol´ogicas, Madrid, Spain [email protected] 2-6 de Noviembre de 2015 M. C´ ardenas (CIEMAT) Regresi´onLineal 2-6 de Noviembre de 2015 1 / 31

Upload: ngodiep

Post on 11-Feb-2017

225 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Regresión Lineal - Minería de datos con python

Regresion Lineal

Minerıa de datos con python

Miguel Cardenas Montes

Centro de Investigaciones Energeticas Medioambientales y Tecnologicas,Madrid, Spain

[email protected]

2-6 de Noviembre de 2015

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 1 / 31

Page 2: Regresión Lineal - Minería de datos con python

Tabla de Contenidos

1 Objetivos

2 Introduccion

3 Ejemplo Numerico

4 Sobreajuste en Regresion

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 2 / 31

Page 3: Regresión Lineal - Minería de datos con python

Objetivos

Conocer la tecnica de regresion lineal.

Conocer la tecnica de regresion polinomica.

Aspectos Tecnicos

Regresion Lineal, y Regresion Polinomica.

Sobreajuste

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 3 / 31

Page 4: Regresión Lineal - Minería de datos con python

Introduccion

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 4 / 31

Page 5: Regresión Lineal - Minería de datos con python

Regresion Lineal I

La tecnica de regresion lineal es una de las mas populares en minerıade datos y en cualquier disciplina cientıfica. Incluso mas alla de laminerıa de datos.

Sin embargo es suficientemente sencilla para introducir otrosconceptos.

Tiene puntos en comun con otros algoritmos mas complicados.

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 5 / 31

Page 6: Regresión Lineal - Minería de datos con python

Regresion Lineal II

¿Cual es la recta que mejor se ajusta a estos puntos?

0 1 2 3 4 5X

0

1

2

3

4

5Y

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 6 / 31

Page 7: Regresión Lineal - Minería de datos con python

Regresion Lineal III

Esta recta tiene apariencia de ajustar mal.

0 1 2 3 4 5X

0

1

2

3

4

5Y

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 7 / 31

Page 8: Regresión Lineal - Minería de datos con python

Regresion Lineal IV

Esta recta produce el ajuste optimo.¿Como se puede automatizar la busqueda de este optimo,hθ(x) = θ0 + θ1 · x?

0 1 2 3 4 5X

0

1

2

3

4

5

Y

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 8 / 31

Page 9: Regresión Lineal - Minería de datos con python

Regresion Lineal V

El objetivo es optimizar hθ(x) = θ0 + θ1 · x , y por lo tanto los valoresde θ0 y θ1.

Para este proposito se puede componer una funcion de coste, cuyomınimo permite obtener los valores optimos de θ0 y θ1.

Funcion de coste J(θ0, θ1) =12m

∑puntos(hθ(x

i )− y i )2, donde m es elnumero de puntos.

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 9 / 31

Page 10: Regresión Lineal - Minería de datos con python

Regresion Lineal VI

Como minimizar la funcion de costeJ(θ0, θ1) =

12m

∑puntos(hθ(x

i )− y i )2.

Exiten multiples metodos para minimizar cualquier funcion:montecarlo, algoritmos evolutivos, gradiente descendiente, etc.

Muchos algoritmos de minerıa de datos tienen una funcion de costefacilmente reconocible y cuyo mınimo en muchos casos puedecalcularse con metodos analıticos. Por ejemplo, kmeans, SVM,regresion logıstica, etc.

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 10 / 31

Page 11: Regresión Lineal - Minería de datos con python

Regresion Lineal VII

Si los datos tienen una dimensionalidad mas alta (mas atributos) sepuede ampliar la hipotesis al resto de variabbles,hθ(x) = θT x = θ0x0 + θ1x1 + · · ·+ θnxn.

Ası la funcion de coste es: J(θ0, θ1, . . . , θn) =12m

∑mi=1(hθ(x

i )− y i )2.

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 11 / 31

Page 12: Regresión Lineal - Minería de datos con python

Regresion Lineal VIII

O por el contrario se puede utilizar un polinomio de mayor grado:hθ(x) = θT x = θ0 + θ1x + θ2x

2.

La funcion de coste J se contruye de forma equivalenteJ = 1

2m

∑mi=1(hθ(x

i )− y i )2.

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 12 / 31

Page 13: Regresión Lineal - Minería de datos con python

Regresion Lineal IX

¿Cual es el mejor ajuste? ¿La que de el mınimo mas bajo en lafuncion de coste?

¿Que pasa si se aumenta el grado del polinomio?

0 1 2 3 4 5X

0

1

2

3

4

5

Y

0 1 2 3 4 5X

0

1

2

3

4

5

Y

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 13 / 31

Page 14: Regresión Lineal - Minería de datos con python

Regresion Lineal X

A medida que se aumenta el grado del polinomio el valor mınimo dela funcion de coste desciende.

Para grados elevados el mınimo es cero, ya que el polinomio pasarapor todos los puntos.

¿Es esto adecuado?

¿Como varıa la capacidad de prediccion de nuevos valores a medidaque se aumenta el grado del polinomio?

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 14 / 31

Page 15: Regresión Lineal - Minería de datos con python

Regresion Lineal XI

Hay una tendencia hacia el uso de datos no ”idealizados”: sucios,ruidosos, con incertidumbres, altamente dimensionales (maldicion dela dimensionalidad).

¿Como se pueden manejar estos datos?

−1 0 1 2 3 4 5 6 7 8X

0

2

4

6

8

10

Y

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 15 / 31

Page 16: Regresión Lineal - Minería de datos con python

Ejemplo Numerico: python

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 16 / 31

Page 17: Regresión Lineal - Minería de datos con python

Regresion Lineal XII

import numpy as np

import pylab as pl

from sklearn import datasets, linear_model

import random

# Datos

x1=[[0.4],[1.1],[2.1],[2.9],[3.1],[4.2],[4.5]]

y1=[0.6,1.0,1.9,3.2,3.0,4.1,4.4]

# Create linear regression object

regr = linear_model.LinearRegression()

# Train the model using the training sets

regr.fit(x1,y1)

# The coefficients

print(’Coefficients: \n’, regr.coef_, regr.intercept_)

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 17 / 31

Page 18: Regresión Lineal - Minería de datos con python

Regresion Lineal XIII

pl.figure(1)

pl.plot(x1, regr.predict(x1), color=’black’, linewidth=3)

pl.scatter(x1, y1, s=40, marker=’o’, color=’k’)

pl.xlabel(’X’)

pl.ylabel(’Y’)

pl.xlim(.0, 5.0)

pl.ylim(.0, 5.0)

pl.show()

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 18 / 31

Page 19: Regresión Lineal - Minería de datos con python

Ejemplo Numerico: R

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 19 / 31

Page 20: Regresión Lineal - Minería de datos con python

Regresion Lineal XIII

# valores eje x

x1<-c(0.4,1.1,2.1,2.9,3.1,4.2,4.5)

# valores eje y

y1<-c(0.6,1.0,1.9,3.2,3.0,4.1,4.4)

# ajuste por regresion lineal de las dos variables

fit1 <- lm(y1 ~ x1)

# valores del ajuste

fit1

fit1$coefficients

# nuevos valores de x para hacer la prediccion

xnew<- seq(0,5,length.out=100)

# plot

plot(y1~ x1)

lines(xnew,predict(fit1,data.frame(x1=xnew)),col="blue",lty = 2)

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 20 / 31

Page 21: Regresión Lineal - Minería de datos con python

Regresion Lineal XIV

1 2 3 4

12

34

x1

y1

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 21 / 31

Page 22: Regresión Lineal - Minería de datos con python

Regresion No Lineal XV

# valores eje x

x1<-c(0.4,1.1,2.1,2.9,3.1,4.2,4.5)

# valores eje y

y1<-c(0.6,1.0,1.9,3.2,3.0,4.1,4.4)

# ajuste por regresion lineal de las dos variables

fit3 <- lm(y1 ~ poly(x1,3))

# valores del ajuste

fit3

fit3$coefficients

# nuevos valores de x para hacer la prediccion

xnew<- seq(0,5,length.out=100)

# plot

plot(y1~ x1)

lines(xnew,predict(fit3,data.frame(x1=xnew)),col="blue",lty = 2)

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 22 / 31

Page 23: Regresión Lineal - Minería de datos con python

Regresion Lineal XVI

1 2 3 4

12

34

x1

y1

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 23 / 31

Page 24: Regresión Lineal - Minería de datos con python

Sobreajuste en Regresion

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 24 / 31

Page 25: Regresión Lineal - Minería de datos con python

Sobreajuste I

El problema asociado asobreajustar el modelo(aprendizaje supervisado) a unconjunto particular de datos,produce una reduccion de lacapacidad de prediccion delmodelo y de su calidad.

0 2 4 6 80

24

68

1012

x

y

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 25 / 31

Page 26: Regresión Lineal - Minería de datos con python

Sobreajuste II

x=c(0.3,0.4,1.0,1.1,1.4,2.0,2.1,2.9,3.1,3.4,

4.0,4.1,4.2,4.5,5.0,5.7,6.0,6.2,6.5,6.6)

y=c(1.6,1.3,0.9,0.8, 0.6, 1.1,1.7,1.2,2.5,

3.2,3.0,3.3,4.1,4.9,6.4,8.2,8.6,8.9,9.1,9.4)

plot(x,y, xlim=c(0,8), ylim=c(-1,12))

fit1 <- lm( y~x )

fit2 <- lm( y~poly(x,2) )

fit3 <- lm( y~poly(x,3) )

fit9 <- lm( y~poly(x,9) )

xx <- seq(0,11, length.out=250)

lines(xx, predict(fit1, data.frame(x=xx)), col=’green’)

lines(xx, predict(fit2, data.frame(x=xx)), col=’blue’)

lines(xx, predict(fit3, data.frame(x=xx)), col=’red’)

lines(xx, predict(fit9, data.frame(x=xx)), col=’black’)

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 26 / 31

Page 27: Regresión Lineal - Minería de datos con python

Sobreajuste III

> sum((fit1$residuals)^2)

[1] 25.25412

> sum((fit2$residuals)^2)

[1] 4.704565

> sum((fit3$residuals)^2)

[1] 3.307735

> sum((fit9$residuals)^2)

[1] 1.889394

A medida que se aumenta el grado delpolinomio desciende el error (suma delos residuos al cuadrado).

¿Si se aumenta el grado del polinomiomejoramos la representacion de losdatos de entrenamiento? (Sı, No)

¿Si se aumenta el grado del polinomiomejoramos la capacidad de prediccionsobre nuevos datos? (Sı, No)

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 27 / 31

Page 28: Regresión Lineal - Minería de datos con python

Sobreajuste IV

0 2 4 6 8

02

46

810

12

x

y

¿Si se aumenta el grado delpolinomio mejoramos larepresentacion de los datos deentrenamiento? (Sı, No)

¿Si se aumenta el grado delpolinomio mejoramos lacapacidad de prediccion sobrenuevos datos? (Sı, No)

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 28 / 31

Page 29: Regresión Lineal - Minería de datos con python

Sobreajuste V

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 29 / 31

Page 30: Regresión Lineal - Minería de datos con python

Material Adicional

Documentos de: regresion lineal, tratamiento de regresion lineal con datoscon incertidumbre, que es el sobreajuste, como evitarlo (regularizacion),aplicacion de analisis de componentes principales para reducir el numerode atributos (dimensionalidad) del problema.

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 30 / 31

Page 31: Regresión Lineal - Minería de datos con python

Gracias

Gracias

¿Preguntas?

¿Mas preguntas?

M. Cardenas (CIEMAT) Regresion Lineal 2-6 de Noviembre de 2015 31 / 31