Matrix Factorizationでシステムの推奨事項をサポート
レコメンダーシステムを使用すると、カタログ内の製品、曲、映画などに対してパーソナライズされたレコメンデーションを作成できます。 Matrix factorization(MF)を追加することにより、ML.NETで推奨システムを作成するためのサポートを改善しました。 これは、ユーザーがカタログ内の特定のアイテムを評価する方法に関するデータを取得できる場合の推奨事項への一般的なアプローチです。 たとえば、ユーザーが特定の映画をどのように評価するかを知っているかもしれません。 この知識のおかげで、おそらく彼らも見たいと思う他の映画を推薦できます。
MFをML.NETに追加したのは、多くの場合、Field-Aware Factorization Machines(ML.NET 0.3に追加)よりも大幅に高速であり、代わりに数値(1〜5つ星など)の評価をサポートできるためです。バイナリ値(「いいね」または「気に入らなかった」)。 MFを追加したという事実にもかかわらず、ユーザーが要素に割り当てる評価以外の情報(映画のジャンル、映画の発売日、ユーザープロファイルなど)を使用する場合は、FFMを使用できます。 ここで違いの詳細な議論を見つけることができます 。
MFの使用例はここにあります 。 この例は一般的ですが、マトリックスの行はユーザーに対応し、マトリックスの列は映画に対応し、マトリックスの値は評価に対応すると想像できます。 ユーザーがディレクトリの小さなサブセットのみを評価したため、このマトリックスはかなり不足しています。
MF ML.NETはLIBMFを使用します 。
異常検出シナリオ-異常なイベントの検出
異常検出により、 異常な値またはイベントを特定できます。 不正検出(不審なクレジットカードトランザクションの検出)やサーバー監視(異常なアクティビティの検出)などのシナリオで使用されます。
ML.NET 0.7では、2種類の異常な動作を検出できます。
- スパイク検出:スパイクは、入力値の突然の一時的なバーストに起因します。 これらは、誤動作、サイバー攻撃、バイラルWebコンテンツなどによる異常値である可能性があります。
- 変化点の検出:変化点は、データ動作の永続的な逸脱の始まりを示します。
これらの異常は、異なるML.NETコンポーネントを使用して、2種類のデータで検出できます。
- IidSpikeDetectorとIidChangePointDetectorは、1つの定常分布から取得したデータに使用されます(各データポイントは前の分布に依存しません)。
- SsaSpikeDetectorおよびSsaChangePointDetectorは、季節性/傾向のコンポーネント(製品の販売など、時間順に並べられる可能性がある)を持つデータに使用されます。
ML.NETの異常検出を使用したサンプルコードは、 ここにあります 。
ML.NETパイプラインのカスタマイズの改善
ML.NETは、多くのデータ変換(たとえば、テキスト、画像、カテゴリ関数などの処理)を提供します。 ただし、特定のユースケースでは、特定の変換が必要です。 カスタム変換を簡単に含めることができるように、カスタム変換のサポートが追加されました。
CustomMappingEstimatorを使用すると、独自のデータ処理メソッドを作成し、それらをML.NETパイプラインに追加できます。 パイプラインでは次のようになります。
var estimator = mlContext.Transforms.CustomMapping<MyInput, MyOutput>(MyLambda.MyAction, "MyLambda") .Append(...) .Append(...)
以下は、このカスタムマッピングの機能の定義です。 この例では、テキストラベル(「スパム」または「ハム」)を論理ラベル(trueまたはfalse)に変換します。
public class MyInput { public string Label { get; set; } } public class MyOutput { public bool Label { get; set; } } public class MyLambda { [Export("MyLambda")] public ITransformer MyTransformer => ML.Transforms.CustomMappingTransformer<MyInput, MyOutput>(MyAction, "MyLambda"); [Import] public MLContext ML { get; set; } public static void MyAction(MyInput input, MyOutput output) { output.Label= input.Label == "spam" ? true : false; } }
CustomMappingEstimatorのより完全な例については、 こちらをご覧ください 。
x64に加えてX86サポート
ML.NETのこのリリースでは、x86 / 32ビットデバイスで機械学習モデルを使用できるようになりました(Windowsのみ)。 以前は、ML.NETはx64デバイス(Windows、Linux、およびMac)に制限されていました。 外部リンクに基づく一部のコンポーネント(TensorFlowなど)は、x86-Windowsでは利用できないことに注意してください。
NimbusML-ML.NETの Python Experimentalバインディング
NimbusMLは、ML.NETのPython実験バインディングを提供します。 いくつかのプログラミング言語の使用に関する外部コミュニティおよび内部開発チームからのフィードバックを見てきました。 できるだけ多くの人にML.NETを使用してほしいと考えました。
ML.NETでは、データサイエンティストがPythonの機械学習モデル( scikit-learnパイプラインでも使用できるコンポーネントを使用)を使用できるだけでなく、ML.NETを介して.NETアプリケーションで簡単に使用できるモデルを保存できます(詳細こちらをご覧ください )。
見逃した場合:新しいAPIに関するフィードバック
ML.NET 0.6では、柔軟性を向上させるML.NET用の新しいAPIセットが導入されています。 バージョン0.7および将来のバージョンのこれらのAPIは現在も進化しています。システムをさらに改善するために、フィードバックをお寄せください。
出席したいですか? ML.NET GitHubにレビューを残してください!
追加のリソース
- 以下は、新しいAPIを理解するための最も重要なML.NETの概念です。
- これらのAPIをさまざまな既存および新規シナリオに使用する方法を示すガイドがここにあります。
- すべてのAPIドキュメントを含むML.NET APIへのリンクは、 ここで提供されます 。
始めましょう!
まだダウンロードしていない場合は、 こちらからML.NETをダウンロードしてください 。 他の有用なリソースも調べてください。
- Microsoft Docsのチュートリアルとガイド
- コード例
ミニッツ広告
AI-Communityのメンバーは現在、データサイエンスで600,000ルーブルの賞金プールでオンラインチャンピオンシップを開催しています 。 ぜひご参加ください。ケースに興味があるかもしれません。