# Optymalizacja 2024/25 ## Regresja liniowa Zajmiemy się zastosowaniem optymalizacji liniowej w dziale statystyki nazywanym regresją liniową. Następnie wykorzystamy regresję liniową do oszacowania złożoności metody sympleks. ## Jak mierzyć średnie? Zaczniemy od przykładu. Poniżej podane są wyniki egzaminu z Optymalizacji Liniowej (w procentach): $$28, 62, 80, 84, 86, 86, 92, 95, 98$$ Niech $m$ oznacza liczbę ocen ($m = 9$) i niech $b_i$, $i = 1, 2, \ldots, m$ oznacza ocenę (w porządku rosnącym, jak wyżej). Najprostszą średnią jaką możemy policzyć jest *średnia arytmetyczna* $$ \bar x = \frac 1m \sum_{i=1}^m b_i = 79.0 $$ Jest to przykład *statystyki*. Czy to dobra średnia? Czy wynik $80$ jest rzeczywiście powyżej średniej? Drugą (dobrze znaną z gimnazjum) średnią jest *mediana*: $$ \hat x = b_{(m+1)/2} = 86. $$ (Na potrzeby tych zajęć, dla uproszczenia, przyjmiemy, że $m$ jest zawsze nieparzyste.) Rzeczywiście, $86$ wydaje się bardziej "średnie" dla tego zestawu danych. ## Średnia artmetyczna jako zagadnienie optymalizacyjne Średnia arytmetyczna jest rozwiązaniem problemu minimalizacyjnego (nie jest to problem liniowy) $$ \bar x = {\arg\min}_{x \in \mathbb{R}} \sum_{i=1}^m (x - b_i)^2 $$ Dlaczego? $$ f(x) = \sum_{i=1}^m (x - b_i)^2 $$ $$ f'(\bar x) = \sum_{i = 1}^m 2(\bar x-b_i) = 0 $$ $$ m \bar x = \sum_i b_i $$ $$ \bar x = \frac 1m (\sum_i b_i) $$ ## Mediana jako zagadnienie optymalizacyjne Mediana jest rozwiązaniem problemu minimalizacyjnego $$ \hat x = {\arg\min}_{x \in \mathbb{R}} \sum_{i = 1}^m | x - b_i |. $$ Dlaczego? $$ f'(x) = \sum_{i=1}^m sgn (x - b_i) $$ Znak pochodnej zmienia się z ujemnego na dodatni dla środkowej wartości $b_i$ - czyli dla mediany. <center> ![](https://i.imgur.com/LWCRdvq.png) </center> ## Regresja liniowa Zakładamy, że na "losową" obserwację $b$ składają się nieznana wielkość $x$ i losowa fluktuacja $\varepsilon$: $$ b = x + \varepsilon. $$ Przeprowadzamy ciąg obserwacji i indeksujemy wyniki: $$ b_i = x + \varepsilon_i, i = 1, 2, \ldots, m. $$ Jak widzieliśmy wyżej, średnia arytmetyczna minimalizuje sumę kwadratów $\varepsilon_i$, mediana minimalizuje sumę modułów $\varepsilon_i$. Załóżmy, że zebraliśmy dane o ciśnieniu pacjentów i chcemy zbadać, jak zależy ono od wieku, wagi, płci, etc. Tak więc z każdą obserwacją $b$ (ciśnienie) związane są wartości *zmiennych kontrolnych* - $a_1$ to wiek, $a_2$ to BMI, $a_3$ to płeć ($0$ lub $1$), etc. Niech $n$ oznacza liczbę zmiennych kontrolnych, które rozważamy. W regresji liniowej **zakładamy**, że obserwacja $b$ zależy liniowo od zmiennych kontrolnych. Zakładamy więc, że istnieją (nieznane) wartości $x_j$, $j= 1,2,\ldots, n$, dla których $$ b = \sum_{j=1}^n a_j x_j + \varepsilon. $$ Oczywiście, dane gromadzimy w tysiącach przypadków, mamy więc ciąg obserwacji, które indeksujemy $$ b_i = \sum_{j=1}^n a_{ij} x_j + \varepsilon_i. $$ W zapisie macierzowym to $$ b = Ax + \varepsilon $$ W regresji linowej celem jest znalezienie wektora $x$, który najlepiej "tłumaczy" obserwacje $b$. Tak jak dla średniej arytmetycznej lub mediany, możemy zrobić to minimalizując sumę kwadratów lub modułów $\varepsilon_i$. Są też inne możliwości, które przedyskutujemy poniżej. ## $L^2$-regresja Rozważamy $p$-tą normę wektora $y \in \mathbb{R}^n$: $$ \| y \|_p = (\sum_i |y_i|^p)^{\frac 1p}. $$ Przypadek $p = 2$ to odległość euklidesowa. Drugim najważniejszym przypadkiem jest $p = 1$. (Trzecim $p = \infty$.) Minimalizując $\varepsilon$ w $L^2$-normie otrzymujemy zagadnienie $L^2$-regresji: $$ \bar x = {\arg\min}_{x} \| b - Ax \|^2_2. $$ Tak jak dla średniej arytmetycznej możemy wyznaczyć jawny wzór na $\bar x$. $$ f(x) = \| b - Ax \|^2_2 = \sum_i (b_i - \sum_j a_{ij} x_j)^2 $$ $$ \frac{\partial \bar x}{\partial x_k} = \sum_i 2 (b_i - \sum_j a_{ij} \bar x_j) (-a_{ik}) = 0 $$ Po uproszczeniu mamy dla $k= 1, 2, \ldots, n$: $$ \sum_i a_{ik} b_i = \sum_i \sum_j a_{ik} a_{ij} \bar x_j $$ $$ A^T b = A^T A \bar x $$ $$ \bar x = (A^T A)^{-1} A^T b. $$ ### Przykład ![](https://i.imgur.com/NQCI5dq.png) (Jedna zmienna kontrolna $a$, modelem jest $b = ax_1 + x_2$.) Obserwacje w zapisie macierzowym: $$ \begin{bmatrix}1\\\frac 52\\ 3\end{bmatrix} = \begin{bmatrix}0 & 1 \\ 2 & 1 \\ 4 & 1\end{bmatrix} \begin{bmatrix}x_1 \\ x_2\end{bmatrix} + \begin{bmatrix}\varepsilon_1 \\ \varepsilon_2 \\ \varepsilon_3 \end{bmatrix} $$ ## $L^1$-regresja Problem minimalizacyjny $$ \hat x = {\arg \min}_{x} \| b - Ax \|_1. $$ Mimo modułów jest to problem liniowy, bo $$ \min \sum_i | b_i - \sum_j a_{ij} x_j | $$ można zapisać jako $\sum_i t_i \to \min$ $t_i - |b_i - \sum_j a_{ij} x_j | = 0$ co jest równoważne problemowi minimalizacyjnemu $\sum_i t_i \to \min$ $-t_i \leq b_i - \sum_j a_{ij} x_j \leq t_i$ dla $i = 1, 2, \ldots, m$. ### Przykład (Ten sam przykład, tym razem w przypadku $L^1$.) (...) ## Jak szybka jest metoda sympleks? Kryterium optymalności są odpowiednie znaki w tabelce problemu: znaki funkcji celu mają być ujemne, a problem ma być dopuszczalny, tzn. znaki w kolumnie wyrazów wolnych mają być dodatnie. Tych znaków jest $m + n$. Szacujemy zakładając, że wierzchołek nie jest zdegenerowany, tzn. żadna z tych liczb nie jest równa zero. Spodziewamy się, że w losowym wierzchołku połowa znaków będzie prawidłowa: $\frac{m+n}2$. Spodziewamy się, że jeden krok metody sympleks poprawi jeden znak, a pozostałe zmieni "losowo", czyli średnio nic nie zmieni. W tym momencie możemy argumentować, że metoda sympleks będzie średnio wykonywać $\frac{m+n}2$ kroków, by dojść do wierzchołka optymalnego. Hipoteza: $$ T = 2^\alpha (m+n)^\beta $$ Logarytmując stronami i oznaczająć przez $\varepsilon$ odchylenie obserwacji od modelu otrzymujemy $$ \log T = \alpha \log 2 + \beta \log (m+n) + \varepsilon $$ Oczywiście wykonujemy ciąg eksperymentów $$ \begin{bmatrix} \log T_1 \\ \log T_2 \\ \vdots \\ \log T_k \end{bmatrix} = \begin{bmatrix} \log 2 & \log (m_1 + n_1) \\ \log 2 & \log (m_2 + n_2) \\ \vdots & \vdots \\ \log 2 & \log (m_k + n_k) \end{bmatrix} \begin{bmatrix} \alpha \\ \beta \end{bmatrix} + \begin{bmatrix} \varepsilon_1 \\ \varepsilon_2 \\ \vdots \\ \varepsilon_k \end{bmatrix} $$ Przy odpowiednich oznaczeniach $$ b = Ax + \varepsilon $$ Eksperymentalne dane są następujące ![](https://i.imgur.com/E7qht44.png) (Z książki Vanderbei'a.) Rozwiązując problem za pomocą $L^2$-regresji otrzymujemy $$ \begin{bmatrix}\bar\alpha \\ \bar\beta\end{bmatrix} = \begin{bmatrix}-1.03561 \\ 1.05152\end{bmatrix}. $$ Inaczej mówiąc $$ T \approx 0.488(m+n)^{1.052}. $$ Dla $L^1$-regresji otrzymujemy $$ \begin{bmatrix}\hat\alpha \\ \hat\beta\end{bmatrix} = \begin{bmatrix}-0.9508 \\ 1.0491\end{bmatrix}. $$ Czyli $$ T \approx 0.517(m+n)^{1.049}. $$ <center> ![](https://i.imgur.com/Wpkrg4t.png) Wykres (skale logarytmiczne) $T$ w zależności od $m+n$ dla $L^1$ i $L^2$ regresji. </center>