(Lata później) częściowo-liniowe funkcje to splajny stopnia 1, co można powiedzieć większości monterów splajnu.
Na
przykład scipy.interpolate.UnivariateSpline może być uruchamiany z k=1
parametrem wygładzania s
, z którym będziesz musiał grać - patrz
scipy-interpolacja-z-splajnami-zmiennymi .
W Matlab zobacz,
jak wybrać węzły .
Dodano: znalezienie optymalnych węzłów nie jest łatwe, ponieważ może istnieć wiele lokalnych optymów. Zamiast tego podajesz UnivariateSpline cel s
, sumę błędu ^ 2, i pozwalasz określić liczbę węzłów. Po dopasowaniu get_residual()
otrzymasz rzeczywistą sumę błędu ^ 2 i get_knots()
węzłów. Niewielka zmiana s
może bardzo zmienić węzły, szczególnie w dużym hałasie - ymmv.
Wykres pokazuje dopasowanie do losowej funkcji liniowo-częściowej + szum dla różnych s
.
Aby dopasować stałe częściowe, zobacz
Wykrywanie kroków . Czy można tego użyć do pw liniowego? Nie wiem; rozpoczęcie od różnicowania zaszumionych danych zwiększy hałas, źle.
Mile widziane są inne funkcje testowe i / lub linki do dokumentów lub kodu. Kilka linków:
kawałek-regresja-liniowa-z-węzłami-jako-parametry
Splajny liniowe są bardzo wrażliwe na to, gdzie są umieszczone węzły,
wybór węzłów-dla-regresji sześciennych
Jest to trudny problem i większość ludzi wybiera węzły metodą prób i błędów.
Jedną z metod, która zyskuje na popularności, jest stosowanie splajnów z regresją karną.
Dodano marzec 2014:
Programowanie dynamiczne
to ogólna metoda rozwiązywania problemów z zagnieżdżonymi podproblemami:
optimal k lines
= optimal k - 1 lines up to some x
+ cost of the last line x to the end
over x (all x in theory, nearby x in practice)
Programowanie dynamiczne jest bardzo sprytne, ale czy można pokonać brutalną siłę + heurystykę w tym zadaniu?
Zobacz doskonałe notatki kursu Erika Demaine'a pod
MIT 6.006 Wprowadzenie do algorytmów, regresja liniowa segmentowana w
Google,
także zespół Johna Henry'ego.