ML.NET とは何ですか?
ML.NET は、Microsoft によって作成された、.NET 開発者プラットフォーム用の、無料のオープンソースおよびクロスプラットフォーム機械学習フレームワークです。
ML.NET は、Microsoft によって作成された、.NET 開発者プラットフォーム用の、無料のオープンソースおよびクロスプラットフォーム機械学習フレームワークです。
ML.NET は、無料でオープンソースの、.NET 開発者プラットフォーム向けクロスプラットフォーム機械学習フレームワークです。
ML.NET を使用すると、さまざまな ML シナリオで C# または F# を使用してカスタム機械学習モデルをトレーニング、ビルド、出荷できます。ML.NET には、自動機械学習 (AutoML) などの機能や、ML.NET CLI、ML.NET Model Builder などのツールが含まれます。 機械学習をアプリケーションに簡単に統合できます。
ML.NET は、ほぼすべてのシナリオで同じ基本手順に従っており、データの読み込み、変換、モデルの学習を組み合わせて、機械学習モデルを簡単に作成することができます。
MLContext は、ML.NET のすべての操作の開始点です。MLContext
は、ML.NET モデルの作成と消費のすべての面に使用されます。概念的には、Entity Framework の DbContext
と類似しています。
var mlContext = new MLContext();
MLContext
のインスタンスを作成すると、データを読み込んで変換したり、機械学習タスクに最適なアルゴリズムを選択したり、モデルをトレーニングしたりできます。トレーニング後、モデルをテストして、精度を確認し、ディスクに保存して、予測を行うことができます。MLContext
は、以前にディスクに保存されたモデルから初期化できます。
機械学習では、既知のデータ (学習データなど) を使用してパターンを検出し、未知の新しいデータの予測を行います。
機械学習の入力は、予測に使用される属性である 特徴 と呼ばれます。機械学習の出力は、実際の予測である ラベル と呼ばれます。
ML.NET のデータは、表形式のデータ (行や列など) を柔軟かつ効率的に記述する方法である IDataView として表されます。IDataView オブジェクトには、数値、テキスト、ブール値、ベクトルなどを含めることができます。ファイルまたはリアルタイム ストリーミング ソースから IDataView にデータを読み込むことができます。
LoadFromTextFile
を使用すると、TXT、CSV、TSV、その他のファイル形式からデータを読み込むことができます。
IDataView trainingData = mlContext.Data
.LoadFromTextFile<SentimentInput>(dataPath, separatorChar: ',', hasHeader: true);
LoadFromEnumerable
を使用すると、インメモリ コレクション、JSON/XML、リレーショナル データベースと非リレーショナル データベース (SQL、CosmosDB、MongoDB など)、その他の多くのデータ ソースからの読み込みが可能になります。
IDataView trainingData = mlContext.Data
.LoadFromEnumerable<SentimentInput>(inMemoryCollection);
ほとんどの場合、利用可能なデータは、機械学習モデルのトレーニングに直接使用するのには適していません。 生データは、データ変換を使用して前処理する必要があります。
Transformers は、データを受け取り、そこで何らかの作業を行い、新しく変換されたデータを返します。
欠損値の置き換え、データ変換、テキストの搭載などのデータ変換セットが埋め込まれています。
// Convert sentiment text into numeric features
IEstimator<ITransformer> dataTransformPipeline = mlContext.Transforms.Text
.FeaturizeText("Features", "SentimentText");
機械学習 と ML.NET を使用するときは、シナリオに合う機械学習タスクを選択する必要があります。ML.NET は、さまざまな ML タスクに対して 30 を超えるアルゴリズム (または トレーナー) を提供します:
ML タスク | アルゴリズム |
---|---|
二項分類 (感情分析など) | AveragedPerceptronTrainer, SdcaLogisticRegressionBinaryTrainer |
マルチクラス分類 (例: トピックの分類) | LightGbmMulticlassTrainer、OneVersusAllTrainer |
回帰 (価格予測など) | LbfgsPoissonRegressionTrainer, FastTreeRegressionTrainer |
クラスター (例: 顧客セグメント) | KMeansTrainer |
異常検出 (例: シャンプーの売上急増の検出) | RandomizedPcaTrainer |
推奨事項 (ムービー レコメンダーなど) | MatrixFactorizationTrainer |
ランク付け (検索結果など) | LightGbmRankingTrainer、FastTreeRankingTrainer |
IEstimator<ITransformer> trainer = mlContext.BinaryClassification.Trainers
.AveragedPerceptron(labelColumnName: "Sentiment", featureColumnName: "Features"));
IEstimator<ITransformer> trainingPipeline = dataTransformPipeline.Append(trainer);
指定したデータ変換とアルゴリズムは、Fit()
メソッドを呼び出すまで実行されません (ML.NET の遅延読み込み方法のため)。このときにモデルのトレーニングが行われるときです。
推定器はデータを取り込み、データから学習し、変換器を作成します。 モデル トレーニングの場合、トレーニング データが入力であり、トレーニングされたモデルが出力です。 したがって、トレーニングされたモデルは、入力機能を新しいデータから出力予測に変換する変換器です。
ITransformer model = pipeline.Fit(trainingData);
ML.NET は、さまざまなメトリックでモデルのパフォーマンスを評価するエバリュエーターを提供します:
// Make predictions on test data
IDataView predictions = model.Transform(testDataView);
// Evaluate model and return metrics
var metrics = mlContext.BinaryClassification
.Evaluate(predictions, labelColumnName: "Sentiment");
// Print out accuracy metric
Console.WriteLine("Accuracy" + metrics.Accuracy);
学習済みモデルをバイナリ ファイルとして保存し、.NET アプリケーションに統合することができます。
mlContext.Model.Save(model, trainingData, "model.zip");
学習済みモデルを保存すると、他の .NET アプリケーションでモデルを読み込むことができます。
MLContext mlContext = new MLContext();
DataViewSchema predictionPipelineSchema;
ITransformer trainedModel = mlContext.Model.Load("model.zip", out predictionPipelineSchema);
これにより、ロードされたモデルを使用して予測を始めることができます。単一予測を作成するために使用される便利な API である予測エンジン、またはバッチ予測の作成に使用される Transform メソッドのいずれかを使用できます。
var predEngine = mlContext.Model.CreatePredictionEngine(model);
SentimentInput sampleComment = new SentimentInput{ SentimentText = "This is very rude!" };
SentimentOutput result = predEngine.Predict(sampleComment);
Console.WriteLine(result.Prediction);
ML.NET は、.NET 開発者向けの機械学習フレームワークです。ML.NET を使用して、カスタム機械学習モデルをお使いの .NET アプリケーションに統合することができます。ML.NET は、感情分析、価格予測、製品のおすすめ、売上予測、画像分類、物体検出など、多くのシナリオで利用することができます。また、ML.NET を使用してできることの例の詳細については、GitHub サンプル リポジトリ をチェックアウトしてください。
AI とは、通常は人間の知能を必要とすることを、コンピューターに学習させることで実現する、コンピューティングのブランチです。機械学習は AI のサブセットであり、コンピューターがデータを学習してパターンを検出し、新しいデータをコンピューター自身が予測できるようにすることを意味します。
Microsoft は多くの AI や ML の製品とサービスを提供しているため、これらの違いの詳細を以下に示します:
Web アプリとサービス、マイクロサービス/コンテナー、デスクトップ アプリ (WPF と WinForms)、Azure Functions、Azure サーバー側アプリの種類、コンソール アプリなど、ほぼすべての .NET アプリで ML.NET を使用できます。
ML.NET は、.NET、.NET Core (バージョン 2.0 以上) と .NET Framework (バージョン 4.6.1 以上) の両方でサポートされます。
ML.NET は現在、x64 および x86 プロセスでサポートされています。
ML.NET はクロス プラットフォームであるため、Windows、Linux、macOS でサポートされています。
はい!他の .NET プラットフォームと同様に、ML.NET は 100% 無料です。詳細については、「.NET は無料を参照してください。ML.NET は、MIT ライセンスでライセンスされています。
ML.NET は現在、C# と F# をサポートしています。
このチュートリアルで開始できます。またh、 ML.NET を開始できます。ML.NET ドキュメントで詳細情報を確認できます。
Microsoft.ML NuGet パッケージ を追加することで、あらゆる .NET プロジェクトに ML.NET を追加することができます。また、ML.NET Model Builder (Windows) やML.NET CLI (Windows、macOS、Linux) で作業を始めることもできます。
このステップ バイ ステップ チュートリアルは、あなたのコンピューターで ML.NET を実行するのに役立ちます。