У вас есть данные, но ваши лейблы не заслуживают доверия: что теперь делать? (͡ ° ͜ʖ ͡ °)
Проблема
Часто компании хотят внедрить машинное обучение для конкретной задачи - скажем, для выполнения классификации данных - но прокляты проблемой наличия недостаточных или ненадежных меток для этих данных.
В этих случаях компании могут выбрать ручную маркировку своих данных, но ручная маркировка может оказаться сложной задачей, которая также может привести к человеческому предубеждению или серьезным ошибкам. Что, если вы пометили данные для своего положительного класса, но у вас есть ненадежные ярлыки для отрицательного класса? Как решить эту проблему?
Позитивное и немаркированное обучение.
Вот пример ситуации:
- Всего 1000 образцов
- 100 из них - образцы, которые можно считать достоверно положительными.
- 900 из них могут быть ненадежными негативами или немаркированными образцами.
- В этих
Чтобы избежать путаницы, я буду называть «немаркированные образцы» и «ненадежные отрицательные образцы» неизвестными.
Решение
PU-обучение, что означает позитивное и немаркированное обучение, представляет собой метод двоичной классификации с полуконтролем, который восстанавливает метки из неизвестных случаев в данных. Он делает это, извлекая уроки из положительных случаев в данных и применяя полученные знания для переименования неизвестных случаев.
Такой подход дает преимущества при решении любой проблемы машинного обучения, требующей двоичной классификации ненадежных данных, независимо от предметной области.
Есть два основных подхода к применению обучения PU. Это включает:
- Пакеты из полиуретана
- Двухэтапный подход
Объяснение упаковки из полиуретана
PU bagging - это параллельный подход, который берет случайные подвыборки из неизвестных случаев и создает ансамбль слабых классификаторов для вывода оценки для каждой выборки. Эти шаги включают:
- Произвольная выборка подмножеств неизвестных данных и всех положительных результатов для создания равномерно сбалансированной обучающей выборки.
- Создание ансамбля классификаторов с помощью этого «самонастраиваемого» набора данных - положительный результат рассматривается как 1, а неизвестный - как 0.
- Прогнозирование оценок вероятности неизвестных, которые не были выбраны при обучении - известные как нестандартные выборки (OOB).
- Повторите много раз и вычислите средние оценки OOB
Объяснение двухэтапного подхода
Двухэтапный подход - это более сложный метод обучения PU, который использует методы машинного обучения для переназначения данных во время обучения. Шаги по реализации следующие:
Шаг первый
- Обучите стандартный классификатор на положительных и неизвестных случаях.
- Получите диапазон оценок для определенных положительных случаев, чтобы пометить определенные отрицательные
Шаг второй
- Обучите второй классификатор на вашем только что помеченном наборе данных и повторяйте этот процесс итеративно, пока не будет достигнут установленный критерий.
Обучение PU в действии
Чтобы продемонстрировать это, я проработаю небольшой пример, используя Набор данных банкнот. Это набор данных, который имеет 2 класса: неаутентичный и подлинный, , обозначенные 0 и 1 соответственно.
Фон набора данных не так важен, потому что мы не собираемся пытаться выполнять какую-либо разработку или классификацию функций на тестовом наборе. Вместо этого мы собираемся смоделировать ситуацию, в которой есть несколько надежных положительных случаев и много ненадежных отрицательных (может быть смесью положительных и отрицательных). Ладно, приступим! 💪
Для начала я импортирую данные и проверю их, чтобы увидеть количество исходных значений метки и посмотреть, есть ли какие-либо нулевые значения:
Давайте смоделируем сценарий ненадежных данных: сначала мы равномерно сбалансируем данные, чтобы получить 610 из класса 0 и 610 из класса 1. Затем мы собираемся ошибочно пометить некоторые из положительных классов как отрицательные (по существу скрывая их), чтобы посмотреть, смогут ли модели их восстановить.
Как видно выше, 300 из 610 истинно положительных результатов были ошибочно помечены как отрицательные. Причина этого в том, что мы хотим увидеть, смогут ли наши изучающие PU их восстановить. Итак, чтобы резюмировать то, что я сделал:
- 1220 примеров и 4 функции
- 610 положительных из 1220 до скрытых этикеток
- 310 положительных результатов из 1220 после сокрытия этикеток
Для начала давайте установим ориентир. Я собираюсь обучить стандартный классификатор случайных лесов, а затем сравнить результат с исходными метками, чтобы увидеть, сколько он восстановится.
---- Standard Random Forest ---- pred_negative pred_positive true_negative 610.0 0.0 true_positive 300.0 310.0 None Precision: 1.0 Recall: 0.5081967213114754 Accuracy: 0.7540983606557377
Как видите, стандартный случайный лес не очень хорошо подходит для предсказания скрытых положительных результатов. Только 50% вспоминают, что означает, что ни один из скрытых положительных классов не выявлен. Давайте расширим это, перейдя к упаковке из полиуретана.
Полиуретановая упаковка
Если вы помните из объяснения выше, PU bagging - это подход для параллельной тренировки многих классификаторов ансамбля. В двух словах: это в основном ансамбль ансамблей. В каждом ансамбле классы сбалансированы по размеру положительного класса. Этот скрипт, написанный Роем Райтом, является отличной реализацией PU bagging, поэтому мы будем использовать его как оболочку:
---- PU Bagging ---- pred_negative pred_positive true_negative 610.0 0.0 true_positive 32.0 578.0 None Precision: 1.0 Recall: 0.9475409836065574 Accuracy: 0.9737704918032787
Этот подход позволил восстановить 578 положительных образцов из 610 (запоминаемость 95%). Довольно хорошо, если вы спросите меня 😊 Давайте посмотрим на это визуально:
Представьте себе реализацию этого в огромном наборе данных с миллионами ненадежно помеченных строк. Возможность эффективно восстанавливать их - очень полезный метод. Разве это не круто? 👌🏼
Двухэтапный подход
При двухэтапном подходе реализовать его будет немного сложнее, чем при упаковке в пакеты. Проще говоря, нам нужно:
- Определите подмножество данных, которые можно уверенно пометить как отрицательные (надежные отрицания).
- Используйте надежные негативы и надежные позитивы на классификаторе и используйте его для маркировки неизвестных образцов.
Но не всегда в вашем наборе данных есть надежные отрицательные случаи. У вас есть только положительное и неизвестное. Чтобы смягчить это, вам необходимо:
- Обучите классификатор на положительных и неизвестных случаях.
- Составьте диапазон вероятности, используя функцию
predict_proba()
, от наименьшего до наибольшего баллов, найденных для положительных случаев. - Переименуйте набор данных как положительный и отрицательный со всеми образцами, попадающими в этот диапазон оценок.
- Обучите второй классификатор на недавно помеченных данных
Во-первых, мы собираемся создать новый целевой вектор с 1 для положительного, -1 для неизвестного и 0 для «надежного отрицательного» (для начала нет надежных отрицательных значений).
Теперь, когда мы закончили первый шаг, можно переходить ко второму. Для этого нам потребуется инициализировать классификатор (в данном случае стандартный случайный лес), а затем итеративно переобучить модель с новым диапазоном вероятности для положительного класса.
Это считается завершенным, когда классификатор достигает одного из двух критериев: он не может найти никаких новых ярлыков или когда цикл завершается. Однако я должен добавить, что при использовании этого на большом наборе данных с большими параметрами (n_estimators) это обучение может занять много времени. Давайте посмотрим, насколько хорошо он справился.
---- TSA ---- pred_negative pred_positive true_negative 610.0 0.0 true_positive 300.0 310.0 None Precision: 1.0 Recall: 0.5081967213114754 Accuracy: 0.7540983606557377
В этом случае модель TSA не работала так же хорошо, как модель мешка PU. Однако с некоторыми разработками функций и дополнительными данными можно доказать, что этот подход не так бесполезен, как кажется на первый взгляд.
Где применимо обучение PU?
- Эти методы можно применять во многих областях, одним из примеров которых является обнаружение спама в электронных письмах, где вы хотите найти положительные случаи спама в неизвестных образцах (IE: спам-письма, которые изначально не были пойман как спам).
- Его также можно использовать в рекомендательных системах. Допустим, человек использует ваш веб-сайт, на котором продается одежда. Существует функция, позволяющая оценивать те или иные товары, которые им интересны. Можно использовать данные о товарах, которые нравятся покупателям (истинные положительные моменты), чтобы находить новые товары, которые им могут понравиться (потенциально положительные).
- Это лишь некоторые из них. Есть много других областей, в которых можно использовать этот метод.
Заключение
Не все наборы данных помечены правильно. Хуже того, некоторые наборы данных могут вообще не иметь меток, но с некоторыми знаниями предметной области и благодаря слабому информированному контролю полезная модель машинного обучения все еще может быть реализована.
- PU-упаковка выполняется быстрее, чем обычные методы ансамбля (с древовидными алгоритмами), поскольку в ней используется распараллеливание.
- Обучение TSA занимает больше времени.
- Помните: это этап предварительной обработки, и, вероятно, лучше не полагаться на него при решении проблемы классификации, по сравнению с методами глубокого обучения, которые дадут лучшие результаты.
Так что же теперь делать? Если ваши данные состоят из ненадежных классов, вы можете использовать одну из этих моделей для прогнозирования вероятности правильного класса выборки, а затем переназначить новую метку на основе порога (например: , если вероятность ›90%, то поменяйте метку для этого строка как положительная).
Наслаждаться! 👍
Приложение
Я разместил весь код на своем GitHub. Также вот отличный пост, с которого я взял ссылки.
- Код: https://github.com/AaronWard/PU-learning-example
- LinkedIn: https://www.linkedin.com/in/aaronjward/
- Источник данных: https://archive.ics.uci.edu/ml/datasets/banknote+authentication
Примечание редактора: Heartbeat - это онлайн-публикация и сообщество, созданное авторами и посвященное предоставлению первоклассных образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.
Независимая редакция, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по обработке данных и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.
Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить модели машинного обучения.