Kurz: zjištění anomálií v prodeji produktů pomocí ML.NETTutorial: Detect anomalies in product sales with ML.NET

Naučte se, jak vytvořit aplikaci pro detekci anomálií pro prodejní data produktu.Learn how to build an anomaly detection application for product sales data. Tento kurz vytvoří konzolovou aplikaci .NET Core pomocí C# sady Visual Studio.This tutorial creates a .NET Core console application using C# in Visual Studio.

V tomto kurzu se naučíte:In this tutorial, you learn how to:

  • Načtení datLoad the data
  • Vytvoření transformace pro detekci anomálií špičkyCreate a transform for spike anomaly detection
  • Zjištění anomálií špičky pomocí transformaceDetect spike anomalies with the transform
  • Vytvoření transformace pro detekci anomálií bodu změnyCreate a transform for change point anomaly detection
  • Detekovat anomálie změn bodů pomocí transformaceDetect change point anomalies with the transform

Zdrojový kód pro tento kurz najdete v úložišti dotnet/Samples .You can find the source code for this tutorial at the dotnet/samples repository.

PožadavkyPrerequisites

Poznámka

Formát dat v product-sales.csv vychází z datové sady "šampon Sales" za tříleté období "původně vytvořeného z datového trhu a poskytovaného službou Time Series data Library (TSDL), kterou vytvořila Rob Hyndman.The data format in product-sales.csv is based on the dataset “Shampoo Sales Over a Three Year Period” originally sourced from DataMarket and provided by Time Series Data Library (TSDL), created by Rob Hyndman. "Nemožnost prodeje za tři roky v rámci" datové sady ", která je licencovaná na základě výchozího Open License pro datamarketo.“Shampoo Sales Over a Three Year Period” Dataset Licensed Under the DataMarket Default Open License.

Vytvoření konzolové aplikaceCreate a console application

  1. Vytvořte konzolovou aplikaci .NET Core nazvanou "ProductSalesAnomalyDetection".Create a .NET Core Console Application called "ProductSalesAnomalyDetection".

  2. Vytvořte v projektu adresář s názvem data a uložte soubory sady dat.Create a directory named Data in your project to save your data set files.

  3. Nainstalujte balíček NuGet Microsoft.ml:Install the Microsoft.ML NuGet Package:

    V Průzkumník řešení klikněte pravým tlačítkem na projekt a vyberte Spravovat balíčky NuGet.In Solution Explorer, right-click on your project and select Manage NuGet Packages. Jako zdroj balíčku zvolte "nuget.org", vyberte kartu Procházet, vyhledejte Microsoft.ml a vyberte tlačítko nainstalovat .Choose "nuget.org" as the Package source, select the Browse tab, search for Microsoft.ML and select the Install button. Pokud souhlasíte s licenčními podmínkami pro uvedené balíčky, klikněte na tlačítko OK v dialogovém okně Náhled změn a potom v dialogovém okně pro přijetí licence vyberte tlačítko přijmout .Select the OK button on the Preview Changes dialog and then select the I Accept button on the License Acceptance dialog if you agree with the license terms for the packages listed. Opakujte tento postup pro Microsoft. ml. časové řady.Repeat these steps for Microsoft.ML.TimeSeries.

  4. Do horní části souboru program.cs přidejte následující příkazy using:Add the following using statements at the top of your Program.cs file:

    using System;
    using System.IO;
    using Microsoft.ML;
    using System.Collections.Generic;
    

Stažení datDownload your data

  1. Stáhněte si datovou sadu a uložte ji do složky dat , kterou jste vytvořili dříve:Download the dataset and save it to the Data folder you previously created:

    • Klikněte pravým tlačítkem na Product-Sales. csv a vyberte Uložit odkaz (nebo cíl) jako...Right click on product-sales.csv and select "Save Link (or Target) As..."

      Ujistěte se, že soubor *. csv buď uložíte do složky dat , nebo když ho uložíte jinam, přesuňte soubor *. CSV do složky data .Make sure you either save the *.csv file to the Data folder, or after you save it elsewhere, move the *.csv file to the Data folder.

  2. V Průzkumník řešení klikněte pravým tlačítkem na soubor *. csv a vyberte vlastnosti.In Solution Explorer, right-click the *.csv file and select Properties. V části Upřesnitzměňte hodnotu Kopírovat do výstupního adresáře na Kopírovat, pokud je novější.Under Advanced, change the value of Copy to Output Directory to Copy if newer.

