Czy to dobra praktyka inżynierii obiektów?


10

Mam praktyczne pytanie dotyczące inżynierii funkcji ... powiedzmy, że chcę przewidzieć ceny domów za pomocą regresji logistycznej i użyłem wielu funkcji, w tym kodu pocztowego. Następnie, sprawdzając ważność funkcji, zdaję sobie sprawę, że zip jest całkiem dobrą funkcją, więc postanowiłem dodać więcej funkcji opartych na zipie - na przykład idę do biura spisu ludności i uzyskuję średni dochód, populację, liczbę szkół i liczbę szpitali każdego zamka błyskawicznego. Dzięki tym czterem nowym funkcjom uważam, że wydajność modelu jest teraz lepsza. Dodam więc jeszcze więcej funkcji związanych z zipem ... I ten cykl trwa i trwa. Ostatecznie model będzie zdominowany przez te funkcje związane z zipem, prawda?

Moje pytania:

  1. Czy to ma sens, robiąc to w pierwszej kolejności?
  2. Jeśli tak, to skąd mam wiedzieć, kiedy należy zatrzymać ten cykl?
  3. Jeśli nie, dlaczego nie?

Odpowiedzi:


6

Jeśli możesz nadal dodawać nowe dane (w oparciu o główną koncepcję, taką jak obszar, tj. Kod pocztowy), a wydajność twojego modelu poprawia się, wtedy jest to oczywiście dozwolone ... zakładając, że zależy ci tylko na ostatecznym wyniku.

Istnieją wskaźniki, które będą próbowały cię z tym poprowadzić, takie jak Akaike Information Criterion (AIC) lub porównywalne Bayesian Information Criterion (BIC). Pomagają one zasadniczo wybrać model na podstawie jego wydajności, ponosząc karę za wszystkie dodatkowe parametry, które są wprowadzane i które należy oszacować. AIC wygląda następująco:

AIC=2k2ln(L^)

gdzie to liczba parametrów do oszacowania, tj. liczba zastosowanych cech, ponieważ każdy z nich będzie miał jeden współczynnik w regresji logistycznej. to maksymalna wartość Maksymalnego prawdopodobieństwa (równoważna optymalnemu wynikowi). BIC po prostu używa nieco inaczej do karania modeli.L kkL^k

Kryteria te mogą pomóc ci powiedzieć, kiedy przestać, ponieważ możesz wypróbować modele o coraz większej liczbie parametrów i po prostu wziąć model o najlepszej wartości AIC lub BIC.

Jeśli nadal masz w modelu inne funkcje, które nie są związane z ZIP, mogą zostać potencjalnie przytłoczone - zależy to od używanego modelu. Mogą jednak również wyjaśniać pewne rzeczy dotyczące zestawu danych, których po prostu nie można zawrzeć w danych ZIP, takie jak powierzchnia podłogi domu (zakładając, że jest to względnie niezależne od kodu pocztowego).

W takim przypadku możesz porównać je do czegoś takiego jak Analiza głównych składników, gdzie zbiór funkcji wyjaśnia jeden wymiar wariancji w zbiorze danych, podczas gdy inne funkcje wyjaśniają inny wymiar. Bez względu na to, ile masz funkcji związanych z ZIP, nigdy nie możesz wyjaśnić znaczenia powierzchni podłogi.


7

1) Tak, to ma sens. Próba ręcznego tworzenia funkcji pomoże uczniom (tj. Modelom) w uzyskaniu większej ilości informacji z surowych danych, ponieważ surowe dane nie zawsze są w formie umożliwiającej naukę, ale zawsze można z nich zbudować takie cechy. Dodawana funkcja oparta jest na jednej funkcji. To jest powszechne. Jednak Twój uczeń, regresja logistyczna, jest wrażliwy na wielokulturowość. Musisz uważać, która funkcja i ile funkcji dodać. W przeciwnym razie model może się przepasować.

2) Ponieważ używasz regresji logistycznej, zawsze możesz użyć AIC lub wykonać statystyczny test istotności, taki jak test chi-kwadrat (test dobroci dopasowania) przed dodaniem nowej struktury, aby zdecydować, czy rozkład odpowiedzi naprawdę jest inny z tą strukturą i bez. Jest to szczególnie przydatne, gdy brakuje danych. Innym sposobem jest dodanie kary do twojego modelu. Na przykład logistyczna regresja lasso.

