ݺߣ

ݺߣShare a Scribd company logo
Машинное обучение в 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
Compound
Collection
Lead Compound
Back-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
Compounds
Fingerprints
Compounds
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.org
License: 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 = 6
inchlkey 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
Получение модели и предсказания
Train
Algorithm
Compounds
Fingerprints
X
Train
Compounds
Activities
Protein
Y
14
14
Fingerprints
Weights
Protein
Model
Y Prediction
Algorithm
Compounds
Class/Probability
Protein
Prediction
෡𝒀
Compounds
Fingerprints
X
Test
14
Fingerprints
Weights
Protein
Model
Y
Объединение результатов
• Нормализация – Platt Scaling
• Объединение – mean, geometric mean, max probability итд
15
Compounds
Class/Probability
Protein
Prediction
෡𝒀
Compounds
Class/Probability
Protein
Prediction
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 ≤ ℎ 𝜃(𝑥) ≤ 1
1 if ℎ 𝜃(𝑥) ≥ threshold
0 if ℎ 𝜃(𝑥) < threshold
Precision vs Recall
21
Derivative of: http://stackoverflow.com/questions/33294574/good-roc-curve-but-poor-precision-recall-curve
License: 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-curve
License: 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
Posix
Compliant
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.cmd
spark-submit
Scala.sys.process.
Process
Q & A

More Related Content

