Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр 🔮✨Магия, романтика… и шерсть на одежде! Разгадывай загадки, находи подсказки — и знай: каждое твое решение влияет на ход игры!

Мой Любимый Кот

Новеллы, Головоломки, Коты

Играть

Топ прошлой недели

  • solenakrivetka solenakrivetka 7 постов
  • Animalrescueed Animalrescueed 53 поста
  • ia.panorama ia.panorama 12 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
3
RuslanSenatorov
RuslanSenatorov

Выбор оптимального метода решения СЛАУ на основе анализа датасета⁠⁠

1 месяц назад

Полное руководство по выбору алгоритма для систем линейных уравнений

Выбор оптимального метода решения СЛАУ на основе анализа датасета

Выбор оптимального метода решения СЛАУ на основе анализа датасета

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


Введение

Решение систем линейных уравнений (СЛАУ) вида Ax = b — фундаментальная задача вычислительной математики и машинного обучения. Однако универсального метода не существует — выбор алгоритма критически зависит от характеристик датасета. Неправильный выбор может привести к катастрофическому замедлению вычислений или полной потере точности.

Ключевые характеристики датасета

1. Размер и структура матрицы

  • n_samples × n_features — соотношение наблюдений и признаков

  • Плотность/разреженность — процент ненулевых элементов

  • Обусловленность — число обусловленности матрицы

2. Вычислительные ограничения

  • Объем оперативной памяти

  • Требования к точности

  • Время вычислений

Дерево решений для выбора метода

Маленькие датасеты (n < 1000)

Плотные хорошо обусловленные матрицы

# Холецкий — самый быстрый для POSDEF матриц

if np.all(np.linalg.eigvals(A) > 0):

L = np.linalg.cholesky(A)

x = solve_triangular(L.T, solve_triangular(L, b, lower=True))

Матрицы общего вида

# QR-разложение — золотой стандарт

Q, R = np.linalg.qr(A)

x = solve_triangular(R, Q.T @ b)

Плохо обусловленные системы

# SVD — максимальная устойчивость

U, s, Vt = np.linalg.svd(A, full_matrices=False)

x = Vt.T @ np.diag(1/s) @ U.T @ b


***

Средние датасеты (1000 < n < 10,000)

"Высокие" матрицы (n_samples >> n_features)

# QR остается оптимальным

# Сложность O(mn²) эффективна при m >> n

Q, R = np.linalg.qr(A)

x = solve_triangular(R, Q.T @ b)

"Широкие" матрицы (n_samples << n_features)

# Итерационные методы или регуляризация

from sklearn.linear_model import Ridge

model = Ridge(alpha=1e-6, solver='lsqr')

model.fit(A, b)

x = model.coef_


***

Большие датасеты (n > 10,000)
Разреженные матрицы

# Итерационные методы

from scipy.sparse.linalg import lsqr

x = lsqr(A, b, iter_lim=1000)[0]


***

Огромные датасеты (n > 1,000,000)

Стохастические методы

from sklearn.linear_model import SGDRegressor

model = SGDRegressor(max_iter=1000, tol=1e-3)

model.fit(A_batches, b_batches) # Мини-батчи

Когда использовать нормальные уравнения?

"Высокие" матрицы (m >> n)

# Решение через нормальные уравнения

x = np.linalg.inv(A.T @ A) @ A.T @ b

# Или более устойчивый вариант

x = np.linalg.solve(A.T @ A, A.T @ b)

10000 наблюдений и 50 фитч - Идеально для нормальных уравнений

cond_number = np.linalg.cond(A.T @ A) # < 10^8 Хорошо обусловленная



Детальный анализ методов

Точные методы (прямые)

Итерационные методы

SGD | Подходит для огромных данных | Медленная сходимость

Заключение

Выбор оптимального метода решения СЛАУ — это искусство баланса между точностью, скоростью и требованиями к памяти. Ключевые рекомендации:

  • Маленькие матрицы → Прямые методы (QR/SVD)

  • Большие разреженные → Специализированные разреженные решатели

  • Огромные плотные → Итерационные методы с предобуславливанием

  • Экстремальные размеры → Стохастическая оптимизация

Главное правило: Всегда начинайте с анализа структуры и свойств вашей матрицы — это сэкономит часы вычислений и предотвратит численные катастрофы.

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

Показать полностью 2
[моё] Искусственный интеллект Исследования Ученые Линейная алгебра Вычислительная математика Численные методы Машинное обучение Data Science Deep learning Наука Анализ данных Длиннопост
2
Oleg.258062

Найти сумму элементов -  дробного ряда⁠⁠

5 лет назад

Привет читателем и  комментаторам на этом сайте страницы Пикабу.  Мой вопрос?!

Каждому математику известен результат для задачи m / 2^m. Задачи по поиску суммы ряда где m или n это натуральные числа от одного до n. (Сумма=2.!)

И вопрос? Если число m будет равно 30 какая получится / С,  если посчитать ряд m от 1 до 30 и если возможно посчитать сумму до m равна 255, каким будет решение можно ли её записать в сокращённом виде, И так чему тут будет равна сумма. ? Всем

пока...

Прикладная математика День математика Математика и жизнь Вычислительная математика Математика просто Текст
14
alferovavika
alferovavika
Споры о науке

Число пи⁠⁠

5 лет назад

Я:бабушка, как число пи выучить

Бабушка: лучше стихи бы учила

Я: стихи для малышей

P.S я реально его учу

Число пи
[моё] Высшая математика Вычислительная математика
27
Oleg.258062

Математика⁠⁠

5 лет назад

