Eu tenho uma lista de proteínas com seus valores de característica. Uma tabela de amostra é assim:
...............Feature1...Feature2...Feature3...Feature4
Protein1
Protein2
Protein3
Protein4
Linhas são proteínas e colunas são características.
Eu também tenho uma lista de proteínas que interagem também; por exemplo
Protein3, Protein4
Protein1, Protein2
Protein4, Protein1
Problema : Para uma análise preliminar, quero saber quais recursos contribuem mais para as interações proteicas.
Meu entendimento é que normalmente as árvores de decisão podem ser usadas para obter o recurso mais importante com base na entropia, mas não sei como estendê-lo aos pares de proteínas (ou seja, interações). Existe um método para esse fim?
Respostas:
Receita real para resolver o problema apresentado (uma solução possível)
É simples resolver esse problema usando minha ferramenta favorita de aprendizado de máquina, o vowpal wabbit, que suporta recursos quadráticos (cruzados) por meio da opção -q .
fundo de wabbit vowpal
Antes de entrarmos nos detalhes de uso. O vowpal wabbit é um software de aprendizado de máquina on-line rápido e escalável para classificação e regressão. Recebo taxas de aprendizado (treinamento) de cerca de 5 milhões de recursos por segundo na minha área de trabalho, sem limite de tamanho de dados (número de exemplos), pois como ferramenta de aprendizado on-line, não é necessário carregar os dados completos na memória. Ele tem muitos outros recursos atraentes: suporte a diferentes algoritmos de aprendizado, múltiplas funções de perda, recursos esparsos, tipos de recursos mistos e muito mais, que estão além do escopo desta pergunta.
Aqui estão as 3 etapas para resolver o problema com comentários:
Etapa 0: Faça o download e crie o vowpal wabbit no github (veja a nota na parte inferior dos ambientes suportados)
Etapa 1: prepare um conjunto de treinamento em que cada linha se pareça com isto:
explicação do formato do conjunto de treinamento:
O número mais à esquerda, 1.0 , é o rótulo (força da interação, que pode ser qualquer valor numérico), a segunda sequência ' protein1 / protein2 ' é uma tag para dar identidade à linha, IOW: "essa linha representa a interação entre a proteína1 e protein2 "; É opcional e você pode pensar nisso como um comentário. Essa string de tag também é ecoada nas previsões de modelos para identificar qual previsão pertence a qual exemplo, mas não estamos prevendo aqui, estamos apenas modelando e estudando nosso modelo. Em seguida, vem o espaço de nome do recurso de entrada para protein1
|A
(precisamos definir um espaço de nome para que possamos cruzar entre diferentes espaços de nome, ele não precisa serA
, pode ser qualquer palavra de fato, mas a primeira letra deve diferir entre os espaços de nome para que possamos cruzá-los na chamada de comando) seguida pela lista de recursos de entrada para protein1p1_...
. Por último, vem o espaço de nomes para protein2:|B
seguido pelos nomes dos recursos de protein2p2_...
.Uma das belezas do vowpal wabbit é que você pode usar seqüências arbitrárias para nomes de recursos (ele os mistura internamente, mas você não se importa). Os únicos caracteres especiais no conjunto de treinamento são:
|
, para prefixar recursos de entrada e espaços de nome e:
separar nomes de recursos de seus valoresO
:
não é usado aqui, porque assumimos que todo nome de recurso de proteína representa um booleano (existência), portanto seus valores são padronizados1
e eles não precisam de valores explícitos.Agora você pode executar vowpal_wabbit (o nome do executável é
vw
) com-q AB
para criar automaticamente recursos cruzados (termos de interação) entre todos os pares possíveis de recursos em que um recurso é selecionado a partir de protein1 ( namespace começando comA
) e outro a partir de protein2 ( espaço de nome começando comB
). O vowpal_wabbit lerá os dados, aprenderá e criará um modelo com pesos para cada combinação de recursos que resulta em alguma interação entre o par de proteínas. Aqui, em vez de executarvw
diretamente, executamos ovw-varinfo
utilitário wrapper, que vem com o vowpal wabbit, como nosso último passo.vw-varinfo
é executadovw
para criar o modelo e despeja o modelo na forma legível por humanos.Etapa 3: chame vw-varinfo assim:
vw-varinfo passará todas as opções (
-q ... -c --passes ...
) como estãovw
. Somente o-q AB
cruzamento dos dois espaços de nome dos recursos é essencial. Eu adicionei mais uma opção acima (execute várias passagens), que acredito que daria melhores resultados.Este comando chamará vowpal wabbit (
vw
) para treinar no conjunto de dados e imprimirá a saída que acredito estar procurando: todas as interações de recursos em ordem de força e seus pesos relativos.Exemplo de entrada e saída
Suponha que sua entrada
prot.dat
inclua uma interação de três vias entre três proteínas:Este é deliberadamente um exemplo muito minimalista.
vw
não deveria ter nenhum problema com conjuntos de dados muito maiores (por exemplo, milhões de linhas, centenas de recursos); também variei os rótulos de força da interação nos exemplos. Se, no seu caso, a interação for um "sim" ou "não" booleano, basta usar0
(sem interação) ou1
(existe interação) como o primeiro campo em cada linha.Corrida:
Produziria todas as interações possíveis (ignore os espaços de nomes
A
eB
na saída) e seus pesos:Mostrando que nesses dados os contribuintes mais fortes para qualquer interação em geral são 1) a mera presença do
k
recurso, 2) ok
recurso interagindo consigo mesmo (supondo que ambas as proteínas o tenham) e 3)k
interagindom
. enquanto os mais fracos (contribuição negativa para a interação de proteínas) são ob
recurso emparelhado com om
recurso.Aqui está uma página HOWTO em vw-varinfo
O vowpal wabbit constrói a partir da fonte (veja o link acima) e roda no Linux (e possivelmente outros unixes), Mac OS-X e Windows.
HTH
fonte
As redes de interação proteica podem ser representadas por gráficos não direcionados, com proteínas formando os nós e suas interações nas bordas. Se a interação protéica for um fenômeno binário, as bordas também serão binárias (zero ou uma), caso contrário, você poderá usar um número real. Você pode representar numericamente esse gráfico como uma matriz quadrada e simétrica em particular. Para encontrar os recursos mais importantes, você pode reter aqueles que têm a maior projeção ao longo dos vetores próprios da matriz de interação.
fonte