“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.

Seguindo coa serie de cursos publicados por Stephen Grider na plataforma de Udemy, iniciei un dos cursos denominado ‘Machine Learning with Javascript: Master Machine Learning from scratch using Javascript and TensorflowJS with hands-on projects“.

Indicar que TensorflowJS está licenciado baixo Apache License 2.0. Compatible coa versión 3 de GPL.

Stephen fálanos de conversacións que mantivo con persoas que levan tempo traballando no mundo da aprendizaxe automática. Polo que din, aprender sobre ML sería algo que estaría ao alcance de persoas sen a necesidade de que teñan uns coñecementos profundos sobre algoritmos.

A clave estaría no coñecemento dunha serie de operacións fundamentais:

  • Features vs Labels

  • Test vs Training sets of data

  • Feature Normalization

  • Common data structures (arrays of arrays)

  • Feature Selection

As persoas que aprenden ‘Machine Learning’ máis rapidamente e as persoas que teñen éxito na industria e nos proxectos da vida real, aplicando estas operacións fundamentais, non son as persoas que entenden o funcionamento interno absoluto de cada un destes algoritmos.

As persoas que realmente aprenden rápidamente, todo este proceso, son as persoas que poden experimentar con estes algoritmos moi rápidamente. E conségueno porque teñen unha base excepcionalmente sólida no coñecemento destas operacións fundamentais.

Stephen Grider

Tratemos de identificar algúns destes conceptos e operacións fundamentais

Imaxina que es un analista nunha cidade pequena cun gran problema de inundacións.

O alcalde da cidade pregúntache…

Se choven 240mm este ano, canto será o custo das inundacións?

 

Proceso de resolución do problema

  • Identifica os datos que son relevantes para o problema.

  • Ensambla o conxunto de datos relativos ao problema que tratás de resolver.

  • Decide de que tipo son os datos resultantes que estas predicindo.

  • Baseándose no tipo de datos resultantes, escolle o algoritmo que determinará a correlación entre as túas ‘features’ e ‘labels’

  • Utiliza o modelo xerado polo algoritmo para realizar a predición.

Identifica os datos que son relevantes para o problema

As ‘Features‘ son categorias de datos puntuales que afectan ao valor da ‘label‘.

Ensambla o conxunto de datos relativos ao problema que tratas de resolver.

Conxunto de datos que case sempre se clarifican ou formatean.

.

Decide de que tipo son os datos resultantes que estás a predicir

Existen máis, pero centrámonos en dous deles.

O modelo predictivo de regresión é usada con valores continuos, o modelo predictivo de clasificación é usada con valores discretos.

.

Baseándose no tipo de datos resultantes, escolle un algoritmo que determinará a correlación entre as túas ‘features’ e ‘labels’.

Utiliza o modelo xerado polo algoritmo para realizar a predición.

Existen moitos algoritmos diferentes, cada un coas súas vantaxes e inconvintes

Os modelos relacionan o valor das ‘features‘ co valor das ‘labels‘.

.

A nosa predición foi mal!

  • Axusta os parámetros do analisis
  • Engade máis "features" para explicar a análise
  • Cambia os puntos de predición
  • Acepta que quizais non existe unha boa correlación

Pero, facer isto non ten sentido si non temos una boa maneira de comparar a predición con diferentes configuracións.

Buscando o K ideal

  • Rexistra una gran cantidad de datos.
  • Divide os datos en conxuntos: ‘training dataset’ e  ‘test dataset’ (desordenados intencionadamente e aleatoriamente).

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]}

  • Por cada elemento do ‘test dataset’, executa o modelo xerado polo algoritmo usando os datos de ‘training dataset’.

É o resultado do algoritmo igual ao elemento do ‘test’?

En base a esta pequena introdución, podemos identificar algúns destes puntos fundamentais

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

A normalización das ‘Features‘ é algo que non vimos nesta pequena introdución, pero é algo que non é de interese para o que quero reflectir nesta publicación.

Por outra banda, si vimos conceptos tales como:

  • Rexistro dunha gran cantidade de datos
  • Labels
  • Features
  • División dos datos en conxuntos: ‘training dataset’ e ‘test dataset’ (desordenados aleatoriamente).

O rexistro de gran cantidade de datos que imos utilizar, ímosllos a proporcionar ao modelo do algoritmo que realiza as predicións desde o disco duro do noso computador. Estes datos estarán almacenados nun arquivo CVS.

Existen varias librarías que nos permiten realizar esta carga de datos, pero os vou a presentar un código que nos vai a permitir realizar o mesmo e ademais permite a súa adaptación segundo as nosas necesidades.

No proceso de resolver o problema exposto, entre outras cousas:

Debemos identificar “labels” e “features” .

Crear “training dataset“‘ e “test dataset”  desordenados aleatoriamente para a efectividade das predicións.

Toda esta información debémola de proporcionar no momento de cargar o arquivo CSV nun obxecto que actuará a modo de parámetro de opcións.

Tal e como podemos ver na imaxe:

As “features” serían indicadas na opción “dataColums” como “height” e “value” .

A “label” sería indicada na opción “labelColumns” como “passed” .