5 секретов векторизации данных в ML, которые используют эксперты

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

*https://www.youtube.com/watch?v=bTO7WP6iwaM
**https://300.ya.ru/v_KV0F4WSe

пересказ видео

00:00:00 Введение в викторизацию данных

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

00:00:30 Значение викторизации

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

00:02:18 Типы данных и их представление

  • Числовые признаки: рост, вес, зарплата. Нормализация важна для линейных моделей.
  • Дата и время: добавление категориальных признаков сезонности и дополнительных статистик. Пример: время суток в сервисах такси.

00:03:37 Викторизация текста

  • Бэк-оф-ворс: словарь слов с признаками «слово — это слово».
  • Тиф-идеф: учёт частоты слова в документе и во всех документах. Пример: слово «корабль» в статье имеет большой вес.
  • Word2Vec: нейронные сети предсказывают слова по контексту, создавая эмбеддинги.

00:06:58 Энграммы и их применение

  • Энграммы разбивают слова на часто встречающиеся пары букв.
  • Пример: энграмма «ко» связана со словами «кот» и «кошка».
  • Энграммы помогают работать с опечатками и генерировать текст.

00:09:15 Геоданные

  • Геоданные влияют на работу алгоритмов приложений, например, YouTube и TikTok.
  • Геохэши разбивают Землю на полоски различных размеров и считают статистику для каждого геохэша.
  • Пример статистики: количество входов в приложение в определённом геохэше за последний месяц.

00:11:13 Викторизация изображений

  • Пиксели содержат цвета RGB.
  • Компьютер понимает изображения через анализ пикселей.
  • Пример: распознавание объектов на фотографиях.

00:11:34 Работа с изображениями в тензорах

  • Изображения представляются в виде тензоров, где каждый элемент — это количество пикселей в ширину и длину, умноженное на три для учёта трёх цветов.
  • Свертки позволяют анализировать изображения, разбивая их на кубы размером 3x3x3.
  • Нелинейность в нейронных сетях позволяет увеличивать размер окна свертки, например, до 5x5x3, что позволяет лучше анализировать формы и очертания.

00:12:24 Анализ форм в нейронных сетях

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

00:13:05 Работа с временными рядами

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

00:13:54 Викторизация данных

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

00:15:36 Заключение

  • Благодарность зрителям за просмотр и призыв подписаться на канал.

В этом видео

