Skip to content

MS_MLNET

nishi_74322014 edited this page Sep 11, 2026 · 2 revisions

ML.NET

概要

コンセプト的なモノ

.NET 開発者向け

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

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

Auto ML(機械学習(machine learning) の該当節を参照)と生産性の高いツールを提供

TensorFlow で拡張

Infer.NET、TensorFlow(深層学習(deep learning) の該当節を参照)、ONNX(深層学習(deep learning) の該当節を参照)などの
他の一般的な 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(深層学習(deep learning) の該当節を参照)の深層学習モデルを用いて画像中の物体を認識。

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(深層学習(deep learning) の該当節を参照)ディープラーニングモデルを使用して
画像を分類(例:ブロッコリー対ピザ)。

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 の知識があれば読み替えやすい。

参考

msdn.com

Channel 9 > ML.NET

microsoft.com

dotnet.microsoft.com

learn.microsoft.com

(ML.NET | Microsoft Learn)

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

人工知能(AI)


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

NetDevInfraWiki

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

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally