Распаковка общей структуры науки о данных

Концепция тензора была создана в 1900 году двумя итальянскими математиками, Туллио Леви-Чивита и Грегорио Риччи-Курбастро, и, как обычно, они основывались на работах других математиков. Страница «Тензор» в Википедии начинается:

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

Для нематематиков это большая работа!

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

Я считаю полезным визуализировать тензор в виде вложенных «списков» чисел с любым количеством «уровней». Другой способ визуализировать это - представить каждую ячейку в электронной таблице Excel, содержащей все содержимое другой электронной таблицы. Затем во второй таблице каждая ячейка связана с другой таблицей целиком и так далее. Каждую таблицу можно рассматривать как дополнительное «измерение».

Тензор «первого порядка» имеет только одно измерение. В информатике это можно было бы назвать «вектором», упорядоченным списком чисел. Тензор «второго порядка» был бы матрицей, подобной электронной таблице Excel, и имел бы два измерения. По мере увеличения размеров мы можем думать об этой информации как о векторах, матрицах или массивах, вложенных в массивы, с любым количеством измерений (n-размерность).

Вот как можно представить тензор третьего порядка:

Каждая из трех групп значений «верхнего уровня» представлена ​​разным цветом. В этом примере цифры каждого значения соответствуют конкретному месту этого значения в общей структуре данных. Самая правая цифра каждого значения соответствует группе верхнего уровня, к которой оно принадлежит. Все значения красного цвета относятся к группе 1 верхнего уровня, значения зеленого цвета - к группе 2, а значения красного - к группе 3.

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

Вот та же структура, визуализированная с другой информацией:

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

Более сложная визуализация возможна с трехмерным кубом. Каждый вертикальный слой куба будет содержать данные из одной из этих групп «верхнего уровня», создавая куб 3x3x3 с 27 уникальными «местоположениями». Но как только мы выходим за пределы трех измерений, наша способность визуализировать тензор с помощью графики теряется.

Из-за этого ограничения давайте вместо этого посмотрим, как мы будем кодировать одни и те же данные с помощью компьютерного программного обеспечения. Используя Python и Numpy, мы могли бы создать массив с числовыми данными из первого примера:

from numpy import array
T = array([
[[111,121,131], [211,221,231], [311,321,331]],
[[112,122,132], [212,222,232], [312,322,332]],
[[113,123,133], [213,223,233], [313,323,333]],
])

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

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

В одном из следующих постов я расскажу об «поэлементном» сложении, вычитании, умножении, делении тензоров и т. Д., А также о разнице между «произведением Адамара» и «тензорным произведением» - требуются тензоры одинаковой размерности и никто не делает.

В Интернете есть так много отличных ресурсов для обучения науке о данных. Вот еще несколько моих любимых ресурсов:

Я оптимистично настроен в отношении того, что ИИ будет все чаще использоваться для улучшения жизни всех нас. У вас есть проблема / задача в области науки о данных? Я с удовольствием помогу; давай подключимся!

Спасибо за прочтение!