Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

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

ПрограммированиеМашинное обучение+3
  · 23,9 K
Я очень рад быть частью этой группы и надеюсь внести положительный вклад.   · 4 янв 2023
Одним из способов сведения задачи многомерной нелинейной регрессии к последовательности линейных задач является использование итеративного метода, такого как алгоритм Гаусса-Ньютона. 
Алгоритм Гаусса-Ньютона начинается с начального предположения для параметров регрессионной модели, а затем итеративно улучшает это предположение, линеаризуя модель вокруг текущей оценки параметров и решая задачу линейной регрессии, чтобы найти следующую улучшенную оценку. 
Этот процесс повторяется до тех пор, пока оценки параметров не сойдутся к удовлетворительному уровню точности.
Другой подход заключается в использовании базисного расширения, которое включает выражение нелинейной модели в виде линейной комбинации набора базисных функций. 
Например, если нелинейная модель имеет вид y = f(x), где x — вектор переменных, расширение базиса может включать выражение f как линейную комбинацию функций g_1(x), g_2(x) , …, g_n(x):
y = c_1 * g_1 (x) + c_2 * g_2 (x) + … + c_n * g_n (x)
где c_1, c_2, …, c_n — оцениваемые коэффициенты. 
Затем это выражение можно переписать в матричной форме как 
y = Gc
где G — матрица со значениями базисных функций в точках входных данных, а c — вектор коэффициентов. 
Тогда задача оценки коэффициентов "c" может быть решена как линейная задача наименьших квадратов.
Это не совсем точный пример на Python.
Метод, называемый линейной регрессией с полиномиальными признаками. Этот метод включает преобразование независимых переменных задачи нелинейной регрессии в полиномиальные члены, а затем подбор модели линейной регрессии к полученным преобразованным данным.
Если у вас Линукс может понадобиться установка sudo apt-get install python3-gi-cairo
Вот пример того, как это сделать в Python:
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
import numpy as np

# Сгенерируйте некоторые синтетические данные
X = np.linspace(-3, 3, 100)
y = X**3 - 2 * X**2 + 1

# Создайте конвейер, соответствующий модели полиномиальной регрессии.
model = Pipeline([
    ('poly', PolynomialFeatures(degree=3)),
    ('linear', LinearRegression())
])
model.fit(X.reshape(-1, 1), y)

# Прогнозировать значения для диапазона входных значений
X_pred = np.linspace(-4, 4, 100)
y_pred = model.predict(X_pred.reshape(-1, 1))

# График исходных данных и прогнозируемых значений в режиме реального времени
plt.ion()
fig, ax = plt.subplots()
line1, = ax.plot(X, y, 'bo', label='Исходные данные')
line2, = ax.plot(X_pred, y_pred, 'r-', label='Прогнозируемые значения')
plt.legend(loc='upper left')
plt.show()

# Обновляйте  в режиме реального времени
for i in range(10):
    y_pred = model.predict(X_pred.reshape(-1, 1))
    line2.set_ydata(y_pred)
    fig.canvas.draw()
    plt.pause(0.9)

#plt.close()
Cвести задачу представления многомерной нелинейной регрессии к представлению в виде последовательности линейных задач - это весьма нетривиальная задача и дать ответ в виде формализованной последовательности действий - полагаю невозможно. Это как спросить - "как найти решение неоднородных дифференциальных уравнений высших порядков?". Правильный ответ - для разных... Читать далее
Астрономия, криптография  · 19 сент 2022
Если невязка в решении ожидается достаточно малой, а функция без особенностей, то линеаризацией.
Грубо говоря, вычисляем (или оцениваем) матрицу Якоби в точке приближения, решаем линейную задачу, получаем следующее приближение и т.д.. К примеру, в библиотеке NAG для этого есть E04FCF(), для Python есть пакет dfogn.
Математика  · 6 июл 2022
Нелинейность бывает разных типов. Если это нелинейность по переменным - то соответствующей заменой переменных, если по параметрам - соответствующим алгебраическим преобразованием. Может оказаться, что ничего не поможет, так что придется применять итерационные процедуры.
1 эксперт согласен
СТО, Мастер  · 12 мар 2023
Существует несколько методов для сведения задачи многомерной нелинейной регрессии к последовательности линейных задач. Один из наиболее распространенных методов - это линеаризация нелинейной функции в каждой точке регрессионной выборки и последующая линейная регрессия на линеаризованных данных. Пусть имеется набор данных, состоящий из n наблюдений (x_1, y_1), (x_2... Читать далее