Я работаю над улучшением существующего контролируемого классификатора, чтобы классифицировать последовательности {белка} как принадлежащие к определенному классу (предшественники нейропептидных гормонов) или нет.
Существует около 1150 известных «позитивов» на фоне около 13 миллионов белковых последовательностей («Неизвестный / плохо аннотированный фон») или около 100 000 проверенных релевантных белков, аннотированных различными свойствами (но очень немногие аннотированы явно «негативный» способ).
Моя предыдущая реализация рассматривала это как проблему бинарной классификации: положительный набор = белки, помеченные как нейропептиды. Отрицательный набор: случайная выборка из 1300 образцов (всего) из оставшихся белков примерно одинакового распределения по длине.
Это сработало, но я хочу значительно улучшить дискриминирующие способности машины (в настоящее время она составляет около 83-86% с точки зрения точности, AUC, F1, измеренная с помощью CV, для множества случайно выбранных отрицательных наборов).
Мои мысли заключались в следующем: 1) Сделать это мультиклассовой проблемой, выбрав 2-3 различных класса белка, которые определенно будут отрицательными по своим свойствам / функциональному классу, наряду с (возможно) другим набором случайных выборок. (Приоритетом здесь будут отрицательные наборы, которые по своим характеристикам / признакам аналогичны положительному набору, но при этом имеют определяющие характеристики) 2) Обучение в одном классе - было бы неплохо, но, насколько я понимаю, оно предназначено только для обнаружения аномалий и имеет более низкую производительность, чем дискриминационные подходы.
*) Я слышал об обучении ПУ, которое звучит здорово, но я программист N00b, и я не знаю ни одной из существующих реализаций для него. (В Python / Sci-Kit учиться).
Итак, имеет ли смысл подход 1 в теоретическом POV? Есть ли лучший способ сделать несколько отрицательных множеств? (Я также мог бы просто использовать массивный [50K] набор «отрицательных» белков, но все они очень сильно отличаются друг от друга, поэтому я не знаю, насколько хорошо классификатор будет обрабатывать их как одну большую несбалансированную смесь ). Благодарность!
источник
Ответы:
В общем, я бы решил эту проблему, используя статистический анализ, такой как Анализ основных компонентов или Обычные наименьшие квадраты, чтобы определить, какие атрибуты в этих белковых последовательностях лучше всего подходят для классификации белков как предшественников нейропептидных гормонов.
Чтобы сделать это, вам нужно будет преобразовать последовательности белков в числовые данные, но я считаю, что в этом отношении уже проделана определенная работа с использованием формул, использованных в Amino Acid PCA.
Смотрите эти две ссылки: http://www.ncbi.nlm.nih.gov/pubmed/24496727
http://www.ncbi.nlm.nih.gov/pubmed/16615809
После того, как эта работа будет выполнена, я попытаюсь классифицировать, используя весь набор данных и алгоритм обучения с подкреплением, такие как Наивный Байес, в то время как данные сводятся к тому, что PCA определило как важное.
Причина, по которой я бы попытался использовать байесовский метод, заключается в том, что он оказался одним из лучших методов определения спама по сравнению с обычной электронной почтой, который имеет аналогично искаженный набор данных.
Сказав все это ...
Уменьшение количества или типа отрицательных классификаций может исказить ваши результаты на несколько пунктов в одну или другую сторону, но я не думаю, что вы увидите существенное изменение долгосрочной эффективности, пока не выполните работу по определению наилучшего удаления нечеткость ваших тренировочных данных. Это потребует либо полевого эксперта, либо статистического анализа.
Я мог бы быть полностью вне базы. Мне интересно видеть некоторые другие ответы, но это мои 2 цента.
источник
Один класс обучения
Я бы не стал слишком быстро отказываться от методов классификации с одним классом (вариант 2) - ключ в том, чтобы моделировать положительный класс (меньшинство) с помощью модели с одним классом.
Было проведено исследование, демонстрирующее случаи, когда одноклассная классификация превосходила другие подходы, такие как выборка для сильно несбалансированных данных, что часто наблюдается в задачах классификации белков.
Я не смог найти исследование, которое я вспомнил, но я нашел некоторые другие сравнения, показывающие, что использование классификаторов с одним классом (обычно моделирование класса меньшинства) показало такую же хорошую или лучшую производительность, что и двоичная классификация, обычно с выборочными «негативами» из большого набора белков, которые, как известно, не являются положительными.
Кроме того, этот подход также дает преимущество значительно улучшенного времени выполнения - поскольку вам нужно только обучить классификатор на меньшем положительном множестве. Пара документов:
«Прогнозирование межбелковых взаимодействий с использованием методов одноклассной классификации и интеграции разнообразных биологических данных»
«Одноклассный подход к классификации белковых последовательностей и структур»
По крайней мере, я бы попробовал некоторые одноклассные методы и сравнил бы производительность, используя валидацию, с вашими двоичными / мультиклассовыми классификационными подходами. Существуют также реализации с открытым исходным кодом для многих из них, поэтому не стоит слишком дорого их опробовать, например, LibSVM имеет реализацию SVM с одним классом. Кроме того, это может оказаться полезным для использования в ансамбле с двоичными классификаторами, поскольку в их предсказаниях может быть больше разногласий.
Внедрение / кластеризация представления более высокого уровня
В соответствии с тем, о чем вы думали (1) и в другом посте, предлагающем PCA, подходы, такие как кластеризация, разреженное кодирование или даже тематическое моделирование - обработка каждого белка в виде строки документа и различных семейств белков как различных тем - может дать представление это может сделать классификацию белков простым.
То есть, вы можете определить, к какой группе / кластеру принадлежит белок, или классифицировать кластерное членство / встроенные представления.
Например, такие подходы к встраиванию, как разреженное кодирование, могут дать представления, которые показывают, к какому кластеру относится и белок - так что некоторые наборы функций активны (ненулевые) только для белков в одном кластере - что может значительно упростить их классификацию.
Кроме того, метки классов или известное членство в кластере могут быть включены в процесс внедрения для большинства методов.
Ансамбль
Ансамбли из нескольких классификаторов, как правило, работают лучше всего, особенно когда классификаторы очень разнообразны и могут достигать сопоставимой производительности в отдельности.
Есть как минимум два способа использования ансамблей для решения этой проблемы.
источник
Вы можете выбрать один из трех подходов: APP, OAA, AAO. APP - это различение объектов на основе всех возможных пар классов. OAA - это использование «один против всех» (оставшиеся классы), а AAO - это одновременное использование F-теста для нескольких классов (или теста Хотеллинга для MVN). APP и AAO на самом деле представляют собой несколько бинарных классификационных прогонов, но с более чем двумя исходными классами. Каждый из этих подходов дает разные результаты для разных используемых классификаторов.
Случайная выборка является хорошей техникой. Вы также можете попытаться сгруппировать все объекты в центры с помощью k-средних, а затем использовать центры в качестве новых объектов. В любом случае, методы линейного и нелинейного уменьшения размера могут помочь избежать большого размера выборки.
источник