MACHINE LEARNING APLICAT A LA PREVISI O D'EMISSIONS DE LA PLANTA ALCANAR-CEMEX

Page 1

MACHINE LEARNING APLICAT A LA PREVISIÓ D’EMISSIONS DE LA PLANTA ALCANAR-CEMEX Una aplicació de tècniques estadı́stiques de correlació i regressió programades amb R

Álvaro Arquero Martı́nez-Aguado Institut Sòl-De-Riu Tutor Marià Cano 15/01/2018


Índex

I

Introducció

2

0.1

Personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

0.2

Objectius i motivació del treball . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

0.3

Contextualització del treball . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

0.4

Marc conceptual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

0.4.1

L’estadı́stica com a ciència per al tractament i la interpretació de dades . . . . . . . .

6

0.4.2

L’explosió del big data en l’era d’internet . . . . . . . . . . . . . . . . . . . . . . . . .

6

0.4.3

El paper del software i la programació en el tractament de dades . . . . . . . . . . . .

7

0.4.4

Plantejament del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

Fonamentació teòrica

9

1 Correlació i causalitat entre dades

10

1.1

Definicions

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.2

Correlació i causalitat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

1.2.1

Causalitat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

1.2.2

Correlació . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

1.2.3

Estadı́stica Bayesiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

2 La modelització de dades

15

2.1

Inferències estadı́stica i bayesiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.2

Regressió . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2.2.1

Regressió lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2.2.2

k-Nearest Neighbours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

2.3

Overfitting i underfitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

2.4

Distribució de sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

2.5

Normalització . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

3 Machine Learning i Deep Learning

19

4 R com a llenguatge de programació estadı́stic

22

i


II

Treball experimental i programació

23

5 Obtenció i tractament de les dades

24

6 Anàlisi estadı́stic

26

7 Gràfics de correlació 1 a 1

31

8 Modelització

46

8.1

Creació del model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

8.2

Avaluació del model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

III

Conclusions

51

9 Experiències

52

10 Comentari del treball i els resultats

53

10.1 Valoracions positives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

10.2 Crı́tiques

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

10.3 Agraı̈ments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

IV V

Referències ANNEXOS

55 59


Part

IntroduccioĚ

2


Presentació 0.1

Personal

El meu nom és Álvaro Arquero Martı́nez-Aguado, sóc alumne de l’Institut Sòl-de-Riu d’Alcanar i curso 2on de Batxillerat a la promoció 2016-2018. Tot seguit procediré a introduir el meu treball de recerca, aquesta secció Introducció estarà dividida en quatre subapartats on explicaré, per aquest ordre, la motivació que m’ha portat a fer aquest treball i quins son els meus objectius respecte al mateix. Quina relació té el meu treball amb altres, quines son i com s’estableixen. Les circumstàncies acadèmiques i històriques que l’han afavorit i per últim quina és la metodologia emprada, explicat de forma breu ja que no es busca donar cap pista ni informació sobre la recerca duta a terme, els resultats o les conclusions del mateix.

0.2

Objectius i motivació del treball

En referència a la motivació i els objectius: Fa molt de temps vaig començar a sentir com desenvolupava un cert interès per les matemàtiques i tots els camps que amb ella estan relacionats, fou probablement a partir de 5è o 6è de primària quan recordo que una mestra anomenada Anna hem passava fitxes amb enginyoses endevinalles matemàtiques i jo solia invertir moltes hores intentant resoldre’ls, ja que els trobava molt més estimulants que els exercicis que fèiem a classe. No obstant no pensava en ells com reptes matemàtics i la paraula hem produı̈a respecte, això hem va fer desenvolupar certa tendència a no acceptar aquelles propostes relacionades amb el tema que hem van sorgir al llarg de la ESO, no fou fins 4rt de aquell mateix cicle, quan, mitjançant tant el suport del professorat com fonts externes, com ara la gran varietat de canals de matemàtiques que es poden trobar en plataformes com Youtube, que vaig assimilar que m’agradaven les matemàtiques i que eren allò en el que volia aprofundir més el meus coneixement, o bé a través de la fı́sica o de les matemàtiques en si. Per tant aquesta és la meva motivació per a escollir un treball d’aquest camp. Ara, més especı́ficament, el motiu pel qual he escollit un treball amb l’objectiu de determinar com 11 inputs i la data influeixen en la quantitat de pols emesa, està influenciat per allò esmentat anteriorment però he de admetre que no ha sigut dependent únicament de mi. Fou sobre maig, a finals del curs 2016-2017, el moment en el que havı́em de elegir les temàtiques dels treballs de recerca. En aquell punt jo ja tenia una idea prou clara que segurament el meu treball aniria orientat cap al joc de la vida1 , al anàlisis dels patrons i a el desenvolupament d’eines de treball o anàlisi especı́fiques per aquell medi, però se’m va presentar una oportunitat que no vaig poder rebutjar. Qui era llavors cap d’estudis, Marià Cano, tutor del meu treball de recerca, hem va dir que havia fet una visita a la fàbrica de ciment CEMEX d’Alcanar amb la finalitat de trobar projectes de col·laboració educativa. Fruit d’aquella visita va néixer la proposta de fer un anàlisi estadı́stic de les seves dades d’emissions per tal de determinar com les variables d’una funció de 11 inputs afecten la quantitat de pols emesa. Vaig acceptar l’encàrrec i van començar les sessions de tutoria del treball, hem vaig formar en programació 1 El joc de la vida és un autòmat cel·lular (un model matemàtic per a un sistema dinàmic que evoluciona en passos discrets, Wikipédia) que fou dissenyat per el matemàtic John Horton Conway el 1970

3


Álvaro Arquero Mtz-Aguado

en R gràcies al DataCamp, fòrums sobre aquest llenguatge, llibres i guies de comandaments com a comodı́. Vaig assolir una formació bàsica en l’anàlisi de dades mitjançant ”data frames”, vectors i matrius. A dia d’avui sé generar ”summaries”de dades, exportar-les de excel a R, crear les meves pròpies funcions i ara estic treballant en les meves capacitats per crear models predictors mitjançant ”Machine Learningı̈ representar tot això amb gràfics generats amb ”ggplot2 ”(un paquet de R), però discutirem aquest punt en profunditat a l’apartat fonamentació teòrica I.En adició a tot això aquest treball ha estat escrit mitjançant un editor de textos professional com ho és LATEXi per a fer-lo servir m’he hagut de nodrir de guies i fòrums per a poder aprofitar-me del gran poder que té, fent del present treball quelcom més extens que solament aquests fulls Jo incloc al treball també el temps que m’ha portat formar-me en tota aquesta varietat de llenguatges i conceptes matemàtics, estimant el temps de recerca i preparació per a poder realitzar-lo en unes 100 hores, des d’un punt inicial de desconeixement de la matèria, fins a sentir que puc escriure aquest treball, incloent els múltiples cursos al Data Camp i d’anàlisi de les diferents aplicacions dels algorismes. L’objectiu de recerca cientı́fica, es pot resumir en buscar una funció capaç de estimar outputs, representar les dades de les que disposem de forma neta i que faci que siguen més fàcils de entendre, i entendre les correlacions de cada ”input”amb el ”output”(la quantitat de pols generada). Un cop els objectius són clars, hi han alguns apunts a fer sobre la motivació. No només es tracta d’aprofitar una oportunitat que considero molt difı́cil de trobar i pràcticament única, es tracta també de poder analitzar un problema real, el nostre professor de matemàtiques, Claudio Cosı́n, habitualment, quan ens trobem amb els problemes d’optimització de funcions que entren a les PAU ens sol dir que el món real està molt allunyat de allò que allı́ veiem, tant en dificultat com nombre de variables, com en exactitud de les dades. En aquest punt, un cop he dedicat una gran quantitat de hores a familiaritzar-me tant amb els tutorials de el DataCamp com amb el meu propi ”Data set”puc assegurar que és una tendència que es veu més enllà de les PAU, diverses han sigut les oportunitats que he tingut de veure com les dades dels exercicis estaven distribuı̈des formant rectes o corbes relativament fàcils de predir com una paràbola, mentre els conjunt de dades del que jo disposo, amb les seves 11+1 variables, sembla completament caòtic.La part positiva de tot això és que m’ha forçat a investigar, m’ha ensenyat com allò que sé està lluny de ser suficient. Torno a donar-li la raó a Claudio: el món real és molt més complex i depenent de moltı́ssimes més variables que aquelles que els exercicis de mostra ens deixen veure. Tot plegat fa que tingui present com de important és un concepte que quan me’l vaig topar per primer cop vaig subestimar, la visualització de les dades. Aquest treball, tot i que lluny de tenir un acabat tècnicament satisfactori per a mi ja està complint un altre objectiu plenament, aprendre, canviar la meva visió del món per a fer-la una mica més completa i fer-me plantejar altres opcions. Realment, quan navego entre les lı́nies del meu codi, (no massa extenses ja que R no les guarda entre sessions) només els objectes són desats al workspace, hem sento com un veritable ”data sciencistı̈ tot i que sempre he pensat que les matemàtiques més abstractes estan rodejades de una aura mı́stica que m’atreu moltı́ssim, els problemes del món real poden donar molts de mals de cap, i l’enginyeria és realment una ferramenta formidable. Gràcies a fixar-me més en aquelles coses que m’envolten me n’he adonat com de complex és tot allò que donem per segur avui en dia, i com d’impressionant és la suma de l’esforç humà de molts de cientı́fics durant tota la història de la humanitat que ens han dut a aquest punt on vivim ara, on intentar entendre un concepte sol, solament el funcionament de un motor o un aparell, no té cap sentit, ja que es necessiten coneixements bàsics d’una gran quantitat de disciplines. I allò que tenen en comú totes elles és el llenguatge tan potent del que fan ús, les matemàtiques: per tant, a més de ser un fi en elles mateixes, com ho son quan estudiem les branques més abstractes, també son una eina, i aquests no són dos grups tancats, ja que són innumerables les ocasions on el desenvolupament de una nova forma de veure les coses, en principi abstracta, ha resultat idònia per a resoldre algun problema en un moment donat. En quant a la relació d’aquest treball amb altres: El meu treball no està relacionat amb cap altre, fou extret de la proposta del departament de matemàtiques en conjunt amb CEMEX, fruit d’unes primeres visites sorgeix una proposta de col·laboració entre l’institut i la fàbrica de CEMEX a Alcanar, arran d’aquestes es decideix oferir la possibilitat de fer un treball amb dades de emissió ambiental reals de la planta industrial

4


Álvaro Arquero Mtz-Aguado

de producció de ciment, i aquest és el resultat, esperem que el resultat sigui satisfactori i d’aquesta manera es pugui ampliar la proposta de col·laboració educativa entre CEMEX i l’Institut Sòl-de-Riu, de forma que es puguin generar altres treballs de recerca conjunts i esperant que aquest assenti unes bones bases.

0.3

Contextualització del treball

Circumstàncies acadèmiques i històriques que han afavorit aquest treball : Acadèmicament, no hi ha molt més a dir de el que ja he escrit al primer apartat. Històricament no hi ha tampoc molt més que explicar, crec que és un bon moment per a fer aquest treball donat que sembla que en aquests dies, amb el desenvolupament de les ”neural networks”, està més al dia que mai el ”machine learning”, tot i que una forma primitiva d’aquest fou introduı̈t probablement a partir dels 60s, mitjançant estadı́stica Bayesiana, o si seguim el ”timelapse”de Wikipédia ho podrı́em remuntar fins als 50s amb els primers algorismes entrenats per a modificar resultats en funció de noves dades2 , en la fonamentació teòrica I s’aprofundirà en la història i procedència del ”Machine learning”. Estrictament relacionat amb el treball, a mi no m’ha influenciat aquest context històric i interès creixent per aquestes tècniques, però suposo que hi ha una alta probabilitat que aquesta oportunitat que m’ha sorgit estigui lligada amb això mateix, o potser amb un interès per l’explotació de dades(data minning), a més del projecte educatiu, clar està. Metodologia de treball :R ha estat el llenguatge escollit, ja que és un dels que està més orientat a la estadı́stica, tant a la ordinària com a la Bayesiana. M’he estat formant de 0 durant tot l’estiu i a partir de l’octubre he sigut capaç de començar a aplicar els coneixements i buscar relacions i tendències, independentment de si n’he trobat cap o no. Mitjançant els gràfics s’ha obert una nova porta, que també serà comentada en el seu pertinent apartat de el treball. A continuació es crearan models de predicció diferents que seran entrenats amb el ”Train set”, i després analitzats per a veure quin ofereix un resultat més proper a la realitat que estarà representada per tant el ”Test setçom el ”Validation set”, aquı́ aprofundirem en el punt sobre el tractament de les dades, i en els diferents models que he creat i si es relacionen o no entre ells, com ho fan i com funcionen als punts de plantejament del problema i a la part de la fonamentació teòrica I. També s’analitzarà el seu rendiment amb les tècniques de valoració dels models, més informació a la fonamentació teòrica. No obstant és probable que només un tipus de models sigui aplicable, els de regressió, donat que busquem un ”output”numèric, tot i aixı́ els altres tipus seran comentats igual i se’ls buscarà un lloc per potser, decidir si s’aplica un model de regressió o un altre depèn de la distribució dels ”inputs”. La conclusió del treball constarà de una valoració del mateix, tant a nivell personal, com he treballat, com del resultat ofert amb una visió el més objectiva possible, i un petit comentari de l’experiència del TdR tot plegat. Els annexos constaran de algunes imatges sobre el meu workspace a R i els fitxers de dades inicials amb els que vaig treballar i que eren la única base per a tot aquest procés. • 1. Obtenció de dades i exportació a format R • 2. Formació en llenguatge de programació R • 3. Formació en tècniques estadı́stiques de Machine Learning • 4. Programació de subrutines i tractament de dades amb R • 5. Obtenció de gràfics amb R • 6. Anàlisi de dades i gràfics per a la modelització • 7. Conclusions de la recerca, experiències i comentaris 2 ”Timeline

