Подход машинного обучения(2)

Существует несколько способов определения формы стопы онлайн, ниже приведены некоторые из них:

Основываясь на этих наблюдениях, форма носка больше всего влияет на форму стопы, и, чтобы начать это исследование, я пометил обувь, загруженную с 6pm.com, на 3 категории, как показано на изображении ниже:

Классификация в основном основана на форме пальцев: тип 1 моделирует форму стопы, при которой второй палец является самым длинным, а остальные пальцы резко сужаются вниз; тип 2 моделирует форму стопы с более плавным сужением; тип 3 моделирует формы стопы с одинаковой длиной пальцев, причем большой палец является самым длинным.

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

Во-первых, нам нужны данные!

Здесь используется метод парсинга веб-страниц. Я пытался связаться с zappos.com, чтобы получить от них API, после нескольких раундов общения я не получил ответа. Понятно, что данные ценны в современном деловом мире. Поэтому мне пришлось попытаться очистить их html. Но они закодировали свой веб-сайт для каждого клиента (IP-адрес), и мой код не смог с ними связаться. Затем мой инструктор предложил использовать селен, который представляет собой пакет для автоматизации ваших движений на веб-сайте и автоматического выполнения работы за вас. К счастью, опция cookie jar в селене помогла мне разблокировать веб-сайт, и я загрузил около 3400 изображений с разделом загрузки и размером 5,5. Это заняло около 1,5 часов, и необходимо позаботиться о нескольких исключениях, чтобы код работал гладко.

Еще 20 000 изображений были загружены позже на всякий случай, и они действительно пригодились позже!

Второй шаг - EDA (исследовательский анализ данных). В основном мы изучаем данные, проверяем полноту и точность данных и редактируем их по мере необходимости для моделирования. Мне повезло, что Amazon.com хорошо организовал свои изображения, чтобы они были одинакового размера (78 * 106 * 3 пикселя). Большинство подошв обращены вправо, а некоторые — влево, что вообще не является проблемой для нейросетевой модели.

Чтобы нейронная сеть могла моделировать данные, их необходимо преобразовать в цифровые числа. Сначала я преобразовал пиксели в массив numpy, а затем сохранил их в файл csv для будущего использования.

Следующий шаг — интересная часть машинного обучения: моделирование! Вы можете играть с различными параметрами и позволить компьютеру выполнять тяжелую работу и смотреть, как меняются результаты.

Я пробовал несколько моделей для этой проблемы:

  1. Полностью подключенная нейронная сеть
  2. Простая CNN с одним сверточным слоем и 3 плотными слоями.
  3. Добавляем еще один сверточный слой

4. Упростите плотные слои и оставьте только один

5. добавить выпадение (уменьшить количество подключений к сети для устранения переобучения)