What's hot (20)

Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxПавел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Platonov Sergey
Тестируем производительность с помощью Selenium
Тестируем производительность с помощью SeleniumТестируем производительность с помощью Selenium
Тестируем производительность с помощью Selenium
SQALab
Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?
SQALab
Наталья Медведева - Тестировщик на все руки в Scrum-команде
Наталья Медведева - Тестировщик на все руки в Scrum-командеНаталья Медведева - Тестировщик на все руки в Scrum-команде
Наталья Медведева - Тестировщик на все руки в Scrum-команде
SQALab
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
CEE-SEC(R)
Экономически эффективный процесс тестирования
Экономически эффективный процесс тестированияЭкономически эффективный процесс тестирования
Экономически эффективный процесс тестирования
CodeFest
Keyword driven testing
Keyword driven testingKeyword driven testing
Keyword driven testing
automated-testing.info
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
SQALab
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...
Igor Khrol
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
WrikeTechClub
Web driver история одной миграции
Web driver   история одной миграцииWeb driver   история одной миграции
Web driver история одной миграции
Igor Khrol
История HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуИстория HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качеству
SQALab
Тестировщик в Agile - кто он?
Тестировщик в Agile - кто он?Тестировщик в Agile - кто он?
Тестировщик в Agile - кто он?
Igor Khrol
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
Igor Khrol
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
CEE-SEC(R)
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QA
SQALab
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
SQALab
Архитектура автоматизированных тестов
Архитектура автоматизированных тестовАрхитектура автоматизированных тестов
Архитектура автоматизированных тестов
SQALab
Badger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктовBadger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктов
SQALab
Проблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteПроблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestComplete
automated-testing.info
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxПавел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Platonov Sergey
Тестируем производительность с помощью Selenium
Тестируем производительность с помощью SeleniumТестируем производительность с помощью Selenium
Тестируем производительность с помощью Selenium
SQALab
Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?Автоматизация тестирования: доступна каждому или удел избранных?
Автоматизация тестирования: доступна каждому или удел избранных?
SQALab
Наталья Медведева - Тестировщик на все руки в Scrum-команде
Наталья Медведева - Тестировщик на все руки в Scrum-командеНаталья Медведева - Тестировщик на все руки в Scrum-команде
Наталья Медведева - Тестировщик на все руки в Scrum-команде
SQALab
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
Как не налететь на рифы в море преимуществ Scrum: организация и оптимизация т...
CEE-SEC(R)
Экономически эффективный процесс тестирования
Экономически эффективный процесс тестированияЭкономически эффективный процесс тестирования
Экономически эффективный процесс тестирования
CodeFest
UICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
SQALab
Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...Cовременный контроль качества: давай сделаем это по-быстрому...
Cовременный контроль качества: давай сделаем это по-быстрому...
Igor Khrol
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
WrikeTechClub
Web driver история одной миграции
Web driver   история одной миграцииWeb driver   история одной миграции
Web driver история одной миграции
Igor Khrol
История HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качествуИстория HERE Maps for Windows: меняемся не изменяя качеству
История HERE Maps for Windows: меняемся не изменяя качеству
SQALab
Тестировщик в Agile - кто он?
Тестировщик в Agile - кто он?Тестировщик в Agile - кто он?
Тестировщик в Agile - кто он?
Igor Khrol
Grail - CodeFest'2015
Grail - CodeFest'2015Grail - CodeFest'2015
Grail - CodeFest'2015
Igor Khrol
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙСтановление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
Становление процесса автоматизированного тестирования в интернет-магазине ОКЕЙ
CEE-SEC(R)
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QA
SQALab
The fast and the continuous
The fast and the continuousThe fast and the continuous
The fast and the continuous
SQALab
Архитектура автоматизированных тестов
Архитектура автоматизированных тестовАрхитектура автоматизированных тестов
Архитектура автоматизированных тестов
SQALab
Badger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктовBadger — инструмент для мониторинга качества продуктов
Badger — инструмент для мониторинга качества продуктов
SQALab
Проблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestCompleteПроблемы автоматизации крупных проектов: TestComplete
Проблемы автоматизации крупных проектов: TestComplete
automated-testing.info

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

Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
yaevents
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
SPB SQA Group
Yurii Gavrilin | ML Interpretability: From A to Z | Kazan ODSC Meetup
Yurii Gavrilin | ML Interpretability: From A to Z | Kazan ODSC MeetupYurii Gavrilin | ML Interpretability: From A to Z | Kazan ODSC Meetup
Yurii Gavrilin | ML Interpretability: From A to Z | Kazan ODSC Meetup
Provectus
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Nikolay Grebenshikov
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
Iosif Itkin
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
corehard_by
Python-for-Data-Analysis, Pandas, Numpy,Seaborn
Python-for-Data-Analysis, Pandas, Numpy,SeabornPython-for-Data-Analysis, Pandas, Numpy,Seaborn
Python-for-Data-Analysis, Pandas, Numpy,Seaborn
YanaSemakina1
Автоматизация тестирования как способ получения знаний
Автоматизация тестирования как способ получения знанийАвтоматизация тестирования как способ получения знаний
Автоматизация тестирования как способ получения знаний
SQALab
Сверточные нейронные сети
Сверточные нейронные сетиСверточные нейронные сети
Сверточные нейронные сети
Ivan Kavalerov
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilation
Nikita Lipsky
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
FlyElephant
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
Vladislav Morgun
Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2
Technopark
Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...
Ontico
Вебинар "Проекты зеленых поясов. Причины неудач и секреты успеха"
Вебинар "Проекты зеленых поясов. Причины неудач и секреты успеха"Вебинар "Проекты зеленых поясов. Причины неудач и секреты успеха"
Вебинар "Проекты зеленых поясов. Причины неудач и секреты успеха"
SixSigmaOnline
машинное обучение и анализ данных
машинное обучение и анализ данныхмашинное обучение и анализ данных
машинное обучение и анализ данных
Yandex
Машинное обучение
Машинное обучениеМашинное обучение
Машинное обучение
Даниил Силантьев
BigData и Data Science: методы и инструменты
BigData и Data Science: методы и инструменты BigData и Data Science: методы и инструменты
BigData и Data Science: методы и инструменты
Dima Karamshuk
Роль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщикаРоль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщика
SQALab
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
Модели в профессиональной инженерии и тестировании программ. Александр Петрен...
yaevents
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
ITGM8. Илья Коробицын (Grid Dinamics) Автоматизатор, копай глубже, копай шире!
SPB SQA Group
Yurii Gavrilin | ML Interpretability: From A to Z | Kazan ODSC Meetup
Yurii Gavrilin | ML Interpretability: From A to Z | Kazan ODSC MeetupYurii Gavrilin | ML Interpretability: From A to Z | Kazan ODSC Meetup
Yurii Gavrilin | ML Interpretability: From A to Z | Kazan ODSC Meetup
Provectus
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Лекция №1. Введение. Предмет "Структуры и алгоритмы обработки данных"
Nikolay Grebenshikov
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
TMPA-2013 Petrenko Pakulin: Technical Solutions and Non-Technical Challenges ...
Iosif Itkin
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
corehard_by
Python-for-Data-Analysis, Pandas, Numpy,Seaborn
Python-for-Data-Analysis, Pandas, Numpy,SeabornPython-for-Data-Analysis, Pandas, Numpy,Seaborn
Python-for-Data-Analysis, Pandas, Numpy,Seaborn
YanaSemakina1
Автоматизация тестирования как способ получения знаний
Автоматизация тестирования как способ получения знанийАвтоматизация тестирования как способ получения знаний
Автоматизация тестирования как способ получения знаний
SQALab
Сверточные нейронные сети
Сверточные нейронные сетиСверточные нейронные сети
Сверточные нейронные сети
Ivan Kavalerov
Java Ahead-Of-Time compilation
Java Ahead-Of-Time compilationJava Ahead-Of-Time compilation
Java Ahead-Of-Time compilation
Nikita Lipsky
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMPВебинар: Основы распараллеливания С++ программ при помощи OpenMP
Вебинар: Основы распараллеливания С++ программ при помощи OpenMP
FlyElephant
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
08.11 SEMPRO Club - Влад Моргун - Цвет настроения серый
Vladislav Morgun
Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2Тестирование весна 2013 лекция 2
Тестирование весна 2013 лекция 2
Technopark
Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...
Ontico
Вебинар "Проекты зеленых поясов. Причины неудач и секреты успеха"
Вебинар "Проекты зеленых поясов. Причины неудач и секреты успеха"Вебинар "Проекты зеленых поясов. Причины неудач и секреты успеха"
Вебинар "Проекты зеленых поясов. Причины неудач и секреты успеха"
SixSigmaOnline
машинное обучение и анализ данных
машинное обучение и анализ данныхмашинное обучение и анализ данных
машинное обучение и анализ данных
Yandex
BigData и Data Science: методы и инструменты
BigData и Data Science: методы и инструменты BigData и Data Science: методы и инструменты
BigData и Data Science: методы и инструменты
Dima Karamshuk
Роль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщикаРоль TestOps: расширяем традиционные обязанности тестировщика
Роль TestOps: расширяем традиционные обязанности тестировщика
SQALab

