с несколькими ресурсами

Обзор

  • Линейная алгебра поддерживает различные и разнообразные алгоритмы и приложения для науки о данных
  • Здесь мы представляем 10 таких приложений, в которых линейная алгебра поможет вам стать лучшим специалистом по данным.
  • Мы разделили эти приложения на различные области - базовое машинное обучение, уменьшение размерности, обработка естественного языка и компьютерное зрение.

Вступление

Если бы Data Science была Бэтменом, то линейная алгебра была бы Робином. Этого верного друга часто игнорируют. Но на самом деле он используется в основных областях науки о данных, включая такие горячие области, как обработка естественного языка и компьютерное зрение.

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

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

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

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

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

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

Оглавление

  • Зачем изучать линейную алгебру?

Линейная алгебра в машинном обучении

  • Функции потерь
  • Регуляризация
  • Ковариационная матрица
  • Классификация машин опорных векторов

Линейная алгебра в уменьшении размерности

  • Анализ главных компонентов (PCA)
  • Разложение по сингулярным значениям (SVD)

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

  • Вложения слов
  • Скрытый семантический анализ

Линейная алгебра в компьютерном зрении

  • Представление изображений в виде тензоров
  • Свертка и обработка изображений

Зачем изучать линейную алгебру?

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

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

Вы хотите уменьшить размеры данных с помощью анализа главных компонентов (PCA). Как бы вы решили, сколько основных компонентов сохранить, если бы не знали, как это повлияет на ваши данные? Понятно, что вам нужно знать механизм работы алгоритма, чтобы принять это решение.

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

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

Линейная алгебра в машинном обучении

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

1. Функции потерь

Вы должны быть хорошо знакомы с тем, как модель, скажем, модель линейной регрессии, соответствует заданным данным:

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

Но подождите - как вы можете рассчитать, насколько ваш прогноз отличается от ожидаемого результата? Конечно, функции потерь.

Функция потерь - это приложение векторной нормы в линейной алгебре. Нормой вектора может быть просто его величина. Есть много типов векторных норм. Я быстро объясню два из них:

  • Норма L1: также известна как «Манхэттенское расстояние» или «Норма такси». Норма L1 - это расстояние, которое вы бы прошли, если бы перешли от начала координат к вектору, если единственные разрешенные направления параллельны осям пространства.

В этом двухмерном пространстве вы можете достичь вектора (3, 4), пройдя 3 единицы вдоль оси x, а затем 4 единицы параллельно оси y (как показано). Или вы можете сначала переместиться на 4 единицы по оси Y, а затем на 3 единицы параллельно оси x. В любом случае вы путешествуете в общей сложности 7 единицами.

  • Норма L2: также известное как евклидово расстояние. L2 Norm - это кратчайшее расстояние вектора от начала координат, как показано красным путем на рисунке ниже:

Это расстояние рассчитывается с помощью теоремы Пифагора (я вижу, как старые математические концепции всплывают у вас в голове!). Это квадратный корень из (3² + 4²), равный 5.

Но как используется норма, чтобы найти разницу между предсказанными и ожидаемыми значениями? Допустим, предсказанные значения сохраняются в векторе, а ожидаемые значения - в векторе E. Тогда P-E - вектор разности. А норма P-E - это общая потеря прогноза.

2. Регуляризация

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

Считается, что модель переоснащается, если она слишком хорошо соответствует обучающим данным. Такая модель плохо работает с новыми данными, потому что она учла даже шум в обучающих данных. Он не сможет обобщить данные, которых он раньше не видел. Приведенная ниже иллюстрация хорошо иллюстрирует эту идею:

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

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

Обсуждаемые выше нормы L1 и L2 используются в двух типах регуляризации:

  • Регуляризация L1, используемая с Лассо Регрессия
  • Регуляризация L2, используемая с регрессией гребня

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

3. Ковариационная матрица

Двумерный анализ - важный этап исследования данных. Мы хотим изучить взаимосвязь между парами переменных. Ковариация или корреляция - это меры, используемые для изучения взаимосвязей между двумя непрерывными переменными.

Ковариация указывает направление линейной связи между переменными. Положительная ковариация указывает на то, что увеличение или уменьшение одной переменной сопровождается аналогичным изменением другой. Отрицательная ковариация указывает на то, что увеличение или уменьшение одного сопровождается противоположным в другом.