Následující tabulka je náhled dat ze souboru *. CSV:The following table is a data preview from your *.csv file:

MěsíčněMonth ProductSalesProductSales
1 – leden1-Jan 271271
2 – leden2-Jan 150,9150.9
.......... ..........
1 – únor1-Feb 199,3199.3
.......... ..........

Vytváření tříd a definování cestCreate classes and define paths

Dále definujte vstupní a předpovědní datové struktury třídy.Next, define your input and prediction class data structures.

Přidejte do projektu novou třídu:Add a new class to your project:

  1. V Průzkumník řešeníklikněte pravým tlačítkem myši na projekt a vyberte Přidat > Nová položka.In Solution Explorer, right-click the project, and then select Add > New Item.

  2. V dialogovém okně Přidat novou položkuvyberte třída a změňte pole název na ProductSalesData.cs.In the Add New Item dialog box, select Class and change the Name field to ProductSalesData.cs. Pak vyberte tlačítko Přidat .Then, select the Add button.

    V editoru kódu se otevře soubor ProductSalesData.cs .The ProductSalesData.cs file opens in the code editor.

  3. Do horní části ProductSalesData.cspřidejte následující příkaz using:Add the following using statement to the top of ProductSalesData.cs:

    using Microsoft.ML.Data;
    
  4. Odeberte existující definici třídy a přidejte následující kód, který má dvě třídy ProductSalesData a ProductSalesPrediction, do souboru ProductSalesData.cs :Remove the existing class definition and add the following code, which has two classes ProductSalesData and ProductSalesPrediction, to the ProductSalesData.cs file:

    public class ProductSalesData
    {
        [LoadColumn(0)]
        public string Month;
    
        [LoadColumn(1)]
        public float numSales;
    }
    
    public class ProductSalesPrediction
    {
        //vector to hold alert,score,p-value values
        [VectorType(3)]
        public double[] Prediction { get; set; }
    }
    

    ProductSalesData určuje vstupní datovou třídu.ProductSalesData specifies an input data class. Atribut LoadColumn určuje, které sloupce (podle indexu sloupce) v datové sadě by měly být načteny.The LoadColumn attribute specifies which columns (by column index) in the dataset should be loaded.

    ProductSalesPrediction určuje třídu dat předpovědi.ProductSalesPrediction specifies the prediction data class. Pro detekci anomálií se předpověď skládá z výstrahy, která indikuje, jestli existuje anomálie, hrubá skóre a hodnota p-.For anomaly detection, the prediction consists of an alert to indicate whether there is an anomaly, a raw score, and p-value. Bližší hodnota p je 0, pravděpodobnější je, že došlo k anomálii.The closer the p-value is to 0, the more likely an anomaly has occurred.

  5. Vytvořte dvě globální pole, která budou uchovávat nedávno staženou cestu k souboru datové sady a uloženou cestu k souboru modelu:Create two global fields to hold the recently downloaded dataset file path and the saved model file path:

    • _dataPath má cestu k datové sadě, která se používá ke výukě modelu._dataPath has the path to the dataset used to train the model.
    • _docsize má počet záznamů v souboru DataSet._docsize has the number of records in dataset file. K výpočtu pvalueHistoryLengthpoužijete _docSize.You'll use _docSize to calculate pvalueHistoryLength.
  6. Přidejte následující kód na řádek vpravo nad Main metodou pro určení těchto cest:Add the following code to the line right above the Main method to specify those paths:

    static readonly string _dataPath = Path.Combine(Environment.CurrentDirectory, "Data", "product-sales.csv");
    //assign the Number of records in dataset file to constant variable
    const int _docsize = 36;
    

