Professional Documents
Culture Documents
Modelaje y Optimización PAC1
Modelaje y Optimización PAC1
Presentació
Moltes vegades es fa la broma de que la intel·ligència artificial no és res més que una qüestió d’a-
justament de corbes. Quina part té això de cert? La majoria de models d’aprenentatge automàtic
es construeixen buscant, dintre d’un cert tipus de funcions (siguin lineals, arbres de decisió, xarxes
neuronals. . . ), quina és la que s’ajusta millor a les nostres dades. Tècnicament, aquestes funci-
ons depenen de certs paràmetres. I per tant, fer un ajust consisteix en trobar quins paràmetres
minimitzen l’error entre el que prediu la funció i les dades que tenim.
Competències
En aquesta pràctica es treballen les següents competències del Grau en Ciència de Dades Aplicada:
• Que els estudiants hagin desenvolupant aquelles habilitats d’aprenetatge necessàries per con-
tinuar amb estudies posteriors amb un alt grau d’autonomia.
• Fer servir de forma combinada els fonaments matemàtics, estadı́stics i de programació per a
desenvolupar solucions a problemes en l’àmbit de la ciència de dades.
• Resumir, interpretar, presentar i contrastar de forma crı́tica els resultats obtinguts fent servir
les eines d’anàlisi i visualització adecuades.
Objectius
• Entendre quines són les condicions i les intuicions per a trobar mı́nims de funcions sense
restriccions.
• Ser capaç de programar el mètode del gradient per resoldre problemes d’optimització sense
restriccions.
• Entendre quin rol pren l’optimització en l’aprenentatge automàtic. Veure quin és el plante-
jament tı́pic d’ajust de models.
1
22.406 · Modelatge i Optimització · PAC2
2020-21-Sem.1 · Grau en Ciència de Dades Aplicada
Estudis d’Informàtica, Multimèdia i Telecomunicació
Descripció de la PAC
Una de les tècniques més populars en sistemes de recomanació (de llibres, sèries, etc) es basa en
factoritzar la matriu que determina quins usuaris han consumit quins objectes, com a producte
de dues matrius. L’objectiu d’aquesta activitat és programar un sistema de recomanació de dues
maneres diferents
• Mitjançant el mètode de Mı́nims Quadrats Alternats (ALS en anglès), fent servir la regressió
lineal.
• Amb el métode del descens del gradient estocàstic
Recursos
Recursos Bàsics
• Document ”Guia d’estudi optimització sense restriccions ”
• Referència ”Boyd & Vandenberghe, Convex Optimization, Secció 3.1, pp. 67-78”
Recursos Complementaris
• Document ”Hands-On Programming with R”
• Curs ”Introduction to R”
• Curs ”Intermediate R”
Criteris d’avaluació
• La pràctica s’ha de resoldre de manera individual.
2
22.406 · Modelatge i Optimització · PAC2
2020-21-Sem.1 · Grau en Ciència de Dades Aplicada
Estudis d’Informàtica, Multimèdia i Telecomunicació
Tingueu en compte que aquesta activitat representa un 25% sobre el total de la nota de les PAC.
Per a més informació sobre el model d’avaluació de l’assignatura, consulteu el pla docent.
Cal lliurar un únic document PDF amb les respostes de tots els exercicis. Cal realitzar la PAC
amb un processador de textos, no s’acceptaran solucions a mà i escanejades.
3
22.406 · Modelatge i Optimització · PAC2
2020-21-Sem.1 · Grau en Ciència de Dades Aplicada
Estudis d’Informàtica, Multimèdia i Telecomunicació
L’objectiu d’aquesta PAC és programar un sistema de recomanació basat en factorització de ma-
trius. Es parteix de la base que les dades venen donades per una matriu usuari-ı́tem de dimensions
n × m, on n és el nombre d’usuaris i m és el nombre d’ı́tems. En cada cel·la hi haurà un 0 o un 1,
determinant si aquell usuari ha consumit o no aquell ı́tem.
1 0 1 0
1 1 0 0
Per exemple, en aquesta matriu veiem que l’usuari 1 ha consumit els ı́tems 1 i 3. Voldrı́em, a
partir d’aqueste informació, ser capaços de fer una nova recomanació (ı́tems que els hi puguin ser
interessants, i que no hagin vist encara) per a cada un dels usuaris. L’idea subjacent és que si dos
usuaris tenen gustos en comú, es pot fer servir els gustos d’un per a fer suggeriments a l’altre.
yu,i = βu vi + εu,i
La variable εu,i representa el terme d’error no explicat pel vector descriptiu vi . O anàlogament
tambè podriem pensar que tenim una descripció de l’usuari (edat, gènere, etc.), i intentar aplicar
un model lineal per cada pelı́cula amb tots els usuaris. Però tal i com hem plantejat el problema
(perquè en la realitat pot passar), no tenim cap de les dues informacions.
yu,i ∼ xu vi
El problema d’optimització es proposa de la següent manera. Partint que tenim la matriu amb
cel·les yu,i , busquem els vectors vi , xu per cada u, i de manera que minimitzin l’error
X
min p (yu,i − vi xu )2
vi ,xu ∈R
u,i
4
22.406 · Modelatge i Optimització · PAC2
2020-21-Sem.1 · Grau en Ciència de Dades Aplicada
Estudis d’Informàtica, Multimèdia i Telecomunicació
Observacions:
• En aquests mètodes, tot i que les variables yu,i són binàries, s’aproximen per productes
escalars. Malgrat el resultat vi xu seria natural que s’interpretès com la probabilitat de
consumir o no l’ı́tem, passa sovint que el resultat numèric no està en l’intèrval [0, 1]. En
realitat el resultat de vi xu és una puntuació que ordena la prioritat dels resultats
• Hi hà un paràmetre p que és la llargada del vector descriptiu. Aquest és un hiperparàmetre
que en aprenentatge automàtic s’afina amb validació creuada (no explicarem aquı́ què és la
validació creuada, això correspon a un curs d’aprenentatge automàtic).
!
X X X
min p (yu,i − vi xu )2 + λ kvi k22 + kxu k22 ,
vi ,xu ∈R
u,i i u
2
P
P λ > 0.2 Per entendre què aporta aquesta variació, hem considerar que el factor λ( i kvi k2 +
on
u kxu k2 ) penalitza que les solucions prenguin valors molt alts, d’una manera molt similar al ridge
regression (vegueu l’apartat 2.2.2 de la guia d’estudi).
Entrega: A part de les preguntes teòriques, s’ha d’entregar un script en R, que llegeixi un csv,
on hi haurà la descripció d’una matriu (sense noms de columnes ni files) i escrigui per pantalla,
de cada usuari (en ordre), dels ı́tems que no ha consumit, quin tindrà més probabilitat de ser
consumit, i escriure-ho en un archiu.
Important: El script s’haurà de poder executar mitjançant una commanda per consola de l’estil
5
22.406 · Modelatge i Optimització · PAC2
2020-21-Sem.1 · Grau en Ciència de Dades Aplicada
Estudis d’Informàtica, Multimèdia i Telecomunicació
Mètodes
Solució:
L’objectiu de la penalització és que els coeficients no creixin gaire. Quan un coefcicient és
zero, vol dir que la variable que acompanya no té cap pes. Mentre coeficients molt grans fan
que aquella variable tingui molt de pes en la decisió final. Una manera de ser prudent es
voler que els coeficients no siguin grans, llevat del cas que sigui realment necessari.
Si la λ és negativa, com que el problema és de minimització, estem afavorint que els coeficients
siguin grans, en comptes de petits.
2. [1.5p] La funció
!
X X X
2
L(v, x) = (yu,i − vi xu ) + λ kvi k22 + kxu k22
u,i i u
no és convexa (podeu veure la pràctica del semestre anterior). Això vol dir que hi ha punts
on pot ser localment convexa i punts on pot ser localment concava. Si fixem el valor d’una de
les dues components (per exemple les x), i nomès deixem que variin les v, la funció resultant
6
22.406 · Modelatge i Optimització · PAC2
2020-21-Sem.1 · Grau en Ciència de Dades Aplicada
Estudis d’Informàtica, Multimèdia i Telecomunicació
!
X X X
2
L(v) = (yu,i − vi xu ) + λ kvi k22 + kxu k22
u,i i u
és convexa? Raona la teva resposta (podeu fer servir alguns dels resultats que hi ha al llibre
del Boyd Vandenberghe al capı́tol de funcions convexes).
Solució:
Al capı́tol 3 del Boyd Vandenberghe, exemple 3.13 explica algunes normes senzilles per de-
terminar la convexitat d’algunes funcions. En el nostre cas, si les variables x són fixes, la part
yu,i − vi xu és lineal en v i per tant convexa. Potències de funcions convexes (amb exponent
més gran que 1) són funcions convexes, i sumes de funcions convexes són funcions convexes.
La norma d’un vector és una funció convexa i elevada al quadrat també ho és.
3. [1.5] Què passa quan la λ → ∞? És a dir, com són les solucions quan λ creix cada vegada
més? Cap a on tendirien si la λ fos negativa? Raona la teva resposta
Solució:
A mesura que la λ creix, qualsevol de les variables x, v que no siguin zero, aporten més pes
a la funció objectiu. Donat que estem buscant un mı́nim, a mesura que la lambda creix, la
funció objectiu tambè creix. L’única manera de compensar-ho és que les variables x, v siguin
zero o molt petites. Per això quan la λ → ∞ les variables x, v de la solució tendiran cap a zero.
En canvi, si la λ fòs negativa, variables x, v de norma més gran tindran un valor més petit en la
funció objectiu. Per tant, quan la λ → ∞ la noram de les variables x, v de la solució tendiran
cap ∞.
4. [3p] Aplicarem el mètode del descens del gradient estocàstic (no cal fer lots de dades, ja que
normalment es fa per volums de dades grans). Escriviu les equacions obtingudes pel mètode
del descens del gradient per a calcular els nous valors de les variables a cada pas. La teoria
la podeu trobar al a la guı́a d’estudi, l’algorisme ”Descens del gradient estocàstic”. Recordeu
que per a una funció S(w) el mètode del gradient amb pas λ seria a l’iteració k + 1
λ
wk+1 = wk − ∇w S
k
7
22.406 · Modelatge i Optimització · PAC2
2020-21-Sem.1 · Grau en Ciència de Dades Aplicada
Estudis d’Informàtica, Multimèdia i Telecomunicació
Solució:
Calculem primer les derivades parcials respecte a les components vik , xku (recordeu que vi , xu
són vectors de p components, per tant aquestes
P són les k-éssimes coordenades) Pper calcular
el gradient de la funció d’optimització L = u,i (yu,i − vi xu )2 + λ 2 2
P
i kv k
i 2 + u kxu k2
X
∂vik L = −2 (yu,i − vi xu )xku + 2λvik
u
X
∂xku L = −2 (yu,i − vi xu )vik + 2λxku
i
Si anomenem ṽik a l’actualització de vik , s al pas en el que estem, aleshores la podem calcular
2X
ṽik = vik + (yu,i − vi xu )xku − 2λvik
s u
i anàlogament tenim
2X
x̃ku = xku + (yu,i − vi xu )vik − 2λxku
s i
5. [3p] Implementeu la solució en R. La crida del script hauria d’incloure 3 arguments més: el
primer serà la dimensió dels vectors p, el segon per indicar el nombre d’iteracions, i el tercer
el pas λ, per exemple,
> RScript metode1.R dataset.csv results.csv 2 10 0.1
Per a poder provar si ho heu implementat bé, podeu fer servir aquests exemples. Us surten
coses que tenen sentit? Què passa quan la λ creix?
• Amb p = 1,
1 0 ,1 ,1 ,0
2 1 ,1 ,0 ,0
3 0 ,0 ,0 ,1
• Amb p = 1,
1 1 ,0 ,1 ,0
2 1 ,1 ,0 ,0
3 0 ,0 ,0 ,1
• Amb p = 1 i p = 2
8
22.406 · Modelatge i Optimització · PAC2
2020-21-Sem.1 · Grau en Ciència de Dades Aplicada
Estudis d’Informàtica, Multimèdia i Telecomunicació
1 1 ,1 ,0 ,0 ,0 ,1
2 1 ,0 ,0 ,0 ,0 ,1
3 1 ,1 ,1 ,0 ,0 ,0
4 0 ,0 ,0 ,0 ,0 ,1
5 0 ,0 ,0 ,1 ,0 ,0
6 0 ,0 ,0 ,1 ,1 ,0
Solució:
9
22.406 · Modelatge i Optimització · PAC2
2020-21-Sem.1 · Grau en Ciència de Dades Aplicada
Estudis d’Informàtica, Multimèdia i Telecomunicació
35
36 # # valors actualitzat de la matriu descriptiva dels usuaris
37 for ( user _ pos in 1: users _ n ) {
38 prediction _ error <- dataset [ user _ pos , , drop = FALSE ] - predictions [ user _ pos
, , drop = FALSE ]
39 for ( k in 1: hidden _ dim ) {
40 increment <- - 2 / epoch * ( prediction _ error % * % items _ descriptions [ , k ,
drop = FALSE ])
41 increment <- as . numeric ( increment )
42 gradient <- increment + 2 * lambda * users _ descriptions [ user _ pos , k ]
43 users _ descriptions [ user _ pos , k ] <- users _ descriptions [ user _ pos , k ] -
alpha * gradient
44 }
45 }
46
47 # calcul de la matriu de puntuacions usuari - item
48 scorings <- users _ descriptions % * % t ( items _ descriptions )
49 cat ( " Error : " , mean (( scorings - dataset ) ^2) , " \ n " )
50 }
51
52
53 print ( scorings )
54 # aquesta linia posa els items consumits a valor minim
55 new _ scorings <- ( 1 - dataset ) * scorings + min ( scorings ) * dataset
56 results <- data . frame ( items = apply ( new _ scorings , 1 , which . max ) )
57 print ( results )
58
59 write . table ( results , output _ file , quote = FALSE , col . names = FALSE , row . names =
FALSE )
10