9/4/2018

Contenido

  • Presentación
  • Caso de estudio

Caso de estudio

LastFM y otras personas de la industria musical te han entregado una base de datos que tiene un conjunto de preferencias musicales por usuario (users_artist.csv). Ellos quieren conocer posibles relaciones de artistas que se escuchan frecuentemente de manera conjunta, de forma tal que se pueda apalancar el portafolio de productos y artistas por diferentes medios. Ellos quieren saber que acciones tomar a partir de esas relaciones encontradas, así mismo, están muy curiosos por saber qué pudiese ser valioso para comprender las dinámicas del comportamiento de sus usuarios o enriquecer su portafolio de productos.

tomado de la prueba Data Alchemist

Conformación de la base de datos

  • Se importan las BBDD;
  • Se visualizan las variables;
  • Se limpia la BBDD;
  • Se contruye una nueva base de datos a través de los cruces seleccionados

## Parsed with column specification:
## cols(
##   userID = col_integer(),
##   artistID = col_integer(),
##   weight = col_integer()
## )
## Parsed with column specification:
## cols(
##   tagID = col_integer(),
##   tagValue = col_character()
## )
## Parsed with column specification:
## cols(
##   userID = col_integer(),
##   artistID = col_integer(),
##   tagID = col_integer(),
##   day = col_integer(),
##   month = col_integer(),
##   year = col_integer()
## )
## Parsed with column specification:
## cols(
##   artistID = col_integer(),
##   name = col_character(),
##   url = col_character(),
##   pictureURL = col_character()
## )

User_artist

## Observations: 92,834
## Variables: 3
## $ userID   <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,...
## $ artistID <int> 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6...
## $ weight   <int> 13883, 11690, 11351, 10300, 8983, 6152, 5955, 4616, 4...
userID artistID weight
2 51 13883
2 52 11690
2 53 11351
2 54 10300
2 55 8983

tags

## Observations: 11,946
## Variables: 2
## $ tagID    <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16...
## $ tagValue <chr> "metal", "alternative metal", "goth rock", "black met...
## Warning in kable_styling(., font_size = 2): Please specify format in
## kable. kableExtra can customize either HTML or LaTeX outputs. See https://
## haozhu233.github.io/kableExtra/ for details.
tagID tagValue
1 metal
2 alternative metal
3 goth rock
4 black metal
5 death metal

Artistas

## Observations: 17,632
## Variables: 4
## $ artistID   <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, ...
## $ name       <chr> "MALICE MIZER", "Diary of Dreams", "Carpathian Fore...
## $ url        <chr> "http://www.last.fm/music/MALICE+MIZER", "http://ww...
## $ pictureURL <chr> "http://userserve-ak.last.fm/serve/252/10808.jpg", ...
## Warning in kable_styling(., font_size = 2): Please specify format in
## kable. kableExtra can customize either HTML or LaTeX outputs. See https://
## haozhu233.github.io/kableExtra/ for details.
artistID name url pictureURL
1 MALICE MIZER http://www.last.fm/music/MALICE+MIZER http://userserve-ak.last.fm/serve/252/10808.jpg
2 Diary of Dreams http://www.last.fm/music/Diary+of+Dreams http://userserve-ak.last.fm/serve/252/3052066.jpg
3 Carpathian Forest http://www.last.fm/music/Carpathian+Forest http://userserve-ak.last.fm/serve/252/40222717.jpg
4 Moi dix Mois http://www.last.fm/music/Moi+dix+Mois http://userserve-ak.last.fm/serve/252/54697835.png
5 Bella Morte http://www.last.fm/music/Bella+Morte http://userserve-ak.last.fm/serve/252/14789013.jpg

User_tagger

## Observations: 186,479
## Variables: 6
## $ userID   <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,...
## $ artistID <int> 52, 52, 52, 52, 52, 63, 63, 63, 63, 73, 73, 73, 73, 7...
## $ tagID    <int> 13, 15, 18, 21, 41, 13, 14, 23, 40, 13, 14, 15, 18, 2...
## $ day      <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,...
## $ month    <int> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,...
## $ year     <int> 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009, 2009,...
## Warning in kable_styling(., font_size = 2): Please specify format in
## kable. kableExtra can customize either HTML or LaTeX outputs. See https://
## haozhu233.github.io/kableExtra/ for details.
userID artistID tagID day month year
2 52 13 1 4 2009
2 52 15 1 4 2009
2 52 18 1 4 2009
2 52 21 1 4 2009
2 52 41 1 4 2009