С другой стороны, корреляция - это стандартизированное значение ковариации. Значение корреляции говорит нам как о силе, так и о направлении линейной зависимости и имеет диапазон от -1 до 1.

Теперь вы можете подумать, что это концепция статистики, а не линейной алгебры. Помните, я говорил вам, что линейная алгебра повсеместна? Используя концепции транспонирования и умножения матриц в линейной алгебре, у нас есть довольно изящное выражение для ковариационной матрицы:

Здесь X - это стандартизированная матрица данных, содержащая все числовые характеристики.

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

4. Классификация машин опорных векторов

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

Машина опорных векторов или SVM - это дискриминантный классификатор, который работает, находя поверхность принятия решений. Это контролируемый алгоритм машинного обучения.

В этом алгоритме мы строим каждый элемент данных как точку в n-мерном пространстве (где n - количество имеющихся у вас функций), причем значение каждой функции является значением конкретной координаты. Затем мы выполняем классификацию, находя гиперплоскость, которая очень хорошо различает два класса, то есть с максимальным запасом, которым в данном случае является C.

Гиперплоскость - это подпространство, размеры которого на единицу меньше соответствующего векторного пространства, поэтому это будет прямая линия для векторного 2D-пространства, 2D-плоскость для векторного 3D-пространства и т. Д. Опять же Vector Norm используется для расчета маржи.

Но что, если данные нельзя разделить линейно, как в случае ниже?

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

Давайте введем переменную z = x² + y². Вот как выглядят данные, если построить их по осям z и x:

Теперь это явно линейно разделимо линией z = a, где a - некоторая положительная константа. При преобразовании обратно в исходное пространство мы получаем поверхность принятия решения, которая представляет собой круг!

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

Уменьшение размерности

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

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

5. Анализ главных компонентов (PCA)

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

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

Собственные векторы для квадратной матрицы - это специальные ненулевые векторы, направление которых не меняется даже после применения линейного преобразования (что означает умножение) с матрицей. Они показаны в виде векторов красного цвета на рисунке ниже:

Вы можете легко реализовать PCA на Python, используя класс PCA в пакете scikit-learn:

Я применил PCA к Digits dataset из sklearn - коллекции изображений 8 × 8 рукописных цифр. Полученный мной сюжет впечатляет. Цифры выглядят красиво сгруппированными:

Перейдите к нашему Всеобъемлющему руководству по 12 методам уменьшения размерности с помощью кода на Python, чтобы получить более глубокое представление о PCA и 11 других методах уменьшения размерности. Честно говоря, это одна из лучших статей по этой теме, которую вы где-нибудь найдете.

6. Разложение по сингулярным значениям

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

А пока давайте поговорим о SVD в уменьшении размерности. В частности, это называется усеченный SVD.

  • Мы начинаем с большой матрицы числовых данных размером m x n A, где m - количество строк, а n - количество функций.
  • Разложите его на 3 матрицы, как показано здесь:

  • Выберите k сингулярных значений на основе диагональной матрицы и соответственно обрежьте (обрезайте) 3 матрицы:

  • Наконец, умножьте усеченные матрицы, чтобы получить преобразованную матрицу A_k. Он имеет размеры m x k. Итак, у него есть k функций с k ‹n

Вот код для реализации усеченного SVD в Python (он очень похож на PCA):

Применив усеченный SVD к данным Digits, я получил график ниже. Вы заметите, что это не так хорошо сгруппировано, как мы получили после PCA:

Обработка естественного языка (NLP)

Обработка естественного языка (NLP) сейчас является самой популярной областью науки о данных. В первую очередь это связано с крупными прорывами за последние 18 месяцев. Если вы все еще не определились, какую ветку выбрать - вам следует серьезно подумать о НЛП.

Итак, давайте посмотрим на пару интересных приложений линейной алгебры в НЛП. Это должно помочь изменить ваше решение!

7. Вложения слов

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

  1. Мета-атрибуты текста, такие как количество слов, количество специальных символов и т. Д.
  2. Атрибуты НЛП текста, использующие теги частей речи и грамматические отношения, такие как количество собственных существительных
  3. Обозначения векторных слов или вложения слов

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

Word2Vec и GloVe - две популярные модели для создания вложений Word.

Я обучил свою модель на корпусе Шекспира после небольшой предварительной обработки с использованием Word2Vec и получил вложение слова для слова мир:

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

Есть несколько других способов получить вложения Word. Прочтите нашу статью Интуитивное понимание встраивания слов: от векторов подсчета к Word2Vec.

