Это был мой третий проект в Metis Data Science, завершенный в середине 12-недельного буткемпа. Я многому научился на этом опыте, не только благодаря учебной программе и инструкторам, но и благодаря своим замечательным сверстникам. Для этого проекта «Обучение с учителем — классификация» диапазон охватываемых тем и масштабов был весьма вдохновляющим.
Недавно система искусственного интеллекта Google превзошла человеческую точность в испытаниях, опубликованных в статье Nature здесь.
Поскольку я был слишком амбициозен в своем предыдущем проекте регрессии и веб-скрейпинга (прогнозирование цен на жилье в Ванкувере и Сиэтле за 2 недели), я намеренно разработал этот проект, чтобы он был более управляемым. Но, увидев, что другие люди сделали за свои 2,5 недели, я немного сожалею, что не взялся за одну из моих самых сложных проектных идей (в настоящее время я пытаюсь сделать свой следующий проект одновременно сложным и выполнимым за 16 дней! жесткий).
Резюме
Для этого проекта я обучил и сравнил 9 моделей классификации для прогнозирования рака молочной железы с использованием признаков, уже рассчитанных по изображениям биопсии. Цель состоит в том, чтобы выяснить, можно ли повысить точность и скорость диагностики с помощью машинного обучения.
Мои результаты прогнозирования были очень хорошими (AUC ~ 0,99 для 4 лучших моделей по сравнению с точностью человека 77,5%), и естественным следующим шагом было бы расширение проблемы, чтобы включить классификацию изображений на изображениях биопсии и вычисление признаков перед выполнением классификации. используя лучшую модель, которую я обучал (4 лучших — логистическая регрессия, повышение градиента, случайный лес, машины опорных векторов — были почти равны, я выбрал логистическую регрессию как лучшую модель, потому что она была самой простой).
Используемые инструменты, модели машинного обучения и ссылки
Python, библиотеки Python: Pandas, NumPy, scikit-learn, matplotlib, Seaborn
Блокнот Jupyter, GitHub
Модели классификации в scikit-learn: логистическая регрессия, повышение градиента, случайный лес, машина опорных векторов (и линейный классификатор опорных векторов), дерево решений, гауссовский наивный байесовский алгоритм, K-ближайшие соседи, многослойный персептрон
Ссылки: документация scikit-learn, stackoverflow, Национальный фонд рака молочной железы
Данные
Набор данных, который я использовал для этого анализа, был набором данных рака груди Висконсин (диагностический) из репозитория машинного обучения UCI. Характеристики рассчитываются на основе оцифрованного изображения тонкоигольной аспирации (ТАБ) массы молочной железы. Они описывают характеристики ядер клеток, присутствующих на изображении.
Набор данных содержит 33 признака, 569 наблюдений. Моим целевым признаком для классификации был диагноз (M = злокачественный, B = доброкачественный). Это также единственный столбец с нечисловыми значениями, поэтому я преобразовал его в двоичный (Malignant = 1) во время очистки данных.
До и после обучения и тестирования моих моделей классификации я без особого успеха искал дополнительные наборы данных, чтобы дополнить этот набор данных. Вероятно, я мог это предвидеть, когда узнал, насколько популярен этот набор данных (№ 6 в репозитории машинного обучения UCIrvine). Мне бы хотелось иметь более реалистичные характеристики, такие как возраст и раса пациентов, а не только особенности опухолей. Частично проблема заключается в том, что у меня недостаточно знаний в этой области, а информация о пациентах, вероятно, является конфиденциальной.
Самая большая проблема с набором данных — это мультиколлинеарность признаков. Все функции, кроме мишени, были геометрическими характеристиками, рассчитанными по изображениям биопсии опухолей, и многие из этих функций имеют математические отношения друг с другом, например, radius_mean и area_mean, concavity_mean и concave_points_mean. После исследовательского анализа данных я решил использовать только первый набор уникальных признаков (средние значения) и отбросил признаки, которые могли быть переменными с утечкой, и не предоставлял новую информацию с точки зрения того, какие признаки являются наиболее важными для прогнозирования диагноз. Оценка AUC до и после разработки признаков очень мало различалась, что позволяет предположить, что удаленные признаки не были важны для прогноза.
Результаты
Результаты предсказания оказались очень хорошими. Я демонстрирую результаты в матрице путаницы. Для злокачественных опухолей, которые являются истинно положительными и являются наиболее важной категорией для прогнозирования, точность составляет 0,95 из 1, или 95% (по сравнению со средней точностью человека около 80% для этого метода биопсии). Вот ссылка на мой репозиторий на GitHub, если вы хотите посмотреть на слайды и код моей презентации (загрузка презентации занимает некоторое время).
Уроки выучены
Основной извлеченный урок состоит в том, чтобы начать думать об истории и конкретном бизнес-варианте использования с этапа проектирования и сосредоточить свой анализ на аспектах, которые могут помочь этой истории.
Я достиг целей, которые поставил перед собой в этом проекте, среди которых меньший, более управляемый масштаб на этапе проектирования, лучшая организация файлов и улучшенная доставка презентаций. Тем не менее, я решил не делать панель инструментов Tableau из-за важности функций ближе к концу проекта. Несмотря на то, что это была бы хорошая возможность попрактиковаться в новых навыках работы с Dashboard, я понял, что включение информации о важности функций не значительно улучшит мою историю данных.
Извлекая уроки из этого опыта, я начал думать об истории и бизнес-варианте использования на этапе разработки моего следующего проекта и поговорил с другими, чтобы получить отзывы и предложения. Я также хочу ориентироваться в своем анализе при интерпретации результатов моделирования.
Кроме того, тратить значительное количество времени на результат не оправдывает включение его в мою презентацию! Для 4-минутной презентации все, что включено в слайды, должно иметь решающее значение для донесения истории до аудитории и оставить их с одной центральной идеей или рекомендацией. Я рад, что вынул дополнительную информацию из слайдов презентации и смог представить свою историю данных, не торопясь. Отсутствие информационной панели также позволило мне тратить больше времени на создание своей истории и отработку презентации.
Я был очень рад, что инициатива по запуску канала в Slack и активное приглашение моих сверстников для совместной работы над презентацией окупились. Все шестеро из нас, которые тренировались друг перед другом, согласились с тем, что по сравнению с самостоятельной практикой получение отзывов от наших сверстников было невероятно полезным. Я планирую продолжать делать это для будущих проектов.
Я уже очень взволнован следующим проектом, который должен состояться 15 ноября, это НЛП (ура!) и неконтролируемое обучение (ура?). Быть в курсе!
Первоначально опубликовано на http://www.xinrucheng.net 2 ноября 2019 г.