Вступление: зачем нужна векторизация
0:00
Зачем нужна векторизация данных в
0:02
машинном обучении и что это такое? Всем
0:04
привет. Меня зовут Александр Дубковский.
0:06
Я 3 года занимался системой рекомендаций
0:09
в Яндексе, учился в Шаде и стараюсь
0:11
сделать машинное обучение доступным для
0:13
новичков. Данные — это фундамент в
0:16
машинном обучении. Без данных не будет
0:18
работать никакая модель. А также, если
0:21
вы не можете представить все данные в
0:23
удобочитаемом виде для компьютера, у вас
0:25
тоже ничего не получится сделать.
0:26
Викторизация данных — это именно про
0:28
это.
0:30
Викторизация данных нужна для того,
0:32
чтобы объяснить окружающий мир
0:34
компьютеру, объяснить его в виде чисел.
0:37
Текст в виде чисел, картинки в виде
0:39
чисел, всё, что угодно в виде чисел.
0:42
Тогда компьютер сможет научиться
0:44
находить какие-то закономерности, и
0:46
тогда могут получиться такие прекрасные
0:48
модели, как Chatт GPT. Какую бы модель
0:51
машинного обучения вы не делали, или
0:53
там, если вы даже изобретаете
0:54
искусственный интеллект или ещё что, вы
0:56
обязательно пройдёте через этап
0:57
векторизации данных. Потому что
0:59
компьютеру нужно передать информацию о
1:01
нашем мире в понятном для него виде. Тем
1:04
более компьютер, а именно модели, учится
1:07
понимать наш мир даже глубже, чем мы.
1:09
Например, игра в шахматы. Компьютер
1:12
играет в шахматы лучше не только потому,
1:14
потому что он запомнил всевсев всевсевсе
1:16
варианты игр. Нет, он научился оценивать
1:20
позицию на доске, оценивать положение
1:23
фигур лучше, чем человек. Он глубже
1:25
понимает игру. И глубже он может понять
1:28
игру. только потому, что он хорошо
1:32
понимает, что из себя представляют
1:34
шахматы. У него хорошее признаковое
1:36
описание данных, хорошая векторизация
1:39
того, что происходило в каждой партии,
1:41
на каком ходу и к какому результату это
1:43
привело. Так он учится. Таким же
1:45
способом машинное обучение лучше
1:47
анализирует, а именно различает на
1:50
фотографии это котик или собачка. Да,
1:53
человек делает эту задачу с очень
1:55
большой высокой точности, больше
1:58
99%. Но машина в учени делает это ещё
2:01
лучше. И даже по чат GPT мы можем видеть
2:03
то, что она превосходит человека в
2:05
определённых компетенциях, то, что у неё
2:07
более широкие знания и она знает куда
2:09
больше сфер, чем любой человек. Без
2:11
правильного представления данных
2:13
добиться этого невозможно. Какие типы
2:16
данных бывают и как нам их объяснять
2:18
компьютеру? Давайте пройдёмся по
2:20
порядку. Числовые признаки. Допустим,
2:23
рост, вес, уровень дохода. О, не
Числовые признаки
2:26
уровень, а именно зарплата, точнее. Вот
2:28
это числовые признаки. Как нам их
2:30
передать модели, чтобы это были не
2:32
просто какие-то числа? Тут хорошо
2:34
работают различная нормализация. Она
2:36
критична для линейных моделей, чтобы
2:39
наши веса имели понятное объяснение. Ну,
2:42
с числовыми признаками всё достаточно
2:44
понятно. Вот поговорим о другом.
2:46
Допустим, что делать, если у нас есть
2:49
признак дата и время? Как нам передать
2:52
информацию о дате модели машинного
2:54
обучения? Она же не знает внутри себя.
2:57
Календарь не хранит, не ходит, так не
2:59
пересчитывает. Где там? Ага. Сегодня
3:00
семнадцато воскресенье. Отдыхаем. Нет,
3:03
не так. Мы даём ей различные статистики
3:05
про эту дату. Например, мы можем
3:07
сказать, в каком сезоне находится эта
3:10
дата. То есть добавить категориальный
3:12
признак сезонности. Можем посчитать
3:14
какие-то дополнительные статистики.
Работа с датами
3:16
Например, попадает ли эта дата в
3:18
последние 7 дней от нынешнего дня, в
3:20
последний месяц, в последний год?
3:22
Например, в сервисах такси очень важный
3:25
признак является то, в какое время дня
3:27
вы заходите в приложение, потому что
3:30
утром люди часто ездят на работу,
3:32
вечером часто ездят домой, на выходных
3:35
ездят в рестораны или ещё в какие-то
3:36
места. Это сильно помогает определять,
3:39
куда же, скорее всего, поедет человек.
3:41
Тип данных — текст. Именно за счёт
Текст: bag of words
3:44
правильной векторизации текста,
3:45
правильного представления его для
3:47
компьютера, у нас появились такие
3:48
прекрасные модели, как чат GPT, гигачат
3:50
и другие им подобные. Как это
3:52
происходит? Как мы объясняем текст
3:53
компьютера? Вначале эта задача решалась
3:57
достаточно простым способом. Back of
4:00
words. У нас просто есть словарь всех
4:04
слов, которые существуют в языке, и
4:07
признак. То, что это слово — это это
4:08
слово. То есть у нас сколько слов,
4:10
столько и признаков. Это один, одна
4:12
единичка, и все остальные нолики. Потом
4:15
начали появляться более интересные
4:17
модели, например, TFDF, да, когда мы уже
4:21
смотрим, насколько наше слово, насколько
4:23
часто оно встречается в документе и
4:25
насколько часто оно в целом встречается
4:28
во всех документах. И мы тогда смотрим.
4:30
Ага. Если у нас в этой статье слово
4:33
корабль встречалось 100 раз, а в целом в
TF-IDF
4:37
интернете слово корабль достаточно
4:38
редкая, то, наверное, корабль для этой
4:41
статьи — это очень важное слово, и мы
4:43
дадим ему большой вес и будем большим
4:45
числом обозначать компьютеру то, что вот
4:47
есть такое слово с большим весом. И
4:50
теперь, если такое слово есть ещё в
4:52
других каких-то статьях, то, наверное,
4:54
это одни и те же ээ тексты. Если кто-то
4:57
ищет про корабли, то лучше вот дать вот
4:58
эту статью, потому что слово корабль
5:00
редкое, а в этой статье оно встречается
5:02
часто. Это про теях. Потом появились
5:05
wordки. Это уже с помощью нейронной сети
5:08
м учили определённые модели, чтобы
5:11
правильно представлять текст. А именно
5:13
по контексту научались предсказывать
5:16
слова. Например, есть какое-то
5:18
предложение: «Кот любит пить молоко».
Word2Vec и эмбеддинги
5:20
Происходит маскировка слова кот. Да. Вот
5:24
нужно предсказать, какое может быть
5:25
слово любит пить молоко. И там на выбор:
5:28
динозавр, кот, стол. И эта нейронная
5:31
сеть учится с помощью градиентного
5:32
спуска. И у нас получаются вероятности
5:34
для каждого слова, какое может быть. И
5:36
таким образом каждое слово получает
5:39
бединг. — это числовое
5:43
представление через какие-то неясные
5:45
латентные признаки, что из себя
5:47
представляет этот объект. Что интересно
5:50
про имбейтинг и в целом, что лично для
5:52
меня очень интересно в машинном
5:53
обучении, то, что с помощью эмбей машины
5:58
обучения пытается понять какие-то
6:01
глубокие штуки про мир, которые
6:04
объясняют
6:05
его. То есть у него есть какой-то свой
6:09
набор признаков математических, как он
6:11
видит мир через это. И он может
6:14
объяснить, почему, допустим, романа Льва
6:16
Толстого и Достоевского, они похожи, и в
6:19
чём они похожи. Но для него это признаки
6:22
не такие, как у нас, допустим,
6:24
тональность текста, размер книг, время
6:28
жизни, да, которое мы как люди понимаем.
6:30
У него есть какие-то другие свои
6:32
признаки в этих эмбедингах, которые
6:34
хранятся, как он именно понимает мир
6:37
через них. И это очень интересно, потому
6:39
что таким образом, на самом деле, машина
6:42
обучения может видеть мир глубже, чем
6:45
мы. Что, например, как я уже говорил в
6:46
начале видео, видно в игре в шахматах
6:49
или в распознавании котиков и собачек.
6:52
То, что машинное обучение видит глубже
6:55
мир. Но World ofвек — это не последний
6:57
способ викторилизации текста. Вот
6:58
представьте, вы знаете для каждого слова
7:01
его контекст, но тогда у вас слово кот,
7:04
кошка — это уже разные слова, которые
7:06
могут иметь какое-то разное
7:08
представление. А возможно кто-то написал
7:10
не кошка, а коска, да? И это вообще
7:14
новое слово, которое ни в каких текстах
7:16
мы не видели итингов для него мы не
7:18
знаем. А мы же знаем для кошки уже всё
7:19
представление, что оно из себя
7:21
представляет в мире, так сказать, да?
7:23
Что это значит объект этот кошка, а
N-граммы и частотные паттерны
7:25
коска не знаем, что же тогда делать. И
7:27
тут приходят современные решения, когда
7:30
мы разбиваем слова на нграммы. Есть
7:32
несколько способов, как разбивать на
7:34
нграммы. Один из самых логичных, так
7:36
сказать, из них — это когда мы берём
7:39
буковки, просто все буковки алфавита,
7:42
смотрим, какие сколько встречаются.
7:44
Хорошо. Теперь берём пары буковок,
7:46
смотрим, какие встречаются. Оставляем
7:48
только те пары букв, которые вместе
7:50
встречаются очень часто. Дальше мы
7:53
собираем так различные пары букв
7:55
энграммы, то есть несколько букв вместе,
7:57
и смотрим, как часто они встречаются в
8:00
корпусе всех наших документов. Если они
8:02
встречаются очень часто, то мы их
8:04
оставляем. Таким образом, у нас
8:05
получаются самые частые буквы, которые
8:08
встречаются вместе. Так у нас
8:10
получается, например, вот из русского
8:12
взять корни слов, то есть, допустим,
8:14
код, да, или там, допустим, кошка и кот.
8:17
у нас будет грамма из двух букв ко,
8:20
который уже будет иметь какую-то связь
8:22
со всеми словами, которые имеют ко, и
8:24
там будут и код, и кошка. И таким
8:26
образом с помощью инграм мы можем
8:28
составлять новые слова, мы можем
8:30
работать с опечатками. И таким образом
8:32
сейчас и генерируется текст по
8:34
энграммам, и считывается текст по
8:36
энграммам. Компьютер теперь смотрит не
8:38
на целые слова и на их численное
8:40
представление, а на конкретные энграммы,
8:42
какие-то частотные энграммы, и говорит:
8:44
«Ага, вот эти несколько букв, они вот
8:46
такие числа имеют». Такое вот
8:48
представление в каких-то латентных
8:49
признаках. Лтентные признаки — это
8:50
что-то, что мы не можем объяснить
8:52
словами, да, но то, что компьютер вот
8:55
понимает и понимает он это, комбинируя
8:58
множество наших признаков, которые мы до
9:00
этого ему давали. Допустим, мы дали ему
9:02
100 признаков описания человека, а он
9:04
этих 100 признаков покрутил, повертел и
9:07
получил 25. Как именно получается каждый
9:09
из этих двадцатип, мы точно не знаем, но
9:11
как-то он получается. Таким образом, мы
9:13
можем представлять текст для компьютера,
9:15
геоданные. В некоторых бизнесовых
9:18
задачах мы будем работать с
Геоданные и геохэши
9:19
координатами. На самом деле, почти
9:22
всегда, когда вы пользуетесь любыми
9:24
приложениями на телефоне, они будут
9:26
смотреть на ваши координаты, даже
9:27
TikTok, YouTube и прочее. И это будет
9:30
влиять на работу алгоритмов. Они будут
9:32
смотреть, ага, у них и будут вся
9:34
какие-то статистики, то, что вот из этой
9:36
координаты он чаще всего смотрит долго
9:38
YouTube. Поэтому это будет как-то влиять
9:40
на выдачу, допустим, тех видосов,
9:41
которые YouTube показывает. Например, он
9:43
знает то, что вот здесь вы смотрите
9:45
YouTube только про работу, на рабочие
9:47
какие-то темы, потому что, кажется, эти
9:49
координаты, они как-то ассоциируются с
9:51
тем, скорее всего, вы там работаете в
9:52
этом месте. А вот это вот координаты,
9:54
которые похожи на ваш дом, да? И тут мы
9:57
будем предлагать вам уже другие видосы.
9:58
YouTube это всё учитывает, TikTok это
10:00
всё учитывает, любые рекомендательные
10:02
системы это учитывают. Каким образом?
10:03
Как они координаты переводят? Нет, это
10:05
не просто числа. Он не запоминает каждую
10:08
вот широту, долго и вот просто считает
10:11
расстояние между ними. Хотя расстояние
10:12
между ними — это уже первая статистика,
10:14
которую можно добавить. Например, мы
10:16
можем взять центр городов, да, и считать
10:19
там какое-то расстояние от центра.
10:21
Насколько это поможет нам, допустим,
10:22
определять, дома вы или не дома
10:23
находитесь, это другой вопрос. Хорошее
10:25
практичное решение, которое используется
10:27

