Пересмотр предыдущего проекта с новым объективом.

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

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

Процесс обратной связи

Невероятно талантливый аналитик данных недавно присоединился к нашей команде преподавателей науки о данных в школе Flatiron. Ее зовут Фанфанг Ли, и она однозначно прославленная задница. Горячий совет: всегда просите кого-нибудь бесконечно умнее вас критиковать вашу работу.

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

Извлеченные мягкие уроки

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

Усвоенные уроки

  • Вам не нужно нормализовать ваши данные в логистической регрессии - суть нормализации ваших характеристик в чем-то вроде линейной регрессии заключается в том, чтобы каждое увеличение единицы, указанное вашими коэффициентами, считалось "единой единицей" для всех функции, независимо от того, как они были изначально измерены или их масштаб. Однако в логистической регрессии нас интересует относительное положение каждой функции по отношению к зависимой переменной. Другими словами, нас интересует количество увеличения или уменьшения логарифмической вероятности успеха. По этой причине стандартизация значения единицы не требуется. См. Эту отличную ветку для получения дополнительной информации.
  • Используйте SMOTE только в случаях крайнего дисбаланса классов - SMOTE (метод синтетической передискретизации меньшинства) создает синтетические данные для избыточной выборки класса меньшинства ваших данных. Это очень мощный и полезный метод, когда ваши данные сильно несбалансированы. Однако в случае с моими данными, которые имели разделение на ~ 80/20 скинов / без скинов, такая мощная мера не нужна; Я узнал, что вы хотите использовать синтетические данные только тогда, когда у вас нет других вариантов.
  • Перекрестная проверка K-Fold - это настоящий MVP. Хотя начинающим специалистам по данным наиболее удобно использовать метод удержания перекрестной проверки (т. е. создание единого обучающего набора и единого набора тестов при создании машины модели обучения), этот метод может страдать от высокой дисперсии и утечки данных, поскольку он по своей сути зависит от того, какие точки данных помещаются в обучающий и тестовый наборы. Это означает, что результаты вашей модели могут сильно различаться в зависимости от того, какие данные вводятся в наборы тестов для обучения и тестирования. С другой стороны, k-кратная перекрестная проверка - это более строгий тест на точность вашей модели, потому что он, по сути, запускает этот процесс несколько раз для групп ваших данных, а затем усредняет точность модели по всем этим мини-тестам. (Подробнее об этом вы можете прочитать в моем новом README для этого проекта.)

На дубль 2

Имея в виду все эти уроки, я переделал свою первую модель без нормализации моих значений или использования SMOTE. Я также потратил время на оценку моей модели с помощью k-кратной перекрестной проверки (с k = 4) и на то, чтобы сделать мой код более лаконичным.

В итоге я получил примерно такой же результат (~ 91%), что и моя предыдущая модель, но эта версия, несомненно, более надежна и точна.

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