azovdevmeetup 2016 | Машинное обучение, параллельные и...

33
Машинное обучение в Drug Discovery Андрей Гедич, Аркадия

Upload: jsc-arcadia-inc

Post on 16-Apr-2017

366 views

Category:

Software


1 download

TRANSCRIPT

Page 1: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Машинное обучение в Drug Discovery

Андрей Гедич, Аркадия

Page 2: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Обо мне

2

Андрей ГедичАркадия

[email protected]

В Аркадии с 2010 года, последние 5 лет работаю, главным образом, с C++, Machine Learning, Scala, Apache Spark

Page 3: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Задачи машинного обучения

• Предсказание различных величин, событий

• Спам фильтры, классификация текстов

• Распознование текста, лиц, голоса

• Рекомендательные системы

3

Page 4: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Что рассмотрим

• Машинное обучение в Drug Discovery• Терминология и задачи

• Подготовка данных

• Получение модели

• Выбор модели

• Улучшение модели

• Оценка модели

• Параллелизация применительно к C++• Библиотеки для параллелизации

• Распределённые вычисления• Выбор фреймворка для распределённых вычислений

• Выбор файловая системы

• Drug Discovery Pipeline - обобщение

4

Page 5: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Drug discovery - Основные задачи

• Для заданных химических соединений (compound) –предсказать насколько сильно они будут связываться с биологической целью (target), вызывая при этом её желаемое изменение.

• Химическое соединение – энзим ингибитор (лиганд)

• Биологическая цель – протеин (энзим)

• Желаемое изменение – представлено активностью биологической цели, выражаемой метрикой IC50.

• IC50 – концентрация полумаксимального ингибирования.

5

Page 6: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Phenotypic screening, Inhibition

• Phenotypic screening – процесс поиска соединений которые изменяют поведение клетки или организма.

• Ингибитор –ингибитор это молекула, которая связывается с протеином и изменяет его активность. Блокирование активности может уничтожить патоген.

Многие лекарства являются ингибиторами протеинов.

• Specificity – свойство ингибитора, определяющее его слабую связываемость с другими протеинами.

• Potency – свойство ингибитора, определяющее концентрацию, необходимую для блокирования активности протеина.

Лекарства с высокими показателями имеют меньше побочных эффектов.

6

Benzocaine

Page 7: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Drug discovery – Фазы разработки

7

Clinical trials• Phase 0• Phase I• Phase II• Phase III• Phase IV

Preclinical• In vitro (cell line)• In vivo (animal)

Virtual• In silico

CompoundCollection

Lead CompoundBack-up compounds

Computer-Aided Drug Design (CADD) High-throughput screening (HTS)

Source: www.ddw-online.com

Page 8: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Кривая доза-эффект

8

Page 9: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Машинное обучение – термины

• Машинное обучение – научная дисциплина, которая создаёт и изучает алгоритмы, способные обучаться на данных.

• Такие алгоритмы оперируют посредством построения моделей (model), основанных на входных данных(input). Модели используются для дальнейшего предсказания и принятия решений.

9

Page 10: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Машинное обучение - обозначения

• x(i) – используется для обозначения входных переменных (features) – вектор характеристик.

• y(i) – используется для обозначения тренировочных данных(target).

• (x(i),y(i)) – используется для обозначения тренировочной пары (training example).

• Список в m training examples и n features и называется training set.

10

Co

mp

ou

nd

s

Fingerprints

Co

mp

ou

nd

s

Activities

Protein

X Y

Page 11: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Определение x(i) – compound id

• Входные данные представлены химическими соединениями (compound).

• Необходимо предсказать активность, основываясь на структуре соединения.

• Соединение идентифицируется посредством InChl Key

11

Ketoconazole

InChl key: XMAYWYJOQHXEEK-ZEQKJWHPSA-N

Cytochrome

uniprot: P450/P15149

Image source: de.wikipedia.orgLicense: CC BY-SA 2.0 de

Page 12: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Определение x(i) - fingerprint

• Характеристики соединения (features) получаются посредством расчёта специального отпечатка (fingerprint).

• Химическое соединение разбивается на паттерны, которые хэшируются.

• Существует множество алгоритмов: MACCS, ECFP, LINGO, AP, MNA итд

• Основные библиотеки: JCompoundMapper, CDK, RDKit, GraphSim TK, Open Babel.