Cruce de la base de datos

Exploratoria de la Base de Datos

Se genera una estadística exploratoria para reconocer los componentes de la base de datos, se toma el año, como variable de interés para conocer el total de productos como variable resultante, se toma la secuencia de 2005-2011

##      tagID           userID       artistID.x        weight        
##  Min.   :    1   Min.   :   2   Min.   :    1   Min.   :     1.0  
##  1st Qu.:   79   1st Qu.: 488   1st Qu.:  475   1st Qu.:   152.0  
##  Median :  195   Median :1021   Median : 1401   Median :   341.0  
##  Mean   : 1432   Mean   :1035   Mean   : 3538   Mean   :   880.6  
##  3rd Qu.:  853   3rd Qu.:1624   3rd Qu.: 4793   3rd Qu.:   793.0  
##  Max.   :12647   Max.   :2100   Max.   :18745   Max.   :352698.0  
##      name               url             pictureURL          artistID.y   
##  Length:9277108     Length:9277108     Length:9277108     Min.   :    1  
##  Class :character   Class :character   Class :character   1st Qu.:  687  
##  Mode  :character   Mode  :character   Mode  :character   Median : 2203  
##                                                           Mean   : 4367  
##                                                           3rd Qu.: 6706  
##                                                           Max.   :18744  
##       day            month             year        tagValue        
##  Min.   :1.000   Min.   : 1.000   Min.   :1956   Length:9277108    
##  1st Qu.:1.000   1st Qu.: 3.000   1st Qu.:2008   Class :character  
##  Median :1.000   Median : 7.000   Median :2009   Mode  :character  
##  Mean   :1.095   Mean   : 6.528   Mean   :2009                     
##  3rd Qu.:1.000   3rd Qu.:10.000   3rd Qu.:2010                     
##  Max.   :9.000   Max.   :12.000   Max.   :2011

Se eliminan las variables que por el momento no son necesarias, pero se fija un nivel de más de 150 AIC en la variable año

## # A tibble: 7 x 2
##    year   total
##   <int>   <int>
## 1  2005  124150
## 2  2006  490580
## 3  2007 1018571
## 4  2008 2011003
## 5  2009 2146503
## 6  2010 2737667
## 7  2011  748384

Generos que más se escuchan

Se identifica por año cual de estos géneros predomino

Es de notar que desde la música electrónica hasta el rock, la frecuencia de escucha es más alta dado el año, aunque lo más interesante viene dado por la forma como los géneros tienden a representarse, si se ve de manera agregada, se puede apreciar lo siguiente

Para terminar con el análisis exploratorio se procede hacer un proceso desde la validación de lo que se obtuvo a través de los artistas

¿Qué son las reglas de asociación?

Una de las definiciones más practicas sobre las reglas de asociación la da IBM , donde la define de la siguiente manera > Relaciona una determinada conclusión […] con un conjunto de condiciones. [^1]

Otra definición, una más enciclopédica dice que las reglas de asociación estudian las ocurrencias de un evento dentro de un conjunto de datos, dadas las diferentes medidas de interés (ítems), por ello es importante conocer la estructura en que viene la base de datos, puesto que el método de aprendizaje que presentan las reglas deben ser coherente con el objeto de estudio.

El anterior concepto se estructura de la definición regla fuerte[^2] asociada a grandes volumenes de datos por ello en la ciencia de datos las reglas de asociación son de gran uso, dado la obtención de conocimiento útil por una variable (la cual será llamada transacción en lenguaje técnico).

Un articulo llamado "REGLAS DE ASOCIACIÓN APLICADAS A LA DETECCIÓN DE FRAUDE CON TARJETAS DE CRÉDITOS" dice que :

Las reglas de asociación son implicaciones que relacionan la presencia de ítem en las transacciones. Las transacciones son la estructura básica desde donde las reglas de asociación son obtenidas.

Un ejemplo típico de las reglas de asociación es la mayoria de personas que compran pan , compran leche , en lenguaje matemático sería: \[F(PAN)\Rightarrow Leche\] Donde, la parte izquierda se le llama antecedente y a la derecha consecuente. La definición más formal se dará en el siguiente apartado.

La definición que da Agrawal[^4] es sumamente interesante desde la óptica del desarrollo y abstracción donde \(X= \{i_1,i_2,...i_n\} \mbox{ son los items}\) Entonces \(D\) son los set (o escenarios) donde se realizan las transacciones, y \(T\) son las transacciones pertenecientes a \(X\), por lo tanto \(T\subseteq X\) [^5]