3) Dodanie nowych funkcji nie zawsze jest dobrym pomysłem. Uważaj na przekleństwo wielowymiarowości. Dodając nową funkcję, dodajesz nowy wymiar do swoich danych. Naiwnie można by pomyśleć, że gromadzenie większej liczby funkcji nigdy nie boli, ponieważ w najgorszym przypadku nie dostarczają żadnych nowych informacji o klasie. Ale w rzeczywistości ich korzyści mogą zostać zrównoważone przekleństwem wymiarowości. Mam nadzieję, że przydatne mogą być przydatne przydatne informacje na temat sesji uczenia maszynowego6.


Czy @ user3768495 ocenia wydajność modelu poza próbą przy użyciu np. Weryfikacji krzyżowej? Jeśli tak, multikolinearność nie powinna stanowić problemu i nie powinien martwić się o nadmierne dopasowanie, ponieważ otrzyma informację o nadmiernym dopasowaniu poprzez zmniejszenie wydajności sprawdzania poprawności.
rinspy

@ rinspy overfitting ma wiele twarzy. Zaangażowanie zestawu sprawdzania poprawności może pomóc uniknąć nadmiernego dopasowania, ale nie może rozwiązać problemu. Na przykład niespójny rozkład między danymi treningowymi (podzielonymi na zestaw treningowy i zestaw walidacyjny) a rzeczywistą populacją. Nawet model sprawdza się w danych treningowych, może nie być uogólniony na rzeczywistą sytuację. Odniesienie z mojej odpowiedzi mówiło również o nadmiernym dopasowaniu.
Fansly,

To prawda, ale unikanie wielokoliniowości nie pomoże w „nadmiernym dopasowaniu” wynikającym ze zmian współzmiennych. Mówię tylko, że wielokoliniowość prawdopodobnie nie stanowi problemu, jeśli jest zainteresowany budowaniem modelu predykcyjnego (a nie opisowego).
rinspy

Moja koncepcja nadmiernego dopasowania dotyczy sytuacji, gdy model nie uogólnia się na nowy zestaw danych, a nie na danych szkoleniowych. Zobacz to
Fansly,

4

Zwykle im bogatsze funkcje, tym lepiej.

Należy jednak pamiętać o jednej rzeczy: regresje zasadniczo nie działają dobrze z danymi, które są wysoce skorelowane (wielokoliniowość). Gdy rozszerzysz swoje funkcje w ten sposób, warto o tym pamiętać.

Istnieje wiele informacji na ten temat (i potencjalne sposoby złagodzenia), po prostu regresja Google i wielokoliniowość.

W skrócie,

  1. Tak. Z całą pewnością.
  2. @ n1k31t4 ma kilka dobrych sugestii. Nie krępuj się generować funkcji, które Twoim zdaniem poprawią Twój model, a następnie możesz użyć technik takich jak PCA i innych technik wyboru funkcji, aby ograniczyć się do tego, co ważne.
  3. Inną rzeczą do rozważenia jest to, jak praktyczne jest to, jak wysiłek vs. wynik.

0

Funkcje to informacje o Twoim modelu. Im więcej informacji, tym lepiej będzie w stanie wykonać i przewidzieć. Im mniej, tym trudniej przewidzieć wartości. Tak więc krótki naser jest tak. Zawsze warto mieć jak najwięcej funkcji. Jest to jednak zawsze granica, ponieważ przeciążenie informacji może również spowodować spalenie procesora, dlatego należy uważać na liczbę opracowywanych funkcji. Ponadto niepotrzebne funkcje tylko zwiększają wypalenie, więc zawsze dobrą praktyką jest czyszczenie niektórych funkcji. Chodzi o całą fazę wstępnego przetwarzania danych.

Pierwsza odpowiedź zawiera kilka dobrych szczegółów na ten temat. Jeśli chodzi o zatrzymanie cyklu, dobrze jest kilka miar i czynników, o których należy pamiętać, aby sprawdzić, gdzie twój model przestał działać lepiej, a są to miary takie jak RMSE. Prostym przykładem będzie xgboostregresja danych i określenie liczby cykli. Uruchom model, a otrzymasz RMSE dla każdego cyklu. Zmniejszy się do limitu, po którym będziesz mógł wywnioskować, że model osiągnął plateau po pewnym cyklu. Tak działa tuning i optymalizacja modelu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.