of machine learning, Wikipedia”

5


Álvaro Arquero Mtz-Aguado

0.4

Marc conceptual

En aquest capı́tol s’acotarà una mica quines són les àrees de treball d’aquest projecte, s’introduirà i s’explicarà una mica d’història sobre elles, no obstant no trobareu molts de tecnicismes en aquest apartat, té l’objectiu de ser una explicació personal dels orı́gens i de la seva evolució i no pas del seu funcionament.

0.4.1

L’estadı́stica com a ciència per al tractament i la interpretació de dades

Abans d’iniciar la discussió i comentar el tı́tol de l’apartat és important entendre’l, per a això es definirà l’estadı́stica i les dades. L’ estadı́stica és una branca de les matemàtiques que té l’objectiu d’analitzar conjunts de dades per tal de determinar correlacions o dependències entre ells i és, a més, una eina que ens permet determinar usos de conjunts de dades fent una mostra representativa d’ells. Les dades són un concepte que requereix més espai per a ser definit de forma clara, podrı́em dir que una dada és una informació que obtenim d’un objecte, persona o acció, la meva posició és una dada, però la meva latitud, que és necessita per a determinar la meva posició, també és una dada, podem deduir, llavors, que no totes les dades aporten la mateixa quantitat de informació, algunes son rellevants i altres no, o no ho són tant. Comencem a albirar, doncs, que necessitem aprendre a discernir quines són més rellevants, en quin grau, i com es relacionen amb les altres. A més a més, com és de suposar, no totes són iguals però si que poden ser classificades en dos grans grups: • Dades quantitatives: Poden ser expressades amb nombres, com ara el pes, la alçada o la latitud, són dades que resulten fàcils de computar, podem generar vectors amb totes les que corresponen a la mateixa categoria, o ”Data frames”amb diferents categories per apreciar correlacions. • Dades qualitatives: Descriu les caracterı́stiques, com ara la forma o el color, per a computar aquestes dades de forma simple podem generar llistes que comprovin si un atribut és present o no, assignant valors booleans3 a la llista, pot generar llistes molt llargues perquè és necessari iterar per totes les caracterı́stiques, per exemple si volem saber el color haurem de crear columnes per a tots els colors i marcar només el que correspon. Segons les fonts de Wikipedia els mètodes estadı́stics eren utilitzats ja al segle V a.C. quan es descriu com la gent d’Atenes calculava la alçada de la muralla de Platea contant el nombre de maons i multiplicant-los per la seva alçada, però n’hi havien tants que era fàcil perdre el compte, aixı́ que moltes persones els comptaven i es prenia el valor més freqüent, la moda. Hi han més mostres però aquest és el concepte primitiu, i no fou fins els segles XV, XVI i XVII que l’estadı́stica no va ser definida com a tal, quan era utilitzada per a estimar poblacions. El concepte ja va quedar assentat definitivament al segle XVII, quan van ser creats els mètodes matemàtics per a l’ estadı́stica, derivats de la Teoria de probabilitats, per Pierre de Fermat i Blaise Pascal. No obstant, fins que no es van generar grans volums de dades no va ser necessari aplicar l’estadı́stica, ja que el poder de predir d’aquesta depèn de la quantitat d’observacions de les que disposem, i quan disposem de moltes observacions necessitem, també, visualitzar-les de forma entenedora, ja que sinó difı́cilment podrem treballar amb elles És llavors quan es van donar aquests dos factors, eines potents de visualització i una ingent quantitat de dades, que va ser més rellevant que mai el ”Big Data”, coincidint, no de forma casual, amb l’era d’internet i la computació.

0.4.2

L’explosió del big data en l’era d’internet

La disciplina que s’encarrega d’emmagatzemar, classificar i analitzar les dades s’anomena intel·ligència de dades o ”Big Data”, per tant tot i que el nom sigui de recent creació no podem afirmar que va nàixer amb internet, però si que ha experimentat un brutal creixement gràcies al mateix. Seguint la definició podem anar tant enrere com calcular, per exemple, el cens de una gran ciutat, estudiant llibres de naixements i defuncions, calculant mitjanes i estimant la població actual i la seva evolució de una forma prou barroera. 3 En

computació, aquells valors que es poden representar de forma binària, normalment True or False

6


Álvaro Arquero Mtz-Aguado

A aquest tipus de funcions estava confinada la intel·ligència de dades fins l’aparició i maduració d’internet. A partir de l’expansió de l’ús d’internet, sobretot amb tota mena de dispositius mòbils, les persones comencen a fer-lo servir diàriament, a comprar, investigar, aprendre, i amb les xarxes socials, interactuar entre elles. I llavors és que la quantitat de dades generades i emmagatzemades esclata. Entrant en joc la intel·ligència de dades. Quan són emmagatzemades totes les dades, i metadades4 , per a treure’n cap ús d’aquesta quantitat de dades, o macro dades les hem d’analitzar i crear models. Tal cosa ens permetrà predir el futur, vendre de forma personalitzada o fer diagnòstics de salut, per exemple. Algunes fonts, com ara el projecte ”big data d’educaixa”, cita que hi han 5 factors que fan possible el ”Big data”o caracterı́stiques del mateix: • Volum: Simplement, hi ha un gran volum de dades, factor determinant per a poder fer models el més precisos possible. • Velocitat: Necessitem que els resultats es generin a gran velocitat, com les prediccions no són exactes a llargs terminis és necessari poder introduir les dades tal com es recullen per a poder introduir les de sortida, a la seva vegada, en altres models. • Varietat: Les macrodades són variables segons la seva procedència, poden ser: – Dades públiques: Dades d’administracions públiques com ara el transport. – Dades privades: Dades d’empreses privades i transaccions comercials. – Dades comunitaries: Dades produı̈des per els propis usuaris normalment a xarxes socials o enquestes. – Dades quantified self : Dades obtingudes i generades per les persones, com ara les pulsacions cardı́aques o el nombre de passes en un dia. • Veracitat: Per a poder treballar amb elles, les dades han de ser fiables i autèntiques, les verificarem, per exemple, mitjançant la revisió de les fonts • Visualització: Per a poder crear els models el més fiables possible hem de saber com treballar i enfocar les dades, per a això és fonamental la visualització, per a entendre la evolució de les variables. Per tant, tornant al tı́tol de l’apartat, podem dir que l’esclat d’aquesta nova tendència es deu a que és inherent a internet generar macrodades, i analitzar-les permet optimitzar els serveis oferits i per tant el nostre temps, a més de donar resultats més rellevants a les cerques dels usuaris.

0.4.3

El paper del software i la programació en el tractament de dades

En computació la informació es pot dividir en dos gran grups: codis i dades. Els codis incorporen els algorismes de càlcul que seran programats en l’ordinador en un determinat llenguatge de programació. Per contra les dades són analitzades (dades d’entrada) i generades (dades de sortida) pels codis que programem. Bàsicament, la programació és una eina que permet, de les dades, extreure informacions que ens resulten d’alguna utilitat. Hi ha una gran varietat de llenguatges amb els que es poden programar algorismes, cadascun tenint la seva g̈ramàticac̈aracterı́stica, per a treballar amb el tractament de grans quantitats de dades es solen fer servir llenguatges orientats a la estadı́stica, com ara R o SQL. Un cop hem tractat les dades (de la forma que s’explicarà a l’apartat tractament de dades) ve el pas de crear un model. Un model no és més que la descripció del sistema però de forma matemàtica, el problema que ens trobem és que comptem amb diferents variables, algunes d’entrada i altres de sortida, i no sabem com l’entrada genera la sortida. Trobar el model és explicar, matemàticament, com interactuen les entrades entre elles o amb altres factors per a generar les de sortida. Tenir la capacitat de predir això ens permet fer simulacions, prediccions o diagnòstics, però com he esmentat a la introducció, no sol ser una feina simple, i molts de cops, no obtindrem resultats exactes, més bé aproximacions. 4 Dades

generades de altres, com ara la data a la que es va modificar un arxiu

7


Álvaro Arquero Mtz-Aguado

Figura 1: Petit resum explicatiu del procés de modelització i la utilitat de les matemàtiques

0.4.4

Plantejament del problema

Quin problema tenim, de quines dades disposem i què esperem obtenir? El problema: Podem predir els nivell d’emissió de partı́cules en funció dels paràmetres de control del funcionament de la planta industrial de producció de ciment Alcanar-CEMEX? Les dades: Disposem de un fitxer d’Excel amb unes 15000 medicions tabulades(registres),en aquestes estan descrites tant les d’entrada com la de sortida, són dades reals amb cap variable desconeguda, estan extretes del forn número 2, i corresponen a dos dies de gener del 2017. Què esperem obtenir?: L’objectiu és estudiar aquestes dades, fer un anàlisi estadı́stic és el primer dels objectius, després analitzar-les en gràfics 1 a 1, cada variable independent amb la de sortida per veure si hi ha alguna relació, i l’últim i més complicat és intentar generar un model que permeti predir la sortida en funció de l’entrada.

8


Part I

Fonamentació teòrica

9


Capı́tol 1

Correlació i causalitat entre dades Aquest capı́tol estarà dedicat a asseure les bases de comprensió per a la resta del treball, unes bases de estadı́stica i algunes mencions a conceptes més avançats com ara l’estadı́stica Bayesiana.

1.1

Definicions

Aquestes definicions són el vocabulari bàsic de tot el treball. Model - Una relació matemàtica entre les dades d’entrada (considerades com variables independents o variables predictores) i les dades de sortida (considerades variables dependents o variables de resposta). Disposar d’aquesta relació permet conèixer la dependència funcional entre variables i per tant predir la resposta d’un sistema en funció d’una determinada entrada de dades. Un model sempre representa una simplificació de la realitat. Estadı́sticament modelitzar un sistema significa trobar quina és la funció que s’ajusta millor entre un conjunt de dades d’entrada i sortida. Definicions dels tipus de sets: Set - Els ”Set”són tots aquells conjunts de dades que tenen en comú el fet de procedir de la mateixa font i el mateix procés, a més que són de les mateixes variables i el ”Output”però no estan preses el mateix instant, a més les dades s’organitzen habitualment en ”Data Frames”o quadres de dades. Un exemple de ”Set”de dades és per exemple on està situada una tenda, de quants de metres quadrats disposa i quants articles ven al dia, totes aquestes dades organitzades en un quadre, a cada columna una variable i a cada fila un instant, seria un ”Set”. Train set - Quan entrenem un model, el conjunt de dades inicial amb el que podrı́em dir que aprèn a interpretar les entrades i avaluar les sortides, a nivell matemàtic, en cas de ser un model de regressió, com sembla ser que en aquest cas requereix el nostre data set després de l’anàlisi de dades, aquestes dades modifiquen els coeficients de l’algorisme de predicció, és donarà informació ampliada a el capı́tol Machine Learning i Deep Learning. Validation set - Un cop hem sotmès el model al procés d’entrenament, entrem inputs que no estiguin lligats amb els seus outputs, però quan la resposta és errònia el corregim, ja que disposem del output original. Test set - És moment d’analitzar el model, entrem inputs nous per al model i fem un anàlisi dels resultats obtinguts mitjançant una gran varietat de tècniques, això és possible a causa que tenim els outpus originals però no els introduı̈m al set. Tipus de models: Els models que existeixen es poden organitzar de dos maneres. Segons com aprenen, si ho fan de forma supervisada, o sigui, relacionant les dades de entrada amb les de sortida1 , si ho fan de forma no supervisada, o sigui, disposem de dades de entrada però no de sortida, o bé si 1 Quan

disposem de dades de entrada i sortida anomenem a aquestes Labeled data

10


Álvaro Arquero Mtz-Aguado

CAPÍTOL 1. CORRELACIÓ I CAUSALITAT ENTRE DADES

disposem d’algunes dades amb entrades i sortides i d’altres només de sortides. Un exemple del primer podria ser l’optimització de vendes d’una tenda, on saben que van fer i quant van vendre, del segon podrı́em estar parlant de tres flors, de les quals tenim certes caracterı́stiques però no quina flor són, i un clàssic exemple del tercer és la classificació de imatges, on ne tenim moltı́ssimes i només unes poques estan classificades. O bé agrupar-los per algorismes similars en termes de funcionament, tot seguit generaré una llista amb una petita descripció de cadascun, però només d’aquells més rellevants i dels que tinc més coneixement ja que hi han tants algorismes com problemes, no obstant adjuntaré una imatge que és prou descriptiva d’aquest tipus de classificació: • Classificació: Aquests algorismes són de aprenentatge supervisat, i agrupen les sortides en grups ja predeterminats. • Regressió: La regressió són tots els models que treballen amb les relacions entre variables i es van refinant mitjançant el càlcul en l’error i la modificació dels coeficients en funció del error fet per el model, és el que anomenem Machine learning estadı́stic, la regressió és un proces més que un tipus d’algorisme o de problema, sobre la regressió hi ha molt a dir i se li dedicarà un capı́tol sencer a la modelització de dades, per tractar per exemple l’overfitting, que no només és present a la regressió però que si que pot tenir un gran impacte en aquest treball. • Agrupament: O Clustering en anglès fa referència a tots els algorismes que donades les dades inicials, sense disposar dels resultats creen grups i assignen a cada entrada, definida com un vector a un d’aquest grups en funció de el proper que estigui aquell valor en un pla a la zona definida per el grup o Cluster. Són mètodes d’aprenentatge no supervisat.

Figura 1.1: Clustering visualment