Una parte importante para entender este argumento viene dado por el confidence el cual mide la confiabilidad en que está dada la regla , por lo tanto \(X \Rightarrow Y \mbox{ entonces viene dado por la transacción } D \mbox{ con confiabilidad del } c\%\)

Otra parte importante en la construcción de la regla de asociación es el support, el cual es la frecuencia relativa de una regla dada el total de las transacciones. Por lo tanto \(X \Rightarrow Y \mbox{ tiene support} s \mbox{ en las transacciones del set } D\)

A tener en cuenta

  • El usuario proporciona el número de antecedentes a tener en cuenta
  • Usando la teoría de la información puede reducir o ampliar el espacio de búsqueda

Definición formal de las variables

Estás definiciones son de las variables como las llama R

  • lhs (left-hand-sides): Es el antecedente o causa del efecto a estudiar.
  • rhs(right-hand-sides): Es el resultado que se obtiene como consecuencia del lhs definida.
  • Support: Frecuencia Relativa del total de las transacciones
  • Confidence: Confiabilidad de la regla
  • Lift: Calcula el nivel de certeza de la regla (similar al \(R^2\))

## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##        0.01    0.1    1 none FALSE            TRUE       5    0.01      1
##  maxlen target   ext
##      10  rules FALSE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 0 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[33 item(s), 62 transaction(s)] done [0.00s].
## sorting and recoding items ... [33 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 done [0.00s].
## writing ... [41 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].

## set of 41 rules

##      lhs                     rhs                  support    confidence
## [1]  {Black Eyed Peas}    => {Avril Lavigne}      0.01612903 1.00000000
## [2]  {Kings of Leon}      => {Katy Perry}         0.01612903 1.00000000
## [3]  {30 Seconds to Mars} => {The Killers}        0.01612903 1.00000000
## [4]  {Avril Lavigne}      => {Black Eyed Peas}    0.01612903 0.50000000
## [5]  {Katy Perry}         => {Kings of Leon}      0.01612903 0.33333333
## [6]  {The Killers}        => {30 Seconds to Mars} 0.01612903 0.33333333
## [7]  {Coldplay}           => {Lady Gaga}          0.01612903 0.33333333
## [8]  {Lady Gaga}          => {Coldplay}           0.01612903 0.25000000
## [9]  {}                   => {The Beatles}        0.08064516 0.08064516
## [10] {}                   => {Radiohead}          0.06451613 0.06451613
##      lift     
## [1]  31.000000
## [2]  20.666667
## [3]  20.666667
## [4]  31.000000
## [5]  20.666667
## [6]  20.666667
## [7]   5.166667
## [8]   5.166667
## [9]   1.000000
## [10]  1.000000

##    names.itemFrequency.datos.. Frecuencia
## 32                 The Beatles 0.08064516
## 5               Britney Spears 0.06451613
## 8                 Depeche Mode 0.06451613
## 15                   Lady Gaga 0.06451613
## 18                     Madonna 0.06451613
## 29                   Radiohead 0.06451613
## 31                     Rihanna 0.06451613
## 7                     Coldplay 0.04838710
## 10                  Katy Perry 0.04838710
## 22                        Muse 0.04838710
## 33                 The Killers 0.04838710
## 2                Avril Lavigne 0.03225806
## 20             Michael Jackson 0.03225806
## 25                    Paramore 0.03225806
## 1           30 Seconds to Mars 0.01612903
## 3               Beyonc\xed\xa9 0.01612903
## 4              Black Eyed Peas 0.01612903
## 6           Christina Aguilera 0.01612903
## 9                    Green Day 0.01612903
## 11                       Ke$ha 0.01612903
## 12              Kelly Clarkson 0.01612903
## 13               Kings of Leon 0.01612903
## 14               Kylie Minogue 0.01612903
## 16                Led Zeppelin 0.01612903
## 17                 Linkin Park 0.01612903
## 19                Mariah Carey 0.01612903
## 21                 Miley Cyrus 0.01612903
## 23                     Nirvana 0.01612903
## 24                        P!nk 0.01612903
## 26                  Pink Floyd 0.01612903
## 27                     Placebo 0.01612903
## 28                       Queen 0.01612903
## 30       Red Hot Chili Peppers 0.01612903
##     lhs                     rhs                  support    confidence
## [1] {Black Eyed Peas}    => {Avril Lavigne}      0.01612903 1.0000000 
## [2] {Kings of Leon}      => {Katy Perry}         0.01612903 1.0000000 
## [3] {30 Seconds to Mars} => {The Killers}        0.01612903 1.0000000 
## [4] {Avril Lavigne}      => {Black Eyed Peas}    0.01612903 0.5000000 
## [5] {Katy Perry}         => {Kings of Leon}      0.01612903 0.3333333 
## [6] {The Killers}        => {30 Seconds to Mars} 0.01612903 0.3333333 
## [7] {Coldplay}           => {Lady Gaga}          0.01612903 0.3333333 
## [8] {Lady Gaga}          => {Coldplay}           0.01612903 0.2500000 
##     lift     
## [1] 31.000000
## [2] 20.666667
## [3] 20.666667
## [4] 31.000000
## [5] 20.666667
## [6] 20.666667
## [7]  5.166667
## [8]  5.166667

