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

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

~~ Kaggle

Источник: https://www.kaggle.com/c/msk-redefining-cancer-treatment/

Для реализации перейдите по ссылке: https://github.com/vedanshsharma/Personalized-Cancer-Diagnosis

Введение

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

Классифицируйте данные генетические вариации / мутации на основе данных клинической литературы.

Источник: https://www.kaggle.com/c/msk-redefining-cancer-treatment/discussion/35336#198462

Бизнес-цели и ограничения.

  • Нет требований к низкой задержке. Поскольку у нас нет строгих требований к задержке, мы можем обучать сложные модели, пока наша модель занимает разумное количество времени.
  • Интерпретируемость важна. Врач может захотеть перепроверить результаты, и для этого ему может потребоваться объяснение алгоритма. Для этого интерпретируемость должна быть высокой.
  • Ошибки могут стоить очень дорого. Поскольку это вопрос жизни и смерти, нам нужна модель с высокой точностью.
  • Требуется вероятность принадлежности точки данных к каждому классу. Это позволит врачу в конце решить, к какому классу относится вариация. В случае равновероятных классов врач сможет решить, выполнив тесты, а не модель, возвращающая один класс.

Постановка задачи машинного обучения

Данные

  • У нас есть два файла данных: один содержит информацию о генетических мутациях, а другой - клинические данные (текст), которые человеческие эксперты / патологи используют для классификации генетических мутаций.
  • Оба этих файла данных имеют общий столбец с именем ID.
  • Информация о файле данных:
  1. training_variants (идентификатор, ген, вариации, класс)
  2. тренировочный_текст (идентификатор, текст)

Сопоставление реальной проблемы с проблемой машинного обучения

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

  • Журнал потерь нескольких классов, поскольку мы хотим вывести вероятности того, что данная переменная x_i принадлежит классам 1–9.
  • Матрица путаницы

Источник: https://www.kaggle.com/c/msk-redefining-cancer-treatment#evaluation

Итак, наша конечная цель -

Цель: предсказать вероятность того, что каждая точка данных принадлежит каждому из девяти классов.

И наши последние ограничения:

  • Интерпретируемость, модели, такие как наивный байесовский, линейный SVM или DT, могут быть обучены, поскольку они имеют высокую интерпретируемость. Вероятно, нам следует избегать использования таких моделей, как RBF svm.
  • Нужны вероятности классов.
  • Наказывать ошибки в вероятностях класса = ›Метрика - логарифм потери.
  • Нет ограничений по задержке.

Наборы данных для обучения, резюме и тестирования

Наши данные не временные по своей природе, то есть не меняются со временем. Следовательно, мы будем случайным образом разделить наш набор данных на поезд Cv и тестовый набор с размерами 64% (80% от 80), 16% (20% от 80) и 20% соответственно. Мы разделим данные таким образом, чтобы распределение метки класса остается сохраненным.

Исследовательский анализ данных

Предварительная обработка текста

Мы будем выполнять базовую предварительную обработку текста, которая включает в себя:

  • Удаление стоп-слов.
  • заменяя каждый специальный символ пробелом.
  • замена нескольких пробелов одним пробелом.
  • преобразование всех символов в нижний регистр.

В тексте присутствует несколько нулевых значений.

В этом случае мы просто заменим их именем гена и вариацией соответствующей строки, как указано ниже:

Распространение ярлыков класса

  • Данные несбалансированы.
  • Распределение меток классов примерно одинаково для данных поездов, испытаний и резюме.

Обучение случайной модели

Наши ключевые показатели производительности «log-loss» - это функция с диапазоном [0, ∞) . Следовательно, нам нужна случайная модель, чтобы получить верхнюю границу метрики. Случайная модель - это та, которая при задании x_i случайным образом создаст любую метку от 1 до 9, где все метки равновероятны.

2,5 оказывается значением потерь журнала для нашей случайной модели. «Приличная» модель для нашей задачи будет иметь значение потери журнала, которое будет меньше 2,5.

Одномерный анализ

Джин-

  • Джин - категориальная переменная
  • В обучающем наборе присутствует 232 уникальных гена.

  • Распределение гена сильно искажено

  • 50 лучших генов составляют примерно 75% всех данных.

Чтобы классифицировать переменную Gene, мы будем использовать два метода:

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

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

