Pytanie:
Regresja, gdy wynik jest w określonym przedziale czasu
Baron Yugovich
2018-02-28 09:45:27 UTC
view on stackexchange narkive permalink

Powiedzmy, że moje dane wyjściowe są ciągłe w przedziale $ [- 1, 1] $.Czy istnieje standardowa technika radzenia sobie z tym?Czy po prostu używam funkcji logistycznej, takiej samej jak w regresji logistycznej, ale do rzeczywistej regresji zamiast klasyfikacji?Jakie są inne opcje, jakie jest standardowe podejście?

Czy rzeczywiście znasz związek (y) funkcjonalny (e) między danymi wejściowymi a wynikami?Ile masz danych?
Próbuję ustalić związek poprzez regresję, nie jestem pewien, o co pytasz.Dane mieszczą się w dziesiątkach tysięcy punktów, a wymiarowość w dziesiątkach.
Chodzi mi o to, czy znasz funkcjonalną formę relacji, z rozsądnym stopniem dokładności, na przykład $ y = a + b \ exp (cx) $, daj lub weź trochę i próbujesz tylko oszacować parametry,czy też nie robisz tego w sposób nieparametryczny, np. przez losowe lasy lub maszyny zwiększające gradient?(Trzeba przyznać, że wybrałem dwie skrajności. Po prostu próbuję rozwinąć informacje zawarte w Twoim pytaniu).
Uważam, że zależność jest liniowa lub zbliżona do liniowej, dlatego szukam modelu w postaci „ważonej sumy cech”.Byłoby interesujące uzyskać trochę wglądu w inne podejścia, ale ze względów praktycznych jest to konfiguracja mojego problemu.
Ograniczona odpowiedź jest zwykle lepiej obsługiwana za pomocą funkcji łączenia, która ma być dopasowana, nawet jeśli związek z jej predyktorami jest bliski liniowości.Najwyraźniej jeśli $ y \ in [-1,1] $ to $ (y + 1) / 2 \ in [0,1] $ oraz linki logit i probit są wtedy najbardziej widoczne w ofercie.
@NickCox - podejrzewam, że przy dziesiątkach tysięcy obserwacji i tylko dziesiątkach zmiennych, zachowanie liniowości i ignorowanie granic może działać dobrze, ponieważ uzyskanie formy funkcjonalnej w przybliżeniu + wiele danych może dać szacunki, które są na tyle dokładne, żegranice nie mają znaczenia (niskie odchylenie ze względu na liniowość + mała wariancja = dobre wyniki). Zmiana funkcji łączenia zachowuje granice, ale przerywa związek funkcjonalny, a wzrost odchylenia może być większy niż jakakolwiek (mała) redukcja wariancji przy użyciufunkcja łącza przynosi.
@jbowman Żadna forma funkcjonalna, która ma pełny sens merytoryczny, nie będzie niezgodna z ograniczeniami odpowiedzi.To, czy to ugryzie w zakresie danych i dla celów badacza, jest dobrym pytaniem praktycznym, na które żadne z nas nie może odpowiedzieć dla PO.Dziwię się, że jako przykład wybrałeś wykładniczy;jest to dla mnie najbardziej oczywisty niewłaściwy model odpowiedzi tego rodzaju.Ale często prawdą jest, że liniowość jest zadowalająca w praktyce, zwłaszcza jeśli nie ma teoretycznych wskazówek dotyczących formy funkcjonalnej.Myślę, że zgadzamy się co do podstaw.
Odnośnie twojego pytania: tak, istnieje standardowa technika.Ale także jeśli chodzi o twoje pytanie, potrzebuje wielu dodatkowych informacji.Co próbujesz zrobić: wielowymiarowe przybliżenie funkcji?Regresja jako podstawa klasyfikacji (np. Modelowanie CDF konkretnego problemu)?Jeśli zaczniesz od regresji, różnica między regresją a klasyfikacją jest niewielka.Wszystko zależy od rodzaju problemu.Normalizacja pojedynczej zmiennej (tutaj: wyniku) jest niezwykle powszechna;przynajmniej w mojej dziedzinie zastosowań.Większe pytanie dotyczy tego, czy jest to zależne od danych.
@NickCox - wykładnia miała na celu jedynie zilustrowanie na przykładzie, co rozumiem przez „formę funkcjonalną”, a nie cokolwiek, co moim zdaniem może mieć zastosowanie, aby porównać i kontrastować z podejściami, które nie wymagają określania jednego, takiego jak lessy lub GBM lub ...
Dwa odpowiedzi:
David Dale
2018-03-05 00:55:08 UTC
view on stackexchange narkive permalink