Estas ocho (8) combinaciones fortalece el portafolio de la empresa y genera un aumento el blindaje que busca la empresa.

Por genero

## Apriori
## 
## Parameter specification:
##  confidence minval smax arem  aval originalSupport maxtime support minlen
##        0.01    0.1    1 none FALSE            TRUE       5    0.01      1
##  maxlen target   ext
##      10  rules FALSE
## 
## Algorithmic control:
##  filter tree heap memopt load sort verbose
##     0.1 TRUE TRUE  FALSE TRUE    2    TRUE
## 
## Absolute minimum support count: 0 
## 
## set item appearances ...[0 item(s)] done [0.00s].
## set transactions ...[9 item(s), 62 transaction(s)] done [0.00s].
## sorting and recoding items ... [9 item(s)] done [0.00s].
## creating transaction tree ... done [0.00s].
## checking subsets of size 1 2 done [0.00s].
## writing ... [15 rule(s)] done [0.00s].
## creating S4 object  ... done [0.00s].

## set of 15 rules

##      lhs                   rhs                support    confidence
## [1]  {female vocalists} => {rock}             0.03225806 0.40000000
## [2]  {}                 => {rock}             0.38709677 0.38709677
## [3]  {}                 => {pop}              0.29032258 0.29032258
## [4]  {indie}            => {rock}             0.01612903 0.20000000
## [5]  {}                 => {alternative}      0.09677419 0.09677419
## [6]  {rock}             => {female vocalists} 0.03225806 0.08333333
## [7]  {}                 => {indie}            0.08064516 0.08064516
## [8]  {}                 => {female vocalists} 0.08064516 0.08064516
## [9]  {}                 => {dance}            0.06451613 0.06451613
## [10] {pop}              => {rock}             0.01612903 0.05555556
##      lift     
## [1]  1.0333333
## [2]  1.0000000
## [3]  1.0000000
## [4]  0.5166667
## [5]  1.0000000
## [6]  1.0333333
## [7]  1.0000000
## [8]  1.0000000
## [9]  1.0000000
## [10] 0.1435185

Por lo tanto el fortalecimiento durante el periodo de estudio se da con forme a las relaciones de genero , con el Rock que genera derivaciones importantes a través del consumo de female vocalist, Indie, y se tiene en cuenta que El pop y la música alternativa tienen independencia en los géneros, por ello se diseña el portafolio a través de los artistas

##     lhs                     rhs                  support    confidence
## [1] {Black Eyed Peas}    => {Avril Lavigne}      0.01612903 1.0000000 
## [2] {Kings of Leon}      => {Katy Perry}         0.01612903 1.0000000 
## [3] {30 Seconds to Mars} => {The Killers}        0.01612903 1.0000000 
## [4] {Avril Lavigne}      => {Black Eyed Peas}    0.01612903 0.5000000 
## [5] {Katy Perry}         => {Kings of Leon}      0.01612903 0.3333333 
## [6] {The Killers}        => {30 Seconds to Mars} 0.01612903 0.3333333 
## [7] {Coldplay}           => {Lady Gaga}          0.01612903 0.3333333 
## [8] {Lady Gaga}          => {Coldplay}           0.01612903 0.2500000 
##     lift     
## [1] 31.000000
## [2] 20.666667
## [3] 20.666667
## [4] 31.000000
## [5] 20.666667
## [6] 20.666667
## [7]  5.166667
## [8]  5.166667

Conclusiones

Gracias!!!