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

Набор данных был создан Университетом Висконсина и имеет 569 экземпляров (строки - образцы) и 32 атрибута (функции - столбцы). Более подробная информация об источнике данных на сайте UCI (нажмите здесь). Однако важно - в качестве первого шага - объяснить, что такое информация об атрибутах и ​​как они были вычислены.

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

Шаг 1 - Информация о наборе данных и понимание

Как упоминалось на веб-сайте UCI, «Характеристики вычисляются из оцифрованного изображения тонкоигольного аспирата (FNA) новообразования груди. Они описывают характеристики ядер клеток, представленных на изображении ». Более того, FNA - это тип процедуры биопсии, при которой очень тонкая игла вводится в область аномальной ткани или клеток с помощью компьютерной томографии или ультразвуковых мониторов (рисунок 1). Собранный образец затем передается патологу для изучения его под микроскопом и проверки, являются ли клетки в биопсии нормальными или нет.

Информация об атрибутах набора данных:

1) идентификационный номер

2) Диагноз (M = злокачественный, B = доброкачественный)

3–32)

Для каждого ядра клетки вычисляются десять характеристик с действительным знаком:

а) радиус (среднее расстояние от центра до точек по периметру)

б) текстура (стандартное отклонение значений шкалы серого)

в) периметр

г) площадь

д) гладкость (локальное изменение длины радиуса)

е) компактность (периметр² / площадь - 1,0)

г) вогнутость (выраженность вогнутых участков контура)

з) вогнутые точки (количество вогнутых участков контура)

i) симметрия

к) фрактальная размерность («приближение береговой линии» - 1)

«Среднее значение, стандартная ошибка и« худшее »или наибольшее (среднее из трех наибольших значений) этих характеристик были вычислены для каждого изображения, в результате чего было получено 30 функций. Например, поле 3 - это средний радиус, поле 13 - это радиус SE, поле 23 - это наихудший радиус ».

Шаг 2 - Импорт функций

Я использую среду ноутбука ANACODA NAVIGATOR V1.5 и Jupyter. В онлайн-среде я запустил новую записную книжку Python 3, назвал ее «Классификатор рака груди» и импортировал некоторые функции:

Шаг 3 - Загрузка набора данных

После загрузки и проверки файла wdbc.data мне нужно было загрузить его в записную книжку, присвоить имена столбцам и проверить первые пять образцов:

Шаг 4 - Преобразование данных

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

Проверено, есть ли какие-либо пропущенные значения, с которыми нужно работать:

Отлично, похоже, нет пропущенных значений. Конечно, я должен был убедиться, что na_values ​​будет распознаваться на этапе загрузки. Затем было важно проверить типы данных и при необходимости выполнить любое преобразование.

Все в порядке, кроме столбца с надписью «Диагностика», я сопоставлю его информацию позже.

Шаг 5 - Исследование и визуализация данных

Гистограмма столбца с метками и соотношение B и M в наборе данных (1,7: 1).

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

Я сделал цикл for для создания отдельных коробчатых диаграмм для всех числовых функций, сгруппированных по метке диагностики. Вот несколько примеров: «радиус», «площадь» и «вогнутость»:

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

Построение гистограммы для визуализации частоты и плотности данных для общего распределения данных. Другой цикл for был создан для построения всех функций. Вот характеристики «радиуса», «площади» и «вогнутости»:

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

Я должен иметь в виду, что некоторые модели классификации требуют нормального распределения данных. Для построения точечной диаграммы мне нравится запускать матричную функцию для всех функций, где я могу понять и собрать некоторые идеи. Кроме того, я выделил два класса разными цветами. Для этого я использовал отличную функцию из библиотеки seaborn:

В этой статье я не буду подробно останавливаться на каждой диаграмме. Однако вы можете заметить некоторые линейные отношения, такие как (радиус против точек вогнутости), (вогнутость против компактности)… и т. Д. Кажется, существует экспоненциальная зависимость между радиусом и фрактальным_размером. Поскольку площадь = π (радиус) ² & периметр = 2π (радиус), ожидается, что между ними будут показанные отношения. Мы можем резюмировать все это с помощью показателей корреляции:

Шаг 6 - Преобразование данных

Я назначил столбцы функций в X, а столбец с меткой «Диагностика» - в y:

Затем я разделяю 30% данных на входные и выходные данные для тестирования, чтобы позже оценить модель классификатора. Остальное присваивается набору обучающих данных (X_train и y_train).

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

Затем построил модель PCA с n_omponents = 7, приспособил ее к обучающим данным, а затем использовал модель PCA для преобразования как тестовых, так и обучающих данных:

Шаг 7 - Классификационное моделирование

Я испробовал множество алгоритмов классификации на данных поезда и оценил модель с тестовыми данными, чтобы увидеть, как они работают. На самом деле, я получил много хороших оценок точности, одна из них - по классификатору опорных векторов радиального ядра (SVC). Пройдя несколько итераций, я установил следующие параметры: C = 0,9 и гамма = 0,063 и оценил модель с помощью тестовых данных:

Модель получила оценку точности 94,7%. Но мы должны перейти к этапу перекрестной проверки, чтобы проверить точность модели и посмотреть, как она будет работать.

Шаг 8 - Оценка модели

Здесь я запускаю 10-кратную перекрестную проверку данных обучения. Таким образом, обучающие данные сначала разрезаются на несколько наборов «K» (в данном случае 10). Затем обучаются «K» версий модели, каждая из которых использует независимое число K-1 из «K» доступных наборов. Каждая модель оценивается по последнему комплекту, это готовый комплект:

Среднее значение 10-кратной точности перекрестной проверки составляет:% 94,98 с AUROC (площадь под рабочей кривой приемника) = 0,99

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

С тестовым набором данных (30% исходных данных) классификатор смог обнаружить все доброкачественные клетки (истинно отрицательные), в то время как у него было 9 ложноотрицательных и 55 истинно положительных результатов при прогнозировании злокачественных клеток. Более того, давайте проверим показатели скоринга:

Наконец, я упомяну некоторые идеи оптимизации, которые могут повлиять на точность модели и, что более важно, уменьшить количество ложноотрицательных прогнозов. Тем не менее, я буду с нетерпением ждать получения ваших опытных мыслей и идей по оптимизации модели в дополнение к проекту в целом. Я верю в обмен знаниями и считаю, что это лучший способ улучшить свои навыки. И последнее, но не менее важное: вот несколько идей по оптимизации «Классификатора рака груди»:

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