Odpowiednia technika zależy od celu

Jeśli tworzysz model do wnioskowania, powinieneś skupić się na właściwościach dystrybucji celu w zależności od współzmiennych, $ p (y | x) $.

Na przykład wartość 0,5 USD (y + 1) $ może zostać podzielona jako $ Beta (\ alpha (x), \ beta (x)) $. W takim przypadku można dokonać estymacji maksymalnej wiarygodności parametrów funkcji $ \ alpha (x) $ i $ \ beta (x) $ i znaleźć dla nich najlepszą postać (np. Liniową lub log-liniową). Aby uzyskać więcej informacji, kliknij „regresję beta” Google.

Zamiast $ Beta $ możesz dopasować GLM do dowolnej funkcji linku (w rzeczywistości powszechnie używany jest link logit). Możesz również zmapować $ y $ na $ (- \ infty, \ infty) $ z dowolną funkcją i użyć nieograniczonej regresji. Jednak ostatnie podejście może się nie powieść, jeśli dane zawierają dokładnie $ \ pm 1 $ s.

Kolejną sztuczką jest przekształcenie regresji w klasyfikację ważoną. Z każdej obserwacji szkoleniowej $ (x, y) $ można wygenerować dwie obserwacje $ (x, 1) $ i $ (x, 0) $ z odpowiednimi wagami $ \ frac {1 + y} {2} $ i $ \ frac {1-y} {2} $, dopasuj klasyfikator probabilistyczny (np. Regresja logistyczna lub probitowa), a następnie przekształć przewidywane prawdopodobieństwo 1 $ z powrotem do $ y $.

Jeśli budujesz model a do przewidywania, właściwości probabilistyczne mogą być ignorowane, po prostu skup się na przewidywaniu $ y $ tak blisko, jak to możliwe, cokolwiek to znaczy. W tym przypadku możesz dopasować dowolną funkcję $ y = f (x) $ i po prostu skrócić poza $ [- 1, 1] $. Takie podejście pozwala wypróbować wiele różnych algorytmów regresji bez zbytniego przejmowania się granicami na $ y $.

Ponadto kilka modeli uczenia maszynowego (np. drzewa decyzyjne i ich zbiory losowe lasy, k-najbliższego sąsiada lub jakakolwiek inna metoda, której prognoza a jest średnią ważoną próbek szkoleniowych) z założenia nie jest w stanie przewidzieć wyższego niż najwyższy trening wartość lub niższa od najniższej. Jeśli ich użyjesz, możesz nigdy nie martwić się o przedział $ y $.

Jakie podejście jest standardowe, zależy od domeny i celu. Ale dopasowanie funkcji logistycznej do danych ciągłych wydaje się być w porządku:

  • zawsze przewiduje w $ (- 1, 1) $
  • działa nawet z dokładnym $ \ pm 1 $
  • uogólniona forma liniowa daje podstawę do wnioskowania i wyboru cech
  • w większości przypadków miał przyzwoitą dokładność przewidywania.

Teraz nadszedł czas na implementation. Istnieje przykład kodu R , który ocenia taki model.

  set.seed (1)