Definicions de les tècniques de valoració del models regressius: RMSE - L’error quadràtic mitjà és la mesura de la desviació mitjana del model, si tracem una lı́nia per representar les sortides estimades, l’arrel de la mitjana de les sumes de les distàncies entre la lı́nia i els punts on es troben les sortides serà el RMSE, v u X u1 n t (yj − yj0 )2 n j=1 Com més proper a 0 el RMSE, millor el model, però compte amb l’overfitting! R-Squared - Aquesta mesura no té unitats, com més aprop de 1 es troba millor ha predit el model i calcula la variació total del model, R2 és el quadrat del coeficient de Pearson en regressió lineal. El coeficient de correlació de Pearson serveix per a mesurar la correlació entre dues variables quantitatives, aquest concepte serà aprofundit en aquest mateix capı́tol. R2 =

σ 2 XY σ 2 Xσ 2 Y

11


Álvaro Arquero Mtz-Aguado

CAPÍTOL 1. CORRELACIÓ I CAUSALITAT ENTRE DADES

On σ és la desviació tı́pica σXY és la covariància, que també explicaré més endavant, i σX i σY són les desviacions tı́piques de les dues variables.

1.2

Correlació i causalitat

La causalitat entre dades és la necessitat que es produeixi un fet donat un altre, necessitat de concurrencia de dues variables correlacionades. I probar això implica veure que a més de que efectivament tenen una correalció positiva, si existeixen casos on una es dona sense l’altra. Això es deriva de que “correlació no implica causalitat, però abscència de correlació sı́ indica no causalitat”.2 Com ara que a major mida del peu més ingressos bruts, com hem va explicar el tutor, sembla que hi ha certa relació entre intel·ligència i mida del peu, per tant la mida i els ingressos podrien estar lligats però més ingressos no et faran créixer el peu. Ara que tenim una idea intuı̈tiva de que és tracten, seran definides de forma més rigorosa, per a dur a terme aquesta tasca es farà un ús més intensiu de fonts externes, les quals seran citades segons les exigències pròpies del treball.

1.2.1

Causalitat

Quan una variable sembla influir en una altra, quan podem dir que la segona és un efecte de la primera, diem que la primera és un Factor condicionant de la segona, tal que P (B|A) > P (B|Ā) & P (A) 6= 0, això significa que la probabilitat de B donat A és major que la probabilitat de B si A no passa, la probabilitat de A ha de ser diferent de 0, això indicaria que A és factor condicionant de B. Aquesta és una petita explicació de causalitat, però ara es genera la qüestió lògica de en quin grau A condiciona B, per respondre a això necessitem la correlació.

1.2.2

Correlació

La Correlació indica la quantitat i direcció d’una influència entre variables estadı́stiques, estan correlacionades si al variar una, sistemàticament, varia l’altra, però compte, ja que com s’ha dit adés, correlació no implica causalitat. La relació entre dues variables quantitatives es representa amb la Lı́nia de menor ajust, aquesta és la lı́nia que correspon a una funció contı́nua, que s’obté mitjançant optimització matemàtica i és elegida aquella que genera un RMSE menor.Fig.1.2. Sobre com es troba aquesta funció fa falta explicar que són els coeficients que fan que la funció que estem

Figura 1.2: Ajust de dades a una funció quadràtica aproximant sigui el més similar possible al conjunt de punts dels que disposem, imaginem un pla amb molts 2 Cohen

i Marion, 1990.

12


Álvaro Arquero Mtz-Aguado

CAPÍTOL 1. CORRELACIÓ I CAUSALITAT ENTRE DADES

de punts, concretament xk punts, dels quals tenim una sortida per punt yk , y, en el pla, és el resultat de aplicar transformacions als punts, però desconeixem quines i si hi ha alguna funció que les regeixi, per tant direm que tenim m funcions que són linealment independents unes de les altres, o sigui no són modificacions unes de les altres, en volem trobar una f (x) que sigui una combinació lineal de les m funcions reals que modifiquen els paràmetres, per tal que f (xk ) ≈ yk , hem de trobar, per tant, els m coeficients que facin que la aproximació de la nostra funció sigui la millor, per mesurar quina és millor molts de cops es fa servir el RMSE. Les dades es fan servir per anar millorant la precisió de els m coeficients, i és per això que a més dades més precisió, els models que fan servir aquest mètode per a generar sortides són els de regressió, i quan es tracta de funcions continues on els coeficients varien en grau però de la forma de f (x) = m1 xk + m2 xk−1 . . . + mk en diem regressió lineal. Per saber com decidir la funció que millor prediu i no només la de menor RMSE necessitem parlar de l’overfitting, en l’apartat Overfitting i underfitting.2.3. Un cop traçada la lı́nia a partir del núvol de punts, podem parlar de algunes caracterı́stiques de la mateixa, a Wikipedia se’n llisten 3: • Força: Mesura com de representativa és la lı́nia de el núvol, si és estret i allargat una lı́nia recta en aquell interval s’adaptarà millor, per tant donat una sola entrada haurà una sortida i poca variació a la sortida entre entrades properes, la relació serà forta, en canvi si el núvol és més dispers i té tendències més circulars la relació serà més dèbil. • Sentit: Es mesura si quan un creix l’altre creix o decreix i això dona el sentit • Forma: Quin tipus de lı́nia s’adapta millor, si una recta, una que conserva l’ordre d’entrada, o monotònica, o una que no ho fa, o no monotònica. Però ara que es sap com traçar la lı́nia i quina relació pot adoptar amb les dades, tornem al problema original, com es relacionen aquestes sortides amb les entrades? Com es mesura la correlació? Per a aquest propòsit serveix el coeficient de Pearson. El coeficient de correlació de Pearson és una mesura de relació lineal, matemàticament s’expressa σXY . aixı́: px,y = σXσY σXY és la covariància, un valor que indica la variació conjunta de dues variables aleatòries respecte les seues mesures, ens permet determinar si estan lligades o no i és la dada bàsica per a establir dependència, en la covariància es troba la clau de la correlació, per tant és un concepte troncal per a tot el treball. La definició matemàtica és aquesta: cov(x, y) = E[(x − E[x])(y − E[y])], on E és l’esperança, o resultat esperat de x i de y respectivament. Llavors si cov > 0 hi ha una dependència directa entre variables, si cov = 0 no hi ha relació entre variables i si cov < 0 hi ha dependència inversa. Comença a ser clar que per a tractar tots els inputs del meu dataset ho haurem de fer primer per separat. Ja que fins el moment les definicions que s’han donat estan aplicades a situacions de una variable de entrada i una sortida. Un cop explicada la covariància el coeficient de Pearson comença a ser més comprensible, aquest és igual a la covariància dividida per la multiplicació de les desviacions tı́piques de les variables, amb aquesta definició matemàtica: v u N u1 X σ=t pi (xi − µ)2 n i=1 on µ=

N X

pi xi

i=1

les quals es mesuren amb les arrels de les variància de les variables, això genera un resultat sense unitats, i les arrels de les variància són les esperances al quadrat, o sigui la resta entre el resultat obtingut i l’esperat al quadrat. pi és la probabilitat de xi . En quant a la interpretació del coeficient de Pearson, de forma similar a la covariància però acotat en un interval per a ficar l’exemple [-1,1] i sense unitats, o sigui, molt més útil, on 1 és la relació perfecta de correlació, 0 és absència de correlació i -1 és relació inversa perfecta, mentre la resta de nombres de l’interval són punts mitjans en aquestes relacions.

13


Álvaro Arquero Mtz-Aguado

CAPÍTOL 1. CORRELACIÓ I CAUSALITAT ENTRE DADES

Un altre concepte és la probabilitat condicionada, aquı́ ja es comença a entrar en el terreny de l’estadı́stica Bayesiana, se li dedicarà un apartat individual. Es farà una menció l’espai probabilı́stic per donar-lo per explicat en cas que faci alguna referència a ell al llarg del treball, l’espai probabilı́stic no es més que si imaginem un pla, la probabilitat que hi ha que un output desconegut és situat en una interval determinat, un espai probabilı́stic està integrat per un espai mostral, o sigui els possibles outputs, la col·lecció de tots els successos aleatoris, no només els elementals, i la funció de probabilitat, que assigna una probabilitat a qualsevol succés, determinat aquesta funció és un objectiu secundari del treball.

1.2.3

Estadı́stica Bayesiana

Per introduir-la de la manera més senzilla que se m’acudeix començarem amb la probabilitat condicionada, però com tractarem molt amb notació del tipus lògic, només esmentar les dues lleis de Morgan, l.la negació de la conjunció és la disjunció de les negacionsı̈ l.la negació de les disjuncions és la conjunció de les negacions”, de tal forma que ”no (A y B) és (no A) o (no B)ı̈ ”no (A o B) és (no A) y (no B)”. Seguint amb la probabilitat condicionada, aquesta és la probabilitat de A donat B, s’escriu P (A|B), això torna una mica a la causalitat, i aixı́ ha de ser, ja que anem a parlar de com noves ja que aquesta introducció busca partir de alguna cosa que ja sabem, i és la relació entre variables, per aprendre a com la probabilitat de una influeix en l’altra, la definició formal d’això és: P (A ∩ B) P (A|B) = P (B) . La interpretació d’això és que si P (B) és 6= 0 llavors P (A|B) són els casos on també es compleix A, i P (A ∩ B) són les probabilitat que es causi A donat B. Un cop assimilat això podem entrar al Teorema de Bayes, aquest teorema expressa la probabilitat condicional de un esdeveniment aleatori A donada la de B en base a les probabilitat de B donat A i la distribució de probabilitat de A, les probabilitats que passi per si sol. Formalment: P (Ai |B) =

P (B|Ai )P (Ai ) P (B)

I gràcies a aquesta fórmula podrem calcular com variar una variable influirà en una altra, és la culminació del capı́tol 1 en la seva totalitat i en el següent, ja tractant la creació d’un model, es parlarà de alguns subjectes que estan estretament lligats a això com ara l’estadı́stica inferencial, l’anàlisi de la regressió i la inferència bayesiana, a part de altres qüestions més pràctiques com l’overfitting.

14


Capı́tol 2

La modelització de dades En aquest capı́tol es tractarà tota la teoria necessària per a entendre els conceptes que permeten generar un model, en aquest cas de regressió, tot i que si finalment es fan servir combinacions de models també s’explicarà com funcionen aquestes. Per a poder entendre que fa un model de regressió de forma profunda necessitem esclarir alguns conceptes.

2.1

Inferències estadı́stica i bayesiana

La inferència és la deducció, inferir quelcom significa que donat el que sigui, podem arribar a una conclusió lògicament correcta sobre aquesta mateixa cosa, quan a partir de unes dades podem trobar una condició o implicació entre factors diem que les condicions són inferides o deduı̈des. Això resulta evident quan parlem de lògica formal, però en aplicar-ho a les matemàtiques necessitem afegir un nou nivell d’abstracció. Començarem amb el cas de la inferència estadı́stica i arribarem al punt on necessitarem parlar de inferència bayesiana. Diem inferència estadı́stica a tots els mètodes i procediments que ens permeten, mitjançant la inducció, determinar quines són les propietats de una població donada, l’objectiu de la inducció estadı́stica és fer un cas general d’aquells particulars als que té accés, és per aquest motiu que es fa servir per crear models que permeten predir, i l’estadı́stica inferencial s’estudia mitjançant aquest procés on cada punt no té perquè ser un pas discret, més bé, aquestes són idees generals que ens permetran traçar el model: • Recol·lecció de dades: Necessitem recol·lectar dades variades dins de una mateixa població que ens permetin arribar a conclusions que són extrapolables. • Estimació de paràmetres: Es creen els paràmetres que permetran que el model predigui • Contrast d’hipòtesi: S’avaluen diferents mostres de la mateixa població per tal de decidir si són estadı́sticament diferents i quina és la que més s’assembla a la realitat • Disseny experimental: Es quantifiquen les causes efectes dins del model, fent servir mètodes com ara els coeficients de Pearson per a decidir si hi ha correlacions, en aquest punt es fiquen valors extrems dins el model per tal de adonar-nos com influeixen unes en les altres. O també es pot fer ús dels principis de Fisher, són els de comparació, aleatorització i rèplica estadı́stica. Però el concepte més interessant és la proba P de Fisher, és una forma de comparar les desviacions totals, es tracta del quocient entre la variància mitjana de tots els grups i la variància mitjana de cada grup. • Inferència Bayesiana: La inferència bayesiana no és més que l’aplicació del teorema de Bayes a la inferència estadı́stica, consta de diversos passos que escapen a les pretensions del treball. • Mètodes no paramètrics: També es pot fer un model amb altres mètodes que no depenen de paràmetres, com ara els d’arbres, que són un exemple també de models que segueixen les estructures de la lògica però que no tenen aquests coeficients numèrics.

15


AĚ lvaro Arquero Mtz-Aguado

CAPIĚ TOL 2. LA MODELITZACIOĚ DE DADES

Ara beĚ , si aixÄąĚ , generalment, es crea un model, quin eĚ s el meĚ€tode, com podrÄąĚ em, donat un problema arribar a crear un model funcional? Aquesta eĚ s una llista de passos que s’ofereix a Wikipedia la qual comentareĚ i adaptareĚ una mica, ja que al llarg del treball aquests passos han sigut esmentats, ara fareĚ aquÄąĚ la llista per tal de tindre’ls explicats i recollits en un sol lloc: • Plantejament del problema: Ens fem les preguntes que considerem adients, que eĚ s el que volem resoldre sobre aquella poblacioĚ o conjunt de dades? • ElaboracioĚ d’un model: Un model eĚ s una distribucioĚ de probabilitat, o sigui, una funcioĚ que ens diraĚ€ amb una certa exactitud quina eĚ s la sortida esperada d’una entrada, llavors el que fem eĚ s generar-lo a partir de la correlacioĚ , la funcioĚ que direm model eĚ s la lÄąĚ nia que obtenim, i juntament amb l’espai probabilÄąĚ stic ens permet determinar com eĚ s de probable l’output proposat. • ExtraccioĚ de la mostra: Obtenim dades de una petita part de la poblacioĚ que sigui el meĚ s representativa possible, si jo seĚ que el 48% de la poblacioĚ soĚ n dones, per exemple, i vull 100 candidats dels que extreure dades, eĚ s meĚ s representatiu agafar 48 dones que 60, si al model el sexe teĚ algun impacte, per a la determinacioĚ del impacte de un tret en una variable podem fer servir la covariaĚ€ncia, i a l’hora de programar quan avaluem el nostre model eĚ s una informacioĚ que podem obtenir amb un comandament. • Tractament de les dades: En aquesta fase es fa un anaĚ€lisi de les dades que tenim, mitjançant estadÄąĚ stica descriptiva obtenim tot alloĚ€ que considerem necessari de les dades com ara mitjanes i desviacions, hi hauraĚ€ un apartat a la part praĚ€ctica del treball sobre aquest punt al capÄąĚ tol 5. • EstimacioĚ dels paraĚ€metres: Mitjançant estimacioĚ estadÄąĚ stica busquem apropar les estimacions dels resultats de la mostra als reals, per exemple aproximar la mitjana d’edats de la mostra a la de la poblacioĚ real, hi ha una amplia varietat de teĚ€cniques d’estimacioĚ estadÄąĚ stica peroĚ€ no entrarem en aixoĚ€. • Contrast d’hipoĚ€tesis: Per tal d’intentar simplificar el model matemaĚ€tic amb el que treballem, controlar l’overfit per a que sigui menys especÄąĚ fic. • Conclusions: Es critica el model i intentar millorar, a partir d’aquest punt ja podem fer prediccions o prendre decisions.

