Поиск лучших функций в моделях взаимодействия


13

У меня есть список белков с их характеристиками. Пример таблицы выглядит так:

...............Feature1...Feature2...Feature3...Feature4  
Protein1  
Protein2  
Protein3  
Protein4  

Ряды - это белки, а столбцы - это особенности.

У меня также есть список белков, которые также взаимодействуют; например

Protein3, Protein4  
Protein1, Protein2  
Protein4, Protein1  

Проблема : для предварительного анализа я хочу знать, какие особенности способствуют взаимодействию белков.

Насколько я понимаю, обычно деревья решений можно использовать для получения наиболее важной функции, основанной на энтропии, но я не уверен, как распространить ее на белковые пары (то есть взаимодействия). Есть ли способ для этой цели?


Скажите, правильно ли я вас понимаю: у вас есть сила взаимодействия для любой пары белков (которая, например, равна нулю, если белки не взаимодействуют), и тогда вы хотите иметь вектор признаков, значение которых будет сильно коррелировать с силой взаимодействия? Или, другими словами, что позволит вам предсказать силу взаимодействия между белками?
подписать

Ответы:


25

Актуальный рецепт решения представленной проблемы (одно из возможных решений)

Решить эту проблему довольно просто, используя мой любимый инструмент машинного обучения, vowpal wabbit, который поддерживает квадратичные (перекрестные) функции с помощью опции -q .

vowpal ваббит фон

Прежде чем перейти к деталям использования. vowpal wabbit - это быстрое и масштабируемое онлайн-программное обеспечение для машинного обучения, предназначенное для классификации и регрессии Я получаю скорость обучения (обучения) около 5 миллионов функций в секунду на своем рабочем столе без ограничения размера данных (количество примеров), поскольку в качестве онлайн-инструмента обучения он не требует загрузки полных данных в память. У него много других привлекательных функций: поддержка различных алгоритмов обучения, функций множественных потерь, разреженных функций, смешанных типов объектов и т. Д., Которые выходят за рамки этого вопроса.

Вот 3 шага к решению проблемы с комментарием:

Шаг 0: Загрузите и соберите vowpal wabbit с github (см. Примечание внизу о поддерживаемых средах)

Шаг 1: Подготовьте обучающий набор, где каждая строка выглядит следующим образом:

1.0 protein1/protein2|A p1_feature1 p1_feature2 ... |B p2_feature1 ...
...

объяснение формата обучающего набора:

Крайнее левое число, 1.0 , является меткой (сила взаимодействия, которая может быть любым числовым значением), вторая строка ' protein1 / protein2 ' является меткой, чтобы придать линии идентичность, IOW: «эта строка представляет взаимодействие между protein1 и protein2" ; Это необязательно, и вы можете думать об этом как о комментарии. Эта строка тега также отражена в прогнозах моделей, чтобы определить, какой прогноз относится к какому примеру, но здесь мы не прогнозируем, мы просто моделируем и изучаем нашу модель. Далее идет пространство имен входной функции для protein1 |A(нам нужно определить пространство имен, чтобы мы могли переходить между различными пространствами имен, это не обязательно должно бытьA, может быть любым словом на самом деле, но первая буква должна отличаться между пространствами имен, чтобы мы могли их пересечь в вызове команды), а затем список функций ввода для protein1 p1_.... Последним идет пространство имен для protein2: |Bза ним следуют именные признаки protein2 p2_....

Одна из прелестей vowpal wabbit заключается в том, что вы можете использовать произвольные строки для имен объектов (они будут хэшироваться внутри, но вам все равно). Единственные специальные символы в тренировочном наборе:

  • пробелы (очевидно)
  • |, для префикса входных объектов и пространств имен, и
  • : отделить имена объектов от их значений

Здесь :не используется, потому что мы предполагаем, что каждое имя свойства белка представляет логическое значение (существование), поэтому их значения по умолчанию равны 1и им не нужны явные значения.