Inicializovat proměnné v MainInitialize variables in Main

  1. Nahraďte Console.WriteLine("Hello World!") řádek v metodě Main následujícím kódem pro deklaraci a inicializaci proměnné mlContext:Replace the Console.WriteLine("Hello World!") line in the Main method with the following code to declare and initialize the mlContext variable:

    MLContext mlContext = new MLContext();
    

    Třída MLContext je výchozím bodem pro všechny operace ml.NET a inicializuje mlContext vytvoří nové prostředí ml.NET, které lze sdílet napříč objekty pracovního postupu vytváření modelů.The MLContext class is a starting point for all ML.NET operations, and initializing mlContext creates a new ML.NET environment that can be shared across the model creation workflow objects. Je podobný a koncepčně DBContext v Entity Framework.It's similar, conceptually, to DBContext in Entity Framework.

Načtení datLoad the data

Data v ML.NET jsou reprezentována jako Třída IDataView.Data in ML.NET is represented as an IDataView class. IDataView je flexibilní a efektivní způsob popisující tabulková data (číselná a text).IDataView is a flexible, efficient way of describing tabular data (numeric and text). Data je možné načíst z textového souboru nebo z jiných zdrojů (například databáze SQL nebo souborů protokolu) do objektu IDataView.Data can be loaded from a text file or from other sources (for example, SQL database or log files) to an IDataView object.

  1. Přidejte následující kód jako další řádek metody Main():Add the following code as the next line of the Main() method:

    IDataView dataView = mlContext.Data.LoadFromTextFile<ProductSalesData>(path: _dataPath, hasHeader: true, separatorChar: ',');
    

    LoadFromTextFile () definuje schéma dat a čte data v souboru.The LoadFromTextFile() defines the data schema and reads in the file. Převezme proměnné cesty k datům a vrátí IDataView.It takes in the data path variables and returns an IDataView.

Detekce anomálií časové řadyTime series anomaly detection

Detekce anomálií příznaky neočekávaná nebo neobvyklá událostí nebo chování.Anomaly detection flags unexpected or unusual events or behaviors. Dává v tom, kde hledat problémy a pomáhá zodpovědět otázku "je to divné?".It gives clues where to look for problems and helps you answer the question "Is this weird?".

Příklad detekce anomálií "je tímto divné".

Detekce anomálií je proces zjišťování nezaložených dat časových řad. body v dané vstupní časové řadě, kde chování není očekávané, nebo "divné".Anomaly detection is the process of detecting time-series data outliers; points on a given input time-series where the behavior isn't what was expected, or "weird".

Detekce anomálií může být užitečná v mnoha různých ohledech.Anomaly detection can be useful in lots of ways. Příklad:For instance:

Pokud máte auto, možná budete chtít vědět, že je tento měřič ropy čten běžným způsobem nebo mám netěsnost?If you have a car, you might want to know: Is this oil gauge reading normal, or do I have a leak? Pokud sledujete spotřebu energie, měli byste si být vědomi, že dochází k výpadku.If you're monitoring power consumption, you’d want to know: Is there an outage?

Existují dva typy anomálií časových řad, které je možné zjistit:There are two types of time series anomalies that can be detected:

  • Špičky označují dočasné shluky chování neobvyklé v systému.Spikes indicate temporary bursts of anomalous behavior in the system.

  • Body změny označují začátek trvalých změn v průběhu času v systému.Change points indicate the beginning of persistent changes over time in the system.

V ML.NET jsou algoritmy detekce špičky IID nebo identifikátory identifikátoru IID pro nezávislou a identickou distribuovanoudatovou sadu vhodné.In ML.NET, The IID Spike Detection or IID Change point Detection algorithms are suited for independent and identically distributed datasets.

