J'ai une liste de protéines avec leurs valeurs caractéristiques. Un exemple de tableau ressemble à ceci:
...............Feature1...Feature2...Feature3...Feature4
Protein1
Protein2
Protein3
Protein4
Les lignes sont des protéines et les colonnes sont des caractéristiques.
J'ai également une liste de protéines qui interagissent également; par exemple
Protein3, Protein4
Protein1, Protein2
Protein4, Protein1
Problème : Pour une analyse préliminaire, je veux savoir quelles caractéristiques contribuent le plus aux interactions protéiques.
Ma compréhension est que normalement les arbres de décision pourraient être utilisés pour obtenir la caractéristique la plus importante basée sur l'entropie, mais je ne sais pas comment l'étendre aux paires de protéines (c'est-à-dire les interactions). Existe-t-il une méthode à cette fin?
Réponses:
Recette réelle pour résoudre le problème présenté (une solution possible)
Il est simple de résoudre ce problème en utilisant mon outil d'apprentissage machine préféré, vowpal wabbit qui prend en charge les fonctionnalités quadratiques (croisées) via son option -q .
fond de wabbit vowpal
Avant de passer aux détails d'utilisation. vowpal wabbit est un logiciel d'apprentissage automatique en ligne rapide et évolutif pour la classification et la régression. J'obtiens des taux d'apprentissage (formation) d'environ 5 millions de fonctionnalités par seconde sur mon bureau, sans limite de taille des données (nombre d'exemples), car en tant qu'outil d'apprentissage en ligne, il ne nécessite pas de charger toutes les données en mémoire. Il possède de nombreuses autres fonctionnalités attrayantes: la prise en charge de différents algorithmes d'apprentissage, des fonctions de perte multiple, des fonctionnalités clairsemées, des types de fonctionnalités mixtes, etc., qui dépassent le cadre de cette question.
Voici les 3 étapes pour résoudre le problème avec un commentaire:
Étape 0: Téléchargez et construisez vowpal wabbit à partir de github (voir la note en bas sur les environnements pris en charge)
Étape 1: Préparez un ensemble de formation où chaque ligne ressemble à ceci:
explication du format de l'ensemble de formation:
Le nombre le plus à gauche, 1.0 , est le libellé (force d'interaction, qui peut être n'importe quelle valeur numérique), la deuxième chaîne " protéine1 / protéine2 " est une étiquette pour donner une identité à la ligne, IOW: "cette ligne représente l'interaction entre protéine1 et protéine2 "; Il est facultatif et vous pouvez le considérer comme un commentaire. Cette chaîne de balises est également répercutée dans les prédictions des modèles pour identifier quelle prédiction appartient à quel exemple, mais nous ne prédisons pas ici, nous modélisons et étudions simplement notre modèle. Vient ensuite l'espace de nom de la fonction d'entrée pour protein1
|A
(nous devons définir un espace de nom afin que nous puissions traverser différents espaces de nom, il n'a pas besoin d'êtreA
, peut être n'importe quel mot en fait, mais la première lettre doit différer entre les espaces de noms afin que nous puissions les croiser dans l'appel de commande) suivie de la liste des fonctionnalités d'entrée pour protein1p1_...
. Vient ensuite l'espace de noms pour protein2:|B
suivi des noms de fonctionnalité de protein2p2_...
.L'une des beautés de vowpal wabbit est que vous pouvez utiliser des chaînes arbitraires pour les noms de fonctionnalités (cela les hachera en interne, mais cela ne vous dérange pas). Les seuls caractères spéciaux de l'ensemble de formation sont:
|
, pour préfixer les entités en entrée et les espaces de nom, et:
pour séparer les noms de fonction de leurs valeursLe
:
n'est pas utilisé ici, car nous supposons que chaque nom de caractéristique de protéine représente un booléen (existence), donc leurs valeurs par défaut1
et ils n'ont pas besoin de valeurs explicites.Vous pouvez maintenant exécuter vowpal_wabbit (le nom de l'exécutable est
vw
) avec-q AB
pour créer automatiquement des fonctionnalités croisées (alias termes d'interaction) entre toutes les paires possibles de fonctionnalités où une fonctionnalité est sélectionnée dans protein1 (espace de noms commençant parA
) et l'autre dans protein2 ( espace de noms commençant parB
). vowpal_wabbit lira les données, apprendra et créera un modèle avec des poids pour chaque combinaison de caractéristiques qui entraîne une certaine interaction entre la paire de protéines. Ici, au lieu de s'exécutervw
directement, nous l'exécuterons via l'vw-varinfo
utilitaire wrapper, qui est fourni avec vowpal wabbit, comme dernière étape.vw-varinfo
s'exécutevw
pour créer le modèle et vide le modèle sous une forme lisible par l'homme.Étape 3: appelez vw-varinfo comme ceci:
vw-varinfo passera toutes les options (
-q ... -c --passes ...
) telles quelles àvw
. Seul le-q AB
pour traverser les deux espaces-noms est essentiel. J'ai ajouté une option de plus ci-dessus (exécuter plusieurs passes), ce qui, je pense, donnerait de meilleurs résultats.Cette commande appellera vowpal wabbit (
vw
) pour s'entraîner sur l'ensemble de données et affichera la sortie que je crois que vous recherchez: toutes les interactions des fonctionnalités par ordre de force et leurs poids relatifs.Exemple d'entrée et de sortie
Supposons que votre entrée,,
prot.dat
inclut une interaction à 3 voies entre 3 protéines:Il s'agit délibérément d'un exemple très minimaliste.
vw
ne devrait pas avoir de problème avec des ensembles de données beaucoup plus volumineux (par exemple, des millions de lignes, des centaines de fonctionnalités), aussi, j'ai varié les étiquettes de force d'interaction dans les exemples. Si dans votre cas, l'interaction est un "oui" ou "non" booléen, utilisez simplement0
(aucune interaction) ou1
(il existe une interaction) comme 1er champ de chaque ligne.Fonctionnement:
Donnerait toutes les interactions possibles (ignorer les espaces de noms
A
etB
dans la sortie) et leurs poids:Montrant que dans ces données, les contributeurs les plus importants à toutes les interactions en général sont 1) la simple présence de la
k
caractéristique, 2) lak
caractéristique interagissant avec elle-même (en supposant que les deux protéines l'ont) et 3)k
interagissant avecm
. tandis que les plus faibles (contribution négative à l'interaction des protéines) sont lab
caractéristique associée à lam
caractéristique.Voici une page HOWTO sur vw-varinfo
vowpal wabbit se construit à partir de la source (voir lien ci-dessus) et fonctionne sous Linux (et éventuellement d'autres unix), Mac OS-X et Windows.
HTH
la source
Les réseaux d'interaction des protéines peuvent être représentés par des graphiques non orientés, les protéines formant les nœuds et leurs interactions les bords. Si l'interaction des protéines est un phénomène binaire, les bords sont également binaires (zéro ou un), sinon vous pouvez utiliser un nombre réel. Vous pouvez représenter numériquement ce graphique comme une matrice carrée, et symétrique en particulier. Pour trouver les fonctionnalités les plus importantes, vous pouvez conserver celles qui ont la plus grande projection le long des vecteurs propres de la matrice d'interaction.
la source