Konfigurera regressionsmodell
Tränar, sparar, läser in och rensar en regressionsmodell. Tränar en modell baserat på inbäddningsvektorer för textdata och numeriska måldata.
Tillval
-
Åtgärd anger vilken åtgärd som ska utföras:
-
Träna: Skapar och tränar en ny regressionsmodell med hjälp av angivna träningsdata och algoritmparametrar.
-
Spara: Sparar en tränad modell som containerdata i det fält eller den variabel som anges av alternativet Spara modell i för senare användning.
-
Läs in: Läser in en tidigare sparad modell från containerfältet eller variabeln som anges av alternativet Spara modell i i minnet.
-
Rensa: Tar bort en modell från minnet för att frigöra resurser.
-
-
Modellnamn är ett textuttryck för det unika namnet på regressionsmodellen som alternativet Åtgärd använder. När du har tränat eller läst in en modell använder du samma namn när du refererar till modellen för att utföra regression med Funktionen PredictFromModel.
Alternativ som endast är tillgängliga när Åtgärd är Träna:
-
Algoritm väljer den maskininlärningsalgoritm som ska användas. I version 22.0 är Slumpmässig skog den enda algoritmen som tillhandahålls.
-
Fält för träningsvektorer anger det text- eller containerfält som innehåller vektorer för träningsdata.
-
Fält för träningsmål anger det fält som innehåller målvärdena (de numeriska värden du vill förutsäga). Varje värde motsvarar ett träningsexempel i Fält för träningsvektorer.
-
Hoppa över tomma eller ogiltiga poster hoppar över poster där fältet som anges av Fält för träningsvektorer eller Fält för träningsmål är tomt eller innehåller ogiltiga data. Om alternativet inte har valts hoppar scriptsteget över alla poster efter den första posten med ett tomt fält eller med ogiltiga data och returnerar ett fel.
-
Parametrar är ett textuttryck för ett JSON-objekt som anger algoritmspecifika parametrar som nyckel–värde-par. Läs mer under Beskrivning.
Alternativ som endast är tillgängliga när Åtgärd är Träna eller Spara:
-
Spara modell i anger en variabel eller ett containerfält där den tränade modellen ska sparas.
Alternativ som endast är tillgängliga när Åtgärd är Läs in:
-
Läs in modell från anger variabeln eller containerfältet varifrån en tränad modell ska läsas in.
Kompatibilitet
Produkt | Stöds |
FileMaker Pro | Ja |
FileMaker Go | Ja |
FileMaker WebDirect | Ja |
FileMaker Server | Ja |
FileMaker Cloud | Ja |
FileMaker Data API | Ja |
Anpassad webbpublicering | Ja |
Ursprungsversion
22.0
Beskrivning
Med det här scriptsteget kan du träna och hantera regressionsmodeller som använder maskininlärningsalgoritmer direkt i FileMaker Pro-appen. Regressionsmodeller förutsäger kontinuerliga numeriska värden för en beroende utdatavariabel (målet) utifrån oberoende indatavariabler (egenskaper), vilket gör dessa modeller lämpliga för prognostisering, trendanalys och datadrivet beslutsfattande.
Algoritmen Random Forest eller slumpmässig skog är en metod som kombinerar flera beslutsträd för att skapa mer robusta och exakta förutsägelser än ett enda beslutsträd, vilket gör algoritmen lämplig för verkliga data. Varje träd i skogen tränas på en slumpmässig delmängd av träningsdata och egenskaperna, vilket hjälper till att förhindra överanpassning (då inte bara mönster från träningsdata utan också slumpmässigt brus fångas upp) och förbättrar generalisering för nya data.
När du väljer åtgärden Träna utför scriptsteget följande åtgärder:
-
Parsar vektorer i Fält för träningsvektorer för att extrahera egenskapsvärden.
-
Tillämpar angivna Parametrar för algoritmen eller använder standardvärden om inga angetts.
-
Tränar modellen med hjälp av algoritmen Slumpmässig skog med egenskapsvärden som extraherats från Fält för träningsvektorer och målvärdena från Fält för träningsmål.
-
Lagrar den tränade modellen i minnet med angivet Modellnamn för användning med Funktionen PredictFromModel.
-
Om Spara modell i har angetts sparas modellen för senare användning.
Med åtgärderna Spara, Läs in och Rensa kan du hantera de tränade modellerna, spara dem endast när det behövs och optimera prestanda, så att de bara hålls i minnet när de används.
För algoritmen Slumpmässig skog kan du använda följande nycklar och värden i alternativet Parametrar för att justera träningen, om det behövs. Om en nyckel inte anges eller alternativet Parametrar inte används använder scriptsteget standardvärdena.
Parameter | Beskrivning | Standardvärde |
|
Antal beslutsträd i den slumpmässiga skogen. Fler träd förbättrar i allmänhet noggrannheten men ökar träningstiden och minnesanvändningen. |
10 |
|
Maximalt djup för varje beslutsträd. Trädet kanske inte når det här djupet under träningen. Djupare träd kan fånga mer komplexa mönster, men kan överanpassa utifrån träningsdata. |
10 |
|
Minsta antal exempel som krävs för att dela en intern nod. Högre värden kan förhindra överanpassning. |
2 |
|
Om det är ett positivt tal: Det totala antalet möjliga egenskaper som kan användas för att träna ett enda träd (giltigt intervall är 1 ≤ numFeatures < 1536). Om det är negativt används alla egenskaper för träning. |
-1 |
|
Maximalt antal egenskaper som ska användas för att träna ett enda träd: 0: |
1 |
Det här JSON-objektet anger till exempel alla nycklar i alternativet Parametrar:
{
"numTrees" : 15,
"maxDepth" : 15,
"minSamplesSplit" : 3,
"numFeatures" : 1000,
"maxFeatures" : 0
}
Kommentarer
-
Värden i Fält för träningsvektorer måste anges som giltiga JSON-matriser i ett textfält eller motsvarande binära data i ett containerfält. Varje matris måste innehålla samma antal element (egenskaper) i alla poster.
Du kan använda Scriptsteget Infoga inbäddning i hittade poster för att generera textinbäddningsvektorer i Fält för träningsvektorer baserat på ett annat fält som innehåller dina indata. De inbäddningsvektorer som genereras av Infoga inbäddning i hittade poster uppfyller ovanstående krav när du använder en textinbäddningsmodell som stöds.
-
Värdena i Fält för träningsmål måste vara numeriska. Icke-numeriska värden gör att träningen misslyckas.
-
Modellnamn är skiftlägeskänsliga och måste vara unika i den aktuella FileMaker-sessionen. Om det redan finns en modell med samma namn när du tränar ersätts den med den nya modellen.
-
För att testa kvaliteten på den tränade modellen använder du Funktionen PredictFromModel för att returnera det förutsagda värdet med samma vektordata som du använde för att träna modellen. Jämför sedan de förutsagda värdena med de målvärden som användes under träningen. En metod för att mäta modellens övergripande kvalitet är medelkvadratfel (MSE, Mean Square Error), som beräknar den genomsnittlig kvadrerad differens mellan de förutsagda värdena och målvärdena. Ett MSE-värde på noll indikerar en perfekt anpassning mellan modellens förutsägelser och faktiska värden, så ju lägre MSE-värde, desto bättre. Det bästa MSE-värdet för en modell är relativ till till målvariabelns skala och den acceptabla felmarginalen för din specifika tillämpning. Se Exempel 3 för ett script som beräknar MSE.
-
Prestandaråd:
-
Träningstiden ökar med antalet träd (
numTrees
) och maximalt djup (maxDepth
). Börja med standardvärdena för Parametrar och justera dem efter dina krav på noggrannhet och prestanda. -
Större datauppsättningar kräver mer minne under träningen. Överväg att använda ett representativt exempel för inledande modellträning om du arbetar med mycket stora datamängder.
-
Modellerna finns kvar i minnet tills de uttryckligen rensas eller FileMaker-sessionen avslutas. Använd åtgärden Rensa för att frigöra minne när modeller inte längre behövs.
-
Exempel 1 – Träna en grundläggande modell
Tränar en grundläggande regressionsmodell för att förutsäga huspriser baserat på kvadratmeter, antal sovrum och ålder på huset med hjälp av standardparametrar för Slumpmässig skog.
I tabellen Fastigheter innehåller fältet Egenskaper JSON-matriser som [1200, 3, 15]
som representerar kvadratmeter, sovrum och ålder, medan fältet Pris innehåller motsvarande huspris. När det här scriptsteget har körts finns modellen i minnet och kan användas i den aktuella FileMaker-sessionen av Funktionen PredictFromModel genom att referera till modellnamnet ”Husprismodell”.
Eftersom modellen inte har sparats i det här exemplet kommer modellen inte att vara tillgänglig när den aktuella sessionen avslutas.
Gå till Layout [ "Fastigheter" (Fastigheter) ; Animering: Ingen ]
Konfigurera regressionsmodell [ Åtgärd: Träna ; Modellnamn: "Husprismodell" ; Algoritm: Slumpmässig skog ; Fält för träningsvektorer: Fastigheter::Egenskaper ; Fält för träningsmål: Fastigheter::Pris ; Hoppa över tomma eller ogiltiga poster ]
Exempel 2 – Hämta inbäddningsvektorer och träna en modell
Tränar en regressionsmodell för att förutsäga ett stjärnbetyg (1 till 5) baserat på texten i en kunds recension.
Träningsdata finns i tabellen Recensioner och består av Recensionstext (ett textfält som innehåller kundens recension) och Betyg (ett numeriskt fält som innehåller det stjärnbetyg kunden valde). När scriptet har konfigurerat ett AI-konto för AI-modellservern som installerats med FileMaker Server använder det kontot för att infoga textinbäddningsvektorer i containerfältet RecensionInbäddning baserat på data i fältet Recensionstext.
Sedan tränar scriptet regressionsmodellen, ger den namnet ”Recensionsmodell” och använder träningsvektorerna i RecensionInbäddning, målvärdena i fältet Betyg och anpassade parametrar. När träningen är klar sparas modellen i det globala containerfältet Recensionsmodell.
Konfigurera AI-konto [ Kontonamn: "AI-modellserver" ; Modelleverantör: Anpassad ; Slutpunkt: "https://minserver.exempel.com:8080/" ; Verifiera SSL-certifikat ; API-nyckel: Global::API-nyckel ]
Gå till Layout [ "Recensioner" (Recensioner) ]
Infoga inbäddning i hittade poster [ Kontonamn: "AI-modellserver" ; Inbäddningsmodell: "all-MiniLM-L12-v2" ; Källfält: Recensioner::Recensionstext ; Målfält: Recensioner::RecensionInbäddning ; Fortsätt vid fel ; Visa sammanfattning ]
Ange variabel [ $parametrar ; Värde:
Let ( [
json = "{}" ;
json = JSONSetElement ( json; "numTrees"; 15; JSONNumber ) ;
json = JSONSetElement ( json; "maxDepth"; 15; JSONNumber ) ;
json = JSONSetElement ( json; "minSamplesSplit"; 3; JSONNumber ) ;
json = JSONSetElement ( json; "numFeatures"; 1000; JSONNumber ) ;
json = JSONSetElement ( json; "maxFeatures"; 0; JSONNumber )
] ;
json
)
]
Konfigurera regressionsmodell [ Åtgärd: Träna modell ; Modellnamn: "Recensionsmodell" ; Algoritm: Slumpmässig skog ; Fält för träningsvektorer: Recensioner::RecensionInbäddning ; Fält för träningsmål: Recensioner::Betyg ; Hoppa över tomma eller ogiltiga poster ; Parametrar: $parametrar ; Spara modell i: Recensioner::Recensionsmodell ]
Modellen med namnet ”Recensionsmodell” är klar att användas. Mer information finns i Exempel 2 i PredictFromModel.
Exempel 3 – Beräkna medelkvadratfel
Beräknar medelkvadratfelet för att bedöma kvaliteten på en tränad regressionsmodell (se Kommentarer).
Scriptet går till layouten Recensioner som innehåller de träningsdata som används i Exempel 2, visar alla poster, nollar variabeln $kvadreratFelSumma, går till den första posten, läser in den tidigare sparade modellen och ger den namnet ”Recensionsmodell”.
För varje post i loopen kvadreras differensen mellan det värde som förutspås av modellen med Funktionen PredictFromModel och det faktiska värdet i fältet Betyg och läggs till $kvadreratFelSumma.
När alla poster har behandlats beräknas MSE-värdet genom att dividera $kvadreratFelSumma med antalet exempel (antalet poster i uppsättningen träningsdata) och visas i en dialogruta. När det är klart rensar scriptet modellen från minnet.
Gå till Layout [ "Recensioner" (Recensioner) ]
Visa alla poster
Ange variabel [ $kvadreratFelSumma; Värde: 0 ]
Konfigurera regressionsmodell [ Åtgärd: Läs in modell ; Modellnamn: "Recensionsmodell" ; Läs in modell från: Recensioner::Recensionsmodell ]
Gå till post/sökpost/sida [ Första ]
Loop [ Rensa: Alltid ]
Ange variabel [ $fel; Värde: Recensioner::Betyg - PredictFromModel ( "Recensionsmodell" ; Recensioner::RecensionInbäddning ) ]
Ange variabel [ $kvadreratFel ; Värde: $fel^2 ]
Ange variabel [ $kvadreratFelSumma ; Värde: $kvadreratFelSumma + $kvadreratFel ]
Gå till post/sökpost/sida [ Nästa ; Avbryt efter sista: På ]
End Loop
Visa anpassad dialogruta [ "MSE-värde" ; $kvadreratFelSumma / Get ( HittadePoster ) ]
Konfigurera regressionsmodell [ Åtgärd: Rensa modell ; Modellnamn: "Recensionsmodell" ]
Ett möjligt MSE-värde är .01875826440712939518.