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

«В машинном обучении и распознавании образов характеристика - это индивидуальное измеримое свойство или характеристика наблюдаемого явления». [Bishop, 2006], а набор таких функций называется «Вектор признаков».

Следующие особенности, характеристики - это те, которые я учитываю при оценке пляжа:

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

Кодирование вектора

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

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

Теперь я возьму три пляжа и создам вектор для каждого.

Генипабу (Бразилия)
[белый; отлично; есть приют; популярный; выше; есть ресторан; Чисто]

Брела (Хорватия)
[белый; грубый; есть приют; не популярен; как бассейн; есть ресторан; кристально чистый]

Пляж Ипанема (Бразилия)
[коричневатый, средний, есть убежище, суперпопулярный, высокий, есть ресторан, темноватый]

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

Важно отметить, что все описанные мною объекты правильно размещены в одном и том же положении в векторе, как таблица.

Другой ключевой момент здесь в том, что категории или ценности я выбрал исключительно исходя из моих личных предпочтений. Например, я мог бы пойти на более научный подход к песчинкам, используя ISO 14688–1: 2017 или их размер ,, но в моем коде функций представление, я не учел этого, потому что получить данные слишком сложно.

Если я хочу «подготовить» свои данные для модели машинного обучения, мне нужно пройти еще один шаг и сопоставить все функции с числовыми значениями. Чтобы быстро проиллюстрировать, я решил, что яркость песка может быть представлена ​​следующими числовыми значениями, где dark установлен на 1.0, коричневатый на 2.0 и белый на 3.0, и в моих собранных данных я заменяю строки этими числами. Выполняя аналогичное упражнение с другими функциями, я получил бы вектор признаков, подобный следующему:

[2.0, 2.0, 1.0, 4.0, 2.0, 1.0, 3.0]

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

Вектор линейной алгебры и массив языков программирования

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

На изображении выше у нас есть 3 вектора с 2 измерениями и их координаты (-2, 1), (0, 1) и (1, 0). В моем примере я выбрал 7 различных атрибутов, превратив это представление в вектор из 7 измерений.

Теперь уделите еще 10 минут своей жизни и посмотрите это видео!

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

Выводы из реального мира по проектированию функций

  • Разработка функций занимает большую часть вашего времени. Вам нужно будет собрать данные, найти признаки, описывающие проблему, и оттуда получить числовые представления.
  • При работе с текстами вам доступно множество подходов (TF-IDF, Word2Vec, Bag of Words и т. Д.), и я настоятельно рекомендую вам прочитать эту страницу из sklearn.
  • При работе с изображениями или звуками я советую использовать набор алгоритмов Deep Learning - в основном кодирование функций предоставляется «бесплатно»!
  • Существует множество бизнес-кейсов, что простые подходы к представлению вычислительно дешевы и просты в реализации. Например, в проблемном пространстве изображения у вас есть карты границ, перцепционное хеширование и т. Д., которых достаточно для решения случаев подобия.
  • Ваши особенности могут и будут меняться со временем! Всегда есть что отрегулировать для поддержки ваших моделей.
  • Для любой конкретной проблемы сохраните созданный вектор, протестируйте и сравните несколько подходов или комбинаций и, наконец, примите сознательное решение о том, что работает лучше всего!
  • Помните, что функции - это ключевые моменты для ответа на вопрос. Так что и хорошего!

Какой-то код

Я подготовил код со всем, что сказал. Проверьте это.

Заключительные слова

Кстати… поезжайте в Хорватию! Никакого раздражающего песка, кристально чистой воды, без громкой музыки, ресторанов с красивым приютом и едой, а в некоторых местах совсем не многолюдно! : D

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

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