-
Notifications
You must be signed in to change notification settings - Fork 0
MS_MLNET
.NET 開発者のための機械学習フレームワーク
Auto ML(DNET_MachineLearning.md)と生産性の高いツールを提供
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との組み合わせも増えている。
AI 系のライブラリ
MLlib(.NET for Apache Spark)
.NET for Apache Spark からアクセス可能。
Apache Spark(.NET for Apache Spark)に依存しないが、
Apache Spark 上でも .NET for Apache Spark からアクセス可能。
補足(使い分け):
ML.NET MLlib(Spark) 前提 単一プロセスで完結 分散クラスタが必要 データ規模 単一マシンに載る規模 クラスタでないと扱えない規模 用途 アプリへの組み込み、推論 大規模な学習 「データがメモリに載るなら ML.NET、載らないなら Spark」
という素朴な基準でよい。
センチメント分析、価格予測、商品推薦、売上予測、画像分類、オブジェクト検出など
補足(この一覧の読み方): 以下のシナリオは、
「やりたいこと」と「使うアルゴリズムの種類」の対応表として読むと有用である。
やりたいこと タスクの種類 良い / 悪い、不正 / 正常を判定 二値分類 複数のカテゴリに分ける 多クラス分類 数値を当てる(価格、需要) 回帰 似たもの同士をまとめる クラスタリング おすすめを出す 推薦(行列因数分解) いつもと違う動きを見つける 異常検知 時系列の先を読む 予測(Forecasting) 画像を分類・物体を検出 深層学習(TensorFlow / ONNX 連携) 機械学習の入口でつまずくのは
**「自分の課題がどのタスクか分からない」**ことが多いため、
この対応が付けられれば大半は前に進む。
バイナリ分類アルゴリズムを使用して、
カスタマーレビューのセンチメントを分析。
行列因数分解アルゴリズムを用いて、
購入履歴に基づいて商品をレコメンド。
回帰アルゴリズムを使用して、
走行距離などのパラメータに基づいてタクシー料金を予測。
クラスタリングアルゴリズムを使用して、
類似したプロファイルを持つ顧客のグループを識別。
ONNX(DNET_DeepLearning.md)の深層学習モデルを用いて画像中の物体を認識。
二値分類アルゴリズムを用いて、
クレジットカードの不正取引を検知。
異常検知モデルを用いて商品販売の急増や変化を検知。
TensorFlow(DNET_DeepLearning.md)ディープラーニングモデルを使用して
画像を分類(例:ブロッコリー対ピザ)。
回帰アルゴリズムを用いて、
製品の将来の売上を予測。
他の ML.NET のサンプルは GitHub にある。
https://github.com/dotnet/machinelearning-samples/blob/main/README.md
シンプルな 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))
-
ML.NET | Channel 9
https://learn.microsoft.com/ja-jp/shows/ml-net/-
Machine Learning Introduction [1 of 8]
-
ML.NET Introduction [2 of 8]
-
Getting started with ML.NET [3 of 8]
-
Build a ML model for
- Sentiment Analysis [4 of 8]
- GitHub Issue classification [5 of 8]
- predicting taxi fares [6 of 8]
- Movie Recommendation [7 of 8]
-
Deep learning with ML.NET: Image Classification [8 of 8]
-
-
YouTube
-
ML.NET | Machine Learning made for .NET
https://dotnet.microsoft.com/apps/machinelearning-ai/ml-dotnet-
ML.NET Model Builder | Machine learning in Visual Studio
https://dotnet.microsoft.com/apps/machinelearning-ai/ml-dotnet/model-builder -
ML.NET performance paper(performance = 速度と精度)
https://arxiv.org/pdf/1905.05715.pdf
-
-
Learn ML.NET | Free tutorials, courses, videos, and more | .NET
https://dotnet.microsoft.com/learn/ml-dotnet-
What is ML.NET? An open-source machine learning framework.
https://dotnet.microsoft.com/learn/ml-dotnet/what-is-mldotnet -
ML.NET Tutorial | Get started in 10 minutes | .NET
https://dotnet.microsoft.com/learn/ml-dotnet/get-started-tutorial/intro
-
(ML.NET | Microsoft Learn)
-
ML.NET のドキュメント - チュートリアル、API リファレンス
https://learn.microsoft.com/ja-jp/dotnet/machine-learning/-
10 分で開始する
-
チュートリアル
- Web サイト コメントのセンチメントを分析する (モデル ビルダー)
- 価格を予測する (モデル ビルダー)
- 正常性違反の分類 (モデル ビルダー & SQL Server)
- サポートの問題を分類する (API)
- 画像分類 API を使用して画像を分類する (API)
- モデル構成を使用して画像を分類する (API)
- 画像内のオブジェクトを検出する (API)
- 製品売上の異常を検出する (API)
- 自転車レンタル需要の予測 (API & SQL Server)
- 映画の推奨機能を構築する (API)
-
- TensorFlow(
DNET_DeepLearning.md) - ONNX(
DNET_DeepLearning.md)
Tags: 移行, クラウド, Azure, .NET開発, .NET Core, .NET Standard
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。