2.2

RegressioĚ

En aquesta seccioĚ es faraĚ€ un anaĚ€lisi de la regressioĚ , aixoĚ€ ens permetraĚ€ obtenir teĚ€cniques per a fer els models i començarem a introduir el treballar amb meĚ s d’una variable, en el cas que moltes independents afectin a una dependent, com una funcioĚ amb molts de inputs i un sol output, que eĚ s el cas d’aquest treball. El que ens permet l’anaĚ€lisi de la regressioĚ eĚ s com el valor de la dependent fluctua quan canvio una independent i deixo a les altres igual, l’objectiu de repetir aixoĚ€ amb totes les variables i veure com afecten eĚ s la de la determinacioĚ de la funcioĚ en si, la anomenada funcioĚ de regressioĚ , i que en representar-la en un pla n-dimensional seria la que ens permetria predir els outputs, per exemple en un cas de 2 dimensions es tractaria d’una recta, peroĚ€ en casos de meĚ s de 3 ja no es pot representar amb coordenades cartesianes. Hi han moltes teĚ€cniques regressives, la meĚ s senzilla eĚ s la regressioĚ lineal i eĚ s en la que meĚ s aprofundireĚ .

2.2.1

RegressioĚ lineal

La definicioĚ formal de la regressioĚ lineal eĚ s aquesta: Yt = β0 + β1 X1 + β2 X2 + . . . + βp Xp + On Yt eĚ s la variable independent i βp Xp soĚ n respectivament els coeficients i les variables independents, soĚ n tots aquells factors que no podem controlar. El problema meĚ s serioĚ s d’aquest tipus de models eĚ s que les relacions tenen que ser lineals entre les variables, en cas que no sigui aixÄąĚ no podrem fer servir aquests models i haurem de passar a altres, la primera esperança del treball eĚ s que les dades tinguin relacions linears, en cas

16


Álvaro Arquero Mtz-Aguado

CAPÍTOL 2. LA MODELITZACIÓ DE DADES

que no sigui aixı́ segurament s’utilitzaran models del tipus k-nearest neighbours que tot seguit explicaré. Fa falta apuntar que mentre la regressió lineal és paramètrica, té paràmetres, els algorismes del tipus k-nearest neighbours no.

2.2.2

k-Nearest Neighbours

Aquest tipus de algorismes són lleugerament més complexos de programar amb R, i els seus resultats tenen tendència a ser més inexactes, però si les relacions no són linears o tenen unes transformacions evidents, són una de les millors solucions, funcionen aixı́. Disposem d’un test set, amb unes observacions que coneixem, i afegim una nova observació, aquesta estarà a certa distància de les observacions de les que disposàvem, el que fa l’algorisme és donat el número de veı̈ns que volem que tingui en compte, un nombre k, que normalment es troba al voltant del 20% del set i calcula la mitjana de de les seves alçades respecte x = 0, el resultat serà el nostre valor predit, és per això que no requereix paràmetres, només necessita un set de dades que ja estiguin situades, i a més és molt fàcil extrapolar-lo a n dimensions. Un exemple de k-NN seria imaginar que a la imatge volem classificar el cercle com a quadrat o triangle, depèn de la k que elegim, es definirà el radi dels veı̈ns que l’algorisme té en compte, els que més en siguin d’un tipus a l’àrea que es té en compte serà com es classificarà el cercle, el mateix es pot fer amb valors numèrics però calculant les mitjanes de les distàncies.

Figura 2.1: k-NN visualment

2.3

Overfitting i underfitting

En la precisió és on entra l’overfitting, un model amb molt de overfit és aquell que genera una lı́nia que s’adapta a tots els punts que li hem ficat a la perfecció, i underfitting és aquella funció que ho fa massa poc, una funció amb molt de overfit serà horrible estimant dades desconegudes, una bona funció farà una bona feina, i una underfitted farà també una feina pèssima ja que els seus resultats tindran molt de marge de error, és més fàcil caure en l’overfit que en l’underfit perquè els valors del RMSE per a una funció overfitted resulten molt esperançadors, quan es avalua en dades conegudes, en canvi en l’underfit no sol donar bons resultats. La forma de fer la funció apropiada és anar ajustant poc a poc com de laxe és el model fins trobar el punt apropiat 2.2. En l’últim cas com observem a més s’ajusta a tots els punts, això ens indica que no és linear segur.

2.4

Distribució de sets

Els sets es poden distribuir de diferents formes, segons diverses fonts es recomana aproximadament una distribució del 70% per al train set i 30% per al test set, o distribució 70/30. Però hi han altres formes que donen resultats més òptims com ara la cross validation on partim el data set en més parts i construı̈m un model per cada part per després combinar-los tots, els models tenen petites calculant la mitjana d’aquestes s’obté un resultat lleugerament millor, tot i que fer-ho aixı́ resultat més complicat els resultats solen ser lleugerament més acurats.

17


Álvaro Arquero Mtz-Aguado

CAPÍTOL 2. LA MODELITZACIÓ DE DADES

Figura 2.2: Overfit i underfit gràficament

Figura 2.3: Com funciona la cross validation

2.5

Normalització

En alguns algorismes l’escala és molt important, com ara en la famı́lia dels k-NN, per tant es probable que es tinguen que normalitzar les variables, això és que les variables es poden trobar en escales completament diferents unes de altres (no està en la mateixa escala els litres d’aigua, que augmenten molt ràpid i poden tenir valor de moltes xifres, que, per exemple, si un ventilador es troba encès o apagat, 1 o 0). No ens interessa treballar amb valor Booleans per a poder generar les mitjanes i modes, per tant ho expressem aixı́, normalitzar, es pot fer, per exemple, d’aquesta forma: x − min(x) max(x) − min(x) Si és necessari un procés de normalització en el treball, es realitzarà, per això s’explica, tot i que s’indicarà. Això pot afectar una mica la interpretació del model, el canviar d’escala les variables, i al barrejar-les pot no se fàcil de desfer després com afecta cada variable, per això primer és farà l’anàlisi 1 a 1 de les variables, i després el model, segurament fent servir k-NN, per a ja tenir clara la relació i veure una possible aplicació de Machine Learning.

18


Capı́tol 3

Machine Learning i Deep Learning Machine Learning i sobretot Big Data, són termes que saturen molts de mitjans de divulgació tècnica i cientı́fica recentment, tal com passa amb Deep Learning. Aquı́ desenvoluparem una petita idea de que es tracta. Com es pot apreciar en la figura, Machine Learning és un terme molt general, i intel·ligència artificial, un altre terme relacionat, encara ho és més. Tot el Machine Learning és IA, de la mateixa manera que tot el Deep Learning és Machine Learning. IA són totes aquelles respostes d’un programa que busquen donar respostes correctes o que semblen lògiques. Quan el que busquem és predir, llavors recorrem a la branca del Machine Learning, on podem trobar molts de models segons el problema al que ens enfrontem,i tenint, a més, la peculiaritat, que aquests algorismes poden fer coses que no estiguin explı́citament programades, d’aquests, els de Deep Learning són els més complexos de programar, i, per tant, els que, quan correctament entrants, són els més acurats, i, per tant, els que sovint ofereix millors resultats (sobretot en classificació d’imatges), apropant-se als percentatges de errors d’humans avui per avui.

Figura 3.1: IA, Machine Learning i Deep Learning Ara bé, com funciona el Deep Learning? Aquesta és una pregunta prou complicada de respondre, per a fer-ho es farà ús de recursos externs, si es desitja consultar les fonts originals seran citades a la webgrafı́a i bibliografı́a. De forma superficial podrı́em dir que la caracterı́stica principal d’aquests algorismes és que tenen diverses capes que es decideixen a priori, llavors, per il·lustrar parlaré del cas d’una imatge, si volguéssim que decidı́s si es tracta per exemple d’una poma o d’una mandarina, la primera capa tindria una entrada de 3 nombres per pixel, els tres valors dels colors RGB, aplicaria una operació matemàtica predefinida per la màquina segons on es trobes el pı́xel, això és el que s’anirà modificant, les operacions entre capes, després, s’aplicaria una altra operació al passar entre capes, i aixı́ fins arribar a la última, la primera capa tindria tantes n̈eurones¨(aixı́ s’anomenen els nodes on s’emmagatzemen els nombres entre capes) com pı́xels la imatge, i la última tantes com sortides possibles, en aquest cas, dues. Tot i que podrı́em programar un algorisme de Deep Learning

19


Álvaro Arquero Mtz-Aguado

CAPÍTOL 3. MACHINE LEARNING I DEEP LEARNING

Figura 3.2: Classificació de models per similitud en el funcionament amb una única neurona de sortida que fos, per exemple un nombre, i ensenyar-li a calcular, per exemple, divisions, aquesta a base de veure exemples acabaria aprenent, però és com matar una mosca a canonades, per això tenim calculadores. Els resultats de totes les transformacions donen a cada neurona un nombre, el algorisme tria el més alt i es diu que ha pres una decisió, realment no es sap molt be quins nombres es trien ni que es fa entre capes amb els nombres, es com si cada nexe entre neurones tingues un regulador i les dades, a mesura que es van corregint, van ajustant els reguladors per a que doni sempre bé per a aquelles dades. Quan s’ha fet milers de cops, és fàcil que la màquina sigui molt bona classificant imatges que mai ha vist encara.

20


Álvaro Arquero Mtz-Aguado

CAPÍTOL 3. MACHINE LEARNING I DEEP LEARNING

Figura 3.3: Classificació de models per mètode d’aprenentatge

Figura 3.4: Deep Learning i com funciona

21


Capı́tol 4

R com a llenguatge de programació estadı́stic R és un entorn i llenguatge de programació amb un enfocament estadı́stic, a més pertany a la categoria de software lliure, que significa que pot ser utilitzat lliurement, per modificar-lo, copiar-lo, estudiar-lo o modificar-lo, i redistribuı̈t amb o sense canvis o millores, va aparèixer el 1993 i és molt popular entre estadistes i data minners, no explicaré la seva història perquè pot ser trobada a qualsevol lloc i allargaria molt el treball, no obstant deixo referenciat un enllaç a la webgrafia. No obstant allò rellevant sobre R és tant la possibilitat de fer plots, o gràfics, i la d’instal·lar una gran varietat de paquets i extensions, orientats a qualsevol camp, a més es poden importar algorismes d’altres llenguatges com C o S. Ha sigut el elegit per a aquest treball per la seva orientació estadı́stica i el fàcil que és en ell manipular objectes com el nostre data set.

22


Part II

Treball experimental i programacioĚ

23


Capı́tol 5

Obtenció i tractament de les dades Les dades han sigut subministrades per la planta CEMEX Alcanar, els fitxers es poden trobar en enllaços per a descarregar-los al final del treball, en un inici es trobaven en un fitxer Excel, però amb aquest petit codi foren exportades a R directament (les dades), no van ser necessaris passos extra. #Guardem l’Excel com a ODS per el paquet que farem sevir per tal d’importar les dades #Instal·lem el paquet que ens permetrà importar el fitxer ODS a R > install.packages(readODS) > library(readODS) > train_set <- read_ods(path=C:\\Users\\Alvaro\\Desktop\\TdR_CEMEX\\R\\Workspace \\test_set.ods") > test_set <- read_ods(path="C:\\Users\\Alvaro\\Desktop\\TdR_CEMEX\\R\\Workspace \\test_set.ods") > val_set <- read_ods(path="C:\\Users\\Alvaro\\Desktop\\TdR_CEMEX\\R\\Workspace \\val_set.ods") #Com podem apreciar a la figura 1 del Workspace, ara necessitem nombrar les columnes > names(val_set) <- c("data","kv1","ma1","kv2","ma2","kv3","ma3","tempfil", "wflow","dustfan", "mill","dust_output","kiln") > names(test_set) <- c("data","kv1","ma1","kv2","ma2","kv3","ma3","tempfil", "wflow","dustfan", "mill","dust_output","kiln") > names(train_set) <- c("kv1","ma1","kv2","ma2","kv3","ma3","tempfil","dustfan", "mill","dust_output","kiln","data","wflow") #Les variables han estat nombrades aixı́ per el que representen, però per estudiar la seva correlació no és un aspecte que anem a tenir en compte, almenys al model primitiu, a l’Excel es troba una petita explicació #Tot seguit aplicarem les transformacions necessàries per a deixar les dades tal i com es trobaven al document original > train_set[,1:7] <- train_set[,1:7]/100 > train_set[,10] <- train_set[,10]/10000000000 > val_set[,2:9] <- val_set[,2:9]/100 > val_set[,12] <- train_set[,12]/10000000000 #Aquesta funció transformarà les dades que R detecta com a caràcters en dates > val_set[,1] <- as.POSIXct(val_set[,1], format = "%d/%m/%Y %H:%M") > train_set[,1] <- as.POSIXct(train_set[,1], format = "%d/%m/%Y %H:%M") > test_set[,1] <- as.POSIXct(test_set[,1], format = "%d/%m/%Y %H:%M") #Ara les que detecta com a caràcters i haurien de ser nombres > test_set[,2] <- gsub(",",".",test_set[,2]) > test_set[,3] <- gsub(",",".",test_set[,3]) > test_set[,4] <- gsub(",",".",test_set[,4])

