Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu se dozvíte, jak vytvořit doporučovač filmů s ML.NET v konzolové aplikaci .NET. Kroky používají C# a Visual Studio 2019.
V tomto návodu se naučíte, jak:
- Výběr algoritmu strojového učení
- Příprava a načtení dat
- Sestavení a trénování modelu
- Vyhodnocení modelu
- Nasazení a využití modelu
Zdrojový kód pro tento kurz najdete v úložišti dotnet/samples .
Pracovní postup strojového učení
K provedení úlohy a všech dalších ML.NET úkolů použijete následující kroky:
Požadavky
Vyberte příslušnou úlohu strojového učení.
Existuje několik způsobů, jak přistupovat k problémům s doporučeními, například doporučovat seznam filmů nebo doporučovat seznam souvisejících produktů, ale v tomto případě předpovědíte, jaké hodnocení (1–5) uživatel poskytne konkrétnímu filmu, a doporučí, aby video bylo vyšší než definovaná prahová hodnota (čím vyšší je hodnocení, tím vyšší je pravděpodobnost, že uživatel určitý film lajkuje).
Vytvoření konzolové aplikace
Vytvoření projektu
Vytvořte konzolovou aplikaci jazyka C#s názvem MovieRecommender. Klikněte na tlačítko Next.
Jako architekturu, která se má použít, zvolte .NET 8. Klikněte na tlačítko Vytvořit.
Vytvořte adresář s názvem Data v projektu pro uložení datové sady:
V Průzkumníku řešení klikněte pravým tlačítkem na projekt a vyberte Přidat>novou složku. Zadejte "Data" a vyberte Enter.
Nainstalujte balíčky NuGet Microsoft.ML a Microsoft.ML.Recommender :
Poznámka:
Tato ukázka používá nejnovější stabilní verzi uvedených balíčků NuGet, pokud není uvedeno jinak.
V Průzkumník řešení klikněte pravým tlačítkem na projekt a vyberte Spravovat balíčky NuGet. Jako zdroj balíčku zvolte "nuget.org", vyberte kartu Procházet , vyhledejte Microsoft.ML, vyberte balíček v seznamu a vyberte Nainstalovat. V dialogovém okně Náhled změn vyberte tlačítko OK a pak v dialogovém okně Přijetí licence vyberte tlačítko Přijmout, pokud souhlasíte s licenčními podmínkami pro uvedené balíčky. Tento postup opakujte pro Microsoft.ML.Recommender.
Na začátek souboru
usingpřidejte následující direktivy:using Microsoft.ML; using Microsoft.ML.Trainers; using MovieRecommendation;
Stáhněte si data
Stáhněte si dvě datové sady a uložte je do složky Data , kterou jste vytvořili dříve:
Klikněte pravým tlačítkem na recommendation-ratings-train.csv a vyberte Uložit odkaz (nebo Cíl) jako...
Klikněte pravým tlačítkem na recommendation-ratings-test.csv a vyberte Uložit odkaz (nebo Cíl) jako...
Nezapomeňte buď uložit soubory *.csv do složky Data , nebo poté, co je uložíte jinde, přesuňte soubory *.csv do složky Data .
V Průzkumníku řešení klikněte pravým tlačítkem na každý ze souborů *.csv a vyberte Vlastnosti. V části Upřesnit změňte hodnotu „Kopírovat do výstupního adresáře“ na „Kopírovat, pokud je novější“.
Načtení dat
Prvním krokem v procesu ML.NET je příprava a načtení trénovacích a testovacích dat modelu.
Data hodnocení doporučení jsou rozdělena do Train a Test datových sad. Data Train se používají k přizpůsobení modelu. Data Test se používají k předpovědím pomocí vytrénovaného modelu a vyhodnocení výkonu modelu. Je běžné mít rozdělení 80/20 s daty Train a Test data.
Níže je uveden náhled dat z vašich *.csv souborů:
V souborech *.csv jsou čtyři sloupce:
userIdmovieIdratingtimestamp
Ve strojovém učení se sloupce používané k předpovědím nazývají Funkce a sloupec s vrácenou predikcí se nazývá Popisek.
Chcete predikovat hodnocení filmů, takže sloupec hodnocení je Label. Ostatní tři sloupce, userId, movieId a timestamp jsou Features použity k predikci Label.
| Features | Označení |
|---|---|
userId |
rating |
movieId |
|
timestamp |
Je na vás, abyste se rozhodli, které Features se používají k predikci Label. Můžete také použít metody, jako je důležitost funkce permutace , které vám pomohou s výběrem nejlepších Features.
V tomto případě byste měli odstranit sloupec označený jako timestamp s ohledem na Feature, protože časové razítko ve skutečnosti nemá vliv na to, jak uživatel hodnotí daný film, a proto by nepřispělo k vytvoření přesnější předpovědi:
| Features | Označení |
|---|---|
userId |
rating |
movieId |
Dále musíte definovat datovou strukturu pro vstupní třídu.
Přidejte do projektu novou třídu:
V Průzkumníku řešení klikněte pravým tlačítkem myši na projekt a pak vyberte Přidat > novou položku.
V dialogovém okně Přidat novou položku vyberte Třídu a změňte pole Název na MovieRatingData.cs. Pak vyberte Přidat.
Soubor MovieRatingData.cs se otevře v editoru kódu. Na začátek using přidejte následující direktivu:
using Microsoft.ML.Data;
Vytvořte třídu volanou MovieRating odebráním existující definice třídy a přidáním následujícího kódu do MovieRatingData.cs:
public class MovieRating
{
[LoadColumn(0)]
public float userId;
[LoadColumn(1)]
public float movieId;
[LoadColumn(2)]
public float Label;
}
MovieRating určuje vstupní datovou třídu. Atribut LoadColumn určuje, které sloupce (podle indexu sloupců) v datové sadě mají být načteny.
userId a movieId sloupce jsou vaše Features (vstupy, které modelu poskytnete pro předpověď Label), a sloupec hodnocení je ten Label, který budete předpovědět (výstup modelu).
Vytvořte další třídu, MovieRatingPredictionkterá bude reprezentovat predikované výsledky přidáním následujícího kódu za MovieRating třídu v MovieRatingData.cs:
public class MovieRatingPrediction
{
public float Label;
public float Score;
}
V Program.cs nahraďte Console.WriteLine("Hello World!") následujícím kódem:
MLContext mlContext = new MLContext();
MLContext třída je výchozím bodem pro všechny operace ML.NET a inicializace mlContext vytvoří nové ML.NET prostředí, které lze sdílet napříč objekty pracovního postupu vytváření modelu. Je to podobné, koncepčně, jako DBContext v Entity Frameworku.
V dolní části souboru vytvořte metodu s názvem LoadData():
(IDataView training, IDataView test) LoadData(MLContext mlContext)
{
}
Poznámka:
Tato metoda vám poskytne chybu, dokud v následujících krocích nepřidáte návratový příkaz.
Inicializujte proměnné pro cesty k datům, načtěte data ze souborů *.csv a vraťte data Train a Test jako objekty IDataView přidáním následujícího řádku kódu do 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);
Data v ML.NET jsou reprezentována jako rozhraní IDataView.
IDataView je flexibilní, efektivní způsob popisu tabulkových dat (číselných a textových). Data lze načíst z textového souboru nebo v reálném čase (například z databáze SQL nebo souborů protokolu) do objektu IDataView .
LoadFromTextFile() definuje schéma dat a přečte v souboru. Přebírá proměnné cesty k datům a vrací IDataViewhodnotu . V tomto případě zadáte cestu k souborům Test a Train, označíte záhlaví textového souboru (aby bylo možné správně používat názvy sloupců) a udáte čárku jako oddělovač dat (výchozí oddělovač je tabulátor).
Přidejte následující kód, který zavolá metodu LoadData()Train a vrátí data Test :
(IDataView trainingDataView, IDataView testDataView) = LoadData(mlContext);
Sestavení a trénování modelu
Vytvořte metodu BuildAndTrainModel() hned za metodou LoadData() pomocí následujícího kódu:
ITransformer BuildAndTrainModel(MLContext mlContext, IDataView trainingDataView)
{
}
Poznámka:
Tato metoda vám poskytne chybu, dokud v následujících krocích nepřidáte návratový příkaz.
Definujte transformace dat přidáním následujícího kódu do BuildAndTrainModel():
IEstimator<ITransformer> estimator = mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: "userIdEncoded", inputColumnName: "userId")
.Append(mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: "movieIdEncoded", inputColumnName: "movieId"));
Vzhledem k tomu, že userId a movieId představují názvy uživatelů a filmů, nikoli skutečné hodnoty, použijete metodu MapValueToKey() k transformaci každého userId a každého movieId do sloupce typu Feature číselného klíče (formát přijatý algoritmy doporučení) a přidáte je jako nové sloupce datové sady:
| userId | movieId | Označení | userIdEncoded | movieIdEncoded |
|---|---|---|---|---|
| 1 | 1 | 4 | userKey1 | movieKey1 |
| 1 | 3 | 4 | userKey1 | movieKey2 |
| 1 | 6 | 4 | userKey1 | movieKey3 |
Zvolte algoritmus strojového učení a připojte ho k definicím transformace dat přidáním následujícího řádku kódu:BuildAndTrainModel()
var options = new MatrixFactorizationTrainer.Options
{
MatrixColumnIndexColumnName = "userIdEncoded",
MatrixRowIndexColumnName = "movieIdEncoded",
LabelColumnName = "Label",
NumberOfIterations = 20,
ApproximationRank = 100
};
var trainerEstimator = estimator.Append(mlContext.Recommendation().Trainers.MatrixFactorization(options));
MatrixFactorizationTrainer je váš algoritmus trénování doporučení. Maticové faktorizace je běžný přístup k doporučení, pokud máte data o tom, jak uživatelé v minulosti hodnotili produkty, což je případ datových sad v tomto kurzu. Existují další algoritmy doporučení, pro které máte k dispozici různá data (další informace najdete v části Další algoritmy doporučení níže).
V tomto případě Matrix Factorization algoritmus používá metodu s názvem "filtrování pro spolupráci", která předpokládá, že pokud má Uživatel 1 stejný názor jako Uživatel 2 u určitého problému, pak uživatel 1 je pravděpodobnější, že se bude cítit stejně jako Uživatel 2 o jiném problému.
Pokud například uživatel 1 a uživatel 2 hodnotili filmy podobně, pak je pravděpodobnější, že si uživatel 2 vychutná film, který uživatel 1 sledoval a hodnotil vysoko.
Incredibles 2 (2018) |
The Avengers (2012) |
Guardians of the Galaxy (2014) |
|
|---|---|---|---|
| Uživatel 1 | Zhlédli jsme a lajkovali film | Zhlédli jsme a lajkovali film | Zhlédli jsme a lajkovali film |
| Uživatel 2 | Zhlédli jsme a lajkovali film | Zhlédli jsme a lajkovali film | Nehlídal -- DOPORUČIT film |
Trenér Matrix Factorization má několik možností, o kterých si můžete přečíst v části Hyperparametry algoritmu níže.
Přizpůsobit model Train datům a vrátit trénovaný model přidáním následujícího řádku kódu do BuildAndTrainModel() metody:
Console.WriteLine("=============== Training the model ===============");
ITransformer model = trainerEstimator.Fit(trainingDataView);
return model;
Metoda Fit() trénuje model s poskytnutou trénovací datovou sadou. Technicky vzato se definice provádějí Estimator transformací dat a použitím trénování a vrátí zpět natrénovaný model, což je Transformer.
Další informace o pracovním postupu trénování modelu v ML.NET najdete v tématu Co je ML.NET a jak funguje?.
Přidejte následující kód jako další řádek kódu pod volání LoadData() metody, která zavolá metodu BuildAndTrainModel() a vrátí natrénovaný model:
ITransformer model = BuildAndTrainModel(mlContext, trainingDataView);
Vyhodnocení modelu
Jakmile model vytrénujete, použijte testovací data k vyhodnocení výkonu modelu.
Vytvořte metodu EvaluateModel() hned za metodou BuildAndTrainModel() pomocí následujícího kódu:
void EvaluateModel(MLContext mlContext, IDataView testDataView, ITransformer model)
{
}
Transformujte Test data přidáním následujícího kódu do EvaluateModel():
Console.WriteLine("=============== Evaluating the model ===============");
var prediction = model.Transform(testDataView);
Metoda Transform() vytváří předpovědi pro více zadaných vstupních řádků testovací datové sady.
Vyhodnoťte model přidáním následujícího řádku kódu v EvaluateModel() metodě:
var metrics = mlContext.Regression.Evaluate(prediction, labelColumnName: "Label", scoreColumnName: "Score");
Jakmile nastavíte predikci, metoda Evaluate() vyhodnotí model, který porovná predikované hodnoty se skutečnými Labels hodnotami v testovací datové sadě a vrátí metriky o tom, jak model funguje.
Metriky vyhodnocení vytiskněte do konzoly přidáním následujícího řádku kódu v EvaluateModel() metodě:
Console.WriteLine("Root Mean Squared Error : " + metrics.RootMeanSquaredError.ToString());
Console.WriteLine("RSquared: " + metrics.RSquared.ToString());
Přidejte následující řádek kódu pod volání BuildAndTrainModel() metody volání metody EvaluateModel() :
EvaluateModel(mlContext, testDataView, model);
Výstup by zatím měl vypadat podobně jako v následujícím textu:
=============== 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
V tomto výstupu je 20 iterací. V každé iteraci se míra chyb snižuje a konverguje blíž a blíž k 0.
Služba root of mean squared error (RMS nebo RMSE) se používá k měření rozdílů mezi predikovanými hodnotami modelu a pozorovanými hodnotami testovací datové sady. Technicky vzato je to odmocnina průměru čtverců hodnot chyb. Tím nižší je, tím lépe model je.
R Squared určuje, jak dobře data odpovídají modelu. Pohybuje se od 0 do 1. Hodnota 0 znamená, že data jsou náhodná nebo jinak se do modelu nevejdou. Hodnota 1 znamená, že model přesně odpovídá datům. Chcete, aby vaše R Squared skóre bylo co nejblíže 1.
Vytváření úspěšných modelů je iterativní proces. Tento model má počáteční nižší kvalitu, protože kurz používá malé datové sady k zajištění rychlého trénování modelu. Pokud nejste spokojení s kvalitou modelu, můžete se pokusit ho vylepšit tím, že poskytnete větší trénovací datové sady nebo zvolíte různé trénovací algoritmy s různými hyperparametry pro každý algoritmus. Další informace najdete v části Vylepšení modelu níže.
Používání modelu
Trénovaný model teď můžete použít k vytváření předpovědí nových dat.
Vytvořte metodu UseModelForSinglePrediction() hned za metodou EvaluateModel() pomocí následujícího kódu:
void UseModelForSinglePrediction(MLContext mlContext, ITransformer model)
{
}
Pomocí funkce PredictionEngine predikce hodnocení přidejte následující kód do UseModelForSinglePrediction():
Console.WriteLine("=============== Making a prediction ===============");
var predictionEngine = mlContext.Model.CreatePredictionEngine<MovieRating, MovieRatingPrediction>(model);
PredictionEngine je pohodlné rozhraní API, které umožňuje provádět predikce pro jednu instanci dat.
PredictionEngine není bezpečný pro přístup z více vláken. Je přijatelné použít v jednovláknovém nebo prototypovém prostředí. Pokud chcete zvýšit výkon a bezpečnost vláken v produkčních prostředích, použijte PredictionEnginePool službu, která vytvoří ObjectPoolPredictionEngine objekty pro použití v celé aplikaci. V tomto průvodci se dozvíte, jak používat PredictionEnginePool webové rozhraní API ASP.NET Core.
Poznámka:
PredictionEnginePool Rozšíření služby je aktuálně ve verzi Preview.
Vytvořte instanci MovieRating, která se nazývá testInput, a předejte ji do Prediction Engine přidáním následujících řádků kódu v metodě UseModelForSinglePrediction():
var testInput = new MovieRating { userId = 6, movieId = 10 };
var movieRatingPrediction = predictionEngine.Predict(testInput);
Funkce Predict() vytvoří předpověď na jeden sloupec dat.
Pak můžete pomocí Score nebo predikovaného hodnocení určit, jestli chcete film s filmId 10 doporučit uživateli 6. Čím vyšší Scoreje , tím vyšší je pravděpodobnost, že uživatel lajkuje konkrétní film. V tomto případě řekněme, že doporučíte filmy s predikovaným hodnocením > 3,5.
Pokud chcete výsledky vytisknout, přidejte následující řádky kódu v UseModelForSinglePrediction() metodě:
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);
}
Za volání EvaluateModel() metody pro volání UseModelForSinglePrediction() metody přidejte následující řádek kódu:
UseModelForSinglePrediction(mlContext, model);
Výstup této metody by měl vypadat podobně jako v následujícím textu:
=============== Making a prediction ===============
Movie 10 is recommended for user 6
Uložení modelu
Pokud chcete model použít k předpovědím v aplikacích koncových uživatelů, musíte model nejprve uložit.
Vytvořte metodu SaveModel() hned za metodou UseModelForSinglePrediction() pomocí následujícího kódu:
void SaveModel(MLContext mlContext, DataViewSchema trainingDataViewSchema, ITransformer model)
{
}
Uložte trénovaný model přidáním následujícího kódu do SaveModel() metody:
var modelPath = Path.Combine(Environment.CurrentDirectory, "Data", "MovieRecommenderModel.zip");
Console.WriteLine("=============== Saving the model to a file ===============");
mlContext.Model.Save(model, trainingDataViewSchema, modelPath);
Tato metoda uloží trénovaný model do souboru .zip (ve složce Data), který pak můžete použít v jiných aplikacích .NET k předpovědím.
Za volání UseModelForSinglePrediction() metody pro volání SaveModel() metody přidejte následující řádek kódu:
SaveModel(mlContext, trainingDataView.Schema, model);
Použití uloženého modelu
Jakmile trénovaný model uložíte, můžete ho využívat v různých prostředích. Informace o zprovoznění natrénovaného modelu strojového učení v aplikacích najdete v tématu Ukládání a načítání natrénovaných modelů .
Results
Po provedení výše uvedených kroků spusťte konzolovou aplikaci (Ctrl + F5). Výsledky z výše uvedené jedné předpovědi by se měly podobat následujícímu. Mohou se zobrazit upozornění nebo zpracovatelské zprávy, ale tyto zprávy byly z následujících výsledků odebrány pro větší přehlednost výsledků.
=============== 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 ===============
Gratulujeme! Teď jste úspěšně vytvořili model strojového učení pro doporučování filmů. Zdrojový kód pro tento kurz najdete v úložišti dotnet/samples .
Vylepšení modelu
Existuje několik způsobů, jak zlepšit výkon modelu, abyste mohli získat přesnější předpovědi.
Data
Přidání dalších trénovacích dat, která mají dostatek ukázek pro každého uživatele a ID filmu, může pomoct zlepšit kvalitu modelu doporučení.
Křížové ověřování je technika pro vyhodnocení modelů, které náhodně rozdělí data na podmnožinu (místo extrahování testovacích dat z datové sady, jako jste to udělali v tomto kurzu) a vezme některé skupiny jako trénovací data a některé skupiny jako testovací data. Tato metoda překoná rozdělení trénování testu z hlediska kvality modelu.
Features
V tomto kurzu použijete pouze tři Features (user id, movie ida rating) poskytované datovou sadou.
I když je to dobrý začátek, můžete ve skutečnosti chtít přidat další atributy nebo Features (například věk, pohlaví, geografické umístění atd.), pokud jsou zahrnuty do datové sady. Přidání relevantnějších Features může pomoct zlepšit výkon modelu doporučení.
Pokud si nejste jistí, která Features z nich může být pro vaši úlohu strojového učení nejrelevantnější, můžete také využít výpočet příspěvků funkcí (FCC) a důležitost permutace, které ML.NET poskytuje ke zjištění nejvýkonnějšího Features.
Hyperparametry algoritmů
I když ML.NET poskytuje dobré výchozí trénovací algoritmy, můžete výkon dále vyladit změnou hyperparametrů algoritmu.
V Matrix Factorizationpřípadě můžete experimentovat s hyperparametry, jako jsou NumberOfIterations a Aproximační pořadí , abyste zjistili, jestli vám to dává lepší výsledky.
V tomto kurzu jsou například možnosti algoritmu:
var options = new MatrixFactorizationTrainer.Options
{
MatrixColumnIndexColumnName = "userIdEncoded",
MatrixRowIndexColumnName = "movieIdEncoded",
LabelColumnName = "Label",
NumberOfIterations = 20,
ApproximationRank = 100
};
Další algoritmy doporučení
Algoritmus faktorizace matice s filtrováním na spolupráci je pouze jedním z přístupů k provádění doporučení filmů. V mnoha případech nemusí být k dispozici data hodnocení a k dispozici jsou pouze historie filmů od uživatelů. V jiných případech můžete mít více než jen data hodnocení uživatele.
| Algorithm | Scenario | Sample |
|---|---|---|
| Faktorizace jedné třídy | Tuto možnost použijte, pokud máte pouze ID uživatele a movieId. Tento styl doporučení vychází ze scénáře spoluprodeje nebo produktů, které se často kupují společně, což znamená, že zákazníkům doporučí sadu produktů na základě vlastní historie nákupních objednávek. | >Vyzkoušejte si to |
| Field Aware Factorization Machines | Tato možnost slouží k doporučení, pokud máte více funkcí nad rámec userId, productId a hodnocení (například popis produktu nebo cena produktu). Tato metoda používá také přístup pro filtrování na spolupráci. | >Vyzkoušejte si to |
Nový scénář uživatele
Jedním z běžných problémů při kolaborativním filtrování je problém studeného startu, který nastává, když máte nového uživatele, který nemá žádná předchozí data k odvozování. Tento problém se často řeší tak, že požádáte nové uživatele o vytvoření profilu a například ohodnoťte filmy, které viděli v minulosti. I když tato metoda zatěžuje uživatele, poskytuje některá počáteční data pro nové uživatele bez historie hodnocení.
Zdroje informací
Data použitá v tomto kurzu jsou odvozena z MovieLens Dataset.
Další kroky
V tomto kurzu jste se naučili:
- Výběr algoritmu strojového učení
- Příprava a načtení dat
- Sestavení a trénování modelu
- Vyhodnocení modelu
- Nasazení a využití modelu
Další informace najdete v dalším kurzu.