esemény
Intelligens alkalmazások létrehozása
márc. 17. 21 - márc. 21. 10
Csatlakozzon a meetup sorozathoz, hogy valós használati esetek alapján, skálázható AI-megoldásokat hozzon létre más fejlesztőkkel és szakértőkkel.
RegisztrációEzt a böngészőt már nem támogatjuk.
Frissítsen a Microsoft Edge-re, hogy kihasználhassa a legújabb funkciókat, a biztonsági frissítéseket és a technikai támogatást.
Ez az oktatóanyag bemutatja, hogyan hozhat létre filmajánlót ML.NET egy .NET Core-konzolalkalmazásban. A lépések a C# és a Visual Studio 2019 használatát használják.
Eben az oktatóanyagban az alábbiakkal fog megismerkedni:
Az oktatóanyag forráskódját a dotnet/samples adattárban találja.
A következő lépésekkel hajthatja végre a feladatot, valamint az egyéb ML.NET feladatokat:
Többféleképpen is megközelítheti a javaslatok problémáit, például a filmek listájának ajánlását vagy a kapcsolódó termékek listájának ajánlását, de ebben az esetben előrejelzi, hogy a felhasználó milyen minősítést (1-5) ad egy adott filmnek, és azt javasolja, hogy a film magasabb, mint egy meghatározott küszöbérték (minél magasabb az értékelés, annál nagyobb annak a valószínűsége, hogy egy felhasználó kedvel egy adott filmet).
Hozzon létre egy "MovieRecommender" nevű C# -konzolalkalmazást . Kattintson a Tovább gombra.
Válassza a .NET 6-ot a használni kívánt keretrendszerként. Kattintson a Létrehozás gombra.
Hozzon létre egy Data nevű könyvtárat a projektben az adatkészlet tárolásához:
A Megoldáskezelőben kattintson a jobb gombbal a projektre, és válassza azÚj mappahozzáadása> lehetőséget. Írja be az "Adatok" kifejezést, és nyomja le az Enter billentyűt.
Telepítse a Microsoft.ML és a Microsoft.ML.Recommender NuGet-csomagokat:
Megjegyzés
Ez a minta az említett NuGet-csomagok legújabb stabil verzióját használja, hacsak másként nem rendelkezik.
A Megoldáskezelőben kattintson a jobb gombbal a projektre, és válassza a Manage NuGet Packages (NuGet-csomagok kezelése) lehetőséget. Válassza a "nuget.org" lehetőséget a Csomag forrásaként, válassza a Tallózás lapot, keresse meg a Microsoft.ML, jelölje ki a csomagot a listában, és válassza a Telepítés gombot. Válassza az OK gombot a Változások előnézete párbeszédpanelen, majd válassza az Elfogadom gombot a Licenc elfogadása párbeszédpanelen, ha elfogadja a felsorolt csomagok licencfeltételét. Ismételje meg ezeket a lépéseket a Microsoft.ML.Recommender esetében.
Adja hozzá a következő using
utasításokat a Program.cs fájl tetején:
using Microsoft.ML;
using Microsoft.ML.Trainers;
using MovieRecommendation;
Töltse le a két adathalmazt, és mentse őket a korábban létrehozott Adatok mappába:
Kattintson a jobb gombbal arecommendation-ratings-train.csv , és válassza a "Hivatkozás mentése (vagy cél) másként..." lehetőséget.
Kattintson a jobb gombbal arecommendation-ratings-test.csv , és válassza a "Hivatkozás mentése (vagy cél) másként..." lehetőséget.
Győződjön meg arról, hogy a *.csv fájlokat az Adatok mappába menti, vagy ha máshová menti, helyezze át a *.csv fájlokat az Adatok mappába.
A Megoldáskezelőben kattintson a jobb gombbal az egyes *.csv fájlokra, és válassza a Tulajdonságok lehetőséget. A Speciális területen módosítsa a Másolás kimeneti könyvtárra értékét másolásra, ha újabb.
A ML.NET folyamat első lépése a modell betanítási és tesztelési adatainak előkészítése és betöltése.
A javaslatok minősítési adatai felosztásra Train
és Test
adathalmazokra oszlanak. Az Train
adatok a modellnek megfelelően lesznek felhasználva. Az Test
adatokkal előrejelzéseket készíthet a betanított modellel, és kiértékelheti a modell teljesítményét. Gyakran előfordul, hogy a 80/20 felosztás és Train
Test
az adatok.
Az alábbiakban a *.csv fájlok adatainak előnézete látható:
A *.csv fájlokban négy oszlop található:
userId
movieId
rating
timestamp
A gépi tanulásban az előrejelzéshez használt oszlopok neve Szolgáltatások, a visszaadott előrejelzést tartalmazó oszlop neve Pedig Címke.
Filmbesorolásokat szeretne előrejelezni, ezért az értékelés oszlopa a Label
. A másik három oszlop, a userId
, movieId
és timestamp
mind Features
az előrejelzésére szolgálnak.Label
Funkciók | Címke |
---|---|
userId |
rating |
movieId |
|
timestamp |
Ön dönti el, hogy melyiket Features
használja a előrejelzéshez Label
. Az olyan módszereket is használhatja, mint a permutáció funkció fontossága , hogy segítsen kiválasztani a legjobbat Features
.
Ebben az esetben ki kell küszöbölnie az timestamp
oszlopot, Feature
mert az időbélyeg nem befolyásolja igazán, hogy egy felhasználó hogyan értékeli egy adott filmet, és így nem járul hozzá a pontosabb előrejelzéshez:
Funkciók | Címke |
---|---|
userId |
rating |
movieId |
Ezután meg kell határoznia az adatstruktúrát a bemeneti osztályhoz.
Adjon hozzá egy új osztályt a projekthez:
A Megoldáskezelőben kattintson a jobb gombbal a projektre, majd válassza az Új elem hozzáadása >lehetőséget.
Az Új elem hozzáadása párbeszédpanelen válassza az Osztály lehetőséget, és módosítsa a Név mezőt MovieRatingData.cs névre. Ezután válassza a Hozzáadás gombot.
Megnyílik a MovieRatingData.cs fájl a kódszerkesztőben. Adja hozzá a következő using
utasítást a MovieRatingData.cs elejéhez:
using Microsoft.ML.Data;
Hozzon létre egy nevű MovieRating
osztályt úgy, hogy eltávolítja a meglévő osztálydefiníciót, és hozzáadja a következő kódot a MovieRatingData.cs fájlhoz:
public class MovieRating
{
[LoadColumn(0)]
public float userId;
[LoadColumn(1)]
public float movieId;
[LoadColumn(2)]
public float Label;
}
MovieRating
bemeneti adatosztályt ad meg. A LoadColumn attribútum határozza meg, hogy az adathalmaz mely oszlopait (oszlopindex alapján) kell betölteni. A userId
és movieId
az oszlop az Ön Features
(a bemenetek, amelyeket a modellnek ad az előrejelzéshez Label
), a minősítési oszlop pedig az Label
, amelyet előre jelez (a modell kimenete).
Hozzon létre egy másik osztályt( MovieRatingPrediction
) az előrejelzett eredmények megjelenítéséhez a következő kód hozzáadásával a MovieRating
MovieRatingData.cs osztály után:
public class MovieRatingPrediction
{
public float Label;
public float Score;
}
A Program.cs fájlban cserélje le a Console.WriteLine("Hello World!")
kódot a következő kódra:
MLContext mlContext = new MLContext();
Az MLContext osztály az összes ML.NET művelet kiindulópontja, és az inicializálás mlContext
egy új ML.NET környezetet hoz létre, amely megosztható a modelllétrehozási munkafolyamat-objektumok között. Ez fogalmilag hasonló az Entity Frameworkhez DBContext
.
A fájl alján hozzon létre egy nevű metódust LoadData()
:
(IDataView training, IDataView test) LoadData(MLContext mlContext)
{
}
Megjegyzés
Ez a metódus hibaüzenetet ad, amíg a következő lépésekben nem ad hozzá egy visszatérési utasítást.
Inicializálja az adatelérésiút-változókat, töltse be az adatokat a *.csv fájlokból, és adja vissza az Train
és Test
az adatokat objektumként IDataView
. Ehhez adja hozzá a következő kódot a következő kódsorként LoadData()
:
var trainingDataPath = Path.Combine(Environment.CurrentDirectory, "Data", "recommendation-ratings-train.csv");
var testDataPath = Path.Combine(Environment.CurrentDirectory, "Data", "recommendation-ratings-test.csv");
IDataView trainingDataView = mlContext.Data.LoadFromTextFile<MovieRating>(trainingDataPath, hasHeader: true, separatorChar: ',');
IDataView testDataView = mlContext.Data.LoadFromTextFile<MovieRating>(testDataPath, hasHeader: true, separatorChar: ',');
return (trainingDataView, testDataView);
A ML.NET adatai IDataView-felületként jelennek meg.
IDataView
rugalmas, hatékony módja a táblázatos adatok (numerikus és szöveges) leírásának. Az adatok betölthetők szöveges fájlból vagy valós időben (például SQL-adatbázisból vagy naplófájlokból) egy IDataView
objektumba.
A LoadFromTextFile() meghatározza az adatsémát, és beolvassa a fájlt. Az adatútvonal változóit veszi fel, és egy IDataView
értéket ad vissza. Ebben az esetben meg kell adnia a és Train
a fájlok elérési útjátTest
, és meg kell adnia a szövegfájl fejlécét (így megfelelően használhatja az oszlopneveket) és a vessző karakter adatelválasztóját (az alapértelmezett elválasztó egy lap).
Adja hozzá a következő kódot a metódus meghívásáhozLoadData()
, és adja vissza a és Test
az Train
adatokat:
(IDataView trainingDataView, IDataView testDataView) = LoadData(mlContext);
Hozza létre a metódust BuildAndTrainModel()
közvetlenül a LoadData()
metódus után a következő kóddal:
ITransformer BuildAndTrainModel(MLContext mlContext, IDataView trainingDataView)
{
}
Megjegyzés
Ez a metódus hibaüzenetet ad, amíg a következő lépésekben nem ad hozzá egy visszatérési utasítást.
Az adatátalakítások definiálásához adja hozzá a következő kódot a következőhöz BuildAndTrainModel()
:
IEstimator<ITransformer> estimator = mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: "userIdEncoded", inputColumnName: "userId")
.Append(mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: "movieIdEncoded", inputColumnName: "movieId"));
Mivel userId
a felhasználókat és movieId
a mozgóképcímeket jelöli, nem a valós értékeket, a MapValueToKey() metódussal mindegyiket userId
movieId
numerikus kulcstípusú Feature
oszlopmá alakíthatja (a javaslati algoritmusok által elfogadott formátumot), és új adathalmazoszlopokként adja hozzá őket:
userId | movieId | Címke | userIdEncoded | movieIdEncoded |
---|---|---|---|---|
1 | 1 | 4 | userKey1 | movieKey1 |
1 | 3 | 4 | userKey1 | movieKey2 |
1 | 6 | 4 | userKey1 | movieKey3 |
Válassza ki a gépi tanulási algoritmust, és fűzze hozzá az adatátalakítási definíciókhoz a következő kódsor BuildAndTrainModel()
hozzáadásával:
var options = new MatrixFactorizationTrainer.Options
{
MatrixColumnIndexColumnName = "userIdEncoded",
MatrixRowIndexColumnName = "movieIdEncoded",
LabelColumnName = "Label",
NumberOfIterations = 20,
ApproximationRank = 100
};
var trainerEstimator = estimator.Append(mlContext.Recommendation().Trainers.MatrixFactorization(options));
A MatrixFactorizationTrainer a javaslat betanítási algoritmusa. A Matrix Factorization a javaslatok gyakori megközelítése, ha olyan adatokkal rendelkezik, amelyek alapján a felhasználók a múltban értékelték a termékeket, ez az oktatóanyagban szereplő adathalmazok esetében is így van. Vannak más javaslati algoritmusok is, ha különböző adatok érhetők el (további információért lásd az alábbi Egyéb javaslati algoritmusok szakaszt).
Ebben az esetben az Matrix Factorization
algoritmus egy "együttműködési szűrés" nevű módszert használ, amely feltételezi, hogy ha az 1. felhasználónak ugyanaz a véleménye, mint a 2. felhasználónak egy adott problémáról, akkor az 1. felhasználó valószínűleg ugyanúgy érzi magát, mint a 2. felhasználó egy másik problémáról.
Ha például az 1. felhasználó és a 2. felhasználó hasonlóan értékeli a filmeket, akkor a 2. felhasználó nagyobb valószínűséggel élvez egy olyan filmet, amelyet az 1. felhasználó megnézett és magasra értékelt:
Incredibles 2 (2018) |
The Avengers (2012) |
Guardians of the Galaxy (2014) |
|
---|---|---|---|
1. felhasználó | Megtekintett és kedvelt film | Megtekintett és kedvelt film | Megtekintett és kedvelt film |
2. felhasználó | Megtekintett és kedvelt film | Megtekintett és kedvelt film | Nem nézték meg -- AJÁNLOTT film |
A Matrix Factorization
tréner számos beállítással rendelkezik, amelyekről az alábbi Algoritmus hiperparaméterek című szakaszban olvashat bővebben.
Illesztse a modellt az Train
adatokhoz, és adja vissza a betanított modellt úgy, hogy a metódus következő kódsoraként adja hozzá a BuildAndTrainModel()
következőt:
Console.WriteLine("=============== Training the model ===============");
ITransformer model = trainerEstimator.Fit(trainingDataView);
return model;
A Fit() metódus a megadott betanítási adatkészlettel tanítja be a modellt. Technikailag végrehajtja a definíciókat az Estimator
adatok átalakításával és a betanítás alkalmazásával, és visszaadja a betanított modellt, amely egy Transformer
.
A ML.NET modell betanítási munkafolyamatával kapcsolatos további információkért lásd: Mi az ML.NET és hogyan működik?
A metódus meghívásához BuildAndTrainModel()
és a betanított modell visszaadásához adja hozzá a következő kódsort a LoadData()
metódus hívása alatt:
ITransformer model = BuildAndTrainModel(mlContext, trainingDataView);
Miután betanította a modellt, a tesztadatok használatával értékelje ki, hogyan teljesít a modell.
Hozza létre a metódust EvaluateModel()
közvetlenül a BuildAndTrainModel()
metódus után a következő kóddal:
void EvaluateModel(MLContext mlContext, IDataView testDataView, ITransformer model)
{
}
Alakítsa át az Test
adatokat a következő kód EvaluateModel()
hozzáadásával:
Console.WriteLine("=============== Evaluating the model ===============");
var prediction = model.Transform(testDataView);
A Transform() metódus előrejelzéseket készít egy tesztadatkészlet több megadott bemeneti soráról.
Értékelje ki a modellt úgy, hogy hozzáadja a következő kódot a EvaluateModel()
metódus következő kódsoraként:
var metrics = mlContext.Regression.Evaluate(prediction, labelColumnName: "Label", scoreColumnName: "Score");
Miután elkészült az előrejelzési készlettel, az Evaluate() metódus kiértékeli a modellt, amely összehasonlítja az előrejelzett értékeket a tesztadatkészlet tényleges Labels
értékével, és metrikákat ad vissza a modell teljesítményéről.
Nyomtassa ki a kiértékelési metrikákat a konzolra úgy, hogy hozzáadja a következő kódot a EvaluateModel()
metódus következő kódsoraként:
Console.WriteLine("Root Mean Squared Error : " + metrics.RootMeanSquaredError.ToString());
Console.WriteLine("RSquared: " + metrics.RSquared.ToString());
Adja hozzá a következő kódsort a metódus hívása alatt a BuildAndTrainModel()
metódus meghívásához EvaluateModel()
:
EvaluateModel(mlContext, testDataView, model);
Az eddigi kimenetnek a következő szöveghez hasonlóan kell kinéznie:
=============== Training the model ===============
iter tr_rmse obj
0 1.5403 3.1262e+05
1 0.9221 1.6030e+05
2 0.8687 1.5046e+05
3 0.8416 1.4584e+05
4 0.8142 1.4209e+05
5 0.7849 1.3907e+05
6 0.7544 1.3594e+05
7 0.7266 1.3361e+05
8 0.6987 1.3110e+05
9 0.6751 1.2948e+05
10 0.6530 1.2766e+05
11 0.6350 1.2644e+05
12 0.6197 1.2541e+05
13 0.6067 1.2470e+05
14 0.5953 1.2382e+05
15 0.5871 1.2342e+05
16 0.5781 1.2279e+05
17 0.5713 1.2240e+05
18 0.5660 1.2230e+05
19 0.5592 1.2179e+05
=============== Evaluating the model ===============
Rms: 0.994051469730769
RSquared: 0.412556298844873
Ebben a kimenetben 20 iteráció található. Minden iterációban a hiba mértéke csökken, és közelebb kerül a 0-hoz.
Az root of mean squared error
(RMS vagy RMSE) a modell által előrejelzett értékek és a vizsgált adathalmaz megfigyelt értékei közötti különbségek mérésére szolgál. Gyakorlatilag ez a hibák négyzetgyöke. Minél alacsonyabb, annál jobb a modell.
R Squared
azt jelzi, hogy az adatok mennyire illenek a modellhez. 0 és 1 közötti tartományok. A 0 érték azt jelenti, hogy az adatok véletlenszerűek, vagy más módon nem felelnek meg a modellnek. Az 1 érték azt jelenti, hogy a modell pontosan megfelel az adatoknak. Azt szeretné, hogy a R Squared
pontszám a lehető legközelebb legyen az 1-hez.
A sikeres modellek létrehozása iteratív folyamat. Ez a modell kezdeti minősége alacsonyabb, mivel az oktatóanyag kis adathalmazokat használ a gyors modell betanításához. Ha nem elégedett a modell minőségével, megpróbálhatja javítani azt nagyobb betanítási adatkészletek biztosításával, vagy különböző betanítási algoritmusok kiválasztásával, amelyek mindegyik algoritmushoz különböző hiperparamétereket használnak. További információért tekintse meg az alábbi Modell fejlesztése című szakaszt.
Most már használhatja a betanított modellt, hogy előrejelzéseket készítsen az új adatokról.
Hozza létre a metódust UseModelForSinglePrediction()
közvetlenül a EvaluateModel()
metódus után a következő kóddal:
void UseModelForSinglePrediction(MLContext mlContext, ITransformer model)
{
}
PredictionEngine
Az értékelés előrejelzéséhez adja hozzá a következő kódot a következőhözUseModelForSinglePrediction()
:
Console.WriteLine("=============== Making a prediction ===============");
var predictionEngine = mlContext.Model.CreatePredictionEngine<MovieRating, MovieRatingPrediction>(model);
A PredictionEngine egy kényelmi API, amely lehetővé teszi, hogy egyetlen adatpéldányon végezzen előrejelzést.
PredictionEngine
nem szálbiztos. Egyszálas vagy prototípusos környezetben is használható. Az éles környezetekben a jobb teljesítmény és a szálbiztonság érdekében használja a PredictionEnginePool
szolgáltatást, amely objektumokat hoz létre ObjectPool
PredictionEngine
az alkalmazás teljes területén való használatra. Ebből az útmutatóból megtudhatja, hogyan használható PredictionEnginePool
ASP.NET Core webes API-ban.
Megjegyzés
PredictionEnginePool
A szolgáltatásbővítmény jelenleg előzetes verzióban érhető el.
Hozzon létre egy meghívott példánytMovieRating
, és adja át az előrejelzési motornak a metódus következő kódsoraiként UseModelForSinglePrediction()
az alábbiak testInput
hozzáadásával:
var testInput = new MovieRating { userId = 6, movieId = 10 };
var movieRatingPrediction = predictionEngine.Predict(testInput);
A Predict() függvény egyetlen adatoszlopra készít előrejelzést.
Ezután a () vagy az Score
előrejelzett minősítéssel megállapíthatja, hogy a movieId 10-et tartalmazó filmet szeretné-e ajánlani a 6. felhasználónak. Minél nagyobb a Score
, annál nagyobb annak a valószínűsége, hogy egy felhasználó kedvel egy adott filmet. Ebben az esetben tegyük fel, hogy az előrejelzett 3,5-ös besorolású > filmeket javasolja.
Az eredmények nyomtatásához adja hozzá a következő kódsorokat a UseModelForSinglePrediction()
metódushoz:
if (Math.Round(movieRatingPrediction.Score, 1) > 3.5)
{
Console.WriteLine("Movie " + testInput.movieId + " is recommended for user " + testInput.userId);
}
else
{
Console.WriteLine("Movie " + testInput.movieId + " is not recommended for user " + testInput.userId);
}
Adja hozzá a következő kódsort a metódus meghívása után a EvaluateModel()
metódus meghívásához UseModelForSinglePrediction()
:
UseModelForSinglePrediction(mlContext, model);
A metódus kimenetének a következő szöveghez hasonlóan kell kinéznie:
=============== Making a prediction ===============
Movie 10 is recommended for user 6
Ahhoz, hogy a modell használatával előrejelzéseket készítsen a végfelhasználói alkalmazásokban, először mentenie kell a modellt.
Hozza létre a metódust SaveModel()
közvetlenül a UseModelForSinglePrediction()
metódus után a következő kóddal:
void SaveModel(MLContext mlContext, DataViewSchema trainingDataViewSchema, ITransformer model)
{
}
Mentse a betanított modellt úgy, hogy hozzáadja a következő kódot a SaveModel()
metódushoz:
var modelPath = Path.Combine(Environment.CurrentDirectory, "Data", "MovieRecommenderModel.zip");
Console.WriteLine("=============== Saving the model to a file ===============");
mlContext.Model.Save(model, trainingDataViewSchema, modelPath);
Ez a módszer egy .zip fájlba menti a betanított modellt (az "Adatok" mappába), amelyet aztán más .NET-alkalmazásokban is használhat előrejelzések készítéséhez.
Adja hozzá a következő kódsort a metódus meghívása után a UseModelForSinglePrediction()
metódus meghívásához SaveModel()
:
SaveModel(mlContext, trainingDataView.Schema, model);
Miután mentette a betanított modellt, különböző környezetekben használhatja a modellt. A betanított gépi tanulási modellek alkalmazásokban való üzembe helyezéséről a Betanított modellek mentése és betöltése című témakörben olvashat.
A fenti lépések végrehajtása után futtassa a konzolalkalmazást (Ctrl + F5). A fenti egyetlen előrejelzés eredményeinek az alábbihoz hasonlónak kell lenniük. Megjelenhetnek figyelmeztetések vagy üzenetek feldolgozása, de ezeket az üzeneteket eltávolítottuk az alábbi eredményekből az egyértelműség érdekében.
=============== Training the model ===============
iter tr_rmse obj
0 1.5382 3.1213e+05
1 0.9223 1.6051e+05
2 0.8691 1.5050e+05
3 0.8413 1.4576e+05
4 0.8145 1.4208e+05
5 0.7848 1.3895e+05
6 0.7552 1.3613e+05
7 0.7259 1.3357e+05
8 0.6987 1.3121e+05
9 0.6747 1.2949e+05
10 0.6533 1.2766e+05
11 0.6353 1.2636e+05
12 0.6209 1.2561e+05
13 0.6072 1.2462e+05
14 0.5965 1.2394e+05
15 0.5868 1.2352e+05
16 0.5782 1.2279e+05
17 0.5713 1.2227e+05
18 0.5637 1.2190e+05
19 0.5604 1.2178e+05
=============== Evaluating the model ===============
Rms: 0.977175077487166
RSquared: 0.43233349213192
=============== Making a prediction ===============
Movie 10 is recommended for user 6
=============== Saving the model to a file ===============
Gratulálunk! Sikeresen létrehozott egy gépi tanulási modellt a filmek ajánlásához. Az oktatóanyag forráskódját a dotnet/samples adattárban találja.
Számos módon javíthatja a modell teljesítményét, hogy pontosabb előrejelzéseket kapjon.
Ha több betanítási adatot ad hozzá, amely elegendő mintával rendelkezik az egyes felhasználókhoz és mozgókép-azonosítókhoz, javíthatja a javaslati modell minőségét.
A keresztérvényesítés olyan modellek kiértékelésére szolgál, amelyek véletlenszerűen felosztják az adatokat részhalmazokra (ahelyett, hogy tesztadatokat nyernek ki az adathalmazból, mint ebben az oktatóanyagban), és a csoportok némelyikét betanítási adatként, néhány csoportot pedig tesztadatokként használ. Ez a módszer a modellminőség szempontjából felülmúlja a betanítási tesztek felosztását.
Ebben az oktatóanyagban csak az adathalmaz által biztosított három Features
(user id
, movie id
és rating
) adatkészletet fogja használni.
Bár ez jó kezdet, a valóságban érdemes lehet más attribútumokat hozzáadni, vagy Features
(például életkor, nem, földrajzi hely stb.), ha szerepelnek az adathalmazban. Ha relevánsabb Features
elemet ad hozzá, azzal javíthatja a javaslati modell teljesítményét.
Ha nem biztos abban, hogy melyik Features
lehet a leginkább releváns a gépi tanulási feladathoz, akkor használhatja a Funkció-hozzájárulás számítása (FCC) és a permutáció funkció fontosságát is, amely ML.NET nyújtja a legbefolyásosabb Features
felfedezéséhez.
Bár a ML.NET jó alapértelmezett betanítási algoritmusokat biztosít, az algoritmus hiperparamétereinek módosításával tovább finomhangolhatja a teljesítményt.
A esetében Matrix Factorization
kísérletezhet olyan hiperparaméterekkel, mint a NumberOfIterations és a ApproximationRank , hogy lássa, ez jobb eredményeket ad-e.
Ebben az oktatóanyagban például az algoritmus beállításai a következők:
var options = new MatrixFactorizationTrainer.Options
{
MatrixColumnIndexColumnName = "userIdEncoded",
MatrixRowIndexColumnName = "movieIdEncoded",
LabelColumnName = "Label",
NumberOfIterations = 20,
ApproximationRank = 100
};
A mátrix-faktorizációs algoritmus együttműködési szűréssel csak egy megközelítés a filmjavaslatok végrehajtásához. Sok esetben előfordulhat, hogy nem rendelkezik a minősítési adatokkal, és csak a filmelőzmények érhetők el a felhasználók számára. Más esetekben előfordulhat, hogy nem csak a felhasználó minősítési adataival rendelkezik.
Algoritmus | Eset | Sample |
---|---|---|
Egyosztályos mátrix faktorizálása | Ezt akkor használja, ha csak userId és movieId azonosítóval rendelkezik. Ez a javaslati stílus az együttes vásárlás forgatókönyvén vagy a gyakran együtt vásárolt termékeken alapul, ami azt jelenti, hogy a saját vásárlási előzményeik alapján egy termékkészletet javasol az ügyfeleknek. | >Próbálja ki |
Mezőérzékeny faktorizációs gépek | Ezzel a funkcióval javaslatokat tehet, ha a userId azonosítón, a termékazonosítón és az értékelésen (például a termék leírásán vagy a termék árán) túl több szolgáltatással rendelkezik. Ez a módszer egy együttműködési szűrési módszert is használ. | >Próbálja ki |
Az együttműködésen alapuló szűrés egyik gyakori problémája a hidegindítási probléma, amely akkor fordul elő, ha olyan új felhasználóval rendelkezik, aki nem rendelkezik korábbi adatokkal, hogy következtetéseket vonjon le. Ezt a problémát gyakran azzal oldják meg, hogy megkérik az új felhasználókat, hogy hozzanak létre egy profilt, és értékeljenek például a korábban látott filmeket. Bár ez a módszer némi terhet ró a felhasználóra, néhány kezdőadatot biztosít azoknak az új felhasználóknak, akik nem rendelkeznek minősítési előzményekkel.
Az oktatóanyagban használt adatok a MovieLens-adatkészletből származnak.
Ez az oktatóanyag bemutatta, hogyan végezheti el az alábbi műveleteket:
További információért lépjen tovább a következő oktatóanyagra
.NET-visszajelzés
A(z) .NET egy nyílt forráskód projekt. Visszajelzés adásához válasszon egy hivatkozást:
esemény
Intelligens alkalmazások létrehozása
márc. 17. 21 - márc. 21. 10
Csatlakozzon a meetup sorozathoz, hogy valós használati esetek alapján, skálázható AI-megoldásokat hozzon létre más fejlesztőkkel és szakértőkkel.
RegisztrációOktatás
Tanúsítvány
Microsoft Tanúsított: Azure Adattudós Szaktárs - Certifications
Kezelheti az adatok betöltését és előkészítését, a modellek betanítását és üzembe helyezését, valamint a gépi tanulási megoldások monitorozását a Python, az Azure Machine Learning és az MLflow használatával.
Dokumentáció
Oktatóanyag: Árak előrejelzése regresszióval - ML.NET
Ez az oktatóanyag bemutatja, hogyan hozhat létre regressziós modellt ML.NET használatával az árak előrejelzéséhez, különösen a New York-i taxiárak előrejelzéséhez.
Az ML.NET oktatóanyagok bemutatja, hogyan hozhat létre egyéni AI-megoldásokat, és hogyan integrálhatja őket a .NET-alkalmazásokba.
Oktatóanyag: Íriszvirágok kategorizálása – k-közép klaszterezés - ML.NET
Tanulja meg, hogyan használhatja az ML.NET-et klaszterezési környezetben.