Kérdés:
Miért nem olyan jó az svm, mint az azonos adatokra vonatkozó döntési fa?
Java Xu
2013-04-27 21:06:39 UTC
view on stackexchange narkive permalink

Új vagyok a gépi tanulásban, és megpróbálok scikit-learn (sklearn) -et használni osztályozási probléma kezelésére. A DecisionTree és az SVM egyaránt képes osztályozót oktatni erre a problémára.

A sklearn.ensemble.RandomForestClassifier és a sklearn.svm.SVC , hogy ugyanazok a képzési adatok (kb. 500 000 bejegyzés 50 bejegyzéssel). A RandomForestClassifier osztályozóval körülbelül egy perc alatt megjelenik. Az SVC több mint 24 órát használ, és továbbra is fut.

Miért működik az SVC olyan kevéssé hatékonyan? Túl nagy az adatkészlet az SVC számára? Az SVC nem megfelelő egy ilyen probléma esetén?

Három válaszokat:
RMcG
2013-05-05 04:31:58 UTC
view on stackexchange narkive permalink

A döntési fák és a véletlenszerű erdők valójában rendkívül jó osztályozók. Bár az SVM-ek (Support Vector Machines) összetettebbnek tekinthetők, valójában nem jelenti azt, hogy jobban teljesítenek.

Rich Caruana "A felügyelt tanulási algoritmusok empirikus összehasonlítása" 10 különböző bináris osztályozót, SVM, Neural-Networks, KNN, logisztikai regressziót, Naiv Bayes-t, Random Forests-t hasonlított össze. , Döntési fák, Zacskós döntési fák, Fokozott döntési fák és Bootstrapped döntési fák tizenegy különböző adathalmazon, és összehasonlították az eredményeket 8 különböző teljesítménymutatóval.

Megállapították, hogy a Boosted decision fák jöttek be először, a Random Forests második, majd a Bagged Decision Trees, majd az SVM

Az eredmények attól is függenek, hogy hány osztályba sorolsz valójában.

Dikran Marsupial
2013-04-27 21:20:26 UTC
view on stackexchange narkive permalink

A lehetőségek közé tartozik egy nem megfelelő kernel használata (pl. lineáris kern egy nemlineáris probléma esetén), a kern rossz kiválasztása és a normalizálás hiperparaméterei. Jó modellválasztás (a rendszermag és a hiperparaméterek hangolása a kulcs ahhoz, hogy az SVM-ek jó teljesítményt nyújthassanak, elvárható, hogy csak megfelelő használat esetén adjanak jó eredményeket).

Az SVM-ek gyakran sokáig tartanak a kiképzéshez ez különösen igaz, ha a kernel és különösen a legalizálási paraméter megválasztása azt jelenti, hogy szinte az összes adat támogató vektorokká válik (az SVM-ek ritkasága hasznos melléktermék, semmi más).

Végül a nem ingyen ebédre vonatkozó tételek azt mondják, hogy semmilyen osztályozó rendszernél nincs a priori felsőbbrendűség a többiekkel szemben, így egy adott feladat legjobb osztályozója maga is feladatfüggő. Van azonban meggyőzőbb elmélet az SVM számára, amely azt sugallja, hogy valószínűleg jobb választás, mint sok más megközelítés sok probléma esetén.

1. Honnan tudhatom, hogy egy probléma lineáris-e vagy sem? A képzési adatok szerint? 2. Tudna ajánlani néhány anyagot arról, hogy "hogyan lehet jól kiválasztani a kernelt és beállítani a hiperparamétert"?
Általában nem lehet biztosan tudni, hogy a probléma lineáris-e, de a nemlineáris osztályozók következetesen jobban teljesítenek a nemlineárisaknál, ami egyértelműen jelzi, hogy ez egy nemlineáris feladat.
A kernel és a normalizálási paraméterek hangolásához a keresztellenőrzés ésszerű megközelítés, akár rácskereséssel, akár valamilyen numerikus optimalizálási módszerrel (a Nelder Mead simplexet használom). Az SVM-eknél a "span kötött" hasznos közelítést ad a „hagyja be-ki” keresztellenőrzési hibához. Ne feledje, hogy olyasmit kell használnia, mint a beágyazott keresztellenőrzés, és elfogulatlan teljesítménybecslést is szeretne (lásd az általam adott többi kérdésre adott válaszokat).
Az 500 ezer adatpont elég nagy probléma, hogy a kernel SVM-ek valószínűleg eltartanak egy ideig a képzésig. Érdemes kipróbálni a LinearSVM-et, amely csak egy lineáris osztályozót támogat, de sokkal gyorsabban fut, vagy egy [SGD osztályozót] (http://scikit-learn.org/dev/modules/sgd.html#sgd), amely még mindig gyorsabb lehet. Ha ez nem működik jól, akkor próbálkozzon a [kernel approximation] (http://peekaboo-vision.blogspot.com/2012/12/kernel-approximations-for-efficient.html) használatával, amely lehetővé teszi a lineáris osztályozó használatát közelíteni egy nemlineárisat. Ez azt jelenti, hogy a véletlenszerű erdők is jó algoritmusok, és az adatok számára a legjobbak lehetnek.
Shusen Liu
2013-04-28 12:09:21 UTC
view on stackexchange narkive permalink

"függetlenül attól, hogy a probléma lineáris-e vagy sem" Egy bináris osztályozási probléma esetén, ha az adatkészlet hipersíkkal elválasztható, akkor ez lineáris probléma.

Ha az adatkészlet nem lineárisan elválasztható, miközben megpróbál lineáris osztályozóval megkeresni egy ilyen hipersíkot, amely egyáltalán nem létezik, az algoritmus úgy tűnik, hogy örökké fut.

Egy javaslat: Mintát vehet az adatok egy kis részéből, és megpróbálhatja ezeket az algoritmusokat annak ellenőrzésére, hogy működik-e egy kis adatkészletben. Ezután növelje az adatkészletet, hogy ellenőrizze, mikor jelentkeznek ezek a problémák.



Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...