data = data.frame (x = 1: 100)
dane $ y = 1 / (1 + exp (5-0,1 * (dane $ x) + rnorm (100)))

model = glm (y ~ x, rodzina = 'dwumian', dane = dane)
podsumowanie (model)
działka (x, y)
linie (x, prognoza (model, dane, typ = 'odpowiedź'))
 

Wyświetla następującą tabelę oszacowanych współczynników (zbliżonych do „prawdziwych” współczynników, których użyłem)

  Współczynniki:
            Oszacuj Std. Wartość błędu z Pr (> | z |)
(Przechwycenie) -4,48814 0,88243 -5,086 3,65e-07 ***
x 0,08713 0,01615 5,394 6,89e-08 ***
 

i zdjęcie z danymi treningowymi i dopasowaną funkcją

enter image description here

Niestety Python sklearn nie pozwala na uruchomienie regresji logistycznej w trybie regresji, ale jest to możliwe w przypadku statsmodels - ma klasa Logit , która zezwala na ciągłe cele. Interfejs i wyjście są bardzo podobne do tych z R :

  importuj pandy jako pd
importuj numpy jako np
import matplotlib.pyplot jako plt
import statsmodels.formula.api jako smf
np.random.seed (1)
df = pd.DataFrame ({'x': range (100)})
df ['y'] = 1 / (1 + np.exp (5-0,1 * (df.x) + np.random.normal (size = 100)))
model = smf.logit ('y ~ x', dane = df) .fit ()
drukuj (model.params)
plt.scatter (df.x, df.y)
plt.plot (df.x, model.predict (df), kolor = 'k')
plt.show ()
 

Jeszcze jedną kwestią wartą rozważenia jest metryka oceny dla twojego modelu.Wraz ze standardowymi RMSE i MAE, w takich problemowych metrykach opartych na rangach, takich jak korelacja Spearmana, mogą być przydatne.Jeśli zamiast regresji wykonujesz klasyfikację ważoną, możesz również obliczyć ważone metryki klasyfikacji, takie jak ROC AUC.

Uzasadnieniem dla takich wskaźników jest to, że na końcu możesz nie chcieć przewidywać $ y $ tak dokładnie, jak to możliwe, ale oddzielić dolny $ y $ od wysokiego $ y $ tak dokładnie, jak to możliwe, ale nie znaszpróg z góry lub jest zmienny.Wskaźniki oparte na rangach lepiej odzwierciedlają ten proces niż wskaźniki oparte na różnicach.

Więc mówisz, że możliwe jest użycie regresji logistycznej do rzeczywistej regresji zamiast klasyfikacji?Czy implementacja sklearn będzie do tego odpowiednia?
Nie, implementacja sklearn jest ściśle klasyfikatorem.Ale na przykład GLM w R pozwala na takie sztuczki (rzuca tylko ostrzeżenie).Załączam kod.
Regresja logistyczna _qua_ regresja jest historycznym głównym nurtem statystyki.Przewidywanie jest czasami pożądaną aplikacją.
Rafael Marazuela
2018-03-06 23:39:41 UTC
view on stackexchange narkive permalink

Teoria prostej regresji liniowej jest bardziej rozwinięta dla zmiennych normalnych niż dla innych rozkładów.Kiedy mamy do czynienia z problemem takim jak Twój, możemy skorzystać z zmiany zmiennych.W Twoim przypadku użyję zmiany takiej jak:

$$ z = \ frac {2y} {1-y ^ 2} = \ frac {1} {1-y} - \ frac {1} {1 + y} $$

Ta funkcja rośnie: jeśli $ y $ jest większe, $ z $ jest większe.Kiedy $ y $ jest blisko $ -1 $, $ z $ jest blisko $ - \ infty $;kiedy $ y $ jest blisko $ + 1 $, $ z $ jest blisko $ + \ infty $.Dzięki tej sztuczce możesz obliczyć liniową zależność między zmienną niezależną $ x $ a zmienną zależną $ z $.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...