More from JSC “Arcadia Inc” (8)

Outsourcing of Software Development — Myths
Outsourcing of Software Development — MythsOutsourcing of Software Development — Myths
Outsourcing of Software Development — Myths
JSC “Arcadia Inc”
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём КравченкоAzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
JSC “Arcadia Inc”
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
JSC “Arcadia Inc”
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
AzovDevMeetup 2016 | Angular 2: обзор | Александр ШевнинAzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
JSC “Arcadia Inc”
AzovDevMeetup 2016 | HBase и Phoenix в качестве основы ETL-приложения на Node...
AzovDevMeetup 2016 | HBase и Phoenix в качестве основы ETL-приложения на Node...AzovDevMeetup 2016 | HBase и Phoenix в качестве основы ETL-приложения на Node...
AzovDevMeetup 2016 | HBase и Phoenix в качестве основы ETL-приложения на Node...
JSC “Arcadia Inc”
Quality Practices in e-Assessment Development
Quality Practices in e-Assessment DevelopmentQuality Practices in e-Assessment Development
Quality Practices in e-Assessment Development
JSC “Arcadia Inc”
2015-12-12 | AzovDevMeetup 2015 | Мобильная разработка: Native, Hybrid, Cross...
2015-12-12 | AzovDevMeetup 2015 | Мобильная разработка: Native, Hybrid, Cross...2015-12-12 | AzovDevMeetup 2015 | Мобильная разработка: Native, Hybrid, Cross...
2015-12-12 | AzovDevMeetup 2015 | Мобильная разработка: Native, Hybrid, Cross...
JSC “Arcadia Inc”
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
JSC “Arcadia Inc”
Outsourcing of Software Development — Myths
Outsourcing of Software Development — MythsOutsourcing of Software Development — Myths
Outsourcing of Software Development — Myths
JSC “Arcadia Inc”
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём КравченкоAzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
AzovDevMeetup 2016 | Сертификация ISTQB для QA инженера | Артём Кравченко
JSC “Arcadia Inc”
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
AzovDevMeetup 2016 | Основы Agile Project Management или Прощай, менеджер про...
JSC “Arcadia Inc”
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
AzovDevMeetup 2016 | Angular 2: обзор | Александр ШевнинAzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
AzovDevMeetup 2016 | Angular 2: обзор | Александр Шевнин
JSC “Arcadia Inc”
AzovDevMeetup 2016 | HBase и Phoenix в качестве основы ETL-приложения на Node...
AzovDevMeetup 2016 | HBase и Phoenix в качестве основы ETL-приложения на Node...AzovDevMeetup 2016 | HBase и Phoenix в качестве основы ETL-приложения на Node...
AzovDevMeetup 2016 | HBase и Phoenix в качестве основы ETL-приложения на Node...
JSC “Arcadia Inc”
Quality Practices in e-Assessment Development
Quality Practices in e-Assessment DevelopmentQuality Practices in e-Assessment Development
Quality Practices in e-Assessment Development
JSC “Arcadia Inc”
2015-12-12 | AzovDevMeetup 2015 | Мобильная разработка: Native, Hybrid, Cross...
2015-12-12 | AzovDevMeetup 2015 | Мобильная разработка: Native, Hybrid, Cross...2015-12-12 | AzovDevMeetup 2015 | Мобильная разработка: Native, Hybrid, Cross...
2015-12-12 | AzovDevMeetup 2015 | Мобильная разработка: Native, Hybrid, Cross...
JSC “Arcadia Inc”
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
JSC “Arcadia Inc”

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

  • 1. Машинное обучение в Drug Discovery Андрей Гедич, Аркадия
  • 2. Обо мне 2 Андрей Гедич Аркадия andrey.gedich@arcadia.spb.ru В Аркадии с 2010 года, последние 5 лет работаю, главным образом, с C++, Machine Learning, Scala, Apache Spark
  • 3. Задачи машинного обучения • Предсказание различных величин, событий • Спам фильтры, классификация текстов • Распознование текста, лиц, голоса • Рекомендательные системы 3
  • 4. Что рассмотрим • Машинное обучение в Drug Discovery • Терминология и задачи • Подготовка данных • Получение модели • Выбор модели • Улучшение модели • Оценка модели • Параллелизация применительно к C++ • Библиотеки для параллелизации • Распределённые вычисления • Выбор фреймворка для распределённых вычислений • Выбор файловая системы • Drug Discovery Pipeline - обобщение 4
  • 5. Drug discovery - Основные задачи • Для заданных химических соединений (compound) – предсказать насколько сильно они будут связываться с биологической целью (target), вызывая при этом её желаемое изменение. • Химическое соединение – энзим ингибитор (лиганд) • Биологическая цель – протеин (энзим) • Желаемое изменение – представлено активностью биологической цели, выражаемой метрикой IC50. • IC50 – концентрация полумаксимального ингибирования. 5
  • 6. Phenotypic screening, Inhibition • Phenotypic screening – процесс поиска соединений которые изменяют поведение клетки или организма. • Ингибитор –ингибитор это молекула, которая связывается с протеином и изменяет его активность. Блокирование активности может уничтожить патоген. Многие лекарства являются ингибиторами протеинов. • Specificity – свойство ингибитора, определяющее его слабую связываемость с другими протеинами. • Potency – свойство ингибитора, определяющее концентрацию, необходимую для блокирования активности протеина. Лекарства с высокими показателями имеют меньше побочных эффектов. 6 Benzocaine
  • 7. 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 Compound Collection Lead Compound Back-up compounds Computer-Aided Drug Design (CADD) High-throughput screening (HTS) Source: www.ddw-online.com
  • 9. Машинное обучение – термины • Машинное обучение – научная дисциплина, которая создаёт и изучает алгоритмы, способные обучаться на данных. • Такие алгоритмы оперируют посредством построения моделей (model), основанных на входных данных (input). Модели используются для дальнейшего предсказания и принятия решений. 9
  • 10. Машинное обучение - обозначения • x(i) – используется для обозначения входных переменных (features) – вектор характеристик. • y(i) – используется для обозначения тренировочных данных (target). • (x(i),y(i)) – используется для обозначения тренировочной пары (training example). • Список в m training examples и n features и называется training set. 10 Compounds Fingerprints Compounds Activities Protein X Y
  • 11. Определение x(i) – compound id • Входные данные представлены химическими соединениями (compound). • Необходимо предсказать активность, основываясь на структуре соединения. • Соединение идентифицируется посредством InChl Key 11 Ketoconazole InChl key: XMAYWYJOQHXEEK-ZEQKJWHPSA-N Cytochrome uniprot: P450/P15149 Image source: de.wikipedia.org License: CC BY-SA 2.0 de
  • 12. Определение x(i) - fingerprint • Характеристики соединения (features) получаются посредством расчёта специального отпечатка (fingerprint). • Химическое соединение разбивается на паттерны, которые хэшируются. • Существует множество алгоритмов: MACCS, ECFP, LINGO, AP, MNA итд • Основные библиотеки: JCompoundMapper, CDK, RDKit, GraphSim TK, Open Babel. 12
  • 13. Определение y(i) – activity • Входные данные это триплет: inchlkey : activity_pvalue : target_uniprot_ac. • Задаётся пороговое значение для IC50 – округлённое значение концентрации. • Данные разбиваются на 2 класса – active и inactive. • Затем данные фильтруются (balancing), семплируются (sampling) и разбиваются на группы (cross validation). 13 Concentration level = 6 inchlkey 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
  • 14. Получение модели и предсказания Train Algorithm Compounds Fingerprints X Train Compounds Activities Protein Y 14 14 Fingerprints Weights Protein Model Y Prediction Algorithm Compounds Class/Probability Protein Prediction ෡𝒀 Compounds Fingerprints X Test 14 Fingerprints Weights Protein Model Y
  • 15. Объединение результатов • Нормализация – Platt Scaling • Объединение – mean, geometric mean, max probability итд 15 Compounds Class/Probability Protein Prediction ෡𝒀 Compounds Class/Probability Protein Prediction Fused ෡𝒀
  • 16. Выбор лучшей модели • При выборе модели обычно говорят о таких проблемах как: • Недообучение (Underfitting) • Переобучение (Overfitting) • Увеличение количества характеристик • Увеличение объёма тренировочных данных 16
  • 17. Поиск недостатка модели • Перед решением необходимо найти недостаток модели: • High bias/Low Variance – Недообучение • Low bias/High Variance – Переобучение • Для поиска недостатка используются такие вещи как: • Кривые обучения (Learning Curves) • Перекрёстная проверка (Cross validation) • Cross validation • K-fold cross validation • K-fold nested cross validation 17
  • 18. High Bias vs High Variance 18 Derivative of: http://www.astroml.org/sklearn_tutorial/practical.html
  • 19. High Bias vs High Variance • High Bias/Low Variance • Добавление новых характеристик • Увеличение объёма тренировочных данных • Low Bias/High variance • Увеличение объёма тренировочных данных • Уменьшение количества характеристик • Feature selection (Fisher score, Relief) • Dimension reduction (PCA) • Добавление новых характеристик 19
  • 20. Оценка качества модели • Когда необходимо оценить качество модели, говорят о парах: • 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 ≤ ℎ 𝜃(𝑥) ≤ 1 1 if ℎ 𝜃(𝑥) ≥ threshold 0 if ℎ 𝜃(𝑥) < threshold
  • 21. Precision vs Recall 21 Derivative of: http://stackoverflow.com/questions/33294574/good-roc-curve-but-poor-precision-recall-curve License: cc by-sa 3.0
  • 22. Recall vs Fall-out (ROC AUC) 22 Derivative of: http://stackoverflow.com/questions/33294574/good-roc-curve-but-poor-precision-recall-curve License: cc by-sa 3.0
  • 23. AUC density plot • Сравнение разных алгоритмов • Сравнение одного алгоритма с разными параметрами 23
  • 24. Подводя итоги - объём вычислений • Подготовка входных данных • Генерация отпечатков: 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/
  • 25. Tox 21 Challenge • Программа Tox21 – проводится совместно с NIH, EPA, FDA и нацелена на разработку и улучшение методов оценки токсичности. • Главная цель Tox21 Challenge – быстрое и эффективное тестирование заданного химического соединения. Необходимо проверить, может ли оно нарушать процессы в теле человека, что может привести к побочным эффектам. 25
  • 26. Параллелизация в С++ • 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
  • 27. Параллелизация в 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
  • 28. Распределённые вычисления - выбор фреймворка • Hadoop • MapReduce – Java • Python, R (stdin/stdout Streaming API) • Нет кэширования в памяти – постоянная нагрузка на сеть • Batch processing • Есть файловая система - HDFS • Spark • Java, Python, Scala Jobs • Кэширование в памяти • Итеративные алгоритмы (машинное обучение) • Нет файловой системы – можно использовать HDFS и подобные 28
  • 29. Какую файловую систему выбрать • Posix Compliance • Parallel/Distributed • Open-source • Spark Integration 29
  • 30. Какую файловую систему выбрать • 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
  • 31. Что даёт Posix Compliance 31 HDFSlocal localRaw data Result Write Copy Copy Read Traditional applications Traditional applications Posix Compliant Raw data Result Direct Write Direct Read Hadoop jobs
  • 32. 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.cmd spark-submit Scala.sys.process. Process
  • 33. Q & A