Na rozdíl od modelů v ostatních kurzech transformace detektoru časové řady transformují provoz přímo na vstupní data.Unlike the models in the other tutorials, the time series anomaly detector transforms operate directly on input data. Metoda IEstimator.Fit() nepotřebuje k tvorbě transformace data školení.The IEstimator.Fit() method does not need training data to produce the transform. K tomu potřebuje schéma dat, které je k dispozici v zobrazení dat vygenerovaném z prázdného seznamu ProductSalesData.It does need the data schema though, which is provided by a data view generated from an empty list of ProductSalesData.

Budete analyzovat stejná prodejní data produktu za účelem detekce Špičk a změn bodů.You'll analyze the same product sales data to detect spikes and change points. Proces vytváření a školicích modelů je stejný pro detekci špičky a detekci bodu změny; Hlavním rozdílem je konkrétní použitý algoritmus detekce.The building and training model process is the same for spike detection and change point detection; the main difference is the specific detection algorithm used.

Detekce špičkySpike detection

Cílem detekce špičky je identifikovat náhlé ještě dočasné shluky, které se významně liší od většiny hodnot dat časových řad.The goal of spike detection is to identify sudden yet temporary bursts that significantly differ from the majority of the time series data values. Je důležité detekovat tyto podezřelé výjimečné položky, události nebo pozorování včas, aby byly minimalizovány.It's important to detect these suspicious rare items, events, or observations in a timely manner to be minimized. K detekci nejrůznějších anomálií, jako jsou výpadky, internetoví útoky nebo virové webovému obsahu, se dá použít následující přístup.The following approach can be used to detect a variety of anomalies such as: outages, cyber-attacks, or viral web content. Následující obrázek je příkladem špičky v datové sadě časových řad:The following image is an example of spikes in a time series dataset:

Snímek obrazovky, který zobrazuje dvě detekce špičky.

Přidání metody CreateEmptyDataView ()Add the CreateEmptyDataView() method

Přidejte následující metodu pro Program.cs:Add the following method to Program.cs:

static IDataView CreateEmptyDataView(MLContext mlContext) {
    // Create empty DataView. We just need the schema to call Fit() for the time series transforms
    IEnumerable<ProductSalesData> enumerableData = new List<ProductSalesData>();
    return mlContext.Data.LoadFromEnumerable(enumerableData);
}

CreateEmptyDataView() vytvoří prázdný objekt zobrazení dat se správným schématem, který se použije jako vstup do metody IEstimator.Fit().The CreateEmptyDataView() produces an empty data view object with the correct schema to be used as input to the IEstimator.Fit() method.

Vytvoření metody DetectSpike ()Create the DetectSpike() method

