Kaggle Competiton: определение MoA нового препарата

Пройти конкурс можно по следующей ссылке Обзор (https://www.kaggle.com/c/lish-moa/overview). Он предполагает понимание биологического механизма заболевания . В этом методе ученые стремятся идентифицировать белок-мишень, связанную с этим заболеванием, чтобы построить молекулу, которая может исправить этот белок-мишень, чтобы помочь вылечить болезнь. Короче говоря, ученые дали этой процедуре ярлык, называемый механизмом действия или MoA (сокращенно). Термин механизм действия означает биохимические взаимодействия, посредством которых лекарство оказывает свое биологическое действие.

БИЗНЕС-ПРОБЛЕМА

Теперь возникает вопрос, как определить МоА нового препарата? Простым подходом может быть взятие образца клеток человека с лекарством, а затем анализ их клеточных ответов с помощью алгоритмов, которые ищут сходство в известных паттернах в больших базах данных генома, например, экспрессии генов или паттерна жизнеспособности клеток лекарств с известным MoA. Вы можете обратиться к набору данных, используя следующую ССЫЛКУ: data (https://www.kaggle.com/c/lish-moa/data). Наша цель — найти, какая ячейка типы лучше всего подходят для данного препарата. Следует отметить, что, поскольку лекарства могут иметь несколько инструкций MoA, задача формально является проблемой классификации с несколькими метками. Позвольте мне привести пример проблемы классификации с несколькими метками: когда люди говорят, что это супермен, птица, плоскости они имеют в виду конкретную вещь, но в задаче классификации с несколькими метками это может быть супермен, держащий самолет, чтобы спасти птицу, и теперь люди имеют в виду их всех.

Теперь модель или алгоритм, используемые для прогнозирования МоА, будут сосредоточены на понимании биологического механизма заболевания. В этом конкурсе мы должны разработать алгоритмы и обучить модели для определения механизма действия нового препарата на основе информации об экспрессии генов и жизнеспособности клеток,это наша основная цель.

Теперь, если вы спросите, что произойдет, если я решу данную проблему? В случае успеха алгоритм поможет предсказать механизм действия для данной клеточной сигнатуры, тем самым помогая ученым продвигать процесс открытия лекарств.

ML ФОРМУЛИРОВКА БИЗНЕС-ЗАДАЧИ

Набор данных, предоставленный нам, был разделен на набор данных для обучения и тестирования, и наша задача состоит в том, чтобы разработать алгоритм модели, который автоматически предсказывал бы метки для всех тестовых данных. Поскольку данная проблема является задачей классификации с несколькими метками, тестовые данные может иметь одну или несколько меток.

В этом конкурсе мы должны разработать алгоритмы и обучить модели для определения механизма действия нового препарата на основе информации об экспрессии генов и жизнеспособности клеток.

Он включает в себя предсказание множественных целей ответов Механизма действия различных выборок. Учитывая набор данных, нам предоставлено более 5000 лекарств в наборе данных. Набор данных включает в себя различные функции и насчитывает примерно более 200 целей. Целевые функции делятся на 2 группы с оценками и без оценок, и функции в обеих этих группах являются бинарными. Хотя соревновательная функция основана на засчитанной цели, неоцененная функция может использоваться для оценки модели, анализа данных и разработки функций.

Ограничения бизнеса,

В задаче не упоминаются бизнес-ограничения.

Как бы то ни было, данная проблема связана с медициной, поэтому у нас нет требований к низкой задержке, но результат должен быть максимально точным. Ошибок или неправильных прогнозов должно быть как можно меньше, иначе это может привести к серьезным проблемам.

Анализ столбца набора данных

Набор данных Train состоит из 23 814 строк, по 876 признаков в каждой. Каждая строка представляет образец, который связан с уникальным именем sig_id.

В наборе данных мы могли наблюдать три категориальные функции cp_type, cp_time и cp_dose. Вклад cp_time и cp_dose сбалансирован в наборе данных, но cp_type прямо противоположен. Функции категориальных признаков: - лечение/контроль (указывает, является ли эксперимент лечением или контролем), дозировка (уровень дозы, используемый в эксперимент), время (время, прошедшее между добавлением препарата и проведением измерения). Эта функция несбалансирована, и, как указано в конкурсе, препараты с cp_type являются управляемыми, т.е. cp_type является ctrl_vehicle , этот препарат не будет выполнять никакого механизма действия.

Существует 772 признака экспрессии генов, и они представлены «g-». Здесь каждый признак гена дает экспрессию одного конкретного гена. Существует 100 признаков жизнеспособности клеток, и они представлены как «c-». Здесь каждый признак клетки выражает жизнеспособность одной конкретной клеточной линии. Исходный набор данных был нормализован с помощью квантильной нормализации. Квантильная нормализация — это метод создания двух распределений, идентичных по статистическим свойствам.

Есть 206 забитых мишеней, которые нам нужно предсказать. Кроме того, нам также предоставляется неоцененная цель 402, которую мы можем использовать для поиска связи с функциями или оцененной целью. Нам дают около 5000 уникальных лекарств.

Кроме того, нам предоставлены CSV-файлы sample_submission и train_drug, которые можно использовать.

Показатель эффективности

Метрика, используемая для оценки, представляет собой логарифмическую функцию потерь.

Для каждого sig_id, указанного в наборе данных, мы должны предсказать вероятность для каждого МоА. Следовательно, для N строк sig_id будет M целей (MoA). Таким образом, всего будет N X M прогнозов, и оценка будет получена с помощью logloss,

Здесь ,

N : Количество sig_id (i = 1,2,3,….N)

M : Количество забитых мишеней I.e MoA (m = 1,2,3,….M)

y^i,m: прогнозируемая вероятность

y : фактическая вероятность

Опробование других показателей производительности для классификации с несколькими метками, таких как AUC, микро- и макроусреднение, оценка F1 поможет гораздо лучше анализировать производительность модели.

ИССЛЕДОВАТЕЛЬСКИЙ АНАЛИЗ ДАННЫХ.

Набор данных Train состоит из 23 814 строк, по 876 признаков в каждой. Существует 772 признака экспрессии генов, и они представлены «g-». Существует 100 признаков жизнеспособности клеток, и они представлены «c-».

Есть 206 забитых мишеней, которые нам нужно предсказать. Цели являются двоичными в природе. Нам также предоставляется 402 цели без оценок. Каждая строка представляет образец, который связан с уникальным именем sig_id .

В НАБОРЕ ДАННЫХ train_features и test_features НЕТ ОТСУТСТВУЮЩИХ ЗНАЧЕНИЙ, ЧТО ОЗНАЧАЕТ, ЧТО НЕТ ЗНАЧЕНИЙ NAN.

Категориальные данные

Набор данных функций поезда и тестовых функций содержит 3 категориальных функции «cp_type», «cp_time», «cp_dose».

Функции категориальных признаков: - лечение/контроль (указывает, является ли эксперимент лечением или контролем), дозировка (уровень дозы, использованный в эксперименте), время (время, прошедшее между добавлением препарата и моментом измерения). Эта функция несбалансирована, и, как указано в конкурсе, препараты с cp_type являются управляемыми, т.е. cp_type является ctrl_vehicle , этот препарат не будет выполнять никакого механизма действия.

Наблюдение за подсчетом категориального признака «cp_type» в образцах.

Из графика видно, что cp_type очень несбалансирован как для обучающего, так и для тестового набора данных. только некоторые образцы являются ctl_vehicle, что означает, что препарат не будет действовать, и механизм действия. В этом случае эксперимент можно контролировать. С другой стороны, где большинство образцов являются trt_cp, что означает, что эксперимент является лечением.

Вывод: - в обзоре провокации было упомянуто, что образец подвергается либо обработке, либо контролю. так как эксперимент в контроле не дает никакого механизма действия, то лучше было бы убрать образцы с cp_type как ctl_vehicle.

Наблюдение за подсчетом категориального признака «cp_time» в образцах.

cp_time — это время, прошедшее между добавлением препарата и проведением измерения. Для опытов препарат давали 3 раза в день.

Вывод: функция cp_time сбалансирована как для обучающего, так и для тестового набора данных.

Наблюдение за подсчетом категориального признака «cp_dose» в образцах.

cp_dose — это уровень дозы, использованный в эксперименте (количество, в котором лекарство было дано образцу для эксперимента.

Вывод: функция cp_dose сбалансирована как для обучающего, так и для тестового набора данных. Поскольку каждое лекарство дается каждый раз с заданной дозировкой (2 * 3), поэтому должно быть не менее шести целей, связанных с лекарством.

В этом обсуждении: https://www.kaggle.com/c/lish-moa/discussion/184005 в Kaggle подробно рассказывается о том, как лекарство меняет экспрессию гена, когда оно взаимодействует с белковой молекулой заболевание. Это дает некоторое представление о том, что на самом деле происходит с целью конкурса Kaggle. Обсуждение дает краткое представление о том, как лекарство будет взаимодействовать с белковой молекулой болезни, приводя таким образом к механизму действия или просто биохимическим взаимодействиям. Рассказывает об особенностях жизнеспособности гена, как именно оно помогает в механизме действия. объясняет функцию категориальных признаков: - лечение/контроль (указывает, является ли эксперимент лечением или контролем), дозировка (уровень дозы, использованный в эксперименте), время (время, прошедшее между добавлением препарата и проведением измерения) .

В обсуждении упоминается, что признаки жизнеспособности клеток тесно взаимосвязаны (значение более >0,7), поэтому удаление признаков с высокой корреляцией улучшит производительность нашей модели.

Кроме того, он объясняет категориальную характеристику cp_type : указывает, является ли эксперимент лечебным или контрольным. В нем говорится, что обычным контрольным носителем является ДМСО, который будет иметь незначительное воздействие или незначительный биологический эффект. Поскольку это не повлияет на механизм действия, мы можем удалить записи, в которых cp_type находится в состоянии управления.

Поскольку каждое лекарство дается каждый раз с заданной дозировкой (2 * 3), должно быть не менее шести целей, связанных с лекарством.

ЧИСЛО ЦЕЛЕЙ И ЦЕЛЕВЫХ ФУНКЦИЙ

Наблюдение за тем, сколько раз конкретная цель появляется в наборе данных или образце

Из приведенной выше гистограммы мы могли видеть, что каждая функция имеет некоторый вклад в механизм действия по крайней мере в одном образце. Мы также могли наблюдать, что некоторые цели встречаются чаще, чем другие.

ЧИСЛО ЦЕЛЕВЫХ ФУНКЦИЙ ПО СРАВНЕНИЮ С ЦЕЛЕВЫМИ ФУНКЦИЯМИ ДЛЯ 20 ЛУЧШИХ ФУНКЦИЙ

Наблюдение за первыми 20 мишенями, появившимися в наборе данных или выборке.

Из приведенной выше гистограммы мы можем наблюдать, что некоторые цели встречаются чаще, чем другие. Следовательно, распределение целей по выборкам очень несбалансировано.

КОЛИЧЕСТВО ЦЕЛЕЙ НА ОБРАЗЕЦ

Наблюдение за количеством целей на образец

Максимальное количество мишеней на образец равно 6, поскольку присутствующие мишени могут либо активироваться, либо нет, когда в образец вводится лекарство.

Большинство образцов имеют 0 или 1 мишень. около 9000 образцов имеют нули во всех столбцах, а около 12 000 образцов имеют только одну цель в активном состоянии. Наличие активного образца на цель очень мало (1 или 2 на образец). Тем не менее, количество моа остается тем же 6 , хотя максимальное значение равно 7 .

Проще говоря, выборки классифицируются по бинарным целям, то есть [0,1], но есть небольшая часть обучающих выборок, классифицируемых по 2, 3, 4, 5 и 7 различным целям одновременно.

ПРОВЕРКА СООТНОШЕНИЯ ПРИЗНАКОВ

Здесь мы проверим взаимосвязь между функциями, чтобы увидеть, существует ли линейная связь между их значениями. Мы получим значение корреляции abs(), чтобы показать, насколько сильна корреляция (положительная или отрицательная). Чтобы уменьшить размеры, мы может отказаться от связанных функций для повышения производительности

Если функции тесно взаимосвязаны, мы можем отказаться от таких функций, поскольку уменьшение количества функций поможет повысить производительность.

СООТНОШЕНИЕ ПРИЗНАКА С ЦЕЛЕМ

Здесь мы проверим корреляцию между функциями и целью, чтобы увидеть, какая функция больше зависит от конкретной цели. Мы получим более зависимые функции и отбросим менее зависимые функции для повышения производительности.

Наблюдение за матрицей корреляции между функциями и целью.

На графике мы не можем наблюдать каких-либо признаков, имеющих большую корреляцию с какими-либо целевыми переменными, поэтому очень сложно сказать, какой признак имеет больший вклад в конкретную цель.

ФУНКЦИЯ ВАЖНОСТЬ ИСПОЛЬЗОВАНИЯ ExtraTreesClassifier

Поскольку это проблема классификации с несколькими метками, и мы не можем определить важность функции для каждой цели. Мы пытаемся наблюдать важные особенности, используя модель экстратриевого классификатора для единственного целевого ингибитора 5-альфа-редуктазы.

ФУНКЦИЯ ВАЖНОСТЬ ИСПОЛЬЗОВАНИЯ xgboost

ФУНКЦИЯ ВАЖНОСТЬ ИСПОЛЬЗОВАНИЯ Mutual_info_classif

Взаимная информация между двумя переменными (признаками) представляет собой неотрицательное значение, которое измеряет зависимость между переменными. Если значение равно нулю, переменные независимы, а более высокие значения означают более высокую зависимость. Проще говоря, это показывает, насколько зависимы особенностью является цель.

СПС

Так как количество объектов в наборе данных равно 846, уменьшение размерности поможет быстрее получить результаты.

Наблюдаемая дисперсия объясняется увеличением признаков

Мы выполняем pca для данных поезда, чтобы проверить, до каких размеров или функций мы получаем, насколько велика дисперсия.

На приведенном выше графике мы могли наблюдать, что с 200 измерениями мы можем видеть дисперсию до 83%, т.е. с использованием 200 измерений у нас есть информация о 83% (приблизительно) от общих данных. Для 90% дисперсии необходимые измерения appox(350), что составляет половину от общего числа признаков, присутствующих в наборе данных. Еще одна вещь, на которую следует обратить внимание, это то, что всего с 30 измерениями мы имеем дисперсию 70%, что является очень хорошим объемом информации.

СУЩЕСТВУЮЩИЕ ПОДХОДЫ

  1. https://medium.com/analytics-vidhya/mechanism-of-action-moa-the-kaggle-competition-THe 4be14bdf51e: в блоге упоминается его подход к глубокому обучению для минимизации потерь журнала. . В этом блоге используются модели pytorch, keras и Tabnet (передача обучения). Среди этих моделей модель pytorch дала наименьшую потерю cv 0,001569. При этом используются следующие технические характеристики: (а). Удаление признака ctrl_vehicle, так как они будут иметь механизм действия всех типов наркотиков как 0. (b). Поскольку это проблема классификации с несколькими метками, становится необходимой проверка асимметрии набора данных. © Поскольку набор данных сильно несбалансирован, Для предотвращения переобучения выполняется 7k-кратная стратифицированная выборка. (d) Набор данных был стандартизирован с использованием Quantile Transformer. (e) Порог дисперсии также является одним из методов, используемых для удаления признаков с меньшей дисперсией, что уменьшает размеры набора данных.
  2. https://www.kaggle.com/c/lish-moa/discussion/180536: — предоставляет несколько методов, которые можно использовать для повышения производительности, таких как Mlknn, стратифицированная выборка, цепочка классификаторов. , Один классификатор VS для остальных, цепь классификаторов и т. Д.
  3. https://vilijan.github.io./2021/01/03/moa-competition-tutorial1.html: — рассказывается в блоге, сначала подбирая тренировочные данные, а затем используя их для преобразовать тестовые данные. Таким образом, мы не будем пропускать данные тестовых данных. Он прогнозирует МОА на основе 2 уровней. На уровне 1 он обучает 4 модели, каждая из которых способна прогнозировать МОА. Здесь каждая модель была обучена с различными функциями обработки. На уровне 2 мы объединяем 4 модели выше, чтобы построить модель, которая предсказывает МОА.

ПЕРВЫЙ ПОДХОД

1. Выполните исследовательский анализ данных, чтобы проверить, отсутствуют ли данные или имеют нулевые значения. Анализ набора данных на наличие повторяющихся строк и выбор только уникальных строк.

2. Необходимо применять стандартизацию, чтобы значения признаков не зависели от единиц измерения, а модель лучше обучалась на стандартизованных данных.

3. Поскольку набор данных не такой большой, мы должны проверить баланс или дисбаланс набора данных. Поскольку набор данных несбалансирован, необходимо выполнить повышающую и понижающую выборку, чтобы сбалансировать набор данных. Также проверяется, имеет ли набор данных поезда и теста одинаковое распределение или распределение смещено.

4. Поскольку количество функций составляет приблизительно 876, необходимо сделать выбор функций, чтобы уменьшить временную сложность и повысить производительность модели.

5. Необходимо провести корреляцию между функциями, чтобы проверить, насколько одна функция зависит от другой. Рассматриваются только функции с минимальной корреляцией и удаляются функции с корреляцией >0,9.

6. Использование других методов, таких как порог дисперсии, наряду с корреляцией и другими методами уменьшения размерности (корреляция Пирсона, анализ основных компонентов), чтобы получить важные функции.

7. Для функций, представленных в scored и non scored_target , обе функции можно объединить и проверить на корреляцию.

8. Перекрестная проверка будет полезна для повышения производительности модели. Из набора данных, как мы знаем, некоторые цели встречаются очень часто, а некоторые очень редко, поэтому применение стратифицированной кратности было бы лучшим вариантом.

9. Наконец, разделение данных и обучение различных моделей, чтобы свести потери журнала к минимуму.

10. Испытание таких классификаторов, как «один против остальных», «двоичная релевантность», «цепочка классификаторов» и «множество меток». Сохраняя важность корреляции и временную сложность, очень важно выбрать правильный классификатор. Было бы лучше решить проблему в целом, а не разделение его на подзадачи.

11. ДЛЯ классификации с несколькими метками мы можем использовать такие модели, как MLKNN (адаптация алгоритма KNN), стратифицированная выборка K-Fold и т. Д.

12. Поскольку вероятность является проблемой и может помочь в классификации с несколькими метками, калибровка должна применяться к моделям для повышения производительности модели.

13. Также можно использовать пробный ансамбль для базовой модели, чтобы предотвратить переоснащение и улучшить производительность.

ПЕРВЫЕ МОДЕЛИ

ОДИН ПРОТИВ ОТДЫХА КЛАССИФИКАТОР:

Эта стратегия, также известная как «один против всех», заключается в подборе одного классификатора для каждого класса. Для каждого классификатора класс сопоставляется со всеми другими классами. Интуитивный подход к решению проблемы с несколькими метками состоит в том, чтобы разложить ее на несколько независимых задач бинарной классификации (по одной на категорию). Основное предположение здесь состоит в том, что метки являются взаимоисключающими.

ДВОЙНАЯ РЕЛЕВАНТНОСТЬ

В этом случае обучается ансамбль однокомпонентных бинарных классификаторов, по одному на каждый класс. Каждый классификатор предсказывает либо принадлежность, либо непринадлежность к одному классу. Объединение всех предсказанных классов берется в качестве выходных данных с несколькими метками. Если имеется q меток, метод двоичной релевантности создает q новых наборов данных, по одному для каждой метки, и обучает однокомпонентные классификаторы для каждого нового набора данных.

ЦЕПЬ КЛАССИФИКАТОРОВ

Цепочка бинарных классификаторов C0, C1, . . . , Cn, где классификатор Ci использует предсказания всех классификаторов Cj , где j ‹ i. Таким образом, метод, также называемый цепочками классификаторов (CC), может учитывать корреляции меток.

ЭТИКЕТКА POWERSET

Label Powerset — это подход преобразования задач к классификации с несколькими метками, который преобразует задачу с несколькими метками в задачу с несколькими классами с 1 классификатором с несколькими классами, обученным на всех уникальных комбинациях меток, найденных в обучающих данных.

АДАПТИРОВАННЫЙ АЛГОРИТМ

Адаптация алгоритма для непосредственного выполнения классификации по нескольким меткам, а не преобразования проблемы в различные подмножества задач. Например, версия kNN с несколькими метками представлена ​​как MLkNN.

СРАВНЕНИЕ ВСЕХ МОДЕЛЕЙ:

СБОРКА БАЗОВЫХ МОДЕЛЕЙ

Результаты сборки базовой модели:

Наблюдение: для моей пользовательской реализации я использовал 50 образцов с 500 строками в каждом, я взял эти параметры на основе приведенных выше результатов из пользовательской модели ансамбля. Здесь я использовал 8 базовых моделей и получил log_loss на основе их комбинаций. Наблюдая за всеми приведенными выше результатами, мы можем сказать, что mlknn(k=10) — наша лучшая модель, которая имеет минимальные потери журнала по сравнению с другими моделями.

ОКОНЧАТЕЛЬНЫЙ ТРУБОПРОВОД С ЛУЧШЕЙ МОДЕЛЬЮ

НАБЛЮДЕНИЕ: МЫ ПОЛУЧАЕМ LOG LOSS 3,750988259057334 С НАШЕЙ ЛУЧШЕЙ МОДЕЛЕЙ (MLKNN(K = 10)) ДЛЯ НАШЕГО НАБОРА ДАННЫХ X_TEST.

РАЗВЕРТЫВАНИЕ МОДЕЛИ

Вы можете получить доступ к моей модели, используя ссылку aws: AWS (http://ec2-3-129-250-197.us-east-2.compute.amazonaws.com:8080/). Входной файл принят по модели в формате csv.

Вот результат развертывания моей модели:

Для моей модели я попытался предсказать вывод для моих 10 входных данных, поскольку передача 806 параметров вручную была бы очень сложной, поэтому я загрузил входные данные в формате файла csv. Предсказание MOA показывает 206 выходных данных, поэтому на выходе отображается 10 массивов.

Будущая работа

  • Модель глубокого обучения можно обучить для дальнейшего повышения производительности.
  • Выбор функций можно выполнить с помощью PCA, что поможет модели работать еще лучше.
  • С правильными комбинациями базовых моделей, используемых при сборке, мы могли бы попытаться уменьшить потери журналов.
  • Получив более подробную информацию о функциях, мы определенно могли бы использовать ее для механизма действия.

Использованная литература :

Надеюсь, вам понравилось читать, оцените мое жесткое слово, похлопав в ладоши. Весь код присутствует в моем Github Repository, и для любых предложений/мнений вы можете связаться со мной в linkedin_profile