Функция Gene может значительно уменьшить потери журналов для всех наборов данных. Следовательно, он имеет важное значение для классификации. Кроме того, функция гена также является стабильной функцией, поскольку существует большая разница между потерями в журнале поезда, тестом и набором Cv.

Вариант

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

  • На 1500 вариаций приходится только 80% данных.

Чтобы классифицировать переменную Gene, мы будем использовать два метода:

  • Одно горячее кодирование
  • Кодирование ответа

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

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

Одномерный анализ текста

  • В обучающем тексте 53619 уникальных слов.
  • Наиболее часто встречающееся слово встречается 404 раза.

Чтобы классифицировать переменную Gene, мы будем использовать два метода:

  • Одна горячая кодировка (то есть пакет слов в случае текстовых данных)
  • Кодирование ответа (кодирование ответа для текстовых данных несколько похоже на наивный байесовский подход, где для данного класса i мы имеем y = P (class = i | text_j))

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

Функция кажется стабильной. Теперь мы можем сделать вывод, что Ген ›текст› вариация с точки зрения стабильности.

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

Наивный байесовский

Сначала мы обучим базовую наивную байесовскую модель с настройкой гиперпараметров. Наивный байесовец - относительно простая модель. Для наивных байесовских алгоритмов мы будем использовать горячую кодировку.

  • У нас есть потеря журнала 1,28 на тестовых данных.
  • Мы пропустили классификацию 44,36% точек данных.

  • Многие баллы 4-го класса не попадают в класс 1. Многие баллы 7-го класса классифицируются как 2-й класс.

K-NN

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

  • По нашим тестовым данным потеря журнала составила 1,08, что является улучшением.
  • Наша ошибка классификации промахов уменьшилась на 8% (приблизительно).

  • Проблема с классами 1–4 и 2-7 сохраняется.
  • Класс 9 прекрасно классифицируется, хотя его доля в данных довольно мала.

Логистическая регрессия (с балансировкой классов)

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

  • Мы получили потерю журнала 1,13 на тестовых данных.
  • Ошибка классификации промахов не намного улучшается.

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

Логистическая регрессия (без балансировки классов)

  • Мы получили потерю журнала 1,14 на тестовых данных.
  • Модель без балансировки классов работает хуже, чем модель с балансировкой.

Линейный SVM (с балансировкой классов)

Линейные SVM относятся к аналогичной логистической регрессии. Следовательно, он также довольно хорошо работает для данных большого размера. Плюс это высокая интерпретируемость.

  • Потеря журнала оказалась 1,19 на тестовых данных.
  • Ошибка классификации мисс составляет около 37,69%.

  • Результаты аналогичны логистической регрессии с балансировкой классов.

Случайный лес (с одной горячей кодировкой)

Случайный лес лучше всего работает с низкоразмерными данными

  • Мы получили потерю журнала 1,19 на тестовых данных.
  • Ошибка классификации мисс составляет около 40,97%.

Случайный лес (с кодировкой ответа)

  • Потери бревна 1,34.
  • Модель переборщилась даже после настройки гиперпараметров. Это может быть связано с тем, что кодирование ответа является более слабой формой определения характеристик, чем горячее кодирование.
  • Ошибка классификации мисс составляет около 50%, и это КРАСНЫЙ ФЛАГ. Это означает, что каждая вторая точка не засчитывается.

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

Tf-Idf

Вместо того, чтобы использовать набор слов, мы попробовали функции tfidf.

С помощью логистической регрессии мы можем уменьшить потери журнала ниже 1,0 для всех наборов данных. Даже наша ошибка классификации промахов составляет всего 33,27%, что весьма впечатляет.

Биграммы и униграммы

Эта особенность вызовет резкое увеличение размерности. Следовательно, мы обучаем только линейные модели.

Для обеих моделей потеря журнала увеличилась даже выше 1.0.

Tf-Idf с униграммами и биграммами

Мы попробуем if-idf с униграммами и биграммами, но мы возьмем только верхние 4000 значений Idf. Это даст нам верхний предел размерности текстовых данных.

Снова с логистической регрессией наши потери в журнале упали ниже 1,0, но самым большим плюсом в этом случае является то, что ошибка классификации пропусков составляет всего 30,07%. Это на 3% меньше, чем мы получили при использовании простых функций tf idf.

Вывод

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