это геохши. Когда у нас весь наш мир,
10:30
ну, вернее, планета Земля, да, мы
10:32
разбиваем Землю на полосочки такие,
10:35
геохэши различных размеров. Это могут
10:37
быть геохэши даже размера 2 см на 2 см,
10:40
да, всю планету так побить. Могут быть
10:41
там 2 км на 2 км, 100 км на 100 км. И
10:45
считаем для каждого геохэша различные
10:47
статистики. Например, сколько раз вы
10:50
заходили в приложение вот в этом геохше
10:53
за последний месяц? В какое время вы
10:55
заходите в этом
10:57
геохше? Вот за последний год, да, там
10:59
утром, днём, вечером? Подобные
11:02
статистики считаются. И таким образом
11:03
координаты объясняются модели машиного
11:06
обучения. Компьютер теперь понимает
11:08
лучше, что это значит. То, что вы
11:09
находитесь вот в конкретном месте на
11:11
планете Земля в конкретное время.
11:13
Изображение. Как компьютер понимает, что
11:15
находится на картинке? Он же никогда не
11:17
видел котов и сам он не кот. Как это
11:20
понять? У нас есть пиксели. Пиксели
11:23
содержат в себе какие-то цвета. Обычно
Изображения и свертки
11:25
это RGB color. То есть у нас есть для
11:28
каждого пикселя три значения. Это
11:30
сколько красного цвета, зелёного и
11:32
синего в нём находится. Тогда мы уже
11:35
получаем даже не просто матрицы, а целые
11:38
тензора. У нас каждая картинка
11:41
представляет из себя, сколько у нас
11:44
пикселей в ширину, в длину и умножить на
11:46
три, потому что три цвета. Вот так вот
11:49
мы представляем наше
11:51
изображение. И тут вот появляются
11:53
свёртки. Ещё такая штука, как мы можем
11:55
работать с этими изображениями? То, что
11:57
мы смотрим сразу на, допустим,
11:58
квадратики 3х 3х 3, вернее кубы 3х 3х 3.
12:01
Ага. Тут так, тут так, тут так, тут так.
12:04
Тут, допустим, много красного, тут много
12:06
зелёного. Потом мы начинаем смотреть,
12:08
добавляем в нейронённых сетях какую-то
12:09
нелинейность, увеличиваем наше окно
12:12
свёртки. И у нас получается то, что мы
12:14
уже смотрим на 5х нап нат размер окна.
12:18
То есть у нас ширина-длина по пять
12:20
пикселей, а в глубину три, потому что те
12:22
же RGB, да, три цвета. И мы уже видим,
12:25
а, у нас оказывается много зелёного. То
12:28
есть у нас было много зелёного и на трёх
12:30
пикселях, и на пяти пикселях. Потом
12:32
добавляем нелинейность и смотрим то, что
12:34
оказывается эти зелёные, они похожи на
12:36
какую-то линию, похожи на какую-то
12:38
форму. Конечно, это не на втором слове
12:39
получается, но там уже поглубже в
12:41
нейронной сети будут выделяться какие-то
12:43
формы, какие-то очертания. И нейронная
12:46
сеть за счёт нелинейности, которую она
12:48
получает вот с этими признаками, она
12:50
может находить формы и по формам
12:52
понимать, ага, вот эти формы, они похожи
12:55
на формы кота, а вот эти на форму
12:57
собаки. Временные ряды. Ещё один важный
Временные ряды
12:59
тип данных. Например, в финансах всё как
13:02
раз-таки стоит на временных рядах. Как
13:05
работать с ними? Зачастую, опять же,
13:07
считают различные статистики. Статистики
13:10
тоже можно поместить в эмбейдинге, тем
13:12
более это уже даже понятные эмбединги
13:14
получаются обычно за счёт различных
13:17
статистик по скользящим окнам. То есть,
13:20
допустим, как насколько сильно
13:22
изменялась цена акции за последние 2
13:24
дня. Какой диапазон изменения, там
13:26
маленький, большой. Вот сколько раз она
13:29
менялась на какое-то значимое изменение.
13:32
Много можно различных статистик
13:34
посчитать, но обычно по какому-то окну
13:36
считаются времени. То есть, допустим, за
13:37
один день этот один день он двигается
13:40
каждый час. То есть каждый час вот оно
13:42
вот пересчитывается. Такая вот
13:43
статистика. Такие типы данных, как
13:45
графы, аудио, они уже более редкие и
13:48
тоже имеют много различных способов
13:50
векторизации, чтобы объяснить, что вы
13:53
говорите о Лисе компьютеру. Короткая
13:55
история про векторизацию данных из
13:57
практического опыта. Какие большие
13:59
потенциальные возможности представления
14:01
данных даёт нам эльщикам? Когда я ещё
История о векторизации из практики
14:04
был новичком в этой сфере и только
14:06
знакомился с первыми моделями, я ещё не
14:09
понимал, что такое нейронные сети. Я их
14:11
сильно боялся. Я знал только, что такое
14:13
логистическая регрессия. У меня была
14:14
задача классификации на одном
14:16
соревновании на Кагли. И я вот имел
14:19
какие-то признаки и хотел, конечно же,
14:21
чтобы моя модель работала лучше. Я на
14:23
тот момент уже понимал то, что,
14:25
безусловно, какие-то признаки, они
14:28
линейно зависят с таргетом, да, там,
14:30
допустим, рост и возраст человека, но
14:34
есть ещё какая-то нелинейная
14:36
зависимость, то есть то, что как раз
14:38
очень хорошо находят нейронные сети за
14:40
счёт функций активации и большого
14:42
количества слоёв. Но как это можно
14:44
перенести в линейную модель за счёт
14:46
преобразования ваших признаков? Вы
14:48
можете каждый из признаков взять это
14:50
значение в квадрат или взять логарифм.
14:52
Ну, для численных признаков, конечно,
14:54
проделать вот всякие такие нелинейные
14:56
преобразования и получить новые
14:57
признаки. То есть у вас, допустим, есть
14:59
рост, а есть ещё новый признак. Рост в
Финал: признаки и нелинейность
15:01
квадрате, да? У вас растёт количество
15:04
признаков. Это может и плохо повлиять на
15:06
вашу модель, то, что она начнёт
15:07
переобучаться. Но если сбалансировать
15:09
количество признаков и добавить таким
15:11
образом нелинейность, то модель будет
15:13
работать лучше. Тогда обычная линейная
15:15
модель получает дополнительную
15:18
информацию о нелинейной зависимости, и
15:20
это, конечно же, её улучшает. даже без
15:22
использования каких-либо нейронных
15:24
сетей. Спасибо, что вы поставили лайк
15:26
под нашим видео и подписались на наш
15:28
канал. До встречи.
15:36
Да. Это

Поделиться: