Two-Class lokalt djup stödvektormaskin

Viktigt

Stödet för Machine Learning Studio (klassisk) upphör den 31 augusti 2024. Vi rekommenderar att du byter till Azure Machine Learning innan dess.

Från och med den 1 december 2021 kan du inte längre skapa nya Machine Learning Studio-resurser (klassisk). Du kan fortsätta att använda befintliga Machine Learning Studio-resurser (klassisk) till och med den 31 augusti 2024.

Dokumentationen om ML Studio (klassisk) håller på att dras tillbaka och kanske inte uppdateras i framtiden.

Skapar en binär klassificeringsmodell med hjälp av den lokalt djupa algoritmen för stödvektordatorer

Kategori: Machine Learning/Initiera modell/Klassificering

Anteckning

Gäller endast för: Machine Learning Studio (klassisk)

Liknande dra och släpp-moduler finns i Azure Machine Learning designer.

Modulöversikt

Den här artikeln beskriver hur du använder modulen Tvåklassigt lokalt djupstödvektormaskin i Machine Learning Studio (klassisk) för att skapa en SVM-klassificerare (vektordatorer med två klasser) som är optimerad för effektiv förutsägelse.

Stödvektormaskiner (SVM: er) är en mycket populär och väl undersökt klass av övervakade inlärningsmodeller, som kan användas i linjära och icke-linjära klassificeringsuppgifter. Ny forskning har fokuserat på sätt att optimera dessa modeller för att effektivt skala till större träningsuppsättningar. I den här implementeringen från Microsoft Research är kernelfunktionen som används för att mappa datapunkter till funktionsutrymme särskilt utformad för att minska den tid som behövs för träning samtidigt som den största delen av klassificeringsprecisionen bibehålls.

Den här modellen är en övervakad inlärningsmetod och kräver därför en taggad datauppsättning som innehåller en etikettkolumn.

När du har definierat modellparametrarna tränar du den genom att tillhandahålla modellen och en taggad datauppsättning som indata till Träna modell eller Finjustera modell-Hyperparametrar. Den tränade modellen kan sedan användas för att förutsäga värden för nya indata.

Så här konfigurerar du Two-Class lokalt djup supportvektordator

  1. Lägg till modulen Two-Class Locally-Deep Support Vector Machine i experimentet i Studio (klassisk).

  2. Ange hur du vill att modellen ska tränas genom att ange alternativet Skapa träningsläge .

    • Enskild parameter: Om du vet hur du vill konfigurera modellen anger du en specifik uppsättning värden som argument.

    • Parameterintervall: Om du inte är säker på de bästa parametrarna kan du hitta de optimala parametrarna genom att ange flera värden och använda modulen Tune Model Hyperparameters för att hitta den optimala konfigurationen. Utbildaren itererar över flera kombinationer av de inställningar som du angav och avgör kombinationen av värden som ger den bästa modellen.

  3. För Djup för trädet anger du det maximala djupet för trädet som kan skapas av den lokala svm-modellen för djup kernelinlärning (LD-SVM).

    Kostnaden för träning ökar linjärt med träddjup; Välj därför ett lämpligt djup, beroende på hur mycket tid du har råd att spendera när du skapar modellen.

    Träningstiden bör ungefär fördubblas eftersom djupet ökas med en.

    Förutsägelsenoggrannheten bör öka, nå en topp och sedan minska med ökande djup.

  4. För Lambda W anger du den vikt som ska ges till regulariseringstermen.

    Regularisering begränsar komponenter med stora värden i den tränade klassificeraren. När antalet exempel är otillräckligt med tanke på antalet funktioner kan du använda L2-regularisering för att undvika överanpassning. Större värden för Lambda W innebär att mer fokus läggs på att regularisera klassificerarens vikter och mindre på klassificeringsfelet för träningsuppsättningen.

    Om standardvärdet (0.1) inte fungerar bra bör du också prova {0.0001, 0.001 och 0.01}.

  5. För Lambda Theta anger du hur mycket utrymme som ska lämnas mellan en regionsgräns och den närmaste datapunkten.

    Den här modellen fungerar genom att partitionera datautrymmet och funktionsutrymmet i regioner. När Lambda Theta minimeras på ett sådant sätt att regionens gränser i den tränade modellen ligger för nära träningsdatapunkterna kan modellen ge ett lågt träningsfel, men ett högt testfel på grund av överanpassning.

    För att minska antalet parametrar som behöver verifieras är en bra tumregel att ange Lambda Theta till en tiondel av det värde som används för Lambda W. Större värden innebär att större vikt läggs vid att förhindra överanpassning än att minimera klassificeringsfel i träningsuppsättningen.

    Om standardvärdet (0,01) inte fungerar bra bör du också prova {0.0001, 0.001 och 0.1}.

  6. För Lambda Theta Prime anger du ett värde för att kontrollera mängden krökning som tillåts i beslutsgränser i modellen.

    Större värden ger modellen flexibilitet att lära sig böjda beslutsgränser, medan mindre värden kan begränsa beslutsgränserna till mer av ett stegvist linjärt mönster.

    Den här parametern fungerar tillsammans med Sigma-parametern . För att minska antalet parametrar som behöver valideras är en bra tumregel att ange Lambda Theta Prime till en tiondel värdet för Lambda W.

    Om standardvärdet (0,01) inte fungerar bra bör du också prova {0.0001, 0.001 och 0.1,}.

  7. För Sigmoid-skärpa skriver du ett värde som ska användas för skalningsparametern σ.

    Större värden innebär att tanh i lokal kernel Θ (theta) är mättad, medan ett mindre värde innebär ett mer linjärt driftsintervall för theta. Du hittar den fullständiga optimeringsformeln i avsnittet Tekniska anteckningar .

    Om standardvärdet (1) inte fungerar bra kan du också prova {0.1, 0.01, 0.001}.

  8. I Antal iterationer anger du hur många gånger algoritmen ska uppdatera klassificerarparametrarna med en slumpmässig delmängd av exemplen.

  9. För Funktionsnormaliserare väljer du en metod som ska användas för att normalisera funktionsvärden. Följande metoder stöds:

    • Intervallnormaliserare: Normaliseraren för bining skapar intervall med samma storlek och normaliserar sedan varje värde i varje lagerplats så att det divideras med det totala antalet lagerplatser.

    • Gaussian normalizer: Gaussian normalizern skalar om värdena för varje funktion så att den har medelvärdet 0 och variansen 1. Detta görs genom att beräkna medelvärdet och variansen för varje funktion. För varje instans subtraheras medelvärdet och resultatet divideras med kvadratroten för variansen (standardavvikelsen).

    • Min-Max-normaliserare: Normaliseraren min-max skalar linjärt om varje funktion till intervallet [0,1].

      Omskalning till intervallet [0,1] görs genom att flytta värdena för varje funktion så att det minimala värdet är 0 och sedan dividera med det nya maximala värdet (vilket är skillnaden mellan de ursprungliga maximala och minimala värdena).

    • Normalisera inte: Ingen normalisering utförs.

  10. I Slumptalsutsäde anger du ett värde som ska användas som startvärde om du vill säkerställa reproducerbarhet mellan körningar.

  11. Välj alternativet Tillåt okända kategorinivåer för att skapa en grupp för okända värden i test- eller valideringsuppsättningarna.

    Om du avmarkerar den kan modellen bara acceptera de värden som finns i träningsdata. I det tidigare fallet kan modellen vara mindre exakt för kända värden, men den kan ge bättre förutsägelser för nya (okända) värden.

  12. Anslut en taggad datauppsättning och en av träningsmodulerna:

    • Om du anger Skapa träningsläge till Enskild parameter använder du modulen Träna modell .

    • Om du ställer in Skapa träningslägeParameterintervall använder du modulen Tune Model Hyperparameters .

    Anteckning

    Om du skickar ett parameterintervall till Train Model använder det bara det första värdet i parameterintervalllistan.

    Om du skickar en enda uppsättning parametervärden till modulen Tune Model Hyperparameters , när den förväntar sig ett intervall med inställningar för varje parameter, ignorerar den värdena och använder standardvärdena för eleven.

    Om du väljer alternativet Parameterintervall och anger ett enda värde för valfri parameter används det enskilda värdet som du angav under svepningen, även om andra parametrar ändras över ett värdeintervall.

  13. Kör experimentet.

Resultat

När träningen är klar:

  • Om du vill se en sammanfattning av modellens parametrar högerklickar du på utdata från modulen Träna modell eller Finjustera modellhyperparametrar och väljer Visualisera.

  • Om du vill spara en snapshpt för den tränade modellen högerklickar du på utdata för tränad modell och väljer Spara som tränad modell. Den här modellen uppdateras inte vid efterföljande körningar av samma experiment.

  • Om du vill utföra korsvalidering mot en märkt datauppsättning ansluter du den otränade modellen till Korsverifieringsmodell.

Tekniska anteckningar

Det här avsnittet innehåller implementeringsinformation, tips och svar på vanliga frågor.

Användningstips

Den här LD-SVM-klassificeraren är mest användbar under följande förhållanden:

  • Du har problem med binär klassificering, eller så kan du minska problemet till en binär klassificeringsuppgift.

  • Du försökte med en linjär klassificerare, men den fungerade inte bra.

  • Du provade en icke-linjär SVM eller annan klassificerare och fick bra klassificeringsprecision, men det tog för lång tid att träna modellen.

  • Du har råd att offra förutsägelsenoggrannhet för att minska träningstiden.

LD-SVM-modeller är ett bra val när dina data är tillräckligt komplicerade för att linjära modeller (till exempel logistisk regression) ska fungera dåligt. LD-SVM-modeller är också tillräckligt små för att användas i mobila enheter eller andra scenarier där komplexa modeller (till exempel neurala nätverk) är för stora för att användas effektivt.

Omvänt bör den här modellen inte användas om du inte bryr dig om modellstorleken eller om en linjär modell krävs för enkelhetens skull eller förutsägelsehastigheten. Det är heller ingen mening med att ändra till LD-SVM om linjära klassificerare redan ger bra resultat, eller om du kan få hög klassificeringsprecision genom att lägga till små mängder icke-linjäritet.

Implementeringsdetaljer

LD-SVM-modellen utvecklades av Microsoft Research som en del av det pågående arbetet med att påskynda icke-linjär SVM-förutsägelse. Arbetet med Gonen och Alpaydin (2008) på den lokaliserade inlärningsmetoden för flera kärnor var särskilt värdefullt. Med hjälp av en lokal kernelfunktion kan modellen lära sig godtyckliga lokala funktionsinbäddningar, inklusive högdimensionella, glesa och beräkningsmässigt djupa funktioner som introducerar icke-linjäriteter i modellen.

LD-SVM är snabbare än de flesta andra klassificerare av flera orsaker:

  • Modellen lär sig beslutsgränser som är lokalt linjära. Därför kan en testpunkt klassificeras effektivt genom att testa den mot dess lokala beslutsgräns, i stället för att testa mot hela uppsättningen beslutsgränser över hela funktionsutrymmet.

  • Modellen använder effektiva primalbaserade rutiner för att optimera utrymmet för trädstrukturerade lokala funktionsinbäddningar som skalas till stora träningsuppsättningar med mer än en halv miljon träningspunkter.

  • Kostnaden för att testa en punkt mot dess lokala beslutsgräns är logaritmisk i antalet träningspunkter.

Som en följd av dessa optimeringar är träning av LD-SVM-modellen exponentiellt snabbare än att träna traditionella SVM-modeller.

Optimeringsformel

optimization formula

Forskning

Mer information om algoritmen och underliggande forskning finns i Local Deep Kernel Learning for Efficient Non-linear SVM Prediction (Lokal djup kernel-Learning för effektiv icke-linjär SVM-förutsägelse).

Modulparametrar

Name Intervall Typ Standardvärde Description
Skapa träningsläge Lista Parameteralternativet Learner Enskild parameter Avancerade inlärningsalternativ:

1. Skapa en elev med en enda parameter
2. Skapa en elev med ett parameterintervall
Trädets djup >=1 Integer 3 Djupet av det lokalt djupa SVM-trädet.
Lambda W >=1.401298E-45 Float 0.1 Regulariseringsvikt för klassificerarparametern Lambda W.
Lambda Theta >=1.401298E-45 Float 0,01 Regulariseringsvikt för klassificerarparametern Lambda Theta.
Lambda Theta Prime >=1.401298E-45 Float 0,01 Regulariseringsvikt för klassificerarparametern Lambda Theta prime.
Sigmoid skärpa >=1.401298E-45 Float 1.0 Sigmoid skärpa.
Trädets djup [1;int. MaxValue] ParameterRangeSettings 1; 3; 5; 7 Intervallet för djupet i det lokalt djupa SVM-trädet.
Lambda W [1.401298E-45;3.40282347E+38] ParameterRangeSettings 0.1; 0.01; 0.001 Intervall för regulariseringsvikten för klassificerarparametern Lambda W.
Lambda Theta [1.401298E-45;3.40282347E+38] ParameterRangeSettings 0.1; 0.01; 0.001 Intervall för regulariseringsvikten för klassificerarparametern Lambda Theta.
Lambda Theta Prime [1.401298E-45;3.40282347E+38] ParameterRangeSettings 0.1; 0.01; 0.001 Intervall för regulariseringsvikten för klassificerarparametern Lambda Theta prime'.
Sigmoid skärpa [1.401298E-45;3.40282347E+38] ParameterRangeSettings 1.0; 0.1; 0.01 Intervallet för sigmoid skärpa.
Funktionsnormaliserare Lista Normaliserartyp Min-Max normaliserare Den typ av normalisering som ska tillämpas på inlärningsexempel.
Antal iterationer >=1 Integer 15 000 Antal iterationer för inlärning.
Antal iterationer [1;int. MaxValue] ParameterRangeSettings 10000; 15000; 20000 Intervallet för antalet iterationer för inlärning.
Slumptalsutsäde Valfri Integer Seed för slumptalsgeneratorn som används av modellen. Lämna det tomt som standard.
Tillåt okända kategorinivåer Valfri Boolesk Sant Om sant, skapar en ytterligare nivå för varje kategorisk kolumn. Alla nivåer i testdatauppsättningen som inte är tillgängliga i träningsdatauppsättningen mappas till den här ytterligare nivån.

Utdata

Namn Typ Description
Otränad modell ILearner-gränssnitt En ej tränad binär klassificeringsmodell.

Se även

Klassificering
A-Z-modullista