Metoda DetectSpike():The DetectSpike() method:

  • Vytvoří transformaci z Estimator.Creates the transform from the estimator.
  • Detekuje špičky na základě historických dat o prodeji.Detects spikes based on historical sales data.
  • Zobrazí výsledky.Displays the results.
  1. Vytvořte metodu DetectSpike() hned za metodou Main() pomocí následujícího kódu:Create the DetectSpike() method, just after the Main() method, using the following code:

    static void DetectSpike(MLContext mlContext, int docSize, IDataView productSales)
    {
    
    }
    
  2. Pomocí IidSpikeEstimator můžete vyškolit model pro detekci špičky.Use the IidSpikeEstimator to train the model for spike detection. Přidejte ho do metody DetectSpike() s následujícím kódem:Add it to the DetectSpike() method with the following code:

    var iidSpikeEstimator = mlContext.Transforms.DetectIidSpike(outputColumnName: nameof(ProductSalesPrediction.Prediction), inputColumnName: nameof(ProductSalesData.numSales), confidence: 95, pvalueHistoryLength: docSize / 4);
    
  3. Vytvořte transformaci detekce špičkou přidáním následujícího jako další řádek kódu v metodě DetectSpike():Create the spike detection transform by adding the following as the next line of code in the DetectSpike() method:

    ITransformer iidSpikeTransform = iidSpikeEstimator.Fit(CreateEmptyDataView(mlContext));
    
  4. Přidejte následující řádek kódu pro transformaci dat productSales jako další řádek v metodě DetectSpike():Add the following line of code to transform the productSales data as the next line in the DetectSpike() method:

    IDataView transformedData = iidSpikeTransform.Transform(productSales);
    

    Předchozí kód používá metodu Transform () k vytvoření předpovědi pro více vstupních řádků datové sady.The previous code uses the Transform() method to make predictions for multiple input rows of a dataset.

  5. Převeďte transformedData na IEnumerable silného typu pro snadnější zobrazení pomocí metody CreateEnumerable () s následujícím kódem:Convert your transformedData into a strongly-typed IEnumerable for easier display using the CreateEnumerable() method with the following code:

    var predictions = mlContext.Data.CreateEnumerable<ProductSalesPrediction>(transformedData, reuseRowObject: false);
    
  6. Pomocí následujícího kódu Console.WriteLine() vytvořte řádek záhlaví zobrazení:Create a display header line using the following Console.WriteLine() code:

    Console.WriteLine("Alert\tScore\tP-Value");
    

    Ve výsledcích detekce špičky zobrazíte následující informace:You'll display the following information in your spike detection results:

    • Alert označuje upozornění špičky pro daný datový bod.Alert indicates a spike alert for a given data point.
    • Score je ProductSales hodnota pro daný datový bod v datové sadě.Score is the ProductSales value for a given data point in the dataset.
    • P-Value "P" představuje pravděpodobnost.P-Value The "P" stands for probability. Bližší hodnota p je 0, pravděpodobnější je, že datový bod je anomálie.The closer the p-value is to 0, the more likely the data point is an anomaly.
  7. Použijte následující kód k iterování IEnumerable predictions a zobrazení výsledků:Use the following code to iterate through the predictions IEnumerable and display the results:

    foreach (var p in predictions)
    {
        var results = $"{p.Prediction[0]}\t{p.Prediction[1]:f2}\t{p.Prediction[2]:F2}";
    
        if (p.Prediction[0] == 1)
        {
            results += " <-- Spike detected";
        }
    
        Console.WriteLine(results);
    }
    Console.WriteLine("");
    
  8. Přidejte volání do metody DetectSpike()v metodě Main():Add the call to the DetectSpike()method in the Main() method:

    DetectSpike(mlContext, _docsize, dataView);
    

Výsledky detekce špičkySpike detection results

Výsledky by měly vypadat podobně jako následující.Your results should be similar to the following. Během zpracování se zobrazí zprávy.During processing, messages are displayed. Můžou se zobrazovat upozornění nebo zpracovávat zprávy.You may see warnings, or processing messages. Některé zprávy byly pro přehlednost odebrány z následujících výsledků.Some of the messages have been removed from the following results for clarity.

Detect temporary changes in pattern
=============== Training the model ===============
=============== End of training process ===============
Alert   Score   P-Value
0       271.00  0.50
0       150.90  0.00
0       188.10  0.41
0       124.30  0.13
0       185.30  0.47
0       173.50  0.47
0       236.80  0.19
0       229.50  0.27
0       197.80  0.48
0       127.90  0.13
1       341.50  0.00 <-- Spike detected
0       190.90  0.48
0       199.30  0.48
0       154.50  0.24
0       215.10  0.42
0       278.30  0.19
0       196.40  0.43
0       292.00  0.17
0       231.00  0.45
0       308.60  0.18
0       294.90  0.19
1       426.60  0.00 <-- Spike detected
0       269.50  0.47
0       347.30  0.21
0       344.70  0.27
0       445.40  0.06
0       320.90  0.49
0       444.30  0.12
0       406.30  0.29
0       442.40  0.21
1       580.50  0.00 <-- Spike detected
0       412.60  0.45
1       687.00  0.01 <-- Spike detected
0       480.30  0.40
0       586.30  0.20
0       651.90  0.14

