Il software Weka: Apprendimento automatico dei dati

Il software Weka: Apprendimento automatico dei dati

Logo software WekaWeka (Waikato Environment for Knowledge Analysis) è un software sviluppato dall’Università di Waikato nella Nuova Zelanda: il progetto è nato sotto l’influenza governativa al fine di essere il punto di riferimento delle tecniche di machine learning per l’economia nazionale. La propaganda del progetto dichiara quanto segue:

“The programme aims to build a state-of-art facility for developing techniques of machine learning and investigating their application in key areas of the New Zealand economy. Specifically we will create a workbench for machine learning, determine the factor that contribute towards its successful application in the agricultural indiustries, and develop new methods of machine learning and ways of assessing their effectiveness.”

ovvero

“Il programma mira a costruire una struttura all’avanguardia per lo sviluppo di tecniche di apprendimento automatico e ad indagare la loro applicazione in aree chiave dell’economia della Nuova Zelanda, in particolare creeremo un banco di lavoro per l’apprendimento automatico, determinerà il fattore che contribuisce al suo successo applicazione nelle industrie agricole e sviluppare nuovi metodi di apprendimento automatico e modi per valutarne l’efficacia “.

Questo aspetto marcatamente nazionalistico è subito intuibile dal nome stesso: weka è il nome di un tipico uccello neozelandese che rappresenta la mascotte del progetto.
Il progetto, fondato da Ian Witten, iniziò alla fine dell’anno 1992; e si decise di adottare il linguaggio TCL/TK, sebbene molti algoritmi fosse scritti in linguaggio C. La prima versione fu pubblicata nel 1994: rimase però confinata all’interno dell’università dal momento che il software risultò altamente instabile. Nell’ottobre del 1996 fu rilasciato Weka 2.1, seguito nel luglio del 1997 dalla versione 2.2: il prodotto si dimostrò molto più maturo e arricchito di nuovi algoritmi. Tuttavia agli inizi del 1997 venne presa la decisione di rendere il software multipiattaforma e si iniziò il porting in linguaggio Java, denominando il nuovo branch di sviluppo JAWS (JAva weka System). Nel maggio del 1998 fu rilasciata l’ultima versione in TCL/TK, Weka 2.3: l’anno seguente fu pubblicato Weka 3.1, interamente scritto in Java.

Senza dubbio la riscrittura del codice sorgente in linguaggio Java ha portato notevoli vantaggi:
– Portabilità: Java è un linguaggio interpretato, nel senso che il codice generato dal compilatore non viene eseguito direttamente dal sistema operativo quanto da uno strato intermedio, detto macchina virtuale, che traduce le operazioni in linguaggio macchina. Dunque per poter eseguire il programma Weka è necessario che sia installato nel computer l’ambiente di esecuzione Java (JRE, Java Runtime Environment) di cui la Java Virtual Machine ne è la componente principale. Questa peculiarità permette ai programmi di essere multipiattaforma: infatti l’unica componente a cambiare è la JRE installata nel sistema operativo, a differenza dei programmi che restano invariati.
– Gestione della memoria: dal momento che un programma Java viene eseguito all’interno di una macchina virtuale, la gestione della memoria è controllata e gestita da un opportuno modulo, detto Garbage Collection: tale componente gioca un ruolo fondamentale per la robustezza delle applicazioni, visto che impedisce spiacevoli inconvenienti derivati dall’errata allocazione o liberazione della memoria.
– Linguaggio object-oriented: essendo un linguaggio di ultima generazione, Java è concepito per rispondere ad una programmazione orientata agli oggetti. A differenza della programmazione procedurale in cui un sorgente viene visto come una sequenza di operazioni, l’approccio orientato agli oggetti cerca di descrivere la realtà a componenti ben definiti, dotati di proprie caratteristiche (attributi) e funzionalità (metodi). In Java si utilizza il termine classe al posto di oggetto: nel proseguo della relazione i due termini verranno utilizzati in maniera differente a seconda che si intenda l’astrazione della realtà (oggetto) o l’implementazione in Java (classe).
– Documentazione: essendo piuttosto recente, la definizione del linguaggio Java implementa delle caratteristiche che spesso sono state lacunose in altri contesti, come nel caso della documentazione. A questo scopo è disponibile nel pacchetto destinato ai programmatori (JDK, Java Development Kit) il comando javadoc che genera automaticamente la documentazione in HTML a partire dagli stessi sorgenti oggetto di compilazione: questo meccanismo facilita notevolmente la stesura e l’aggiornamento dei manuali operativi.
– Community: grazie alla semplicità del linguaggio, alla portabilità e ad una marcata aspirazione open source, col passare degli anni sempre più persone, organizzazioni e società hanno attivamente operato al fine di offrire più o meno gratuitamente soluzioni scritte in linguaggio Java.
– Standard: proprio per coordinare gli sforzi dell’intera community, è nata l’esigenza di adottare degli standard per tracciare le linee guida con cui implementare personali soluzione a problemi comuni. Ad esempio, per quanto riguarda l’accesso ai dati contenuti in un database è stato creato lo standard JDBC (Java DataBase Connector): esso definisce un’interfaccia comune di astrazione delle operazioni di accesso ai dati rispetto alle diverse implementazioni di ciascun database.

Il software Weka - Apprendimento automatico dei dati
Il software Weka – Apprendimento automatico dei dati

Analogamente, il codice di Weka è stato scritto rispettando le indicazioni descritte nello standard JSR-000073, detto più semplicemente Java Data Mining API Specification Request: tale documento fissa la struttura che devono avere le applicazioni di data mining nella piattaforma J2EE (Java 2 Enterprise Edition) al fine di garantire una facile ed efficace integrazione tra una generica applicazione e i diversi motori di data mining.

Precedente Spiegazione e tutte le caratteristiche del Business Model Canvas Successivo R: software e linguaggio statistico commerciale

Lascia un commento

*