24


Álvaro Arquero Mtz-Aguado

CAPÍTOL 5. OBTENCIÓ I TRACTAMENT DE LES DADES

> test_set[,6] <- gsub(",",".",test_set[,6]) > test_set[,11] <- gsub(",",".",test_set[,11]) > test_set[,2]<- as.numeric(test_set[,2]) > test_set[,3]<- as.numeric(test_set[,3]) > test_set[,4]<- as.numeric(test_set[,4]) > test_set[,6]<- as.numeric(test_set[,6]) > test_set[,11]<- as.numeric(test_set[,11]) > test_set[,5] <- test_set[,5]/100 > test_set[,7:9] <- test_set[,7:9]/100 > test_set[, 12] <- test_set[,12]/10000000000 > test_set[,13] <- test_set[,13]/100 #Amb aquest últim pas conclòs, ja es pot començar l’anàlisi Els sets s’han partit 45%5%50% per veure si el model serà capaç de predir les dades amb una variable data tan diferent, tot i que no sigui recomanable una distribució amb tantes dades al test set. En aquest capı́tol s’ha pogut veure un exemple pràctic, el del treball, de com processar unes dades en brut i obtenir un data set que podrem sotmetre a anàlisi.

25


Capı́tol 6

Anàlisi estadı́stic En R trobem una funció que ens permet fer un anàlisi estadı́stic bàsic amb un comandament, aquesta s’anomena summary, i serà la segona part d’aquest apartat, primer s’esmentaran, tot i que no sigui massa rellevant per a la part pràctica, de quines variables disposa el data set, per a donar una dimensió de la gran varietat d’aplicacions que tenen aquestes tècniques i un possible exemple. • DATA: El moment en que es van prendre les mesures de les dades • KV 1ST FIELD: El voltatge del primer camp electrofiltre • mA 1ST FIELD: La intensitat del primer camp electrofiltre • KV 2ND FIELD: El voltatge del segon camp electrofiltre • mA 2ND FIELD: La intensitat del segon camp electrofiltre • KV 3RD FIELD: El voltatge del tercer camp electrofiltre • mA 3RD FIELD: La intensitat del tercer camp electrofiltre • WATER FLOW L/MIN: Caudal de l’aigua • TEMP INLET FILTER: Temperatura d’entrada al electrofiltre • DUST FAN %: Variador del ventilador del electrofiltre • RAW MILL ON/OFF: Si el molı́ de cru es troba encès o apagat • DUST mg/NM3: Pols emesa • Kiln feed (tn/h): Alimentació del forn Aquest treball permetrà, per tant, veure com afecten els electrofiltres al control de la pols emesa, en definitiva, si funcionen de forma correcta i en quina mesura ho fan. #Anem a veure un petit anàlisi de del train set. > summary(train_set) kv1 ma1 Min. :44.61 Min. : 13.18 1st Qu.:69.69 1st Qu.:197.27 Median :75.23 Median :241.70 Mean :72.99 Mean :254.13 3rd Qu.:76.88 3rd Qu.:308.11

les dades, per a fer tots aquests processos es farà ús

kv2 Min. :37.94 1st Qu.:60.21 Median :60.60 Mean :60.26 3rd Qu.:61.04

26

ma2 Min. : 66.48 1st Qu.:298.00 Median :325.61 Mean :327.41 3rd Qu.:356.76


Álvaro Arquero Mtz-Aguado

Max.

:80.00

kv3 Min. :24.56 1st Qu.:40.09 Median :40.19 Mean :39.91 3rd Qu.:40.23 Max. :42.72 mill Min. :0.0000 1st Qu.:1.0000 Median :1.0000 Mean :0.7722 3rd Qu.:1.0000 Max. :1.0000

Max.

CAPÍTOL 6. ANÀLISI ESTADÍSTIC

:478.52

ma3 Min. :105.5 1st Qu.:283.7 Median :300.8 Mean :304.0 3rd Qu.:326.7 Max. :471.7

Max.

:63.67

tempfil Min. : 69.37 1st Qu.: 96.44 Median : 97.94 Mean : 99.56 3rd Qu.:100.57 Max. :191.75

dust_output Min. : 0.000117 1st Qu.: 9.661870 Median :10.271990 Mean : 9.584107 3rd Qu.:10.732700 Max. :13.569470

Max.

:505.44

dustfan Min. :77.00 1st Qu.:83.00 Median :83.00 Mean :83.14 3rd Qu.:85.00 Max. :88.00

kiln Min. : 70.0 1st Qu.: 96.0 Median :101.0 Mean :100.4 3rd Qu.:105.0 Max. :112.0

data wflow Min. :2017-10-01 00:00:00 Min. : 0.17 1st Qu.:2017-10-01 02:38:00 1st Qu.:104.08 Median :2017-10-01 05:31:00 Median :117.41 Mean :2017-10-01 05:47:51 Mean :138.73 3rd Qu.:2017-10-01 09:02:00 3rd Qu.:141.33 Max. :2017-10-01 11:59:00 Max. :299.93 NA’s :2880 #Procedim a calcular les desviacions estàndard, mitjançant la funció predefinida sd{}, per a això utilitzem vapply{}, funció que permet aplicar una altra a totes les files de un data frame, es podria aconseguir el mateix objectiu fent servir un for, però aquest mètode és més ràpid > sd_train_set <- sapply(train_set,sd) > sd_train_set kv1 ma1 kv2 ma2 kv3 ma3 5.7964871 82.4158478 1.7940495 49.3219996 1.1397643 35.5382503 tempfil dustfan mill dust_output kiln data 5.4598398 1.7163994 0.4194525 2.6370562 6.5224876 NA wflow 51.7996640 #Calculem les covariàncies entre variables d’entrada per separat i la pols emesa es pot fer manualment o amb un codi for que iteri les x i no les y, per simplesa es farà a mà, però es volia deixar constància que també es pot realitzar d’aquesta forma > cov_train_set_kv1 <- cov(train_set$kv1, train_set$dust_output) > cov_train_set_kv1 [1] -0.446352 > cov_train_set_ma1 <- cov(train_set$ma1, train_set$dust_output) > cov_train_set_kv2 <- cov(train_set$kv2, train_set$dust_output) > cov_train_set_ma2 <- cov(train_set$ma2, train_set$dust_output) > cov_train_set_kv3 <- cov(train_set$kv3, train_set$dust_output) > cov_train_set_ma3 <- cov(train_set$ma3, train_set$dust_output) > cov_train_set_tempfil <- cov(train_set$tempfil, train_set$dust_output) > cov_train_set_dustfan <- cov(train_set$dustfan, train_set$dust_output) > cov_train_set_mill <- cov(train_set$mill, train_set$dust_output) > cov_train_set_kiln <- cov(train_set$kiln, train_set$dust_output) > cov_train_set_wflow <- cov(wflow, train_set$dust_output)

27


Álvaro Arquero Mtz-Aguado

CAPÍTOL 6. ANÀLISI ESTADÍSTIC

#Farem un vector amb totes les covariàncies, recordem de la part teòrica que quan és positiva un major valor del input representa un major output > cov_train_set <- c(cov_train_set_kv1, cov_train_set_ma1, cov_train_set_kv2, cov_train_set_ma2, cov_train_set_kv3, cov_train_set_ma3, cov_train_set_tempfil, cov_train_set_dustfan, cov_train_set_mill, cov_train_set_kiln, cov_train_set_wflow) > cov_train_set [1] -0.44635195 -6.55935846 0.06429542 -11.99531112 0.03278827 [6] -11.42883479 -1.88533039 -0.52003145 0.23973912 -0.80320009 [11] -28.40670969 #A la variable data hi han moltes cel·les buides i valors que no són vàlids, aixı́ que serà eliminada, en posteriors versions del codi s’intentarà corregir aquest defecte però envers aquesta versió del treball es farà més esment a la variable data, segurament no tindrà un efecte molt gran ja que els valors per a POSIXct solen ser molt grans i per tant una covariància de -0.8 en aquests valors no es creu que sigui estadı́sticament massa significativa > train_set <- train_set[,-12] #Per saber si aquests resultats son estadı́sticament significatius o no necessitem fer dues coses, primer normalitzar el set i repetir el càlcul, per poder compar-ho amb les altres, i desprès calcular el coeficient de Pearson #Només per curiositat apliquem la funció str per veure l’estructura del nostre train set > str(train_set) ’data.frame’: 5417 obs. of 13 variables: $ kv1 : num 61.2 75.5 70.5 68.9 61.7 ... $ ma1 : num 275 282 239 292 214 ... $ kv2 : num 60.2 59.3 59.1 59.8 59.7 ... $ ma2 : num 373 365 432 351 389 ... $ kv3 : num 39.1 39.1 39.1 39.1 39.1 ... $ ma3 : num 301 303 304 297 303 ... $ tempfil : num 105 105 105 106 105 ... $ dustfan : int 77 77 77 77 77 77 77 77 77 77 ... $ mill : int 0 0 0 0 0 0 0 0 0 0 ... $ dust_output: num 8.49 8.62 8.68 8.62 8.62 ... $ kiln : int 94 94 94 94 94 94 94 94 94 94 ... $ wflow : num 223 224 223 224 224 ... > kv1_norm <- (train_set$kv1-min(train_set$kv1))/(max(train_set$kv1) -min(train_set$kv1)) > ma1_norm <- (train_set$ma1-min(train_set$ma1))/(max(train_set$ma1) -min(train_set$ma1)) > kv2_norm <- (train_set$kv2-min(train_set$kv2))/(max(train_set$kv2) -min(train_set$kv2)) > ma2_norm <- (train_set$ma2-min(train_set$ma2))/(max(train_set$ma2) -min(train_set$ma2)) > kv3_norm <- (train_set$kv3-min(train_set$kv3))/(max(train_set$kv3) -min(train_set$kv3)) > ma3_norm <- (train_set$ma3-min(train_set$ma3))/(max(train_set$ma3) -min(train_set$ma3)) > tempfil_norm <- (train_set$tempfil-min(train_set$tempfil))/ (max(train_set$tempfil)-min(train_set$tempfil)) > dustfan_norm <- (train_set$dustfan-min(train_set$dustfan))/ (max(train_set$dustfan)-min(train_set$dustfan)) > dust_output_norm <- (train_set$dust_output-min(train_set$dust_output))/

28


Álvaro Arquero Mtz-Aguado

CAPÍTOL 6. ANÀLISI ESTADÍSTIC

(max(train_set$dust_output)-min(train_set$dust_output)) > kiln_norm <- (train_set$kiln-min(train_set$kiln))/(max(train_set$kiln) -min(train_set$kiln)) > wflow_norm <- (train_set$wflow-min(train_set$wflow))/(max(train_set$wflow) -min(train_set$wflow)) #No és necessari normalitzar mill, ja ho està de per se, per això es va decidir no treballar amb Booleans #Ara podem passar a calcular les covariàncies altre cop però ara si que rebrem informació útil, primer, farem un data frame amb totes les observacions normalitzades > train_set_norm <- data.frame(kv1_norm, ma1_norm, kv2_norm, ma2_norm, kv3_norm, ma3_norm, tempfil_norm, dustfan_norm, train_set$mill, kiln_norm, wflow_norm, dust_output_norm) #Veem si s’ha normalitzat tot correctament > summary(train_set_norm) kv1_norm ma1_norm kv2_norm ma2_norm Min. :0.0000 Min. :0.0000 Min. :0.0000 Min. :0.0000 1st Qu.:0.7087 1st Qu.:0.3956 1st Qu.:0.8655 1st Qu.:0.5274 Median :0.8652 Median :0.4911 Median :0.8807 Median :0.5903 Mean :0.8018 Mean :0.5178 Mean :0.8676 Mean :0.5944 3rd Qu.:0.9118 3rd Qu.:0.6338 3rd Qu.:0.8978 3rd Qu.:0.6613 Max. :1.0000 Max. :1.0000 Max. :1.0000 Max. :1.0000 kv3_norm ma3_norm tempfil_norm dustfan_norm Min. :0.0000 Min. :0.0000 Min. :0.0000 Min. :0.0000 1st Qu.:0.8552 1st Qu.:0.4867 1st Qu.:0.2212 1st Qu.:0.5455 Median :0.8607 Median :0.5333 Median :0.2335 Median :0.5455 Mean :0.8451 Mean :0.5422 Mean :0.2467 Mean :0.5583 3rd Qu.:0.8629 3rd Qu.:0.6040 3rd Qu.:0.2549 3rd Qu.:0.7273 Max. :1.0000 Max. :1.0000 Max. :1.0000 Max. :1.0000 train_set.mill kiln_norm wflow_norm dust_output_norm Min. :0.0000 Min. :0.0000 Min. :0.0000 Min. :0.0000 1st Qu.:1.0000 1st Qu.:0.6190 1st Qu.:0.3466 1st Qu.:0.7120 Median :1.0000 Median :0.7381 Median :0.3911 Median :0.7570 Mean :0.7722 Mean :0.7229 Mean :0.4622 Mean :0.7063 3rd Qu.:1.0000 3rd Qu.:0.8333 3rd Qu.:0.4709 3rd Qu.:0.7909 Max. :1.0000 Max. :1.0000 Max. :1.0000 Max. :1.0000 > cov_kv1_norm <- cov(kv1_norm,dust_output_norm) > cov_ma1_norm <- cov(ma1_norm,dust_output_norm) > cov_kv2_norm <- cov(kv2_norm,dust_output_norm) > cov_ma2_norm <- cov(ma2_norm,dust_output_norm) > cov_kv3_norm <- cov(kv3_norm,dust_output_norm) > cov_ma3_norm <- cov(ma3_norm,dust_output_norm) > cov_tempfil_norm <- cov(tempfil_norm,dust_output_norm) > cov_dustfan_norm <- cov(dustfan_norm,dust_output_norm) > cov_kiln_norm <- cov(kiln_norm,dust_output_norm) > cov_wflow_norm <- cov(wflow_norm,dust_output_norm) > cov_norm_train <- c(cov_kv1_norm, cov_ma1_norm, cov_kv2_norm, cov_ma2_norm, cov_kv3_norm, cov_ma3_norm, cov_tempfil_norm, cov_dustfan_norm, cov_train_set_mill, cov_kiln_norm, cov_wflow_norm) > cov_norm_train [1] -0.0009294750 -0.0010387997 0.0001841540 -0.0020138514 0.0001330588 [6] -0.0022999194 -0.0011353189 -0.0034839970 0.2397391172 -0.0014093385 [11] -0.0069837407 #El coeficient de Pearson segurament donarà relacions similars a això, anem a calcular-lo de totes maneres, però ja podem albirar que hi ha algunes