8. Скрытый семантический анализ (ЛСА)

О чем вы впервые думаете, когда слышите эту группу слов - «принц, королевский, король, благородный»? Эти очень разные слова почти синонимы.

Теперь рассмотрим следующие предложения:

  • Питчер хозяев поля выглядел не в форме
  • На столе стоит кувшин сока.

Слово «кувшин» имеет разные значения, основанные на других словах в двух предложениях. В первом предложении это означает бейсболиста, а во втором - кувшин сока.

Оба этих набора слов легко интерпретировать нам, людям, имеющим многолетний опыт работы с языком. А как насчет машин? Здесь вступает в игру концепция тематического моделирования НЛП:

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

Скрытый семантический анализ (LSA) или скрытое семантическое индексирование - это один из методов тематического моделирования. Это еще одно применение разложения по сингулярным значениям.

Скрытый означает «скрытый». В соответствии со своим названием, LSA пытается захватить скрытые темы или темы из документов, используя контекст вокруг слов.

Я коротко опишу шаги LSA, поэтому обязательно ознакомьтесь с этим Простым введением в тематическое моделирование с использованием скрытого семантического анализа с кодом на Python для правильного и глубокого понимания.

  • Сначала сгенерируйте матрицу Document-Term для ваших данных.
  • Используйте SVD, чтобы разложить матрицу на 3 матрицы:
  1. Матрица Документ-Тема
  2. Важность темы Диагональная матрица
  3. Матрица тема-термин
  • Обрезать матрицы в зависимости от важности тем

Чтобы получить практический опыт работы с обработкой естественного языка, вы можете ознакомиться с нашим курсом НЛП с использованием Python. Курс рассчитан на новичков, и вы сможете создать 5 реальных проектов!

Компьютерное зрение

Еще одна область глубокого обучения, создающая волны - Computer Vision. Если вы хотите расширить свой набор навыков за пределы табличных данных (а вам следует это сделать), узнайте, как работать с изображениями.

Это расширит ваше текущее понимание машинного обучения, а также поможет быстро провести собеседование.

9. Представление изображений как тензоров.

Как вы учитываете «видение» компьютерного зрения? Очевидно, что компьютер обрабатывает изображения не так, как люди. Как я упоминал ранее, алгоритмы машинного обучения нуждаются в числовых функциях для работы.

Цифровое изображение состоит из небольших неделимых единиц, называемых пикселями. Рассмотрим рисунок ниже:

Это изображение нулевой цифры в оттенках серого состоит из 8 x 8 = 64 пикселя. Каждый пиксель имеет значение в диапазоне от 0 до 255. Значение 0 представляет черный пиксель, а 255 представляет белый пиксель.

Для удобства изображение в оттенках серого mxn может быть представлено как 2D-матрица с m строками и n столбцами с ячейками. содержащие соответствующие значения пикселей:

Но как насчет цветного изображения? Цветное изображение обычно хранится в системе RGB. Каждое изображение можно представить как представленное тремя двумерными матрицами, по одной для каждого канала R, G и B. Значение пикселя 0 в канале R представляет собой нулевую интенсивность красного цвета, а значение 255 представляет полную интенсивность красного цвета.

Тогда каждое значение пикселя представляет собой комбинацию соответствующих значений в трех каналах:

В действительности вместо использования трех матриц для представления изображения используется тензор. Тензор - это обобщенная n-мерная матрица. Для изображения RGB используется тензор 3-го порядка. Представьте себе три 2D-матрицы, расположенные одна за другой:

10. Свертка и обработка изображений.

2D-свертка - очень важная операция при обработке изображений. Он состоит из следующих шагов:

  1. Начните с небольшой матрицы весов, называемой ядром или фильтром.
  2. Продвиньте это ядро ​​по входным 2D-данным, выполняя поэлементное умножение
  3. Сложите полученные значения и поместите сумму в один выходной пиксель.

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

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

Удивительно, правда? Это, безусловно, мое самое любимое приложение линейной алгебры в науке о данных.

Теперь, когда вы знакомы с основами компьютерного зрения, пора начать свое путешествие в области компьютерного зрения с 16 потрясающих функций OpenCV. У нас также есть комплексный курс Компьютерное зрение с использованием глубокого обучения, в котором вы можете поработать над практическими примерами компьютерного зрения!

Конечные заметки

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

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

Первоначально опубликовано на https://www.analyticsvidhya.com 23 июля 2019 г.