Detekce bodu změnyChange point detection

Change points jsou trvalé změny v průběhu distribuce hodnot datového proudu událostí, jako jsou například změny úrovně a trendy.Change points are persistent changes in a time series event stream distribution of values, like level changes and trends. Tyto trvalé změny jsou poslední mnohem delší než spikes a můžou označovat závažné události.These persistent changes last much longer than spikes and could indicate catastrophic event(s). Change points nejsou obvykle viditelné pro holé oči, ale lze je zjistit ve vašich datech pomocí přístupů, jako je například v následující metodě.Change points are not usually visible to the naked eye, but can be detected in your data using approaches such as in the following method. Následující obrázek je příkladem detekce bodu změny:The following image is an example of a change point detection:

Snímek obrazovky, který ukazuje detekci bodu změny.

Vytvoření metody DetectChangepoint ()Create the DetectChangepoint() method

Metoda DetectChangepoint() provádí následující úlohy:The DetectChangepoint() method executes the following tasks:

  • Vytvoří transformaci z Estimator.Creates the transform from the estimator.
  • Detekuje body změn na základě historických dat o prodeji.Detects change points based on historical sales data.
  • Zobrazí výsledky.Displays the results.
  1. Vytvořte metodu DetectChangepoint() hned za metodou Main() pomocí následujícího kódu:Create the DetectChangepoint() method, just after the Main() method, using the following code:

    static void DetectChangepoint(MLContext mlContext, int docSize, IDataView productSales)
    {
    
    }
    
  2. Vytvořte iidChangePointEstimator pomocí následujícího kódu v metodě DetectChangepoint():Create the iidChangePointEstimator in the DetectChangepoint() method with the following code:

    var iidChangePointEstimator = mlContext.Transforms.DetectIidChangePoint(outputColumnName: nameof(ProductSalesPrediction.Prediction), inputColumnName: nameof(ProductSalesData.numSales), confidence: 95, changeHistoryLength: docSize / 4);
    
  3. Jak jste předtím pracovali, vytvořte transformaci z Estimator přidáním následujícího řádku kódu do metody DetectChangePoint():As you did previously, create the transform from the estimator by adding the following line of code in the DetectChangePoint() method:

    var iidChangePointTransform = iidChangePointEstimator.Fit(CreateEmptyDataView(mlContext));
    
  4. Použijte metodu Transform() pro transformaci dat přidáním následujícího kódu do DetectChangePoint():Use the Transform() method to transform the data by adding the following code to DetectChangePoint():

    IDataView transformedData = iidChangePointTransform.Transform(productSales);
    
  5. Jak jste předtím pracovali, převeďte transformedData na silně typované IEnumerable pro snazší zobrazení pomocí metody CreateEnumerable()s následujícím kódem:As you did previously, convert your transformedData into a strongly-typed IEnumerable for easier display using the CreateEnumerable()method with the following code:

    var predictions = mlContext.Data.CreateEnumerable<ProductSalesPrediction>(transformedData, reuseRowObject: false);
    
  6. Vytvořte záhlaví zobrazení s následujícím kódem jako další řádek v metodě DetectChangePoint():Create a display header with the following code as the next line in the DetectChangePoint() method:

    Console.WriteLine("Alert\tScore\tP-Value\tMartingale value");
    

    Ve výsledcích detekce bodů změny se zobrazí následující informace:You'll display the following information in your change point detection results:

    • Alert označuje upozornění na změnu bodu pro daný datový bod.Alert indicates a change point alert for a given data point.
    • Score je ProductSales hodnota pro daný datový bod v datové sadě.Score is the ProductSales value for a given data point in the dataset.
    • P-Value "P" představuje pravděpodobnost.P-Value The "P" stands for probability. Bližší hodnota P je 0, pravděpodobnější je, že datový bod je anomálie.The closer the P-value is to 0, the more likely the data point is an anomaly.
    • Martingale value slouží k identifikaci způsobu, jakým je "divné" a datovým bodem, na základě pořadí hodnot P.Martingale value is used to identify how "weird" a data point is, based on the sequence of P-values.
  7. Iterujte pomocí predictions IEnumerable a zobrazte výsledky s následujícím kódem:Iterate through the predictions IEnumerable and display the results with the following code:

    foreach (var p in predictions)
    {
        var results = $"{p.Prediction[0]}\t{p.Prediction[1]:f2}\t{p.Prediction[2]:F2}\t{p.Prediction[3]:F2}";
    
        if (p.Prediction[0] == 1)
        {
            results += " <-- alert is on, predicted changepoint";
        }
        Console.WriteLine(results);
    }
    Console.WriteLine("");
    
  8. Do metody DetectChangepoint()v metodě Main() přidejte následující volání:Add the following call to the DetectChangepoint()method in the Main() method:

    DetectChangepoint(mlContext, _docsize, dataView);
    

