Dane mają wiele funkcji (np. 100), a liczba wystąpień wynosi około 100 000. Dane są rzadkie. Chcę dopasować dane za pomocą regresji logistycznej lub svm. Skąd mam wiedzieć, czy cechy są liniowe czy nieliniowe, aby móc użyć sztuczki jądra, jeśli jest nieliniowa?
Istnieje kilka metod pozwalających ustalić, czy dane można rozdzielić liniowo, niektóre z nich zostały wyróżnione w tym artykule (1). Przy założeniu, że w zestawie danych znajdują się dwie klasy, istnieje kilka metod pozwalających ustalić, czy można je rozdzielić liniowo:
Programowanie liniowe: Definiuje funkcję celu poddaną ograniczeniom, które spełniają liniową separowalność. Szczegółowe informacje na temat implementacji można znaleźć tutaj .
Metoda perceptronowa: gwarantuje się, że perceptron zbiegnie się, jeśli dane można rozdzielić liniowo.
Programowanie kwadratowe: Funkcję celu optymalizacji programowania kwadratowego można zdefiniować z ograniczeniami, jak w SVM.
Geometria obliczeniowa: jeśli można znaleźć dwa rozłączne wypukłe kadłuby, dane można rozdzielić liniowo
Metoda klastrowania: Jeśli można znaleźć dwa klastry o czystości klastra 100% przy użyciu niektórych metod klastrowania, takich jak k-średnie, wówczas dane można rozdzielić liniowo.
(1): Elizondo, D., „Problem liniowej separowalności: niektóre metody testowania”, w Neural Networks, IEEE Transactions on, vol.17, no.2, str.330-344, March 2006 doi: 10.1109 / TNN. 2005.860871
Podaj odniesienie (linki mogą gnić) i przynajmniej trochę wyjaśnij, jakie metody są objęte.
Scortchi - Przywróć Monikę
2
Dzięki. Dobra odpowiedź (+1). Pakiet R safeBinaryRegressionimplementuje również podejście programowania liniowego.
Scortchi - Przywróć Monikę
Które (podejście LP) jest łatwo interpretowane geometrycznie, wydajne obliczeniowo i ogólnie dostępne (tak jak procedury LP).
user603
3
Zakładam, że mówisz o problemie z klasyfikacją 2 klas. W tym przypadku istnieje linia oddzielająca dwie klasy i każdy klasyczny algorytm powinien być w stanie ją znaleźć, gdy się zbiegnie.
W praktyce musisz trenować i testować te same dane. Jeśli istnieje taka linia, powinieneś zbliżyć się do 100% dokładności lub 100% AUC. Jeśli nie ma takiej linii, szkolenie i testowanie tych samych danych spowoduje co najmniej kilka błędów. Na podstawie liczby błędów warto wypróbować klasyfikator nieliniowy.
Próbujesz regresji logistycznej i widzisz, jak to działa. Jeśli to nie zadziała, istnieje nieskończenie wiele jąder, które możesz wypróbować i nadal może nie działać.
safeBinaryRegression
implementuje również podejście programowania liniowego.Zakładam, że mówisz o problemie z klasyfikacją 2 klas. W tym przypadku istnieje linia oddzielająca dwie klasy i każdy klasyczny algorytm powinien być w stanie ją znaleźć, gdy się zbiegnie.
W praktyce musisz trenować i testować te same dane. Jeśli istnieje taka linia, powinieneś zbliżyć się do 100% dokładności lub 100% AUC. Jeśli nie ma takiej linii, szkolenie i testowanie tych samych danych spowoduje co najmniej kilka błędów. Na podstawie liczby błędów warto wypróbować klasyfikator nieliniowy.
źródło
źródło
safeBinaryRegression
Próbujesz regresji logistycznej i widzisz, jak to działa. Jeśli to nie zadziała, istnieje nieskończenie wiele jąder, które możesz wypróbować i nadal może nie działać.
źródło