Балансировка несбалансированных данных, изучение показателей точности и введение в хеминформатику

Введение и предыстория

Что такое токс 21?

Программа «Токсикология в 21 веке», или Tox21, представляет собой уникальное сотрудничество между несколькими федеральными агентствами, направленное на разработку новых способов быстрой проверки того, оказывают ли вещества неблагоприятное воздействие на здоровье человека. Вещества, анализируемые на Tox21, включают широкий спектр продуктов, таких как: коммерческие химикаты, пестициды, пищевые добавки / загрязнители и медицинские соединения.

Почему белок р53?

Ген р53 кодирует одноименный белок, известный как белок-супрессор опухоли. Белок p53 экспрессируется в клетках, когда они подвергаются повреждению ДНК, которое может превратить нормальную клетку в злокачественную. Чтобы противодействовать эффектам, p53 может вызывать остановку роста, восстанавливать ДНК или запускать процесс гибели клеток. Следовательно, когда происходит повреждение ДНК, происходит значительное увеличение экспрессии p53. Это увеличение экспрессии белка является хорошим индикатором нерегулярного здоровья клеток. Данные Tox21 были получены путем тестирования клеточных линий, которые продуцируют продукт флуоресцентного репортерного гена под контролем клеточного аппарата p53. Измеряя уровни продукта репортерного гена по отношению к различным соединениям, исследователи смогли определить, является ли соединение агонистом (активатором) пути p53 или нет.

Прогнозирование агонистов с помощью молекулярного снятия отпечатков пальцев

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

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

Типы отпечатков пальцев

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

  • Круглый отпечаток Моргана - этот отпечаток является частью семейства отпечатков расширенного подключения (ECFP) и генерируется с использованием алгоритма Моргана [2,3]. Эти отпечатки пальцев представляют собой молекулярные структуры и наличие субструктур посредством круговых окрестностей атомов (радиус связи). Другой важной особенностью является их способность определять отсутствие или присутствие молекулярных функциональных групп, что в дальнейшем может помочь в различении при классификации молекул.

  • Отпечаток пальца, подобный дневному свету. Этот генератор отпечатков пальцев (с использованием RDKit) создает отпечаток, аналогичный отпечатку пальца, сгенерированному с помощью алгоритма снятия отпечатков при дневном свете. Излишне упрощенное объяснение: алгоритм хэширует связи вдоль пути внутри молекулы (топологические пути) [4] [5]. На изображении ниже показано, как идентифицируются и описываются пути соединения.

  • Отпечаток пары атомов. Отпечаток пары атомов строится с использованием, как следует из названия, пар атомов (как объектов), а также их топологических расстояний. Отпечаток пары атомов создается, как показано ниже, путем определения сначала тяжелых атомов и кратчайшего расстояния между ними. Закодированы характеристики отдельных атомов в паре (например, количество связей). Эти закодированные функции затем преобразуются в битовые строки и представляются одним числом. Эта объединенная строка целых чисел затем передается хеш-функции, которая затем присваивает ей значение 1 или 0.

  • Топологические отпечатки кручения - представляют собой двумерные структурные отпечатки, которые создаются путем определения путей связи четырех неводородных атомов. Затем эти четырехпутевые фрагменты имеют свои особенности, такие как количество π электронов каждого атома, тип атома и количество неводородных ветвей. Каждый атом характеризуется 8 битами, а биты 4 атомов хранятся в 32-битном массиве.

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

Данные Tox21 уже помечены активным (1) и неактивным (0) состояниями, поэтому на этом шаге действительно нечего делать, кроме загрузки, форматирования имен столбцов и генерации файлов mol (эти файлы обычно классифицируются как файлы данных. которые содержат информацию о молекулярных данных, атомах, связях, координатах и ​​связях) для каждой молекулы.

Чтобы продолжить, отредактируйте путь к месту нахождения данных на вашем компьютере. Мы загружаем файл sdf, который представляет собой файл данных структуры и содержит связанные данные для соединений. На самом деле нам не нужны эти подробности, поскольку они не влияют на классификацию агонистов p53, поэтому мы их опускаем. Например, «столбец формулы» не дает нам никакой полезной информации, поскольку это эмпирическая формула и не содержит ценной структурной информации, которую предоставляет строка SMILES. Нам действительно нужны мольные представления молекул, поэтому мы их генерируем.

Мы также должны убедиться, что в данных нет дубликатов. В частности, этот набор данных содержит 8629 записей и только 6826 уникальных записей, что означает, что ~ 20% данных дублируются и их необходимо удалить.

Создание отпечатков пальцев

