“We shall not go any further into the nature of this oracle apart from saying that it cannot be a machine,” Turing explained (or did not explain). “With the help of the oracle we could form a new kind of machine (call them O-machines).” Turing showed that undecidable statements, resistant to the assistance of an external oracle, could still be constructed, and the Entscheidungsproblem would remain unsolved. The Universal Turing Machine of 1939 gets all the attention, but Turing’s O-machines of 1939 may be closer to the way intelligence (real and artificial) works: logical sequences are followed for a certain number of steps, with intuition bridging the intervening gaps.

Turing’s Cathedral. George Dyson.

Seguint amb la sèrie de cursos publicats per Stephen Grider en la plataforma de Udemy, he iniciat un dels cursos denominat ‘Machine Learning with Javascript: Master Machine Learning from scratch using Javascript and TensorflowJS with hands-on projects“.

Indicar que TensorflowJS està llicenciat sota Apache License 2.0. Compatible amb la versió 3 de GPL.

Stephen ens parla de converses que ha mantingut amb persones que porten temps treballant en el món de l’aprenentatge automàtic. Pel que diuen, aprendre sobre ML seria alguna cosa que estaria a l’abast de persones sense la necessitat que tinguin uns coneixements profunds sobre algorismes.

La clau estaria en el coneixement d‘una sèrie d’operacions fonamentals:

  • Features vs Labels

  • Test vs Training sets of data

  • Feature Normalization

  • Common data structures (arrays of arrays)

  • Feature Selection

Les persones que aprenen ‘Machine Learning’ més ràpidament i les persones que tenen èxit en la indústria i en projectes de la vida real, aplicant aquestes operacions fonamentals, no són les persones que entenen el funcionament intern absolut de cadascun d’aquests algorismes.

Les persones que realment aprenen ràpidament, tot aquest procés, són les persones que poden experimentar amb aquests algorismes molt ràpidament. I ho aconsegueixen perquè tenen una base excepcionalment sòlida en el coneixement d’aquestes operacions fonamentals.

Stephen Grider

Tractem d’identificar alguns d’aquests conceptes i operacions fonamentals

Imagina que ets un analista en una ciutat petita amb un gran problema d’inundacions.

L’alcalde de la ciutat et pregunta…

Si llueven 240mm enguany, quant serà el cost de les inundacions?

Procés de resolució del problema

  • Identifica les dades que són rellevants per al problema.

  • Assembla el conjunt de dades relatives al problema que tratás de resoldre.

  • Decideix que tipus són les dades resultants que aquestes predient.

  • Basant-se en la mena de dades resultants, tria l’algorisme que determinarà la correlació entre les teves ‘features’ i ‘labels’

  • Utilitza el model generat per l’algorisme per a realitzar la predicció.

Identifica les dades que són rellevants per al problema

Les ‘Features‘ són categorias de dades puntuals que afecten el valor de la ‘label‘.

Assembla el conjunt de dades relatives al problema que tractes de resoldre.

Conjunt de dades que gairebé sempre s’aclareixen o formaten.

.

Decideix que tipus són les dades resultants que estàs predient

Existeixen més, però ens centrem en dues d’ells.

El model predictiu de regressió és usada amb valors continus, el model predictiu de classificació és usada amb valors discrets.

.

Basant-se en la mena de dades resultants, tria un algorisme que determinarà la correlació entre les teves ‘features’ i ‘labels’.
Utilitza el model generat per l’algorisme per a realitzar la predicció.

Existeixen molts algorismes diferents, cadascun amb els seus avantatges i inconvenients

Els models relacionen el valor de les ‘features‘ amb el valor de les ‘labels‘.

.

La nostra predicció va ser mal!

  • Ajusta els paràmetres del analisis
  • Afegeix més "features" per a explicar l’anàlisi
  • Canvia els punts de predicció
  • Accepta que potser no existeix unha bona correlació

Però, fer això no té sentit si no tenim una bona manera de comparar la precisió amb diferents configuracions.

Buscant el K ideal

  • Registra una gran quantitat de dades.
  • Divideix les dades en conjunts: ‘training dataset’ i ‘test dataset’. (desordenats intencionadament i aleatòriament).

Training = {[22,33,45,66], [23,76,45,54],[47,98,23,12],[54,3,90,22]}

Test = {[12,33,44,44], [55,65,87,99],[47,98,23,12],[54,3,90,22]}

  • Per cada element de ‘test dataset’, executa el model generat per l’algorisme usant les dades de ‘training dataset’.

És el resultat de l’algorisme igual a l’element de ‘test’?

Sobre la base d’aquesta petita introducció, podem identificar alguns d’aquests punts fonamentals

  • Features vs Labels
  • Test vs Training sets of data
  • Feature Normalization
  • Common data structures (arrays of arrays)
  • Feature Selection

La normalització de les ‘Features‘ és alguna cosa que no hem vist en aquesta petita introducció, però és alguna cosa que no és d’interès per al que vull reflectir en aquest post.

Per una altra banda, si hem vist conceptes com ara:

  • Registre d’una gran quantitat de dades
  • Labels
  • Features
  • Divisió de les dades en conjunts: ‘training dataset‘ i ‘test dataset‘ (desordenats aleatòriament).

El registre de gran quantitat de dades que utilitzarem, els hi proporcionarem al model d’algorisme que realitza les prediccions des del disc dur del nostre ordinador. Aquestes dades estaran emmagatzemades en un arxiu CVS..

Existeixen diverses llibreries que ens permeten realitzar aquesta càrrega de dades però, us presentaré un codi que ens permetrà realitzar el mateix i al mateix temps permet la seva personalització segons les nostres necessitats.

En el procés de resoldre el problema plantejat, entre altres coses:

Hem d’identificar “labels” i “features” .

Crear “training dataset“‘ i “test dataset” , desordenats aleatòriament per a l’efectivitat de les prediccions.

Tota aquesta informació l’hem de proporcionar en el moment de carregar l’arxiu CSV en un objecte que actuarà a manera de paràmetre d’opcions.

Tal com podem veure en la imatge:

Les “features” serien indicades en l’opció “dataColums” com “height” i “value” .

La “label” seria indicada en l’opció “labelColumns” com “passed” .