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

Post on 16-Apr-2017

366 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

Обо мне

2

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

andrey.gedich@arcadia.spb.ru

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

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

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

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

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

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

3

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

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

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

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

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

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

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

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

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

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

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

4

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

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

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

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

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

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

5

Phenotypic screening, Inhibition

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

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

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

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

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

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

6

Benzocaine

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

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

8

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

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

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

9

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

• 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

Определение 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

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

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

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

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

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

12

Определение 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

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

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

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

• Нормализация – 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

𝒀

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

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

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

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

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

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

16

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

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

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

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

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

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

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

• K-fold cross validation

• K-fold nested cross validation

17

High Bias vs High Variance

18

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

High Bias vs High Variance

• High Bias/Low Variance

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

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

• Low Bias/High variance

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

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

• Dimension reduction (PCA)

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

19

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

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

• 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

Precision vs Recall

21

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

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

AUC density plot

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

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

23

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

• Подготовка входных данных• Генерация отпечатков: 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/

Tox 21 Challenge

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

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

25

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

• 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

Параллелизация в 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

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

• Hadoop• MapReduce – Java

• Python, R (stdin/stdout Streaming API)

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

• Batch processing

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

• Spark• Java, Python, Scala Jobs

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

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

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

28

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

• Posix Compliance

• Parallel/Distributed

• Open-source

• Spark Integration

29

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

• 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

Что даёт 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

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

Q & A

top related