Обзор

Мой проект направлен на создание высокоточной модели машинного обучения для определения типа дорожного знака на основе определенных входных переменных.

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

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

Исследовательский анализ данных

Проверка пропущенных значений

Я начал с изучения формы и структуры моего набора данных. И продолжил проверять, есть ли какие-либо пропущенные значения в моем наборе данных.

Поскольку тепловая карта слева имеет однородный цвет, мы знаем, что в наборе данных нет пропущенных значений.

Как видно на рис. 2, есть четыре входные переменные, показывающие интересующую область, что помогает нам классифицировать дискретную выходную переменную — classID — представляющую тип дорожного знака:

  • Верхний ряд (topRow)
  • Нижний ряд (bottomRow)
  • Левая колонка (leftCol)
  • Правая колонка (rightCol)

Факторный график слева показывает количество каждого classID, представляющего различные дорожные знаки.

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

Я не могу использовать ни логистическую регрессию, ни какой-либо другой двоичный классификатор, поскольку он подпадает под определение многоклассовой классификации.

Таким образом, я использую прогнозное моделирование классификации для аппроксимации функции отображения (fx) из 4 входных переменных в нашу дискретную выходную переменную — classID. Эта выходная переменная также известна как метка или категория.

На приведенной ниже диаграмме рассеяния цветная легенда показывает classID, а размер кружка зависит от значений левого столбца (leftCol). Похоже, в самых маленьких желтых пузырьках, которые сконцентрированы на самых высоких уровнях topRow и bottomRow, есть какая-то закономерность. Кроме этого, среди идентификаторов классов можно увидеть не так много кластеров, на основе которых я мог бы сгруппировать их по категориям. Это могло бы упростить модель за счет уменьшения количества выходных переменных/меток.

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

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

В своем анализе я использую 3 модели:

  • Классификация дерева решений
  • Случайная классификация леса
  • Ада Boost Классификация

Модель дерева решений

В моделировании дерева решений данные непрерывно разбиваются на основе определенных условий, что помогает нам классифицировать наблюдения. На рисунке ниже критерий — «джини», максимальная глубина — 2, а сплиттер — «лучший». Показатель Джини, показанный на диаграмме, является мерой, которая вычисляет чистоту узла. Листовой узел окрашен в розовый цвет, а узлы — в белый. Лист розового цвета имеет показатель Джини 0,0, что означает, что в этом листе существует только один класс образцов, тогда как показатель Джини более 0,0 означает, что лист/узел содержит образцы разных классов.

.Как видно на рисунке слева, розовый лист имеет class = y[36], что соответствует classID=13. Ключ на рис. 4 говорит нам, что идентификатор класса 13 представляет собой знак «уступи дорогу». Итак, основываясь на графике дерева классификации, мы знаем, что все наблюдения с bottomRow > 604,5 являются образцами classID = 13 или дорожным знаком «уступи дорогу».

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

Как видно на рис. 9, использование «джини» в качестве критерия дает в целом лучшую оценку точности, чем использование «энтропии». Более того, похоже, что при обрезке дерева до max depth = 4 или max depth = 6 (приблизительно) точность самая высокая. Наилучшая оценка точности, показанная на этом графике, составляет 0,16015625.

Модель случайного леса

Случайный лес — это ансамблевый метод обучения классификации, состоящий из множества отдельных деревьев решений.

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

На рис. 10 выше мы видим, что n_estimator: 60 и n_estimator: 90 дают самые высокие оценки точности.

Как мы видим на рис. 11, использование «энтропии» в качестве критерия дает лучшую оценку точности, чем использование «энтропии» с n_estimators = 90. Более того, кажется, что при максимальной глубине = 5 (приблизительно) точность самая высокая. Наилучшая оценка точности, показанная на этом графике, составляет 0,1640625.

Модель адаптивного повышения (AdaBoost)

Adaboost пытается создать сильную прогностическую модель, объединяя различные слабые классификаторы в один. Повышение используется для минимизации ошибок смещения в моделях, которые не могут распознать значимые закономерности на основе наблюдений.

Чтобы повысить точность модели, я запускал различные модели классификации Adaboost с разными значениями параметров: n_estimators и скорость обучения.

На рис. 11 выше мы видим, что n_estimator: 60 и n_estimator: 85 дают самые высокие одинаковые оценки точности, поэтому я использовал n_estimator между 60 и 85 в своих моделях.

Скорость обучения — это вес, придаваемый каждому классификатору на каждой повышающей итерации. Чем выше скорость обучения, тем больше вклад каждого классификатора. На рис. 13 видно, что скорость обучения, дающая максимальную точность для моделей AdaBoost, составляет 0,08 при n_estimators = 75.Однако показатель точности 0,15625, полученный даже при наилучшей скорости обучения, ниже, чем показатели точности случайного леса и деревьев решений.

Лучшая модель

Как видно на рис. 12, классификация случайного леса является лучшей моделью с показателем точности 0,164. Эта модель превосходит модели Ada Boost и Decision Tree Classification, поскольку имеет самый высокий показатель точности. Оценка точности является важным показателем для оценки моделей машинного обучения, поскольку она сообщает нам меру всех правильно предсказанных выходных переменных в нашем тестовом наборе данных.

Ограничения

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

использованная литература

  1. Хидео, Г. (2020). Дерево решений: создавайте, сокращайте и визуализируйте его с помощью Python. [онлайн] Средний. Доступно по адресу: https://towardsdatascience.com/decision-tree-build-prune-and-visualize-it-using-python-12ceee9af752
  2. Ю, Тони. (2019). Случайный лес. [онлайн] Средний. Доступно по адресу: https://towardsdatascience.com/understanding-random-forest-58381e0602d2
  3. https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html