Вот пример генерации отпечатка пальца с использованием алгоритма Моргана. Отпечаток пальца создается для каждого соединения в столбце «моль» с радиусом 2 и длиной в битах 2048. Список с такими же параметрами также создается для каждого мол. Затем цикл for выполняет итерацию по списку, чтобы создать массив numpy и добавить новый список, обозначенный «np» в имени. Эти списки станут нашими переменными x при запуске классификаторов.

Установка переменных x и y:

Выборка: сбалансированы ли классы?

Когда метки классификации (в нашем случае: active = 1; inactive = 0) смещены пропорционально, в модель вносится смещение. Например, если набор данных содержит 95% активных меток, то модель, скорее всего, классифицирует неактивную молекулу как активную, проще говоря, точность будет отражать распределение классов по классам. Определить несбалансированность классов просто - посчитайте распределение ярлыков. Как только мы определим, насколько преобладает класс меньшинства в нашем наборе данных, мы можем двигаться дальше и уравновесить его.

График подсчета выше показывает нам, что существует непропорциональное распределение классов в наших данных, соотношение 15: 1 (неактивный к активному) означает, что примерно ~ 93,84% наших классов неактивны.

Методы балансировки классов

Есть два способа сбалансировать данные: избыточная выборка и недостаточная выборка. Избыточная выборка обеспечивает баланс путем создания точек синтетических данных с использованием одного из многих алгоритмов. Тот, который мы будем использовать сегодня, является разновидностью алгоритма SMOTE (Техника передискретизации синтетических меньшинств). SMOTE работает путем поиска k-ближайших соседей для заданной точки данных, а затем генерирует точки данных вдоль линии между соседями. Поскольку эти точки лежат на линии между точками реальных данных, существует некоторая корреляция, поэтому мы будем использовать алгоритм ADASYN (Adaptive Synthetic). ADASYN работает практически так же, как и SMOTE, однако добавляет к точкам небольшие случайно сгенерированные значения, чтобы увеличить дисперсию и имитировать более реалистичные данные.

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

Применение алгоритма ADASYN:

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

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

Создание наборов тестов для обучения, тестирования и проверки

Чтобы обучить, протестировать, а затем снова протестировать, нам нужно создать три отдельных раздела данных. Данные обучения будут использоваться для обучения нашей модели - по сути, модель будет использовать эти данные, чтобы узнать, какие отпечатки пальцев (2048-битные шаблоны), вероятно, принадлежат агонистам p53. Набор тестов будет использоваться для оценки точности нашей модели, и, наконец, набор проверки будет использоваться в качестве набора объективных данных для проверки предсказательной способности нашей модели.

Наши данные будут разделены на 85/15 обучающих / тестовых наборов, а затем обучающие данные будут далее разделены на 85/15 обучающих / проверочных наборов.

Логистическая регрессия

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

Перекрестная проверка и подгонка модели

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

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

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

Для остальных отпечатков пальцев мы можем просто написать функцию для моделирования данных:

Метрики модели и прогноз

Прогнозы тестового набора и матрица неточностей

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

  • истинно положительные (TP): это соединения, которые были предположительно положительными (активный агонист р53), а на самом деле являются положительными.
  • истинно отрицательные (TN): эти соединения предположительно неактивны и фактически неактивны.
  • ложные срабатывания (FP): случаи, когда соединения предположительно активны, но фактически неактивны (ошибка типа I).
  • ложноотрицательные (FN): случаи, когда соединения предположительно неактивны, но фактически активны (ошибка типа II).

Мы можем построить матрицу путаницы для прогнозов как для тестового, так и для проверочного набора, а также для точности, которая определяется через (TP + TN) / Всего наблюдений. Матрица неточностей слева - это матрица прогнозов тестового набора, а правая - для набора проверки.

K-ближайший сосед

Алгоритм k-ближайшего соседа (knn) берет точку данных и смотрит на k ближайших точек данных (k = 7 будет означать 7 ближайших), эта точка данных затем помечается 0 или 1 в соответствии с меткой большинства k ближайших точки. Например, если дана точка данных с k = 7 и ближайшими точками оказываются пять нулей и две единицы, тогда точка будет классифицирована как 0 (неактивна).

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

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

Выполните поиск по сетке с перекрестной проверкой, чтобы определить оптимальное количество соседей для наших данных. Мы проверим 9 номеров кандидатов (3, 5, 7, 9, 11, 13, 15, 17, 19) и проведем пятикратную перекрестную проверку. Однако это может занять некоторое время, поскольку 9 соседей x 5-кратная проверка для каждого составляет 45 соответствий. K-кратность может быть уменьшена, так что мы сможем сохранить приличный диапазон соседей, чтобы мы могли попробовать.

Примечание: установите для «n_jobs» значение -1 - это позволяет выполнять параллельную обработку с максимальной загрузкой ЦП.