12

Page 13: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Определение y(i) – activity

• Входные данные это триплет: inchlkey : activity_pvalue : target_uniprot_ac.

• Задаётся пороговое значение для IC50 – округлённое значение концентрации.

• Данные разбиваются на 2 класса – active и inactive.

• Затем данные фильтруются (balancing), семплируются (sampling) и разбиваются на группы (cross validation).

13

Concentration level = 6inchlkey IC50 target activity

compound id 1 6.43 P15149 active

compound id 2 6.14 P15149 active

compound id 3 5.97 P15149 inactive

compound id 4 6.27 P15149 active

Fold 1

Fold 2

Page 14: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Получение модели и предсказания

TrainAlgorithm

Co

mp

ou

nd

s

Fingerprints

XTrain C

om

po

un

ds

Activities

ProteinY

14

14

Fin

gerp

rin

ts

Weights

ProteinModel

Y PredictionAlgorithm

Co

mp

ou

nd

s

Class/Probability

ProteinPrediction

𝒀

Co

mp

ou

nd

s

Fingerprints

XTest

14

Fin

gerp

rin

ts

Weights

ProteinModel

Y

Page 15: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Объединение результатов

• Нормализация – Platt Scaling

• Объединение – mean, geometric mean, max probability итд

15

Co

mp

ou

nd

s

Class/Probability

ProteinPrediction

𝒀

Co

mp

ou

nd

s

Class/Probability

ProteinPrediction

Fused

𝒀

Page 16: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Выбор лучшей модели

• При выборе модели обычно говорят о таких проблемах как:

• Недообучение (Underfitting)

• Переобучение (Overfitting)

• Увеличение количества характеристик

• Увеличение объёма тренировочных данных

16

Page 17: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Поиск недостатка модели

• Перед решением необходимо найти недостаток модели:

• High bias/Low Variance – Недообучение

• Low bias/High Variance – Переобучение

• Для поиска недостатка используются такие вещи как:

• Кривые обучения (Learning Curves)

• Перекрёстная проверка (Cross validation)• Cross validation

• K-fold cross validation

• K-fold nested cross validation

17

Page 18: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

High Bias vs High Variance

18

Derivative of: http://www.astroml.org/sklearn_tutorial/practical.html

Page 19: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

High Bias vs High Variance

• High Bias/Low Variance

• Добавление новых характеристик

• Увеличение объёма тренировочных данных

• Low Bias/High variance

• Увеличение объёма тренировочных данных

• Уменьшение количества характеристик• Feature selection (Fisher score, Relief)

• Dimension reduction (PCA)

• Добавление новых характеристик

19

Page 20: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Оценка качества модели

• Когда необходимо оценить качество модели, говорят о парах:

• Precision vs Recall

• Recall vs Fall-out

20

Predicted condition

Predicted condition positive Predicted condition negative

True condition Condition positive

True Positive (TP) False Negative (FN)

Condition negative

False Positive (FP) True Negative (TN)

Confusion matrix

𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 =𝑇𝑃

𝑇𝑃 + 𝐹𝑃

𝑅𝑒𝑐𝑎𝑙𝑙 =𝑇𝑃

𝑇𝑃 + 𝐹𝑁

𝐹𝑃𝑅 =𝐹𝑃

𝐹𝑃 + 𝑇𝑁

0 ≤ ℎ𝜃(𝑥) ≤ 11 if ℎ𝜃(𝑥) ≥ threshold0 if ℎ𝜃(𝑥) < threshold

Page 21: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Precision vs Recall

21

Derivative of: http://stackoverflow.com/questions/33294574/good-roc-curve-but-poor-precision-recall-curveLicense: cc by-sa 3.0

Page 22: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Recall vs Fall-out (ROC AUC)

22

Derivative of: http://stackoverflow.com/questions/33294574/good-roc-curve-but-poor-precision-recall-curveLicense: cc by-sa 3.0

Page 23: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

AUC density plot

• Сравнение разных алгоритмов

• Сравнение одного алгоритмас разными параметрами

23

Page 24: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Подводя итоги - объём вычислений

• Подготовка входных данных• Генерация отпечатков: ECFP, AP, etc (5)• Разбиение на уровни концентрации (5)• Семплинг (10)• Фолдинг: k-fold nested CV (5)