29


Álvaro Arquero Mtz-Aguado

CAPÍTOL 6. ANÀLISI ESTADÍSTIC

variables amb desviacions que no semblen significatives, tot es comentarà a la part conclusions, però es probable que sigui només per una mostra insuficient que obtenim alguns valors tant petits, i que amb mostres més gran serien més propers a 0, com ara els casos dels kv #Es procedirà a seguir treballant amb les dades normalitzades per comoditat i facilitat d’interpretació tot i que les unitats perden el sentit fins que es desfà la normalització aplicant-la a la inversa > corr_train_set_norm <- cor(train_set_norm, dust_output_norm) > corr_train_set_norm [,1] kv1_norm -0.02920069 ma1_norm -0.03018083 kv2_norm 0.01359021 ma2_norm -0.09222559 kv3_norm 0.01090898 ma3_norm -0.12195133 tempfil_norm -0.13094478 dustfan_norm -0.11489255 train_set.mill 0.21673884 kiln_norm -0.04669723 wflow_norm -0.20795751 dust_output_norm 1.00000000 #Aquı́ finalitza l’anàlisi estadı́stic, ara coneixem molt bé les variables i sabem com interactuen entre elles, tot i que seguim amb el dubte de la significança estadı́stica de cadascuna, però com totes donen valors de un ordre similar sembla que no seria prudent desestimar-ne cap, tot això serà comentat a les conclusions

30


Capı́tol 7

Gràfics de correlació 1 a 1 En aquest capı́tol es crearan plots de la relació entre les variables de entrada i les de sortida 1 a 1, s’enganxaran aquı́ i es comentaran, per tal de decidir quina tècnica es farà servir per a modelitzar. Els gràfics es ficaran a gran escala i es referenciarà la figura al final del comentari, per a que es puguin apreciar bé, tot i que pugui fer una mica incòmoda la lectura del treball al haver de anar girant les pàgines, donat que aquests resultats són originals es creu convenient que es faci aixı́. #Anem a crear el primer plot, farem servir ggplot2 > install.packages(ggplot2) > library(ggplot2) #Farem servir la funció qplot, no treu tot el potencial de ggplot, però per a aquests plots serà més que suficient #El gràfic generarà les sortides de la pols en funció de el wflow, i a més generarà una lı́nia imaginària que és el resultat de la mitjana de tots els valors que es troben en un mateix input, com un model primitiu però només 1 a 1 > qplot_wflow <- qplot(wflow_norm, dust_output_norm, data=train_set_norm, geom=c("point", "smooth"), > ggsave("qplot_wflow.png") Aquest és un plot genuı̈nament curiós i que ja deixa present a partir del minut 0 que la correlació lineal no podrà ser utilitzada en aquest treball, ja que no s’obtindrien resultats molt més rellevants que la pura casualitat, no obstant, una tècnica similar al clustering o k-NN podria oferir uns molt bons resultats, ja que veiem que els punts estan prou centrats, els resultats segurament estaran lleugerament desplaçats per les mostres residuals que podem veure al fons del gràfic, segurament resultat de les mostres preses amb mill=0, que és quan s’observava una menor quantitat de pols, era el factor que més influı̈a i ho feia de forma directa enlloc d’inversa com aquesta variable. S’ha elegit aquest com a primer plot perquè és on podem apreciar de forma francament clara com a mesura que la x augmenta els punts es van desplaçant cap abaix, hi ha una relació directa, però és molt difı́cil de descriure amb una funció perquè depèn de molts altres factors i no solament això, hem vist que es pot predit en un factor de aproximadament o.21 mitjançant la variable wflow, això significa que els factors més rellevants siguin segurament aleatoris o depenent d’altres coses com ara la composició pròpia de les roques utilitzades. El coeficient de Pearson ha estat acotat [-1,1] la qual cosa implica que augmentant el wflow podem esperar una reducció de la pols de al voltant del 21%, és el factor de més pes a l’hora de disminuir la quantitat de partı́cules emeses. Algunes de les corbes, com segurament passarà en tots els gràfics, tenen determinades formes per el fet que la mostra no és uniforme 7.1. > qplot_kv1 <- qplot(kv1_norm, dust_output_norm, data=train_set_norm, geom=c("point", "smooth"), main="dust_output en funció de kv1", xlab="kv1 norm", ylab="dust norm")

31


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

> ggsave("qplot_kv1.png") Aquest gràfic bé podria ser la mostra de dos variables amb molt poca relació entre elles, observem una petita desviació de cara al final que fa pensar que amb valor més alts de kv1 s’aboca menys pols, potser amb una mostra més gran es mantindria o es tornaria una lı́nia recta, però tot fa pensar que es mantindria, si ens fixem a la part alta del gràfic veiem com els valors més extrems es donen per valor mitjans del kv1, en canvi per valors molt alts de kv1 la densitat de la part mitjana del eix y augmenta, direm, doncs, que sı́ que s’aprecia certa relació entre kv1 i dust output. També observem els punts de sota del tot que segurament son per mill=0, ja que representen menys del 25% de la mostra i tenen valors molt diferents de la resta. Té sentit que al apagar el molı́ es produeixen menys partı́cules 7.2. > qplot_mill <- qplot(train_set.mill, dust_output_norm, data=train_set_norm, geom=c("point", "smooth"), main="dust_output en funció de mill", xlab="mill", ylab="dust norm") > ggsave("qplot_mill.png") Com resulta habitual no tot és tan senzill com sembla i per tant tampoc és tan directa la correlació mill dust output, podem veure que realment és significativa i hi ha un desplaçament important quan mill és 1 o és 0, però hi ha altres factors que són els causants de les mostres residuals que apreciem al fons del gràfic. Tot i que amb mill són desplaçades, no és el gràfic creuat en el qual quan mill=0 tots els valors són a sota i quan mill=1 són a dalt. Això és una cosa que ja es podia suposar, hi ha una relació de prop del 22% entre mill i dust output, no del prop del 100 que seria quan una lı́nia recta podria creuar el gràfic de costat a costat. A que es deu llavors la distribució del gràfic queda obert a debat, i podria ser un problema curiós d’enfrontar però que queda fora de els objectius d’aquest treball, almenys de la primera versió 7.3. > qplot_ma1 <- qplot(ma1_norm, dust_output_norm, data=train_set_norm, geom=c("point", "smooth"), main="dust_output en funció de ma1", xlab="ma1", ylab="dust norm") > ggsave("qplot_ma1.png") El gràfic número 4 i la seva corba que representa les mitjanes de les alçades tenen una forma que crida l’atenció, s’observa com en un al primer i segon terç del gràfic, aproximadament, per a un valor més exacte es podria recórrer a derivar la funció expressada per la lı́nia blava però no hi ha cap necessitat, hi han màxims, però tenen poca alçada respecte el mı́nim relatiu situat aproximadament a la meitat, en canvi de cara tant als extrems superiors com inferiors de y si veiem desviacions rellevants de les dades a la baixa. Com ja resultat habitual a aquestes alçades, i podem pronosticar que seguirà passant en la resta de gràfics, al fons tenim 2 grups que escapen totalment al conjunt majoritari de dades, i si ens fixem podem observar com els que son minoria i segurament responen a mill=0 estan situats per sota 7.4. > qplot_kv2 <- qplot(kv2_norm, dust_output_norm, data=train_set_norm, geom=c("point", "smooth"), main="dust_output en funció de kv2", xlab="kv2", ylab="dust norm") > ggsave("qplot_kv2.png") És en aquest gràfic on si que s’observa allò que s’ha esmentat en algunes ocasions i que com ja s’havia especulat pot ser la causa que doni un valor positiu la correlació entre kv2 i dust output, les dades no són uniformes, i per tant a l’espectre més alt de tots, n’hi ha molt poques que segurament per casualitat han resultat ser altes, això ha generat que el valor sigui positiu, com podem observar, la corba s’aproxima d’esquerra a dreta des de dalt, i va baixant fins que assoleix un mı́nim prop dels tres quarts de x, per després a la zona amb més densitat de dades augmentar una mica, tornar a disminuir i sortir d’aquesta zona amb una tendència ascendent que pot portat a confusió. Tenim també els valors extremadament baixos de pols que seguim sense saber a què són deguts 7.5. > qplot_ma2 <- qplot(ma2_norm, dust_output_norm, data=train_set_norm,

32


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

geom=c("point", "smooth"), main="dust_output en funció de ma2", xlab="ma2", ylab="dust norm") > ggsave("qplot_ma2.png") Un altre comentari que es pot fer arran d’aquest gràfic és que a les zones de molta densitat de dades, les lı́nies predictores tenen pràcticament pendent 0 i són quasi rectes, la qual cosa ens sembla voler dir que són factors que tenen poc pes en general en la emissió de pols, no obstant si s’observen altres clústers d’alta densitat de dades, en aquest gràfic hi ha un gran núvol, un espai amb poca densitat, i un altre núvol però més per sota, i això empeny a pensar tot el contrari, si per exemple ens fixem en la resta entre on comença la lı́nia predictora i on acaba, si que veurem una petita diferència, aquesta sembla la dada rellevant per a determinar que sı́ és important aquest camp, de la mateixa forma que passa aixı́ amb tots els altres gràfics fins el moment. El resultats podrien ser més acurats amb més quantitats de dades, no obstant l’estudi s’ha fet amb el train set ja que és el que desprès servirà per a predir, sobre el que es construirà el model, les entrades del qual també hauran de ser normalitzades, i que gràcies a la lı́nia sabem que amb un algorisme k-NN obtindrem resultats que segurament es situaran sobre aquesta. Una possible crı́tica podria ser llavors la distribució dels sets, i que per a un algorisme k-NN no necessitarem, presumiblement, un validation set, però això serà discutit a les conclusions i en tot cas, corregit, per a versions posteriors del treball7.6. > qplot_kv3 <- qplot(kv3_norm, dust_output_norm, data=train_set_norm, geom=c("point", "smooth"), main="dust_output en funció de kv3", xlab="kv3", ylab="dust norm") > ggsave("qplot_kv3.png") Fins el moment en cap gràfic ha sigut tan notable la influència de la distribució de les dades com en aquest, a més la gran diferència de les alçades per a una x tan concentrada fa que sembli aquest un factor realment poc rellevant, segurament aquest és el motiu per a la correlació positiva, però en aquest cas segurament no s’hauria de tenir i en compte i hauria de ser atribuı̈da més bé a una distribució irregular. Un petit esment a els valors de sota, tampoc són causat per kv3 7.7. > qplot_ma3 <- qplot(ma3_norm, dust_output_norm, data=train_set_norm, geom=c("point", "smooth"), main="dust_output en funció de ma3", xlab="ma3", ylab="dust norm") > ggsave("qplot_ma3.png") Un gràfic francament similar a ma1 i ma2, com és kv3 serà a kv2, però no a 1, on hi ha una més àmplia distribució de dades, cosa que genera una predicció casi recta.En allò que respecta a la y, gran amplitud. Un gran clúster i un de més petit, en aquest cas més difı́cil de diferenciar justament a sota a la dreta, però apegat, i una lı́nia predictora que té molt de sentit i sembla acurada a les zones de alta densitat, tot i que desplaçada a causa dels valors que anomenem residuals de sota, però que tant per esquerra com per dreta, on hi han pocs valors, s’amplia l’espectre gris i és més fàcil desviar-la. Tenim també els valors de sota que seguim sense saber a que es deuen 7.8. > qplot_tempfil <- qplot(tempfil_norm, dust_output_norm, data=train_set_norm, geom=c("point", "smooth"), main="dust_output en funció de tempfil", xlab="tempfil", ylab="dust norm") > ggsave("qplot_tempfil.png") A pesar de la distribució de dades, sembla que tempfil pot ser un factor realment important a la hora de reduir les emissions de pols, el gràfic ens deixa apreciar que un augment no excessivament exagerat de la temperatura desplaça en gran mesura el clúster de les emissions, tot i que a les parts més a la dreta del gràfic, amb majors x, la lı́nia torne a equilibrar-se. Podem veure també la distribució més baixa de y, que per tant, tampoc es deu a tempfil 7.9. > qplot_dustfan <- qplot(dustfan_norm, dust_output_norm, data=train_set_norm,

33


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

geom=c("point", "smooth"), main="dust_output en funció de dustfan", xlab="dustfan", ylab="dust norm") > ggsave("qplot_dustfan.png") Un parell de coses important a despuntar envers aquest gràfic són que es podria, com en el cas de mill, fer servir factors per eliminar del gràfic aquells valors que on surten representats a la x, però tampoc generaria una diferència més enllà de l’estètica. I també, hi ha que tenir en compte que tot i que no es digui explı́citament al eix x, totes les dades, com ja s’ha esmentat moltı́ssimes vegades, estan normalitzades, això implica que 0 a la x no és 0% de dustfan, és el valor mı́nim del train set de dustfan, que es pot veure a el capı́tol anàlisi estadı́stic i que correspon a 77%. El resultats tenen una gran amplitud i no és una tasca senzilla establir relacions entre ells, podem observar, mirant a la distribució, una forma similar a una paràbola que adopten els valors, tenint el seu màxim al voltant de 0.55 de la mostra al eix x, que probablement correspon al voltant del 80% de dustfan, convertint aquest valor en el menys recomanable si es busquen reduir les emissions segons aquestes dades, tot i que podria ser una il·lusió generada per una distribució no uniforme de la mostra. Els valors que anomenem residuals, aquells de y inexplicablement baixes, segueixen sense ser explicats en aquest gràfic 7.10. > qplot_kiln <- qplot(kiln_norm, dust_output_norm, data=train_set_norm, geom=c("point", "smooth"), main="dust_output en funció de kiln", xlab="kiln", ylab="dust norm") > ggsave("qplot_kiln.png") Com es dona en altres ocasions, un factor podria haver sigut aplicat, però no faria cap diferència més enllà de l’estètica. Com es comú en tots aquests gràfics, sembla que hi han certs valors, però no sempre els més alts, que resulten ser òptims per a la reducció de les partı́cules, en aquest cas sobre el 0.6 de la mostra x tenim una gran densitat de dades desplaçades cap a baix, és molt complicat determinar si es deu en concret a aquesta variable o a altres, però que tenen aquest valor de x les desplaçades és un fet. No hem aconseguit explicar els valors sorprenentment baixos de les y mitjançant aquesta variable. Podem donar per conclòs aquest apartat, ens ha servit per determinar que hi han alguns valors que són molt baixos i que desplacen la lı́nia predictora però no hem pogut determinar que els causa, segueix sent un cas obert, les valoracions extensives dels apartats es faran a les conclusions 7.11.

