Skip to content

MS_MLNET

nishi_74322014 edited this page Aug 19, 2026 · 1 revision

ML.NET

概要

コンセプト的なモノ

.NET 開発者向け

.NET 開発者のための機械学習フレームワーク

Auto ML で簡単にカスタム ML を作成

Auto ML(DNET_MachineLearning.md)と生産性の高いツールを提供

TensorFlow で拡張

Infer.NET、TensorFlow(DNET_DeepLearning.md)、ONNX(DNET_DeepLearning.md)などの
他の一般的な ML ライブラリを利用して、追加の ML シナリオを作成できる。

信頼と実績のあるスケール

Power BI、Microsoft Defender、Outlook、Bing などの
Microsoft 製品で使用されているのと同じ ML フレームワークを使用。

補足(ML.NET の立ち位置): 機械学習の主戦場は Python であり、
ML.NET はそこに挑むものではない。狙いは、

  • 既存の .NET アプリに機械学習を組み込みたい(Python 実行環境を持ち込まずに)、
  • 推論を .NET プロセス内で完結させたい(サービス呼び出しのレイテンシを避ける)、
  • チームのスキルが C# に寄っている

という場面である。
Azure Machine Learning
「本格的に機械学習をやる基盤」なのに対し、
ML.NET はアプリ側のライブラリという違いがある。

なお ML.NET は現在も継続提供されており、
.NET for Apache Spark のように終息してはいない。
近年は ML.NET から Azure OpenAI / ONNX モデルを呼ぶ用途や、
Microsoft.Extensions.AI との組み合わせも増えている。

ML.NET と MLlib

AI 系のライブラリ

.NET for Apache Spark からアクセス可能。

ML.NET

Apache Spark(.NET for Apache Spark)に依存しないが、
Apache Spark 上でも .NET for Apache Spark からアクセス可能。

補足(使い分け):

ML.NET MLlib(Spark)
前提 単一プロセスで完結 分散クラスタが必要
データ規模 単一マシンに載る規模 クラスタでないと扱えない規模
用途 アプリへの組み込み、推論 大規模な学習

「データがメモリに載るなら ML.NET、載らないなら Spark」
という素朴な基準でよい。

詳細

シナリオ

センチメント分析、価格予測、商品推薦、売上予測、画像分類、オブジェクト検出など

補足(この一覧の読み方): 以下のシナリオは、
「やりたいこと」と「使うアルゴリズムの種類」の対応表として読むと有用である。

やりたいこと タスクの種類
良い / 悪い、不正 / 正常を判定 二値分類
複数のカテゴリに分ける 多クラス分類
数値を当てる(価格、需要) 回帰
似たもの同士をまとめる クラスタリング
おすすめを出す 推薦(行列因数分解)
いつもと違う動きを見つける 異常検知
時系列の先を読む 予測(Forecasting)
画像を分類・物体を検出 深層学習(TensorFlow / ONNX 連携)

機械学習の入口でつまずくのは
**「自分の課題がどのタスクか分からない」**ことが多いため、
この対応が付けられれば大半は前に進む。

センチメント分析

バイナリ分類アルゴリズムを使用して、
カスタマーレビューのセンチメントを分析。

https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/BinaryClassification_SentimentAnalysis

製品の推奨

行列因数分解アルゴリズムを用いて、
購入履歴に基づいて商品をレコメンド。

https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/MatrixFactorization_ProductRecommendation

価格予測

回帰アルゴリズムを使用して、
走行距離などのパラメータに基づいてタクシー料金を予測。

https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/Regression_TaxiFarePrediction

顧客セグメンテーション

クラスタリングアルゴリズムを使用して、
類似したプロファイルを持つ顧客のグループを識別。

https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/Clustering_CustomerSegmentation

オブジェクトの検出

ONNX(DNET_DeepLearning.md)の深層学習モデルを用いて画像中の物体を認識。

https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/DeepLearning_ObjectDetection_Onnx

不正検知

二値分類アルゴリズムを用いて、
クレジットカードの不正取引を検知。

https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/BinaryClassification_CreditCardFraudDetection

売上スパイクの検出

異常検知モデルを用いて商品販売の急増や変化を検知。

https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/end-to-end-apps/AnomalyDetection-Sales

画像分類

TensorFlow(DNET_DeepLearning.md)ディープラーニングモデルを使用して
画像を分類(例:ブロッコリー対ピザ)。

https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/getting-started/DeepLearning_ImageClassification_TensorFlow

売上予測

回帰アルゴリズムを用いて、
製品の将来の売上を予測。

https://github.com/dotnet/machinelearning-samples/tree/main/samples/csharp/end-to-end-apps/Forecasting-Sales

他の ML.NET のサンプルは GitHub にある。

https://github.com/dotnet/machinelearning-samples/blob/main/README.md

ML モデル構築

ML.NET CLI

Model Builder

シンプルな UI ツール

補足(3 つの作り方): ML.NET でモデルを作る手段は 3 通りある。

手段 特徴
Model Builder(Visual Studio 拡張) GUI。データを与えてシナリオを選ぶだけ。コードを自動生成する
ML.NET CLI コマンドラインで AutoML を実行。CI に組み込める
API を直接使う MLContext からパイプラインを組む。最も自由

Model Builder / CLI はいずれも内部で AutoML を走らせ、
複数のアルゴリズムを試して最良のものを選ぶ。
生成されたコードをそのまま読めるため、
「GUI で作って、コードで理解する」という学習経路が取れるのが
Azure Machine Learning の Designer と共通する良さである。

典型的なコードは次のような形になる。

var ml = new MLContext();
IDataView data = ml.Data.LoadFromTextFile<Input>("data.csv", hasHeader: true, separatorChar: ',');
var pipeline = ml.Transforms.Text.FeaturizeText("Features", nameof(Input.Text))
    .Append(ml.BinaryClassification.Trainers.SdcaLogisticRegression());
ITransformer model = pipeline.Fit(data);

Transforms(前処理)を Append で繋いで Trainers(学習器)で締める
という構造は scikit-learn の Pipeline に似ており、
Python の知識があれば読み替えやすい。

参考

  • .NET for Apache Spark と ML.NET での感情分析のチュートリアル(.NET for Apache Sparkチュートリアル(MS_DotNetForApacheSparkTutorial.md))

msdn.com

Channel 9 > ML.NET

microsoft.com

dotnet.microsoft.com

learn.microsoft.com

(ML.NET | Microsoft Learn)

開発基盤部会 Wiki > 人工知能(AI)(DNET_AI.md

機械学習(machine learning)(DNET_MachineLearning.md

深層学習(deep learning)(DNET_DeepLearning.md

  • TensorFlow(DNET_DeepLearning.md
  • ONNX(DNET_DeepLearning.md

Tags: 移行, クラウド, Azure, .NET開発, .NET Core, .NET Standard

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally