Пошук найкращих особливостей у моделях взаємодії


13

У мене є список білків з їх значеннями. Прикладна таблиця виглядає так:

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

Рядки - це білки, а стовпці - особливості.

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

Protein3, Protein4  
Protein1, Protein2  
Protein4, Protein1  

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

Я розумію, що зазвичай дерева рішень можуть використовуватися для отримання найважливішої ознаки, заснованої на ентропії, але я не впевнений, як поширити це на білкові пари (тобто взаємодії). Чи існує метод для такої мети?


Скажіть, якщо я вас правильно зрозумів: у вас є сила взаємодії для будь-якої пари білків (яка, наприклад, дорівнює нулю, якщо білки не взаємодіють), і тоді ви хочете мати вектор функцій, значення яких буде сильно корельованим. з силою взаємодії? Або, іншими словами, що дозволить передбачити силу взаємодії між білками?
dsign

Відповіді:


25

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

Вирішити цю проблему прямо зараз можна за допомогою мого улюбленого інструменту машинного навчання, vowpal wabbit, який підтримує квадратичні (кросові) функції через опцію -q .

vowpal фон wabbit

Перш ніж ми перейдемо до деталей використання. vowpal wabbit - це швидке та масштабоване онлайн-програмне забезпечення машинного навчання як для класифікації, так і для регресії. На моєму робочому столі я отримую швидкість навчання (навчання) близько 5 мільйонів функцій в секунду, без обмеження розміру даних (кількість прикладів), оскільки як онлайн-інструмент навчання не потрібно завантажувати всі дані в пам'ять. Він має багато інших привабливих особливостей: підтримка різних алгоритмів навчання, кілька функцій втрат, розрізнені функції, змішані типи функцій тощо, які виходять за рамки цього питання.

Ось 3 кроки до вирішення проблеми з коментарем:

Крок 0: Завантажте і створіть wabbit vowpal з github (див. Примітку внизу про підтримувані середовища)

Крок 1. Підготуйте навчальний набір, коли кожен рядок виглядає так:

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

пояснення формату навчального набору:

Найменше ліве число, 1,0 , - мітка (сила взаємодії, яка може бути будь-яким числовим значенням), другий рядок ' protein1 / protein2 ' є тегом, щоб надати рядку ідентичність, IOW: "ця лінія являє взаємодію між protein1 та білок2 "; Це необов’язково, і ви можете вважати це коментарем. Цей рядок тегів також перегукується з прогнозами від моделей, щоб визначити, який прогноз належить до якого прикладу, але ми тут не прогнозуємо, ми просто моделюємо та вивчаємо нашу модель. Далі йде простір імен вхідної функції для protein1 |A(нам потрібно визначити простір імен, щоб ми могли переходити між різними просторами імен, це не повинно бутиA, насправді може бути будь-яке слово, але перша літера має відрізнятися між пробілами імен, щоб ми могли перетнути їх у виклику команди) з подальшим переліком вхідних функцій для protein1 p1_.... Останнє - простір імен для protein2: |Bслідом за іменами ознак protein2 p2_....

Однією з красунь wabbit vowpal є те, що ви можете використовувати довільні рядки для імен функцій (це буде хешувати їх всередині, але вам все одно). Єдиними спеціальними завданнями у навчальному наборі є:

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

Тут :не використовується, оскільки ми припускаємо, що кожне ім'я функції білка являє собою булеве значення (існування), тому їх значення за замовчуванням 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.

HTH


Чи це безпосередньо означатиме, що обрізання слабких взаємодій покращить точність моделі?
мат

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

1

Мережі взаємодії з білками можуть бути представлені непрямими графами, з білками, що утворюють вузли, а їх взаємодією є краї. Якщо взаємодія білка є бінарним явищем, краї також є бінарними (нульовими або одиничними), інакше можна використовувати дійсне число. Ви можете числово представити цей графік як квадратну матрицю, так і симетричну зокрема. Щоб знайти найважливіші функції, ви можете зберегти ті, які мають найбільшу проекцію вздовж власних векторів матриці взаємодії.


Графік може бути не двійковим .. оскільки білок може взаємодіяти з більш ніж одним білком. Чи є розширення для декількох ребер?
Аніш

Це не те, що я мав на увазі під двійковим. Питання полягає в тому, чи потрібно фіксувати інтенсивність взаємодії, чи достатньо моделювати її присутність. Звичайно, графічна модель може пояснювати взаємодію між будь-якою парою білків.
Емре

Хм .. Я припускаю, що коли ви попросите мене створити квадратну матрицю для взаємодії з білками, значення в матриці представляють кількість взаємодій між білками. Але я не бачу, де ми тут використовуємо функції. Чи можете ви детальніше розглянути це?
Аніш

Власні вектори - це лінійна комбінація білків у просторі ознак.
Емре
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.