Поиск по сетке предполагает, что наилучшее количество соседей - 3.

Чтобы проверить диапазон чисел k соседей, мы можем сопоставить различные данные отпечатков пальцев с различными значениями k. Используя данные обучения пары Atom, я протестировал k = 3, 5, 7, 9, что привело к следующим оценкам точности в следующем порядке:

0.846
0.846
0.815
0.785

Кажется, что у 3 и 5 были одинаковые оценки, однако, скорее всего, было выбрано 3 из-за меньшего времени вычислений. Теперь, чтобы закончить, обучите модели с k = 3 и вычислите их оценки точности сначала на тестовых данных, а затем на данных проверки.

Повышение градиента

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

Поиск в сетке, обучение модели и метрики

Выполните поиск по сетке, чтобы настроить параметры, как мы это делали раньше:

Проверьте точность данных испытаний и валидации

Значения AUC и F1-баллы

AUC

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

  1. Чувствительность модели: Истинно-положительный / (Ложно-отрицательный + Истинно-положительный).
  2. Специфика модели: Истинно отрицательный / (ложноположительный + истинно отрицательный)

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

F1-счет

Оценка модели f1 рассчитывается с использованием отзыва (рассчитывается аналогично чувствительности) и точности, которая является показателем:

  • истинно положительный / (ложноположительный + истинно положительный)

Затем показатель F1 можно найти с помощью:

Оценка F1 находит баланс между отзывом модели (меньшее количество прогнозируемых точек оказывается ложноотрицательным) и точностью (меньшее количество прогнозируемых точек оказывается ложноположительным).

Итоги и заключение

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

Какой классификатор лучший?

Что касается точности проверки, то логистическая регрессия имеет неизменно самые высокие баллы. Затем, при оценке AUC - возможно, самого важного показателя - повышение градиента дало наивысший балл, но логистическая регрессия имела самые высокие средние баллы. Наконец, самые высокие индивидуальные и средние значения f1 относятся к логистической регрессии, что позволяет предположить, что она дает модели с наибольшим балансом между точностью и надежностью.

Победитель: логистическая регрессия

Какой лучший отпечаток пальца?

Литература предполагает, что, хотя топологическое скручивание может быть не так популярно, как отпечатки пальцев Daylight-like и Morgan, они показывают более высокую производительность по сравнению с другими отпечатками пальцев [8].

Результаты показывают, что отпечаток пальца, подобный дневному свету, имел наивысший балл AUC как для логистической регрессии, так и для knn - отпечаток для пары Atom набрал лишь незначительно выше при использовании градиентного повышения. Однако, если посмотреть на усиление градиента, отпечатки пары Atom превзошли отпечатки пальцев, подобные дневному свету, по точности проверки, AUC и F1-баллам.

Победитель: дневной отпечаток пальца

Возможные проблемы

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

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

[1] Ло, Ю.-К., Ренси, С.Э., Торнг, В., и Альтман, Р. Б. (2018). Машинное обучение в химиоинформатике и открытии лекарств. Открытие наркотиков сегодня, 23 (8), 1538–1546. Https://doi.org/10.1016/j.drudis.2018.05.010

[2] Морган, Х. Л. Создание уникального машинного описания химических структур - метод, разработанный в Chemical Abstracts Service. J. Chem. Док. 1965, 5: 107–112.

[3] Rogers, D .; Хан, М. Отпечатки пальцев с расширенными возможностями подключения. J. Chem. Инф. Модель. 2010, 50 (5): 742–754.

[4] https://www.rdkit.org/docs/GettingStartedInPython.html

[5] https://www.daylight.com/dayhtml/doc/theory/theory.finger.html

[6] https://docs.eyesopen.com/toolkits/python/graphsimtk/fingerprint.html

[7] Jelínek, J., Škoda, P., & Hoksza, D. (2017). Использование базы знаний о структурных окрестностях аминокислот для прогнозирования сайтов белок-белкового взаимодействия. BMC Bioinformatics, 18 (S15). Https://doi.org/10.1186/s12859-017-1921-4

[8] Skoda, P., & Hoksza, D. (2015). Исследование топологических торсионных отпечатков. Международная конференция IEEE по биоинформатике и биомедицине (BIBM), 2015 г. doi: 10.1109 / bibm.2015.7359792

[9] Ли, Х., Ким, Дж., И Ким, С. (2017). Гауссовский алгоритм SMOTE для решения асимметричных распределений классов. МЕЖДУНАРОДНЫЙ ЖУРНАЛ НЕЧЕТКОЙ ЛОГИКИ и ИНТЕЛЛЕКТУАЛЬНЫХ СИСТЕМ, 17 (4), 229–234. Https://doi.org/10.5391/ijfis.2017.17.4.229