• Выборка фичей: Fisher Score, Relief, etc (5)

• Тренировка моделей: LR, SVM (p) (2000)

• Предсказание: LR, SVM, Naive Bayes, etc (5)

• Объединение моделей: Platt Scaling, etc

• Оценка результатов: ROC-AUC, etc

• 5 * 5 * 10 * 5 * 5 * 2000 = 12500000 раз – 145 дней (4,03/2,01) - один метод

• 145 * 5 = 725 дней (20,13/10,07) – все методы

Scaling Machine Learning for Target Prediction in Drug Discovery using Apache Spark - Proceedings of the 15th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing: Workshop on Clusters, Clouds and Grids for Life Sciences. IEEE, 2015. p. 871-879.

24

Image source: http://www.intel.com/

Page 25: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Tox 21 Challenge

• Программа Tox21 – проводится совместно с NIH, EPA, FDA и нацелена на разработку и улучшение методов оценки токсичности.

• Главная цель Tox21 Challenge – быстрое и эффективное тестирование заданного химического соединения. Необходимо проверить, может ли оно нарушать процессы в теле человека, что может привести к побочным эффектам.

25

Page 26: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Параллелизация в С++

• Native threads

• Windows threads / pthreads

• Cross-platform threads

• Boost threads

• MPI parallel computing• Open MPI

• Intel MPI

• Boost MPI

• Parallelization libraries

• Intel Cilk

• Open MP

• TBB

26

Page 27: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Параллелизация в C++

• Intel Cilk™• cilk_spawn, cilk_sync, cilk_for

• Никакой свободы – всё делает оптимизатор из коробки

• Opens-source: cilkplus (gcc), cilk (llvm/clang) – Linux

• Commercial (free licence) : Intel Parallel Studio XE suites – Windows, Linux

• Open MP• Набор различных #pragma директив

• #pragma omp parallel

• #pragma omp parallel for

• #pragma omp barrier

• Никакой компиляции и sanity checks

• Compiler specific – может не поддерживаться компилятором

• TBB• Open-source

• Generic C++ template library – полный контроль

• parallel_for , parallel_do, parallel_reduce

• parallel_pipeline, make_filter, operator&

• concurrent_vector, concurrent_hash_map, concurrent_queue

• mutexes, atomic operations, memory allocators

27

Page 28: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Распределённые вычисления -выбор фреймворка

• Hadoop• MapReduce – Java

• Python, R (stdin/stdout Streaming API)

• Нет кэширования в памяти – постоянная нагрузка на сеть

• Batch processing

• Есть файловая система - HDFS

• Spark• Java, Python, Scala Jobs

• Кэширование в памяти

• Итеративные алгоритмы (машинное обучение)

• Нет файловой системы – можно использовать HDFS и подобные

28

Page 29: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Какую файловую систему выбрать

• Posix Compliance

• Parallel/Distributed

• Open-source

• Spark Integration

29

Page 30: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Какую файловую систему выбрать

• Parallel

• IBM GPFS

• Lustre

• Distributed

• Gluster FS

• Ceph FS

30

• Posix Compliant

• IBM GPFS

• Lustre

• Gluster FS

• Ceph FS

• Non Posix Compliant

• HDFS

• Orange FS

• Grid Gain

• Quantcast FS

• Open-source

• Gluster FS

• Ceph FS

• Spark integration

• Gluster FS

• Ceph FS

Page 31: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Что даёт Posix Compliance

31

HDFSlocal localRaw data Result

Write Copy Copy Read

Traditional applications Traditional applications

PosixCompliant

Raw data Result

Direct Write Direct Read

Hadoop jobs

Page 32: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Drug Discovery Framework

• R • подготовка окружения• генерация json файлов c константными параметрами• system.cmd -> spark-submit

• Scala• Инициализация RDD с различными предикторами• Перебор изменяющихся параметров• scala.sys.process.Process -> запуск С++ приложений

• C++• Target Generation• Train• Predict• Fusion• ROC-AUC

• R• Агрегация результатов• Генерирование отчётов

32

R scripts

Scala job

C++ binaries

R scripts

system.cmdspark-submit

Scala.sys.process.Process

Page 33: AzovDevMeetup 2016 | Машинное обучение, параллельные и распределённые вычисления в drug discovery | Андрей Гедич

Q & A