Алексей, Вы даже представить Себе не можете, насколько ценна Ваша запись лекции, огромнейшее Вам спасибо! До чего всё отточено, непосредственно, открыто и увлекательно) Уже на 59 минуте получил ментальный ...удовольствие) Видна и тщательнейшая подготовка презентации, такое видел только в очень хороших онлайн-школах, но там этим занимаются целые отделы... Спасибо Вам ещё раз, именно благодаря Вам когда-то прослушанный курс линейной алгебры (весьма некачественный, увы) вновь заискрился любопытством и лучами понимания! Если это как-то возможно, прошу Вас, подарите русскоговорящему сообществу подобный этому видео курс по линейной алгебре, ему не будет ценны! Всех благ.
Мне кажется, вы лучший преподаватель, которого я встречала! Никто обычно не парится над визуализацией всех-всех понятий, чтобы студентам на интуитивном уровне все было понятно!
Сингулярное разложение (Singular Value Decomposition, SVD) - это разложение матрицы на произведение трёх матриц: U, Σ и Vᵀ, где U и V - ортогональные матрицы (т.е. их столбцы и строки ортогональны друг другу), а Σ - диагональная матрица с неотрицательными элементами. SVD широко используется в машинном обучении и анализе данных по следующим причинам: 1. Уменьшение размерности: С помощью SVD можно уменьшить размерность данных, отбросив некоторые малозначащие компоненты. Это позволяет сохранить наиболее информативные особенности данных и сократить количество признаков, что упрощает анализ и улучшает эффективность алгоритмов. 2. Приближенное восстановление матрицы: Используя только некоторое подмножество главных компонент, можно приближенно восстановить исходную матрицу. Это полезно, например, для сжатия изображений или удаления шума из данных. 3. Факторизация и понижение ранга: SVD позволяет разложить матрицу на произведение более простых компонент. Например, в рекомендательных системах SVD может быть использовано для факторизации матрицы пользователей и товаров, что позволяет оценить скрытые факторы, влияющие на взаимодействия между ними. Пример использования SVD на языке Python: ```python import numpy as np # Создаем матрицу размером 4x5 matrix = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20]]) # Применяем SVD U, s, VT = np.linalg.svd(matrix) # Печатаем матрицы U, Σ и V^T print("Матрица U:") print(U) print("Матрица Σ (диагональная):") print(np.diag(s)) print("Матрица V^T:") print(VT) ``` Этот пример демонстрирует применение функции `np.linalg.svd` из библиотеки NumPy для разложения матрицы на компоненты U, Σ и V^T. Компоненты Σ представлены в виде диагональной матрицы сингулярных значений. chatgpt
Огромное уважение автору. Снимаю шляпу. Осталось понять почему левые и правые сингулярные вектора это собственные вектора тех самых произведений исходной и транспонированной матриц. Как это увидеть? Кто-то понял? Я очень хочу понять :)
Чтобы это понять, надо посмотреть на формулы этого слайда: ruclips.net/video/AE4L00ELqdU/видео.html и увидеть в них спектральное разложение тех самых произведений исходной и транспонированной матриц. В спектральном разложении присутствует матрица собственных векторов (в соседних видео я обозначаю её P), а здесь в её роли выступает матрица U (в одном случае) и матрица V (в другом случае). Вот и получается, что столбцы матрицы U (матрицы V) являются собственными векторами для матриц-произведений. Если нужно повторить понятие "спектральное разложение" (не путать с сингулярным), то можно заглянуть сюда: ruclips.net/video/feOoab8TMgk/видео.html.
Возможно не только у меня одного не сложилось всей картины относительно матриы U и V. С точки зрения визуализации и алгебраического смысла все понятно. Однако, что концептуально хранится в данных матрицах? Если взять пример из рекомендательных систем, почему в матрицах U и V будут хранится сущности связанные с пользователями и предметами? (если мы применили данное разложение к матрице оценок пользователей фильмам)?
1:03:13 - не понял, почему транспонирование матрицы V должно совместить сингулярные векторы матрицы A с координатными осями? Ортогональная матрица при умножении на вектор поворачивает его, но в нашем случае ведь просто транспонирование собственных векторов
Пусть e1, e2, e3 - базисные векторы, вдоль которых отложены оси x, y, z. В результате умножения матрицы V на эти вектора получаются её столбцы v1, v2, v3. Это показано на 0:53:56. Таким образом v1=V*e1, v2=V*e2, v3=V*e3. Из этого следует, что e1=inv(V)*v1, e2 = inv(V)*v2, e3 = inv(V)*v3, где inv(V) - обратная от матрицы V. Но в случае с ортогональными матрицами обратная = транспонированная, поэтому e1=V^T*v1, e2=V^T*v2, e3=V^T*v3, где V^T - транспонированная от матрицы V. Вот и получается, что V^T переводит векторы векторы v1, v2, v3 (столбцы матрицы v) в векторы e1, e2, e3 (направления координатных осей). Простыми словами: тройка векторов (v1,v2,v3) получается из тройки векторов (e1,e2,e3) с помощью поворота матрицей V. Значит, (e1,e2,e3) получается из (v1,v2,v3) с помощью обратного поворота, а это как раз и делает матрица V^T.
SVD применяется в рекомендательных системах. А что если нам не известен один элемент матрицы? Что тогда с этим элементом делать и как такую матрицу? Заполнить пустые элементы нулями?
Это зависит от прикладной сферы и самих данных. Можно удалить строки с пропусками или заполнить какими-либо значениями. Никто не даст конкретную рекомендацию в общих словах, это сильно зависит от самих данных и их смысловой нагрузки. Иногда пустое значение - это тоже информация, которую нужно как-то отметить. И это тема не SVD разложения =) Одно можно сказать точно, для SVD в матрице пропусков быть не должно. Как заполнять пропуски - отдельная тема.
Спасибо тебе ОГРОМНОЕ! Неужели это все было так просто)
Преподавателю просто огромный респект, вот бы весь курс линейной алгебры с Вами посмотреть на ютубе!
Преподаватель очень крут. Не часто встретишь тех, кто свой предмет рассказывает с таким энтузиазмом. Лайк
Благодаря вам понял математическую суть SVD и многие вещи по ТУ, очень этого не хватало. Спасибо вам огромное!
Лучшее объяснение сингулярного разложения, что я встречал! Алексей, спасибо Вам огромное! Снимаю шляпу!
Спасибо Вам!
Вот это красава лектор! Я начал только смотреть и он просто шикарен: объяснение супер, пока лучше во всем Ютуб не нашел чем это!
Какое крутое видео! Спасибо вам, Алексей Перегудин! Записывайте ещё, очень хорошо объясняете, как повезло вашим студентам!
Алексей, Вы даже представить Себе не можете, насколько ценна Ваша запись лекции, огромнейшее Вам спасибо! До чего всё отточено, непосредственно, открыто и увлекательно)
Уже на 59 минуте получил ментальный ...удовольствие)
Видна и тщательнейшая подготовка презентации, такое видел только в очень хороших онлайн-школах, но там этим занимаются целые отделы...
Спасибо Вам ещё раз, именно благодаря Вам когда-то прослушанный курс линейной алгебры (весьма некачественный, увы) вновь заискрился любопытством и лучами понимания!
Если это как-то возможно, прошу Вас, подарите русскоговорящему сообществу подобный этому видео курс по линейной алгебре, ему не будет ценны! Всех благ.
Ох, после такого сообщения хочется жить и создавать!) Спасибо Вам огромное!!!
Мне кажется, вы лучший преподаватель, которого я встречала! Никто обычно не парится над визуализацией всех-всех понятий, чтобы студентам на интуитивном уровне все было понятно!
Не думал, что математика бывает настолько затягивающая и простая! Спасибо!
Пересмотрела кучу видео и полностью поняла про сингулярное после вашего. Спасибо!
Алексей Алексеевич, вы лучший преподаватель! Надеюсь, частотные методы в следующем семестре не будут уступать пла!
Спасибо большое, настолько подробно и интересно про сингулярное разложение никто не рассказывал!
Прекрасная лекция! Спасибо Вам большое!!!
Очень крутое видео!) В универе пропустил многие вещи мимо ушей, но сейчас все прояснилось.
Думаю, студентам это точно пригодится.
Спасибо огромное за лекцию, одно удовольствие слушать и понимать! 🔥
Очень очень круто,
очень хочется послушать о чем угодно, но побольше!
очень крутое обьяснение тем которые интуитивно вообще не понятно обьясняют везде
С трудом успеваю, но продолжайте😅😅😅
Таймкоды концов слайдов:
Свойства ортогональных матриц 13:00
Симметричные матрицы 27:55
Спектральное разложение симметричных матриц 31:30
Сингулярное разложение 43:00
Коммутативная диаграмма SVD 48:45
Терминология SVD 51:55 59:30
Связь с Rangeи NullSpace 1:10:15
Как находить спектральное разложение 1:15:40 1:18:20
Псевдо обратная 1:45:10
Нахождение псевдо обратной 1:46:45
Решение уравнений 1:53:55 1:59:20
Спасибо огромное! Самое подробное и понятное объяснение, вы действительно талантливый преподаватель
Знания + позитив, респект
Очень крутое, простое и наглядное обьяснение, всем рекомендую !!!!!
Вы мой краш
Алексей, спасибо. Очень крутое видео.
Красавчик, от души рассказывает)
отлично, Алексей
Спасибо
Великолепно!
Сингулярное разложение (Singular Value Decomposition, SVD) - это разложение матрицы на произведение трёх матриц: U, Σ и Vᵀ, где U и V - ортогональные матрицы (т.е. их столбцы и строки ортогональны друг другу), а Σ - диагональная матрица с неотрицательными элементами.
SVD широко используется в машинном обучении и анализе данных по следующим причинам:
1. Уменьшение размерности: С помощью SVD можно уменьшить размерность данных, отбросив некоторые малозначащие компоненты. Это позволяет сохранить наиболее информативные особенности данных и сократить количество признаков, что упрощает анализ и улучшает эффективность алгоритмов.
2. Приближенное восстановление матрицы: Используя только некоторое подмножество главных компонент, можно приближенно восстановить исходную матрицу. Это полезно, например, для сжатия изображений или удаления шума из данных.
3. Факторизация и понижение ранга: SVD позволяет разложить матрицу на произведение более простых компонент. Например, в рекомендательных системах SVD может быть использовано для факторизации матрицы пользователей и товаров, что позволяет оценить скрытые факторы, влияющие на взаимодействия между ними.
Пример использования SVD на языке Python:
```python
import numpy as np
# Создаем матрицу размером 4x5
matrix = np.array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]])
# Применяем SVD
U, s, VT = np.linalg.svd(matrix)
# Печатаем матрицы U, Σ и V^T
print("Матрица U:")
print(U)
print("Матрица Σ (диагональная):")
print(np.diag(s))
print("Матрица V^T:")
print(VT)
```
Этот пример демонстрирует применение функции `np.linalg.svd` из библиотеки NumPy для разложения матрицы на компоненты U, Σ и V^T. Компоненты Σ представлены в виде диагональной матрицы сингулярных значений.
chatgpt
Круто! Где бы теперь взять остальные лекции этого курса?
Я бы поставил три лайка если бы была возможность.
ЛАЙК + ПОДПИСКА ЗА ВИЗУАЛИЗАЦИЮ
веселый чувак
я влюблен
Чувак явно под коксом, но поясняет в целом неплохо
Огромное уважение автору. Снимаю шляпу. Осталось понять почему левые и правые сингулярные вектора это собственные вектора тех самых произведений исходной и транспонированной матриц. Как это увидеть? Кто-то понял? Я очень хочу понять :)
Чтобы это понять, надо посмотреть на формулы этого слайда: ruclips.net/video/AE4L00ELqdU/видео.html и увидеть в них спектральное разложение тех самых произведений исходной и транспонированной матриц. В спектральном разложении присутствует матрица собственных векторов (в соседних видео я обозначаю её P), а здесь в её роли выступает матрица U (в одном случае) и матрица V (в другом случае). Вот и получается, что столбцы матрицы U (матрицы V) являются собственными векторами для матриц-произведений. Если нужно повторить понятие "спектральное разложение" (не путать с сингулярным), то можно заглянуть сюда: ruclips.net/video/feOoab8TMgk/видео.html.
Возможно не только у меня одного не сложилось всей картины относительно матриы U и V. С точки зрения визуализации и алгебраического смысла все понятно.
Однако, что концептуально хранится в данных матрицах?
Если взять пример из рекомендательных систем, почему в матрицах U и V будут хранится сущности связанные с пользователями и предметами? (если мы применили данное разложение к матрице оценок пользователей фильмам)?
1:03:13 - не понял, почему транспонирование матрицы V должно совместить сингулярные векторы матрицы A с координатными осями?
Ортогональная матрица при умножении на вектор поворачивает его, но в нашем случае ведь просто транспонирование собственных векторов
Пусть e1, e2, e3 - базисные векторы, вдоль которых отложены оси x, y, z. В результате умножения матрицы V на эти вектора получаются её столбцы v1, v2, v3. Это показано на 0:53:56. Таким образом v1=V*e1, v2=V*e2, v3=V*e3. Из этого следует, что e1=inv(V)*v1, e2 = inv(V)*v2, e3 = inv(V)*v3, где inv(V) - обратная от матрицы V. Но в случае с ортогональными матрицами обратная = транспонированная, поэтому e1=V^T*v1, e2=V^T*v2, e3=V^T*v3, где V^T - транспонированная от матрицы V. Вот и получается, что V^T переводит векторы векторы v1, v2, v3 (столбцы матрицы v) в векторы e1, e2, e3 (направления координатных осей).
Простыми словами: тройка векторов (v1,v2,v3) получается из тройки векторов (e1,e2,e3) с помощью поворота матрицей V. Значит, (e1,e2,e3) получается из (v1,v2,v3) с помощью обратного поворота, а это как раз и делает матрица V^T.
@@Zeekless Очень понятно, спасибо!
SVD применяется в рекомендательных системах. А что если нам не известен один элемент матрицы? Что тогда с этим элементом делать и как такую матрицу? Заполнить пустые элементы нулями?
Это зависит от прикладной сферы и самих данных. Можно удалить строки с пропусками или заполнить какими-либо значениями. Никто не даст конкретную рекомендацию в общих словах, это сильно зависит от самих данных и их смысловой нагрузки. Иногда пустое значение - это тоже информация, которую нужно как-то отметить. И это тема не SVD разложения =) Одно можно сказать точно, для SVD в матрице пропусков быть не должно. Как заполнять пропуски - отдельная тема.
Алексей, отличная лекция! Спасибо огромное. Можете еще поделиться источником, о котором упоминаете в видео 1:36:18 ? Буду благодарна!!!
Спасибо! Вот источник: ruclips.net/video/QQ8vxj-9OfQ/видео.html. У него на канале много отличных видео.
@@Zeekless можно код визуализации пожалуйста
@@girrra1233 Здесь использовался только PowerPoint
@@Zeekless У вас в самом конце штука в математике сделана вы говорили
@@girrra1233 А, вы правы! Напишите мне, пожалуйста, в вк vk.com/zeekless, я передам файл.
Никто не оценил жёсткую читку на 59:12