Добрый вечер, привет, здесь я хочу спросить вопрос по математики. Опрос который я хотел узнать и спросить состоит в том, чтобы сложить сумму ряда чисел 1 + 1/ 2^5 + 1 /3^5+ 1/4 ^5 и так далее, 5 степени. А ещё, также, сколько получится если посчитать этот ряд до n равны 99. Сможет ли, это количество @, этих рациональных чисел, повысить сумму ряда а ещё

быть выше чем число ~ будет = 1+(0.037.), или n которая будет равно 1000,  конечно этой сумме. Так что, мне нужно подсчитать сумму ряда где С степень ряда равна 5. Напишите мне также пожалуйста, ваше мнение, чем отличается высшая математика от алгебры. Этот вопрос из алгебры или по математике. Пока всё, пока. Напишите мне ваш комментарий, по алгебре, а не по русскому.

Вычислительная математика Алгебра Высшая математика Текст
16
1
little.prince

К математикам⁠⁠

7 лет назад

Доброго времени суток!

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

P.S. за верность терминов не ручаюсь, поэтому в тегах набрал интересных разделов )

[моё] Высшая математика Дискретная математика Прикладная математика Вычислительная математика Текст
18
37
nbvehbectw
nbvehbectw

Метод быстрого умножения Карацубы⁠⁠

9 лет назад

Приветствую, пикабушники.

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

Для начала нужно прояснить пару моментов.

1. Что сложнее: сложение или умножение? Ответ очевиден - умножение. Хотя бы потому, что при умножении нужно применять сложение, причем не один раз. Именно поэтому при оценивании сложности алгоритма будем считать только количество умножений, а влияние количества сложений будем считать несоизмеримо малым.

2. Как зависит сложность умножения от количества цифр в числе? Разберем этот вопрос пошагово.

2.1. Умножение однозначных чисел. Для этого нужно знать таблицу умножения. Будем считать, что это просто, и условно обозначим сложность числом 1.

2.2. Умножение n-значного числа на однозначное. Для этой операции нужно n раз перемножить однозначные числа (плюс сложения, но их мы решили не учитывать). Значит, это в n раз сложнее, чем 1, то есть сложность можно обозначить n*1 = n.

2.3. Умножение n-значных чисел. Если умножать в столбик, то это в n раз сложнее, чем предыдущий случай, т.к. его нужно применить n раз. Итого получаем n*n = n^2.


Теперь перейдем к самому методу. Для удобства будем рассматривать числа длины 2n (если количество цифр в числе нечетно, можно просто приписать слева 0). При умножении в столбик получим сложность (2n)^2 = 4n^2.

Разобьем перемножаемые числа посередине на два числа длины n:

Тогда сами числа можно записать в следующем виде:

Распишем подробно их произведение:

Напомню, что умножение на степень десятки осуществляется простым приписыванием справа нулей в количестве равном степени, а значит в подсчете сложности может не учитываться. Итого получаем, что нужно посчитать следующие 4 произведения n-значных чисел:

Каждое из них считается со сложностью n^2, всего их 4, а значит суммарная сложность 4n^2. То есть мы другим путем получили уже полученный ранее результат.

Теперь мы подошли к самой сути метода быстрого умножения. Вместо этих четырех произведений А. А. Карацуба предложил вычислять следующие три:

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

Раскрывая скобки, получим в чистом виде среднее слагаемое, при этом дополнительно мы использовали лишь операции сложения и вычитания. То есть нам удалось сократить сложность с 4n^2 до 3n^2.


Теперь вопрос: как вычислять эти три произведения? Ведь если у нас были 100-значные числа, то мы получили 50-значные, а их тоже вычислять довольно сложно. Ответ напрашивается сам: точно так же! Мы повторим ту же процедуру для половинок чисел, тем самым снизив и сложность их перемножения с n^2 до меньшего значения. Таким образом, можно рекурсивно применять метод, остановившись на однозначных числах, которые уже перемножаются просто.

Не буду вдаваться в подробности вычислений, а скажу лишь, что с помощью этого метода сложность умножения n-значных чисел снижается с n^2 до примерно n^1,585 или, если быть точным, то до

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

То есть в точности тот результат, который мы получили ранее. В случае умножения Карацубы у нас 3 умножения, что и видно в формуле.


Историческая справка.

В 1956 году один из ведущих математиков XX века А. Н. Колмогоров высказал гипотезу, что не существует метода умножения чисел со сложностью менее n^2. Основана она была на том, что исторически до нас дошел метод умножения столбиком, сложность которого именно n^2. Ведь, если бы существовали методы проще, то за тысячелетия существования арифметики они бы уже были открыты. Однако в 1960 году студент мехмата МГУ А. А. Карацуба нашел метод, который я грубо изложил в этом посте. Сам Карацуба был очень скромным, и, прежде чем представить этот метод, долго просил своих товарищей найти у него ошибку. Однако мало того, что ошибка не была найдена, благодаря его открытию еще и был создан новый раздел вычислительной математики - теория быстрых алгоритмов. На настоящий момент уже найдены еще более быстрые методы умножения, однако они все несоизмеримы с тем вкладом, который сделал Карацуба.


Материал, изложенный в посте, был прочитан год назад на факультете вычислительной математики и кибернетики МГУ на лекции по дискретной математике профессором В. Б. Алексеевым и только что воспроизведен мной по памяти (за исключением исторической справки, ее я частично подсмотрел в Википедии с:).

Показать полностью 8
[моё] Наука Математика Дискретная математика Вычислительная математика Алгоритм Познавательно Длиннопост
10
Shinra
Shinra

Пикабу спасай.⁠⁠

11 лет назад
Уважаемые пикабушники, прошу вас, объясните мне затупку в чем заключается Метод Зейделя для решения СЛАУ. На сайтах искал, читал, нихрена не понял, поэтому если кто может обьяснить понятными словами, выручите пожалуйста.
Вычислительная математика Зейдель Текст
5
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии