Одноклассная дискриминационная классификация с несбалансированным, гетерогенным отрицательным фоном?

16

Я работаю над улучшением существующего контролируемого классификатора, чтобы классифицировать последовательности {белка} как принадлежащие к определенному классу (предшественники нейропептидных гормонов) или нет.

Существует около 1150 известных «позитивов» на фоне около 13 миллионов белковых последовательностей («Неизвестный / плохо аннотированный фон») или около 100 000 проверенных релевантных белков, аннотированных различными свойствами (но очень немногие аннотированы явно «негативный» способ).

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

Это сработало, но я хочу значительно улучшить дискриминирующие способности машины (в настоящее время она составляет около 83-86% с точки зрения точности, AUC, F1, измеренная с помощью CV, для множества случайно выбранных отрицательных наборов).

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

*) Я слышал об обучении ПУ, которое звучит здорово, но я программист N00b, и я не знаю ни одной из существующих реализаций для него. (В Python / Sci-Kit учиться).

Итак, имеет ли смысл подход 1 в теоретическом POV? Есть ли лучший способ сделать несколько отрицательных множеств? (Я также мог бы просто использовать массивный [50K] набор «отрицательных» белков, но все они очень сильно отличаются друг от друга, поэтому я не знаю, насколько хорошо классификатор будет обрабатывать их как одну большую несбалансированную смесь ). Благодарность!

GrimSqueaker
источник
как вы, вероятно, видели, статья в Википедии об обучении ПУ содержит ссылку на статью, в которой это применимо к идентификации генов. Может быть, стоит выяснить / спросить авторов, какое программное обеспечение они использовали.
Андре Хольцнер,
Здесь есть некоторая дискуссия об изучении ПУ в scikit learn: stackoverflow.com/questions/25700724/… (с использованием машины опорных векторов 'one class')
Andre Holzner
Обучение PU - это стандартная задача классификации двух классов с одним предупреждением - вы оптимизируете область под кривой, а не точность классификации. Вы можете использовать программный пакет Sofia ML для достижения именно этого (программирования не требуется). С практической стороны, вы отмечаете свои положительные примеры +1, а все остальное как -1 (да, все другие непомеченные данные, которые могут содержать положительные результаты).
Владислав Довгальец

Ответы:

5

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

Чтобы сделать это, вам нужно будет преобразовать последовательности белков в числовые данные, но я считаю, что в этом отношении уже проделана определенная работа с использованием формул, использованных в Amino Acid PCA.

Смотрите эти две ссылки: http://www.ncbi.nlm.nih.gov/pubmed/24496727

http://www.ncbi.nlm.nih.gov/pubmed/16615809

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

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

Сказав все это ...

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

Я мог бы быть полностью вне базы. Мне интересно видеть некоторые другие ответы, но это мои 2 цента.

Стив Каллестад
источник
1
Я уже реализовал извлечение функций и инструментарий для этого (публикация ожидает некоторой проверки ошибок).
GrimSqueaker
5

Один класс обучения

Я бы не стал слишком быстро отказываться от методов классификации с одним классом (вариант 2) - ключ в том, чтобы моделировать положительный класс (меньшинство) с помощью модели с одним классом.

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

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

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

«Прогнозирование межбелковых взаимодействий с использованием методов одноклассной классификации и интеграции разнообразных биологических данных»

«Одноклассный подход к классификации белковых последовательностей и структур»

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

Внедрение / кластеризация представления более высокого уровня

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

То есть, вы можете определить, к какой группе / кластеру принадлежит белок, или классифицировать кластерное членство / встроенные представления.

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

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

Ансамбль

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

Есть как минимум два способа использования ансамблей для решения этой проблемы.

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

Вы можете выбрать один из трех подходов: APP, OAA, AAO. APP - это различение объектов на основе всех возможных пар классов. OAA - это использование «один против всех» (оставшиеся классы), а AAO - это одновременное использование F-теста для нескольких классов (или теста Хотеллинга для MVN). APP и AAO на самом деле представляют собой несколько бинарных классификационных прогонов, но с более чем двумя исходными классами. Каждый из этих подходов дает разные результаты для разных используемых классификаторов.

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


источник