34


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.1: Gràfic 1, wflow

35


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.2: Gràfic 2, kv1

36


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.3: Gràfic 3, mill

37


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.4: Gràfic 4, ma1

38


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.5: Gràfic 5, kv2

39


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.6: Gràfic 6, ma2

40


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.7: Gràfic 7, kv3

41


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.8: Gràfic 8, ma3

42


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.9: Gràfic 9, tempfil

43


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.10: Gràfic 10, dustfan

44


Álvaro Arquero Mtz-Aguado

CAPÍTOL 7. GRÀFICS DE CORRELACIÓ 1 A 1

Figura 7.11: Gràfic 11, kiln

45


Capı́tol 8

Modelització L’últim capı́tol de la part pràctica i sense dubte el més rellevant, gràcies als dos anteriors ara ja és possible controlar una mica, a ull, els valors per a reduir una mica la emissió de partı́cules, no obstant si volem saber, ans de fer-ho, quins resultats podem obtenir necessitem d’aquest capı́tol, donades les covariàncies que s’han obtingut el rang segurament serà ampli, i per tant no serà una resposta molt acurada segurament, però és fàcil que resulte més útil que simplement intentar a cegues. No es descarta el normalitzar el validation set i inclús part del test set per tal de tenir un train set major, potser es faci en aquesta o posteriors correccions del treball, de totes maneres anem a procedir a la programació.

8.1

Creació del model

#Primer eliminem la data dels dos sets que encara la tenen > val_set <- val_set[,-1] > test_set <- test_set[,-1] #Ara volem que es troben totes les columnes a les mateixes posicions per tal de que sigui més fàcil treballar en ells a la hora de retallar-los, reorganitzar-los o repartir-los de formes diferents > valtest_set <- rbind(val_set,test_set) #Anem a pegar-li un ull a l’estructura > str(valtest_set) ’data.frame’: 9518 obs. of 12 variables: $ kv1 : num 75.7 75.9 75.7 75.5 75.5 ... $ ma1 : num 230 236 234 222 171 ... $ kv2 : num 61.3 61.4 60.6 62.1 61.5 ... $ ma2 : num 268 293 251 306 278 ... $ kv3 : num 40.2 40.2 40.1 40.2 40.3 ... $ ma3 : num 254 265 260 254 265 ... $ tempfil : num 96 95.9 95.9 96 96 ... $ wflow : num 102 102 102 102 102 ... $ dustfan : int 83 83 83 83 83 83 83 83 83 83 ... $ mill : num 1 1 1 1 1 1 1 1 1 1 ... $ dust_output: num 0.999 10.06 10.065 9.985 9.932 ... $ kiln : num 108 108 108 108 108 108 108 108 108 108 ... #Tot seguit els normalitzarem i deixarem distribuı̈ts de la mateixa forma que el train set #Rescriurem "variable"_norm d’aquesta manera si decidim ajuntar-los no serà necessari fer un vector amb noms per que coincideixin amb els del train_set i aixı́ es pugui fer servir la funció rbind > kv1_norm <- (valtest_set$kv1-min(valtest_set$kv1))/(max(valtest_set$kv1)

46


Álvaro Arquero Mtz-Aguado

CAPÍTOL 8. MODELITZACIÓ

-min(valtest_set$kv1)) > ma1_norm <- (valtest_set$ma1-min(valtest_set$ma1))/(max(valtest_set$ma1) -min(valtest_set$ma1)) > kv2_norm <- (valtest_set$kv2-min(valtest_set$kv2))/(max(valtest_set$kv2) -min(valtest_set$kv2)) > ma2_norm <- (valtest_set$ma2-min(valtest_set$ma2))/(max(valtest_set$ma2) -min(valtest_set$ma2)) > kv3_norm <- (valtest_set$kv3-min(valtest_set$kv3))/(max(valtest_set$kv3) -min(valtest_set$kv3)) > ma3_norm <- (valtest_set$ma3-min(valtest_set$ma3))/(max(valtest_set$ma3) -min(valtest_set$ma3)) > tempfil_norm <- (valtest_set$tempfil-min(valtest_set$tempfil)) /(max(valtest_set$tempfil)-min(valtest_set$tempfil)) > dustfan_norm <- (valtest_set$dustfan-min(valtest_set$dustfan)) /(max(valtest_set$dustfan)-min(valtest_set$dustfan)) > kiln_norm <- (valtest_set$kiln-min(valtest_set$kiln)) /(max(valtest_set$kiln)-min(valtest_set$kiln)) > wflow_norm <- (valtest_set$wflow-min(valtest_set$wflow) )/(max(valtest_set$wflow)-min(valtest_set$wflow)) > dust_output_norm <- (valtest_set$dust_output-min(valtest_set$dust_output) )/(max(valtest_set$dust_output)-min(valtest_set$dust_output)) > valtest_set_norm <- data.frame(kv1_norm, ma1_norm, kv2_norm, ma2_norm, kv3_norm, ma3_norm, tempfil_norm, dustfan_norm, valtest_set$mill, kiln_norm, wflow_norm, dust_output_norm) #Ara que tenim totes les dades normalitzades, els sets havien sigut repartits en aquella disposició a causa de es volia veure si la data afectava, no obstant, al haver retirat la data de les variables, podem ajuntar les dades, mesclar les files, i agafar una distribució 70/30, que farà que generem un model molt més precı́s. No s’utilitzarà la tècnica de cross validation perquè en aquest algorisme de k-NN que es farà servir, el qual en algunes esferes de l’enginyeria de dades es diu que no és un model, perquè les prediccions són mitjanes de les dades ben triades, però que en aquest cas es creu que farà una bona funció, quan més gran és el camp de inputs testats millor és el resultat, per tant podria ser fins i tot contraproduent #Necessitem nombrar a les variable mill igual als dos sets per a poder aplicar rbind > names(train_set_norm)[names(train_set_norm)=="train_set.mill"] <- "mill_norm" > names(valtest_set_norm)[names(valtest_set_norm)=="valtest_set.mill"] <- "mill_norm" #Ara apliquem rbind > totes_dades_norm <- rbind(train_set_norm, valtest_set_norm) #Anem a alterar l’ordre de les files per tal de tenir una mostra més variada > totes_dades_norm_a <- totes_dades_norm[sample(1:14935),] #Creem els dos sets > train_set_def <- totes_dades_norm_a[1:10455,] > test_set_def <- totes_dades_norm_a[10456:14935,] #Una ullada a l’estructura del set complet > str(totes_dades_norm_a) ’data.frame’: 14935 obs. of 12 variables: $ kv1_norm : num 0.972 0.974 0.971 0.971 0.97 ... $ ma1_norm : num 0.524 0.51 0.633 0.591 0.773 ... $ kv2_norm : num 0.958 0.95 0.949 0.96 0.951 ... $ ma2_norm : num 0.6 0.511 0.64 0.652 0.738 ... $ kv3_norm : num 0.978 0.984 0.982 0.98 0.981 ... $ ma3_norm : num 0.727 0.57 0.811 0.792 0.847 ... $ tempfil_norm : num 0.327 0.281 0.761 0.76 0.332 ...

47


Álvaro Arquero Mtz-Aguado

CAPÍTOL 8. MODELITZACIÓ

$ dustfan_norm : num 0.4545 0.7273 0.4545 0.4545 0.0909 ... $ mill_norm : num 1 1 0 0 1 1 1 0 1 0 ... $ kiln_norm : num 0.637 0.895 0.404 0.376 0.536 ... $ wflow_norm : num 0.316 0.445 0.521 0.521 0.203 ... $ dust_output_norm: num 0.07808 0.00728 0.71084 0.70421 0.78438 ... #Tot seguit separarem l’output de l’input, la sortida de les entrades, en els dos sets > train_set_label <- totes_dades_norm_a[1:10455,12] > test_set_label <- totes_dades_norm_a[10456:14935,12] #D’aquesta manera creem les etiquetes per a la posterior avaluació del model #Hem d’instal·lar el paquet class per poder fer servir k-NN > install.packages("class") > library(class) #Normalment es pren un valor k que és l’arrel de les observacions, es sol recomanar un 20% o aquest, depèn del data set, en aquest cas s’escollirà l’arrel de les observacions almenys per ara > dades_test_pred <- knn(train = train_set_def, test = test_set_def, cl = train_set_label, k=122) #Aquı́ tenim el nostre algorisme k-Nn, anem a procedir a valorar-lo

8.2

Avaluació del model

Aquesta secció comprovarà fins quin punt són acurats els resultats oferits per el nostre model bàsic de k-NN que acabem de generar. #Comencem definit tant les etiquetes correctes com les predites com a numèrics > num_real_out <- as.numeric(test_set_label) #Necessitem aplicar una petita transformació als outputs ja que no podem transformar factors en numèrics directament, hi han causes per a que sigui aixı́, com ara que per a fer taules els factors són molt més còmodes de treballar, i com knn prediu tant numèrics com classificacions es fa aixı́ per evitar problemes > num_mod_out <- as.numeric(levels(dades_test_pred))[dades_test_pred] #Farem un plot comparant els resultat que ja sabı́em amb els del model per tal de veure quina és l’exactitud de les prediccions del model, i després passarem a les tècniques com l’RMSE o el R-Squared > qplot_av_mod <- qplot(num_real_out, num_mod_out, geom=c("point", "smooth"), main="Predicció del model", xlab="Dades reals", ylab="Dades generades pel model") > ggsave("qplot_av_mod.jpg") En quant anem a avaluar el nostre model, la pregunta que ens sorgeix és, com de bé prediu? Funciona? La resposta, almenys en aquest cas, i donat el gràfic abans de fer els tests que tancaran la part pràctica d’aquest treball i donaran un resultat definitiu, sembla ser que si, i no només ho fa, sinó que a més prou bé. Quant més s’assembli la lı́nia blava del plot a la funció f (x) = x millor prediu, perquè aquesta indica que en una determinada entrada, 0.5 per exemple, obtenim 0.5, i en un gràfic que fica els resultats del model en funció de la realitat, això significaria que seria perfecte, aquest model veiem com té cert núvol al voltant que fa que no sigui completament exacte, i també observem com a fallat completament a predir alguns punts que s’observen als marges, però sembla funcionar per a una bona varietat de casos, a les conclusions és parlarà més sobre això, de moment, no obstant, anem a realitzar les últimes proves diagnòstiques al nostre model. #Com s’explica a la teoria, per al RMSE, primer haurem de calcular els residus. > res_mod <- num_mod_out - num_real_out > rmse_mod <- sqrt(mean(res_mod^2)) > rmse_mod [1] 0.039819

48


Álvaro Arquero Mtz-Aguado

CAPÍTOL 8. MODELITZACIÓ

#Com les dades estan normalitzades, observem un rmse molt petit, això és un indicador esperançador, però anem a calcular R-Squared per a veure si realment és tan bo com sembla, el qual també està explicat a la teoria > ss_res_mod <- sum(res_mod^2) > ss_tot_mod <- sum((num_real_out-mean(num_real_out))^2) > r_sq_mod <- 1 - (ss_res_mod/ss_tot_mod) > r_sq_mod [1] 0.9613119 Com podem observar, el R-Squared com més a prop de 1 millor, i al estar les dades normalitzades 1-rmse és el r squared. El model és extremadament precı́s segons aquestes dues mesures, es pot dir, sense molta por a equivocar-se, que realment és un bon model, almenys per a les dades introduı̈des. I cal recordar, tot i que és evident, però per a evitar confusions, que es tractava de ünseend̈ata, o no ha sigut entrenat amb unes dades i després testat amb les mateixes, sinó que aquestes han variat i han sigut mesclades. Fins aquı́ arriba la part pràctica del treball, ara es passarà a comentar tota l’experiència plegada a les conclusions.

49


Álvaro Arquero Mtz-Aguado

CAPÍTOL 8. MODELITZACIÓ

Figura 8.1: Com de bé prediu el model?

