2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Минимизация функционала, регрессия
Сообщение23.03.2023, 19:03 


07/03/11
690
Подскажите, пожалуйста, правильно ли я делаю. Хочу научиться предсказывать распределение целевой переменной по вектору признаков. Пусть настоящее распределение $p(y)$ хорошо приближается смесью равномерных распределений $\sum _{k=1..K} \varphi _k p(y | a_k, b_k)$, где $Y_k \sim \mathcal U (a_i, b_i)$, $[a_k, b_k)\cap [a_j, b_j) = \empty, i \neq j$. Тогда по выборке $(\mathbf x_n, y_n)_{n=1..N}$ я хочу минимизировать функционал

$$\mathbb E [(Y - y)^2] \to \min,$$

где $Y$ из нашего приближенного распределения. Пусть наша модель $f(\mathbf x | \theta)$ будет предсказывать вектор $\mathbf z \in \mathbb R^K$. Тогда наш функционал примет вид:

$$\frac 1n\sum _{n=1..N} \sum _{k=1..K} s_k(\mathbf z_n) \int (x - y_n)^2p(x| a_k, b_k)dx=$$
$$\frac 1n\sum _{n=1..N} \sum _{k=1..K} s_k(\mathbf z_n) \left[\frac {b_k-a_k}{12} + \left(\frac {a_k + b_k}{2} - y_n\right)^2\right],$$
где $s_k(\mathbf z) = \frac {\exp(z_k)}{\sum _i \exp (z_i)}$. Если мы потребуем, чтоб дисперсия каждой компоненты смеси была одинаковой, и обозначим $\mu _k = \frac {a_k + b_k}{2}$, то получим более простой вид функционала:

$$\frac 1n\sum _{n=1..N} \sum _{k=1..K} s_k(\mathbf z_n) \left(\mu _k - y_n\right)^2$$

Вопрос: я правильно понимаю, что последний функционал не будет выпуклым и находить его минимум градиентным спуском не получится? Что тогда делать, какой-то ЕМ алгоритм?

 Профиль  
                  
 
 Re: Минимизация функционала, регрессия
Сообщение23.03.2023, 21:39 


27/06/20
337
Немного запутался. Вектора $\mathbf a$ и $\mathbf b$ это данность, и единственные параметры для оптимизации тут это вектор $\mathbf \theta$, верно?

На всякий случай хотел уточнить: $p(y)$ и $p(x)$ это что? Плотность вероятности? Вероятность на интервале от $a_k$ до $b_k$? Функция распределения? Или в разных местах разные сущности?

 Профиль  
                  
 
 Re: Минимизация функционала, регрессия
Сообщение23.03.2023, 23:18 


07/03/11
690
Да, все, кроме $\theta$ у нас известно. $p(x)$ это плотность распределения, в данном случае
$$p(x|a,b)=\frac{1}{b-a}\mathbf 1_{[a, b)}$$ Также, явно не сказал, что $\mathbf z =\mathbf z(\theta)$.

 Профиль  
                  
 
 Re: Минимизация функционала, регрессия
Сообщение23.03.2023, 23:54 


27/06/20
337
А исходя из названия темы ("регрессия") следует предполагать, что $f(x)$ это чисто линейная история?
$\mathbf x \times \theta = \mathbf z$
И если $\mathbf x$ это не матрица, но вектор, то $\theta$ это, получается, вектор с одним элементом? И у оптимизации только один параметр?

 Профиль  
                  
 
 Re: Минимизация функционала, регрессия
Сообщение24.03.2023, 00:13 


07/03/11
690
$f(\mathbf x | \theta )$ может быть линейной, например: $f(\mathbf x | \theta ) = (\theta _{0,k} + \sum _{m=1..M}x_m\theta _{m,k})_{k=1..K}$. Но хотелось бы использовать градиентный бустинг или нейронную сеть.
В примере выше, $\theta $ -- это матрица $(M+1)\times K$. Но в целом, это может быть произвольный набор параметров модели.

 Профиль  
                  
 
 Re: Минимизация функционала, регрессия
Сообщение24.03.2023, 04:43 


27/06/20
337
vlad_light в сообщении #1586504 писал(а):
В примере выше, $\theta $ -- это матрица $(M+1)\times K$.
В плане выпуклости (и возможности оптимизировать путем аналитического нахождения производной), мне кажется, важно принять во внимание конкретную реализацию Вашей функции f(x).
Но предлагаемый функционал мне кажется странным.
Возмем к примеру упрощенную функцию f:
$\mathbf \Theta \times \mathbf x = \mathbf z $
Сразу выразим выборку $\mathbf y$ не в виде вектора абсолютных значений случайной величины, а в виде "индикаторной" матрицы, которая показывает, в какой интервал k попало индивидуальное значение в выборке:
$\mathbf Y = \begin{bmatrix}
1 & 0 & 0 & 0 & 0 \\
1 & 0 & 0 & 0 & 0 \\
0 & 0 & 1 & 0 & 0 \\
0 & 1 & 0 & 0 & 0
\end{bmatrix}$
Также возмем вспомогательный вектор
$\mathbf i = \begin{bmatrix}
-1 \\
-1 \\
-1 \\
-1
\end{bmatrix}$
Мне кажется, функционал должен быть:
$f(\mathbf \Theta) = \mathbf i^\intercal \times \mathbf Y \times \ln(s(\mathbf \Theta \times \mathbf x ))$

