Progetto per l'esame di Informatica Avanzata 2013-14

Annotazione delle proteine del lievito con  Support Vector Machine.

Obiettivo del progetto: predire le funzioni GO BP delle protiene del lievito utilizzando dati relativi ai domini proteici con metodi di apprendimento automatico basati su  Support Vector Machine (SVM).

Eseguire i seguenti passi:

A. Dalla directory:
http://homes.di.unimi.it/valentini/IA1314/ProgettoEsame
scaricare il file binario  YeastPfam.RData.
YeastPfam.RData contiene i 3 seguenti oggetti:
- train.data: named matrix dei dati Pfam del lievito per il tranining della learnnig machine
- test.data: named matrix dei dati Pfam del lievito per il test del della learnnig machine
- Ann.data: named matrix delle annotazioni GO BP del lievito

Descrizione dei dati:
train.data e test.data sono matrici le cui righe corrispondono alle proteine del lievito, e le colonne si riferiscono agli Accession ID del database Pfam (http://pfam.sanger.ac.uk). Un entry uguale ad 1 significa che il dominio/motivo Pfam e' presente nella proteina, 0 che non e' presente. Quindi ogni gene/proteina del lievito e' caratterizzato dalla presenza di 1 o piu' domini/motivi Pfam.
train.data e test.data sono named matrix: le righe hanno i nomi degli ORF geni del lievito, le colonne gli Accession ID dei domini/motivi Pfam.

Ann.data e' la tabella (matrice) delle annotazioni: le righe (con nome) corrispondono agli ORF del lievito e le colonne (con nome) corrispondono ai termini GO. Una entry +1 significa che il gene corrispondente e' annotato, -1 significa che non appartiene alla classe GO.
N.B.: Le righe di train.data e test.data hano un ordine diverso rispetto alle righe di Ann.data. Per accedere ai medesimi ORF in train.data (o test.data) ed in Ann.data bisogna riferirsi ai nomi delle righe.

B. Selezionare da Ann.data le classi GO BP che hanno piu' di 100  e meno di 500 annotazioni (141 classi GO)

C. Per ognuna delle classi selezionate usando il data set train.data e le etichette ottenute da Ann.data addestrare una SVM lineare (package e1071).

D. Per ogni classe selezionata valutare F-score, Precision, Recall ed accuratezza della SVM rispetto al training set ed al test set (usare il package PerfMeas scaricabile da CRAN). Calcolare amche i valori medi di  F-score, Precision, Recall ed accuratezza.
Rappresentare i dati in tabella ed opzionalmente in un grafico.
Quali sono le classi per cui si è ottenuto il migliore F-score e la migliore precisione?

E. Calcolare l'accuratezza per tutte le classi ed il valore medio tramite 5-fold cross-validation sul data set ottenuto dall'unione del training e del test set.

F. Ripetere il medesimo esperimento con SVM con kernel gaussiano.
Si ottengono migliori risultati rispetto alle SVM lineari? Rappresentare i risultati medi ottenuti in opportune tabelle e/o grafici.
G. (Opzionale). Ripetere il punto D utilizzando il metodo dei nearest-neighbour (NN) implementat nella funzione knn1 del package class, e confrontare i risultati con quelli ottenuti con le SVM.

H. Scrivere un report sintetico che illustri i risultati ottenuti. Il codice R sviluppato per realizzare i diversi punti del progetto deve essere inserito come allegato in appendice al report. Il codice va commentato e suddiviso seguendo i punti da A a G del progetto.

Bibliografia.

1. David Meyer. Support Vector Machines
 (tutorial – guida all'utilizzo delle SVM implementate nel package e1071)

2. Introduction to Support Vector Machines
http://homes.di.unimi.it/valentini/SlideCorsi/Bioinformatica1213/intro-svm.pdf (Slide introduttive sulle Support-Vector Machine)

3. Cortes, C. & Vapnik, V. (1995). Support-vector network. Machine Learning, 20, 1–25.
  (di non facile lettura, descrive l'algoritmo SVM)

4. The Gene Ontology Consortium. Gene ontology: tool for the unification of biology.  Nature Genetics. May 2000;25(1):25-9   (articolo introduttivo sulla GO)

5. M. Punta et al. The Pfam protein Families Database, Nucleic Acids Research(2012) Database Issue 40:D290-D301 (articolo sul DB Pfam)