У меня есть список белков с их характеристиками. Пример таблицы выглядит так:
...............Feature1...Feature2...Feature3...Feature4
Protein1
Protein2
Protein3
Protein4
Ряды - это белки, а столбцы - это особенности.
У меня также есть список белков, которые также взаимодействуют; например
Protein3, Protein4
Protein1, Protein2
Protein4, Protein1
Проблема : для предварительного анализа я хочу знать, какие особенности способствуют взаимодействию белков.
Насколько я понимаю, обычно деревья решений можно использовать для получения наиболее важной функции, основанной на энтропии, но я не уверен, как распространить ее на белковые пары (то есть взаимодействия). Есть ли способ для этой цели?
Ответы:
Актуальный рецепт решения представленной проблемы (одно из возможных решений)
Решить эту проблему довольно просто, используя мой любимый инструмент машинного обучения, vowpal wabbit, который поддерживает квадратичные (перекрестные) функции с помощью опции -q .
vowpal ваббит фон
Прежде чем перейти к деталям использования. vowpal wabbit - это быстрое и масштабируемое онлайн-программное обеспечение для машинного обучения, предназначенное для классификации и регрессии Я получаю скорость обучения (обучения) около 5 миллионов функций в секунду на своем рабочем столе без ограничения размера данных (количество примеров), поскольку в качестве онлайн-инструмента обучения он не требует загрузки полных данных в память. У него много других привлекательных функций: поддержка различных алгоритмов обучения, функций множественных потерь, разреженных функций, смешанных типов объектов и т. Д., Которые выходят за рамки этого вопроса.
Вот 3 шага к решению проблемы с комментарием:
Шаг 0: Загрузите и соберите vowpal wabbit с github (см. Примечание внизу о поддерживаемых средах)
Шаг 1: Подготовьте обучающий набор, где каждая строка выглядит следующим образом:
объяснение формата обучающего набора:
Крайнее левое число, 1.0 , является меткой (сила взаимодействия, которая может быть любым числовым значением), вторая строка ' protein1 / protein2 ' является меткой, чтобы придать линии идентичность, IOW: «эта строка представляет взаимодействие между protein1 и protein2" ; Это необязательно, и вы можете думать об этом как о комментарии. Эта строка тега также отражена в прогнозах моделей, чтобы определить, какой прогноз относится к какому примеру, но здесь мы не прогнозируем, мы просто моделируем и изучаем нашу модель. Далее идет пространство имен входной функции для protein1
|A
(нам нужно определить пространство имен, чтобы мы могли переходить между различными пространствами имен, это не обязательно должно бытьA
, может быть любым словом на самом деле, но первая буква должна отличаться между пространствами имен, чтобы мы могли их пересечь в вызове команды), а затем список функций ввода для protein1p1_...
. Последним идет пространство имен для protein2:|B
за ним следуют именные признаки protein2p2_...
.Одна из прелестей 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 ... -c --passes ...
) как естьvw
.-q AB
Необходим только для пересечения двух пространств имен объектов. Я добавил еще одну опцию выше (запустить несколько проходов), которая, я считаю, даст лучшие результаты.Эта команда вызовет vowpal wabbit (
vw
) для обучения набора данных и напечатает вывод, который, я полагаю, вы ищете: все взаимодействия элементов в порядке силы и их относительные веса.Пример ввода и вывода
Предположим, что ваш вклад
prot.dat
включает трехстороннее взаимодействие между 3 белками:Это намеренно очень минималистичный пример.
vw
у меня не должно быть проблем с гораздо большими наборами данных (например, миллионами строк, сотнями функций), также я варьировал метки силы взаимодействия в примерах. Если в вашем случае взаимодействие - это логическое «да» или «нет», просто используйте0
(нет взаимодействия) или1
(взаимодействие существует) в качестве 1-го поля в каждой строке.Бег:
Приведет все возможные взаимодействия (игнорировать пространства имен
A
иB
в выходных данных) и их веса:Показывая, что в этих данных самыми сильными участниками любых взаимодействий в целом являются: 1) простое наличие
k
признака, 2)k
признак, взаимодействующий с самим собой (при условии, что он есть у обоих белков), и 3)k
взаимодействующий с нимm
. в то время как самые слабые (отрицательный вклад во взаимодействие с белками) являютсяb
признаком в сочетании сm
признакомВот страница HOWTO на vw-varinfo
vowpal wabbit собирается из исходного кода (см. ссылку выше) и работает в Linux (и, возможно, в других Unixes), Mac OS-X и Windows.
НТН
источник
Сети взаимодействия белков могут быть представлены неориентированными графами с белками, образующими узлы, а их взаимодействия - краями. Если взаимодействие с белками является бинарным явлением, ребра также бинарные (ноль или единица), в противном случае вы можете использовать действительное число. Вы можете численно представить этот график в виде квадратной матрицы, в частности, симметричной. Чтобы найти наиболее важные особенности, вы можете сохранить те, которые имеют наибольшую проекцию вдоль собственных векторов матрицы взаимодействия.
источник