или (что эквивалентно)

$f(\mathbf \Theta) = \mathbf i^\intercal \times \mathbf Y \times \mathbf \Theta \times \mathbf x + n \times \ln{\sum\limits_{k}^{} e^{\mathbf \Theta \times \mathbf x} }$

Как Вам кажется?

Производная такого функционала вроде как аналитически нулевому вектору (тут матрице) равняться не может. А значит, у функции нет минимума и не помешали бы какие-то подходящие ограничения-неравенства для $\mathbf \Theta$

 Профиль  
                  
 
 Re: Минимизация функционала, регрессия
Сообщение25.03.2023, 07:59 


27/06/20
337
vlad_light в сообщении #1586457 писал(а):
Тогда по выборке $(\mathbf x_n, y_n)_{n=1..N}$
vlad_light в сообщении #1586504 писал(а):
В примере выше, $\theta $ -- это матрица $(M+1)\times K$.
Неверно выразил идею.
Упрощенная функция f будет:
$ \mathbf{X} \times \mathbf{\Theta} = \mathbf{Z} $
И функционал соответственно:
$f(\mathbf \Theta) = -(\mathbf Y \cdot \ln ( s( \mathbf{X} \times \mathbf{\Theta} )))
$
где $\cdot$ — скалярное произведение матриц.

Ваш функционал (при отсутствии предсказательной ценности $ \mathbf{X} $) пытается минимизировать 2-й момент разницы двух независимых случайных величин, который как обычно равен сумме дисперсии этой разницы и квадрату мат ожидания. При этом дисперсия этой разницы равна сумме дисперсий выборки $ \mathbf{y} $ и дисперсии моделируемого распределения. А мат ожидание этой разницы по модулю равно модулю разницы выборочного среднего $ \mathbf{y} $ и мат ожидания моделируемого распределения. Соответственно оптимизация будет подтягивать матожидание моделируемого распределения к выборочной средней $ \mathbf{y} $ (что ок), но будет пытаться уменьшить дисперсию моделируемого распределения до нуля (а это совсем не то, что мы хотели).

 Профиль  
                  
 
 Re: Минимизация функционала, регрессия
Сообщение25.03.2023, 09:35 


27/06/20
337
Иллюстрация применения на примере равномерного распределения и нормально распределенного экзогенного регрессора $\mathbf{X}$ без какой-либо предсказательной ценности. При $m$ равному или превосходящему $k$ на низких $n$ даст мощнейший overfitting.

код: [ скачать ] [ спрятать ]
Используется синтаксис Python
import numpy as np
from scipy.optimize import minimize

n = 3000
m = 8
k = 10

s = lambda x: np.exp(x) / np.exp(x).sum(axis=1)

def f(x):
    A = np.matrix(x.reshape(m, k))
    return -np.tensordot(Y, np.log(s(X * A)))

X = np.matrix(np.random.normal(size=(n, m)))
y = np.random.uniform(low=0.0, high=1.0, size=n)

Y = np.matrix(np.zeros(shape=(n, k)))
for loc in zip(range(n),(y * 10.0).astype(int)):
    Y[loc[0], loc[1]] = 1.0

результат = minimize(fun=f, x0=np.ones(k * m))
   
прогноз = np.asarray(np.exp(X * np.matrix(результат.x.reshape(m, k))))
прогноз /= прогноз.sum(axis=1).reshape(n, 1)
print(прогноз.round(1))

print(f"Показатель отсутствия overfitting {np.abs(прогноз.round(0) - Y).sum()}")
 

 Профиль  
                  
 
 Re: Минимизация функционала, регрессия
Сообщение31.03.2023, 16:08 


07/03/11
690
Прошу прощения, что долго не отвечал.

Вы правы, ошибка в самом начале. Нужно минимизировать не $\mathbb E[(Y - y)^2]$, а правдоподобие модели $-\ln \mathcal L(Y, y)$.

Но в таком случае, если носители распределений $p_k(y) = p(y|a_k, b_k)$ не будут пересекаться, то задача превратиться в классификацию, что не совсем то, что я хотел.

У меня удалось добиться похожего эффекта, если взять в качестве $p_k = \mathcal N_k$, но это уже другая история :-)

Спасибо большое за ответы, проблему нашли, исправили, тему можно закрывать.

(Оффтоп)

P.S. если вдруг интересно, я делаю custom loss для xgboost, который позволяет в качестве $f$ брать деревья, что значительно сложнее, чем линейная функция. Похожую штуку можно сделать для нейронных сетей, вот пример.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: epros


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group