Výsledky detekce bodu změnyChange point detection results

Výsledky by měly vypadat podobně jako následující.Your results should be similar to the following. Během zpracování se zobrazí zprávy.During processing, messages are displayed. Můžou se zobrazovat upozornění nebo zpracovávat zprávy.You may see warnings, or processing messages. Některé zprávy byly pro přehlednost odebrány z následujících výsledků.Some messages have been removed from the following results for clarity.

Detect Persistent changes in pattern
=============== Training the model Using Change Point Detection Algorithm===============
=============== End of training process ===============
Alert   Score   P-Value Martingale value
0       271.00  0.50    0.00
0       150.90  0.00    2.33
0       188.10  0.41    2.80
0       124.30  0.13    9.16
0       185.30  0.47    9.77
0       173.50  0.47    10.41
0       236.80  0.19    24.46
0       229.50  0.27    42.38
1       197.80  0.48    44.23 <-- alert is on, predicted changepoint
0       127.90  0.13    145.25
0       341.50  0.00    0.01
0       190.90  0.48    0.01
0       199.30  0.48    0.00
0       154.50  0.24    0.00
0       215.10  0.42    0.00
0       278.30  0.19    0.00
0       196.40  0.43    0.00
0       292.00  0.17    0.01
0       231.00  0.45    0.00
0       308.60  0.18    0.00
0       294.90  0.19    0.00
0       426.60  0.00    0.00
0       269.50  0.47    0.00
0       347.30  0.21    0.00
0       344.70  0.27    0.00
0       445.40  0.06    0.02
0       320.90  0.49    0.01
0       444.30  0.12    0.02
0       406.30  0.29    0.01
0       442.40  0.21    0.01
0       580.50  0.00    0.01
0       412.60  0.45    0.01
0       687.00  0.01    0.12
0       480.30  0.40    0.08
0       586.30  0.20    0.03
0       651.90  0.14    0.09

Blahopřejeme!Congratulations! Teď jste úspěšně vytvořili modely strojového učení pro zjišťování špiček a anomálií bodů změn v prodejních datech.You've now successfully built machine learning models for detecting spikes and change point anomalies in sales data.

Zdrojový kód pro tento kurz najdete v úložišti dotnet/Samples .You can find the source code for this tutorial at the dotnet/samples repository.

V tomto kurzu jste se naučili:In this tutorial, you learned how to:

  • Načtení datLoad the data
  • Vyškolit model pro detekci anomálií špičkyTrain the model for spike anomaly detection
  • Zjištění anomálií špičky pomocí trained modelDetect spike anomalies with the trained model
  • Výuka modelu pro detekci anomálií bodů změnTrain the model for change point anomaly detection
  • Detekovat anomálie bodů změny v proškolených režimechDetect change point anomalies with the trained mode

Další krokyNext steps

Podívejte se na úložiště GitHub Samples Machine Learning a prozkoumejte ukázku detekce anomálií spotřeby energie.Check out the Machine Learning samples GitHub repository to explore a Power Consumption Anomaly Detection sample.