Теперь вы можете запустить vowpal_wabbit (имя исполняемого файла vw) с, -q ABчтобы автоматически создавать перекрестные элементы (иначе говоря, термины взаимодействия) между всеми возможными парами объектов, где один объект выбран из protein1 (пространство имен начинается с A), а другой - protein2 ( пространство имен, начинающееся с B). vowpal_wabbit прочитает данные, изучит и создаст модель с весами для каждой комбинации признаков, что приведет к некоторому взаимодействию между парой белков. Здесь, вместо того, чтобы работать vwнапрямую, мы запустим его через vw-varinfoутилиту-оболочку, которая поставляется с vowpal wabbit, как наш последний шаг. vw-varinfoзапускается vwдля создания модели и выводит ее в удобочитаемом виде.

Шаг 3: вызовите vw-varinfo следующим образом:

vw-varinfo -q AB -c --passes 20 your_data_set_file

vw-varinfo передаст все параметры ( -q ... -c --passes ...) как есть vw. -q ABНеобходим только для пересечения двух пространств имен объектов. Я добавил еще одну опцию выше (запустить несколько проходов), которая, я считаю, даст лучшие результаты.

Эта команда вызовет vowpal wabbit ( vw) для обучения набора данных и напечатает вывод, который, я полагаю, вы ищете: все взаимодействия элементов в порядке силы и их относительные веса.

Пример ввода и вывода

Предположим, что ваш вклад prot.datвключает трехстороннее взаимодействие между 3 белками:

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

Это намеренно очень минималистичный пример. vwу меня не должно быть проблем с гораздо большими наборами данных (например, миллионами строк, сотнями функций), также я варьировал метки силы взаимодействия в примерах. Если в вашем случае взаимодействие - это логическое «да» или «нет», просто используйте 0(нет взаимодействия) или 1(взаимодействие существует) в качестве 1-го поля в каждой строке.

Бег:

vw-varinfo -q AB -c --passes 20 prot.dat

Приведет все возможные взаимодействия (игнорировать пространства имен Aи Bв выходных данных) и их веса:

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%

Показывая, что в этих данных самыми сильными участниками любых взаимодействий в целом являются: 1) простое наличие kпризнака, 2) kпризнак, взаимодействующий с самим собой (при условии, что он есть у обоих белков), и 3) kвзаимодействующий с ним m. в то время как самые слабые (отрицательный вклад во взаимодействие с белками) являются bпризнаком в сочетании с mпризнаком

Вот страница HOWTO на vw-varinfo

vowpal wabbit собирается из исходного кода (см. ссылку выше) и работает в Linux (и, возможно, в других Unixes), Mac OS-X и Windows.

НТН


Будет ли это прямо означать, что устранение слабых взаимодействий улучшит точность модели?
Мэтт

Не обязательно. Точность часто повышается, когда есть больше возможностей для изучения. Однако, если функции на практике являются помехами или слишком редки для обобщения, они могут это сделать. Большинство реальных моделей имеют некоторые ошибки. Больше данных может привести к большей уверенности в точности модели.
Ариэль

1

Сети взаимодействия белков могут быть представлены неориентированными графами с белками, образующими узлы, а их взаимодействия - краями. Если взаимодействие с белками является бинарным явлением, ребра также бинарные (ноль или единица), в противном случае вы можете использовать действительное число. Вы можете численно представить этот график в виде квадратной матрицы, в частности, симметричной. Чтобы найти наиболее важные особенности, вы можете сохранить те, которые имеют наибольшую проекцию вдоль собственных векторов матрицы взаимодействия.


График может быть не двоичным, поскольку белок может взаимодействовать с более чем одним белком. Есть ли расширение для нескольких ребер?
Аниш

Это не то, что я имел в виду под двоичным. Вопрос в том, хотите ли вы зафиксировать интенсивность взаимодействия или достаточно моделировать его присутствие. Конечно, графовая модель может учитывать взаимодействие между любой парой белков.
Эмре

Хм .. Я предполагаю, что когда вы просите меня создать квадратную матрицу для взаимодействия белков, значения в матрице представляют количество взаимодействий между белками. Но я не вижу, где мы используем функции здесь. Можете ли вы уточнить это?
Аниш

Собственные векторы представляют собой линейную комбинацию белков в пространстве признаков.
Эмре
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.