Real de la receta para resolver el problema presentado (una posible solución)
Es sencillo para resolver este problema con mi favorito de la máquina-herramienta de aprendizaje, vowpal wabbit que apoya cuadrática (cruz) características a través de su -p opción.
vowpal wabbit fondo
Antes de entrar en los detalles de uso. vowpal wabbit es un rápido y escalable en línea de la máquina de aprendizaje de software para la clasificación y regresión. Puedo obtener de aprendizaje (formación) tasas de alrededor de 5 millones de características por segundo en mi escritorio sin límite de datos de tamaño (cantidad de ejemplos), ya que, como una herramienta de aprendizaje en línea que no requiere la carga de la totalidad de los datos en la memoria. Tiene muchas otras características interesantes: soporte para diferentes algoritmos de aprendizaje, múltiples pérdida de las funciones, dispersas características, mezcla de tipos de entidad, y más, que están más allá del alcance de esta pregunta.
Aquí están los 3 pasos para resolver el problema con el comentario:
Paso 0: Descarga y construir vowpal wabbit desde github (véase la nota en la parte inferior en entornos compatibles)
Paso 1: Preparar un entrenamiento de conjunto, donde cada línea tiene este aspecto:
1.0 protein1/protein2|A p1_feature1 p1_feature2 ... |B p2_feature1 ...
...
explicación de la formación-formato de conjunto:
El número a la izquierda, 1.0, es la etiqueta (interacción de la fuerza, que puede ser cualquier valor numérico), la segunda cadena 'protein1/protein2' es una etiqueta para dar la línea de una identidad, IOW: "esta línea representa la interacción entre protein1 y protein2"; es opcional, y usted puede pensar en esto como un comentario. Esta etiqueta de cadena también se hicieron eco de las predicciones de los modelos para identificar que la predicción a la que pertenece el ejemplo, pero no estamos prediciendo aquí, sólo estamos de modelado y estudio de nuestro modelo. Luego viene la función de entrada de nombre de espacio para protein1 |A
(se debe definir un nombre de espacio para que podamos cruzar entre los diferentes nombre-espacios, no tiene que ser A
, puede ser cualquier palabra, de hecho, pero la primera letra tiene que diferenciar entre los espacios de nombre para que podamos cruzar en el comando de llamada), seguido por la lista de características de entrada para protein1 p1_...
. El último viene el nombre de espacio para protein2: |B
, seguido por la función-los nombres de los protein2 p2_...
.
Una de las bellezas de vowpal wabbit es que se puede utilizar arbitraria cadenas de nombres de características (se le hash internamente, pero no importa). La única caracteres especiales en el conjunto de entrenamiento son:
- espacios (obviamente)
-
|
, para el prefijo de las características de entrada y el nombre de los espacios, y
-
:
separar la función de los nombres de sus valores
El :
no se utiliza aquí, porque se supone que cada proteína nombre de la característica representa un valor booleano (existencia) de manera que sus valores por defecto a 1
y no necesitan valores explícitos.
Ahora usted puede ejecutar vowpal_wabbit (el nombre del ejecutable es vw
) con -q AB
a auto-creación de la cruz-características (aka términos de interacción) entre todos los posibles pares de características donde uno es seleccionado a partir de protein1 (nombre del espacio de partida con A
) y el otro de protein2 (nombre-espacio de partida con B
). vowpal_wabbit leer los datos, de aprender y de crear un modelo con los pesos para cada función de la combinación que resulta en algún tipo de interacción entre el par de proteínas. Aquí, en lugar de ejecutar vw
directamente, vamos a ejecutar a través de la vw-varinfo
utilidad contenedora, que viene con vowpal wabbit, como último paso. vw-varinfo
pistas vw
para crear el modelo, y vuelca el modelo en forma legible.
Paso 3: llamada vw-varinfo como este:
vw-varinfo -q AB -c --passes 20 your_data_set_file
vw-varinfo pasará todas las opciones (-q ... -c --passes ...
) a vw
. Sólo el -q AB
para el cruce de los dos nombre de la característica-espacios es esencial. He añadido una opción más arriba (ejecutar varios pases), que creo que daría mejores resultados.
Este comando se llame vowpal wabbit (vw
) para entrenar en el conjunto de datos e imprimir el resultado creo que usted está buscando: todos los de la característica de las interacciones en el orden de fuerza y sus pesos relativos.
Ejemplo de entrada y salida
Suponga que la entrada, prot.dat
, incluye una 3-forma de interacción entre las 3 proteínas:
1.0 protein1/protein2|A a b |B k m
0.6 protein2/protein3|A k m |B b c d
2.2 protein1/protein3|A a b |B b c d
Este es deliberadamente una muy minimalista ejemplo. vw
no debería tener ningún problema con mucho más grandes conjuntos de datos (por ejemplo, millones de filas, cientos de características), también, he variado la interacción con la fuerza de las etiquetas de los ejemplos. Si en su caso la interacción es un booleano "sí" o "no", simplemente use 0
(sin interacción) o 1
(interacción existe) como el 1 de campo de cada línea.
Ejecutando:
vw-varinfo -q AB -c --passes 20 prot.dat
Daría todas las interacciones posibles (ignore el nombre de espacios- A
y B
en la salida) y sus ponderaciones:
FeatureName HashVal MinVal MaxVal Weight RelScore
A^k 220268 0.00 1.00 +0.3804 100.00%
A^k^B^k 254241 0.00 0.00 +0.3804 100.00%
A^k^B^m 93047 0.00 0.00 +0.3804 100.00%
B^k 178789 0.00 1.00 +0.1011 26.58%
B^m 17595 0.00 1.00 +0.1011 26.58%
[... trimmed for brevity ...]
A^m^B^m 141879 0.00 0.00 +0.0000 0.00%
Constant 116060 0.00 0.00 +0.1515 0.00%
A^b 139167 0.00 1.00 -0.0641 -16.86%
A^b^B^k 204424 0.00 0.00 -0.1233 -32.43%
A^b^B^m 43230 0.00 0.00 -0.1233 -32.43%
Mostrando que en este los datos de los más fuertes de los contribuyentes a las interacciones en general son: 1) la mera presencia de la k
característica, 2) el k
característica de interactuar con ella misma (suponiendo que ambas proteínas tienen), y 3) k
interactuar con m
. mientras que los más débiles (contribución negativa a la interacción de la proteína) son el b
característica emparejado con m
característica.
Aquí hay un HOWTO en vw-varinfo
vowpal wabbit se construye a partir de la fuente (ver enlace arriba) y se ejecuta en Linux (y posiblemente otros unix), Mac OS X y Windows.
HTH