50


Part III

Conclusions

51


Capı́tol 9

Experiències Per començar, espero que se’m permeti parlar a nivell personal durant unes lı́nies, fer aquest treball ha sigut, a nivell personal, probablement, l’experiència més satisfactòria a nivell acadèmic de tota la meva vida, ha estat ple de muntanyes i valls, m’he sentit ofegat i estressat en algunes moments, jovial i alegre en altres, però sobretot ple i satisfet a mesura que s’anava desenvolupant. He aprés tantes coses treballant en ell que crec que la llista tindria més extensió que files el nostre dataset, i estem parlant del ordre dels milers. Vaig trobar-me assegut en el meu escriptori com una persona que a dures penes sabia el que era un dataset i ara, unes 200 hores de feina després de aprendre i escriure, hem sento totalment familiaritzat amb el que he treballat. Puc dir que tinc un nivell bàsic de programació amb R, que sé fer plots, que sé el que és el Machine Learning i que he tingut l’oportunitat d’aplicar-lo en un cas real, inèdit, i de obtindre resultats que hem fan sentir francament orgullós. Puc dir que controlo a nivell usuari LATEXja que desconec moltes funcions avançades i no n’he fet cap de pròpia, però hem sento còmode redactant amb ell i fent-lo servir tant en mode matemàtic com d’escriptura. Molts de cops es sent a l’aula la pregunta de com podem ser la única comunitat autònoma que fem aquest treball, tot i que en alguns moments ha resultat frustrant, hem sap greu que la tònica general en tots els llocs no sigui fer-lo. Gràcies a ell he assolit un nou nivell d’independència acadèmica, i tot i que el meu tutor Marià Cano m’ha ajudat sempre que li ho he demanat, i sobretot al principi hem va acotar el camp de aprenentatge amb R una mica per tal de tenir el suficient com per poder treballar però sense haver d’invertir una quantitat d’hores desproporcionades, el gran gruix de la recerca i, sobretot, la interpretació d’allò que estàs fent és pròpia. Per acabar amb aquest apartat esmentar que el fet d’adquirir tant de coneixement en aquest projecte ha fet que hem vulgui submergir en altres, i que hem trobo, en l’actualitat, pensant sobre quin seria un camp que m’interessaria abordar i com podria fer-ho.

52


Capı́tol 10

Comentari del treball i els resultats La resposta a la pregunta que valorarà aquest treball, s’han complert els objectius? És pot dir, sense massa por a que algú pugui fer interpretacions que disten molt de la pròpia, que sı́. Tots els objectius que foren proposats per aquelles distants dates de fi de primer de Batxillerat de 2017, han sigut acomplerts. Hem determinat com les variables afecten a la sortida, mitjançant la covariància i la correlació, hem fet un anàlisi estadı́stic prou complet de les nostres dades, hem generat els gràfics per veure com eren aquestes relacions i hem creat un model per a predir les sortides. I la resposta a la pregunta és sı́, sembla que podem estimar la quantitat de pols en funció dels paràmetres inicials.

10.1

Valoracions positives

El punt més a favor que es pot pensar és la quantitat de resultat inèdits que es troben en aquestes pàgines, a més pot ser utilitzat, aquest treball, com a guia bàsica de Machine Learning ja que conté explicacions i definicions dels conceptes més bàsics i es construeix a partir de aquı́, assolint un nivell de complexitat no massa alt però submergint a aquell qui ho llegeix completament dins el món de l’enginyeria de dades, fent que li resultin familiars pràcticament tots els termes que són, en aquest món, el pa de cada dia. La millor valoració positiva que és pot fer és el que ha aportat a nivell personal, però això ja s’ha comentat a l’apartat anterior.

10.2

Crı́tiques

Crec que el pitjor error en aquest treball ha sigut la distribució inicial de dades dels sets, ja que al final s’ha decidit que es canviaria, per tant el train set inicial amb el que s’han fet els gràfics i el train set que ha servit per al seu propòsit, fer de bases de dades al algorisme de k-NN, eren completament diferents, perquè a més a més, per a més precisió a l’hora d’entrenar-lo, s’han mesclat les dades del train set abans de entrenar l’algorisme. És per això que aquesta és una de les coses que amb més ı́mpetu es creu que s’haurien de corregir en cas que es creı̈n versions posteriors o revisions d’aquest treball, tant sigui per a enviar-lo a concursos acadèmics com per modificar qualsevol resultat és el fet de fer servir les mateixes dades per a fer els plots que per a entrenar el model, i també per a l’anàlisi estadı́stic. S’ha fet una petita prova per veure si això influı̈a en la distribució de les dades però semblava que no, aixı́ que segurament els resultats no milloraran molt. Un altre punt negatiu envers aquest treball és la tria de les dades, la mostra no era uniforme i és per això que hi ha alguna probabilitat que les prediccions estiguin condicionades per aquest motiu, en definitiva, que en dades molt diferents no funcioni bé, aquest era un problema que no depenia de nosaltres, però que en cas de, com s’ha esmentat, fer una nova revisió del treball, seria una gran idea començar per aquı́. Més bé que una altra crı́tica, un comentari que és parla negativament sobre el treball, per això està aquı́, però que per sobre de tot es curiós, és l’origen d’aquelles dades amb valors de pols emesa tant ı́nfims, quines seran les variables que hauran influı̈t per tal que el valor sigui tan ridı́cul amb comparació amb la resta?

53


Álvaro Arquero Mtz-Aguado

CAPÍTOL 10. COMENTARI DEL TREBALL I ELS RESULTATS

Hi han hagut certs punts que podrien haver sigut afegits al treball i potser li haguessin oferit una nova dimensió, com ara una entrevista a algun membre de la fàbrica, una explicació del sistema de fabricació del ciment, que per a aquells curiosos pot ser trobat a la pàgina web de CEMEX, o una mica més d’aprofundiment sobre les variables. Per a aquells lectors que es trobin en aquesta situació dir que les variables són, en la seva major part, paràmetres del electrofiltre, aquest aparell permet filtrar, com indica el seu nom, partı́cules de diferents mida quan les fa passar a través de camps elèctrics, d’aquı́ les variables dels kilovolts i les intensitats. I altres doncs expressen la quantitat d’aigua que transportava les partı́cules, la temperatura a la que entraven al filtre, o les tones que s’abocaven al forn cada hora. No obstant tot això, donada la aparent precisió del model, sembla que tret dels valors residuals que queden vacants d’explicació, la resta de sortides són explicables mitjançant el nostre model. Allò anteriorment esmentat és positiu perquè els algorismes de tipus k-NN solen donar resultats pitjors al no fer cap suposició sobre les dades, com no són paramètrics, és fàcil que li el pes de diferents variables acabi alterant el resultat, és per això que a pesar de el R-Squared del model seria molt ossat classificat aquest treball de victòria completa sense fer més proves al model.

10.3

Agraı̈ments

A nivell personal vull agrair aquest treball a la col·laboració entre CEMEX i l’Institut-Sòl-de-Riu, ja que gràcies a això ha sigut possible. Al meu tutor Marià Cano per oferir-me la possibilitat de fer-lo. A Claudio per encoratjar-me a prendre la decisió de canviar de treball i triar aquest tot i que la seva proposta era francament interessant. A la meva professora de primària Anna Anglès per ensenyar-me que les matemàtiques són el llenguatge de l’Univers i que entendre-les està a l’abast d’aquell que és disposa a treballar dur, tot i que jo encara no les pugui entendre. Als meus pares i tots els mestres per animar-me a seguir investigant sobre els temes que són del meu interès més enllà d’allò que s’explica a l’aula, a destacar en aquest grup Xavi Castellà i Fernando Juan. I a la meva germana per preguntar si sortia al treball, suposo que això denota interès.

54


Part IV

Referències

55


Bibliografia [1] DataCamp https://www.datacamp.com/ 3-07-2017 [2] John Horton El joc de la vida 1970. https://es.wikipedia.org/wiki/Juego de la vida 24-08-2017 [3] Història de l’estadı́stica. https://es.wikipedia.org/wiki/Historia de la estad%C3%ADstica 26-08-2017 [4] Les dades i la seva classificació. https://bigdata.educaixa.com/es/ 3-09-2017 [5] Modelització. http://www.catb.org/esr/writings/utility-of-math/ 6-09-2017 [6] Machine Learning algorithms. algorithms/ 8-09-2017

https://machinelearningmastery.com/a-tour-of-machine-learning-

[7] Clustering. http://www.sthda.com/english/articles/27-partitioning-clustering-essentials/ 12-09-2017 [8] RMSE. https://www.researchgate.net/figure/258710453 fig1 Figure-2-Average-root-mean-square-errorRMSE-for-each-future-difference-FD 14-09-2017 [9] R-Squared. https://es.wikipedia.org/wiki/M%C3%ADnimos cuadrados 14-09-2017 [10] Correlació. https://es.wikipedia.org/wiki/Correlaci%C3%B3n 24-09-2017 [11] Correlació de Pearson. https://es.wikipedia.org/wiki/Coeficiente de correlaci%C3%B3n de Pearson 2809-2017 [12] Espai probabilı́stic. https://es.wikipedia.org/wiki/Espacio probabil%C3%ADstico 5-10-2017 [13] Les lleis de Morgan. https://es.wikipedia.org/wiki/Leyes de De Morgan 7-10-2017 [14] Probabilitat condicionada. https://es.wikipedia.org/wiki/Probabilidad condicionada 9-10-2017 [15] Teorema de Bayes. https://es.wikipedia.org/wiki/Teorema de Bayes 15-10-2017 [16] Estadı́stica inferencial. https://es.wikipedia.org/wiki/Estad%C3%ADstica inferencial 19-10-2017 [17] Inferència Bayesiana. https://es.wikipedia.org/wiki/Inferencia bayesiana 23-10-2017 [18] Introducció a k-NN. https://medium.com/@adi.bronshtein/a-quick-introduction-to-k-nearestneighbors-algorithm-62214cea29c7 2-11-2017 [19] Overfitting explicat. https://www.quora.com/What-is-overfitting 6-11-2017 [20] Diferències entre IA, Machine Learning i Deep Learning. https://blogs.nvidia.com/blog/2016/07/29/whatsdifference-artificial-intelligence-machine-learning-deep-learning-ai/ 11-11-2017 [21] Com funcionen els Deep Learning Algorithms i el Machine Learning. https://www.youtube.com/watch?v=aircAruvnKk https://www.youtube.com/watch?v=JBZx03342eM https://www.youtube.com/watch?v=R9OHn5ZF4Uo https://arxiv.org/pdf/1311.2901.pdf 11-11-2017 [22] Complexitat del Deep Learning https://www.datanami.com/2017/10/27/dealing-deep-learnings-bigblack-box-problem/ 19-11-2017

56


Álvaro Arquero Mtz-Aguado

BIBLIOGRAFIA

[23] Classificació segons com aprenen els algorismes. https://hackbrightacademy.com/blog/pycon-2014melanie-warrick-machine-learning-talk/ 19-11-2017 [24] Classificació algorismes Machine Learning. https://machinelearningmastery.com/a-tour-of-machinelearning-algorithms/ 19-11-2017 [25] R com a llenguatge de programació. https://es.wikipedia.org/wiki/R (lenguaje de programaci%C3%B3n) 22-11-2017 [26] Programant un algorisme k-NN. https://www.analyticsvidhya.com/blog/2015/08/learning-conceptknn-algorithms-programming/ 21-12-2017 [27] Aquesta a sigut una font constant de anotació d’enllaços que s’ha fet servir tot el treball, hi ha molts que no han sigut esmentats explı́citament perquè s’ha llegit i aprés d’ells però no s’ha hagut de utilitzar cap part literal o imatge d’ells, no obstant es queden referenciats per a qui busqui adquirir un grau més de coneixement a la matèria. https://groups.diigo.com/group/td r cemex

57


Índex de figures 1

Petit resum explicatiu del procés de modelització i la utilitat de les matemàtiques . . . . . . .

8

1.1

Clustering visualment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.2

Ajust de dades a una funció quadràtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2.1

k-NN visualment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

2.2

Overfit i underfit gràficament . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.3

Com funciona la cross validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

3.1

IA, Machine Learning i Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

3.2

Classificació de models per similitud en el funcionament . . . . . . . . . . . . . . . . . . . . .

20

3.3

Classificació de models per mètode d’aprenentatge . . . . . . . . . . . . . . . . . . . . . . . .

21

3.4

Deep Learning i com funciona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

7.1

Gràfic 1, wflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

7.2

Gràfic 2, kv1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

7.3

Gràfic 3, mill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

7.4

Gràfic 4, ma1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

7.5

Gràfic 5, kv2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

7.6

Gràfic 6, ma2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

7.7

Gràfic 7, kv3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

7.8

Gràfic 8, ma3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

42

7.9

Gràfic 9, tempfil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

7.10 Gràfic 10, dustfan

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

7.11 Gràfic 11, kiln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

8.1

Com de bé prediu el model? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

10.1 Imatge del Workspace al carregar les dades per primer cop . . . . . . . . . . . . . . . . . . . .

i

10.2 Captura de pantalla dels objectes al Workspace, no tot surt a la primera . . . . . . . . . . . .

i

58


Part V

ANNEXOS

59


Álvaro Arquero Mtz-Aguado

Figura 10.1: Imatge del Workspace al carregar les dades per primer cop

Figura 10.2: Captura de pantalla dels objectes al Workspace, no tot surt a la primera Les dades inicials amb les que es va poder començar a treballar seran muntades a un google drive per a qui les vulgui descarregar, juntament amb el meu workspace. A aquest link que serà funcional en quant la carpeta del treball de recerca es faci pública. https://drive.google.com/drive/folders/0ByJtPFO5zdodSXdjaFhjVDE 5cEE?usp=sharing S’ha fet ús de paquets bàsics de LATEXcom ara babel per intentar assolir un nivell de correcció ortogràfica acceptable.

i


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.