9

Czy istnieją metody selekcji cech w Scikit-Learn (lub ogólnie w algach), które podają wagę zdolności/predykcyjności/ważności atrybutu do przewidywania określonego cel? Na przykład: from sklearn.datasets import load_iris, w rankingu każdego z 4 atrybutów wagi, aby przewidzieć osobno trzy gatunki tęczówki, ale dla znacznie bardziej złożonych zestawów danych o atrybutach w/~ 1k-10k.Zdolność predykcyjna atrybutu dla konkretnego celu w Pythonie, przy użyciu wyboru funkcji w Sklearn

Szukam czegoś analogicznego do feature_importances_ z RandomForestClassifier. Jednak RandomForestClassifer podaje wagi dla każdego atrybutu dla całego procesu prognozowania. Wagi nie muszą sumować się do jednego, ale chcę znaleźć sposób na skorelowanie określonego podzbioru atrybutów z konkretnym celem.

Najpierw spróbowałem "przeładowania" modeli, aby wzbogacić je dla określonego celu, ale wyniki nie wydawały się zbytnio zmieniać między celami. Po drugie, próbowałem przejść na ścieżkę ordynacji, stwierdzając, które atrybuty mają największą zmienność, ale nie przekłada się bezpośrednio na zdolność predykcyjną. Po trzecie próbowałem rzadkich modeli, ale napotkałem ten sam problem, co użycie feature_importances_.

Link do przykładu lub samouczek, który dokładnie to robi, jest wystarczający. Prawdopodobnie samouczek na temat przechodzenia przez drzewa decyzyjne w losowym lesie i przechowywania węzłów, które przewidują określone cele.

Odpowiedz

4

Pojedyncze cele

Większość modeli są prawie czarne skrzynki, więc jeśli jesteś zainteresowany w konkretnym celu, można po prostu spojrzeć na współczynników modelu i wykonać obliczenia modelu ręcznie, aby zrozumieć, w jaki model doszedł do swojej produkcji. Np:

  • Dla modelu liniowego wystarczy pomnożyć ze współczynnikami i dodać nastawienie
  • W przypadku sieci neuronowych trzeba znać wszystkie współczynniki i aktywacja funkcji i zrobić kilka obliczeń do obejrzenia w jaki sposób wejścia są przeliczane na nowych „funkcji” w warstwach ukrytych i wreszcie wyprowadza
  • random lasu trzeba spojrzeć na granicach decyzyjnych wszystkich drzew w lesie
  • Itd

Na podstawie takiej analizy możesz zdecydować, jakie dane wejściowe uważasz za najważniejsze.

Analiza wrażliwości

Bardziej użyteczne, być może, będzie patrzeć jak zmienia wyjściowych modelu, gdy wejście wartości zmieniają. Zapewni to lepszy wgląd w to, jak ważne i wrażliwe są dane wejściowe. Ta koncepcja nazywa się sensitivity analysis. W przypadku większości metod można po prostu zrobić losowe próbkowanie na wejściach i przeanalizować wyniki.

Może to być przydatne do wyboru funkcji, ponieważ niewrażliwe dane wejściowe są kandydatami do przycinania.

Patrząc wstecz do modelu

Analiza wrażliwości jest oparta na idei zaburza wejście do modelu, aby dowiedzieć się czegoś o tym, jak model wyjdzie z jego wyjściu. Innym sposobem patrzenia na rzeczy byłoby przyjęcie wyjścia i rozumu wstecz do modelu i na końcu danych wejściowych. Takie podejście jest:

  1. wysoce specyficzne techniki modelu mowa
  2. skomplikowane, ponieważ bardziej nieliniowy wzór znajduje się, a tym bardziej interakcji funkcji model, tym trudniej jest „Rozplątać rzeczy ".

Aby porozmawiać o losowych lasach, spójrz na this Q&A.

Techniki wizualizacji mogą pomóc. Przykład z sieci neuronowych narzędzie, które mogłyby dać wgląd: http://playground.tensorflow.org/

Ogólne cecha znaczenie

uzyskać ogólne znaczenie funkcji, to znaczy nad wszystkimi celami, można spojrzeć na this part of the scikit-learn documentation.

The example here pokazuje, w jaki sposób można dokonać wyboru jednowymiarowego obiektu za pomocą testu F dla oceny cech.

+0

Czy ten cel jest specyficzny? Czy może ogólnie zastosować proces przewidywania? –

+0

Zaktualizowałem swoją odpowiedź, aby lepiej rozwiązać problem związany z określonym celem. –

+0

Dziękujemy za aktualizacje odpowiedzi. Sekcja pojedynczych celów daje pewien wgląd w to, jak można to zrobić, ale zasadniczo mówi się, aby budować modele od zera i katalogować dane. Analiza wrażliwości i spoglądanie wstecz na sekcje modelu wydają się wymagać intensywnej kombinatoryki, aby wypróbować wszystkie warianty i ich możliwości predykcyjne. Ogólne znaczenie ma to, czego starałem się uniknąć. Chociaż test f jest bardzo interesujący i nie wiedziałem, że istnieje. Dziękuję za to. Wcześniej głosowano. –

2

Chciałbym ręcznie skonstruować oddzielne modele klasyfikacji binarnej dla każdej z różnych możliwych wartości docelowych i porównać modele. Można normalizować wartości, jednak same wartości liczbowe są mniej informatywne niż uporządkowanie zmiennych.

Możesz również przyjrzeć się używaniu modelu regresji logistycznej, aby uzyskać inny sposób obliczania importowanych funkcji.

Powiązane problemy