こんにちは、上坂です。
そういえばなぜかAzure Machine Learningについてまったく記事を書いていなかったのでぼちぼち書いていこうと思います。
2015年3月にAzure Machine Learningはトレーニングしたモデルを別のデータを使って再トレーニングできるAPIを公開しました。
公式の説明はこちらです。
プログラムによる Machine Learning のモデルの再トレーニング
このドキュメントに従って設定していけば、再トレーニングまでのバッチ処理の流れは理解できると思います。手順7にて、追加のエンドポイントに公開されるトレーニング済みモデル更新用のAPIを叩くところの解説があるのですが、ドキュメントではここでいきなりC#のコードの画像(!)が出てきます。
このC#コードの画像から写経して実装するのは勝手が悪いので、ほとんどの方は管理ポータルで追加したエンドポイントを開くと表示される、「リソースの更新」というリンクをクリックして、そこに記載されたサンプルコードを利用されているかと思います。
でも、このサンプルコード、一か所間違えているんです。
場所はここ、RESTで更新リクエストを投げるときのBODYのサンプルです。
ここでは
"Id" : = "MyExperiment [trained model]",
となっていますが、このまま使用するとそんなリソースはない、というメッセージとともにInvalidResourceというエラーが帰ってきてしまいます。
正解は
"Name" : "MyExperiment [trained model]",
です。トレーニング済みのExperimentの指定は名前で行ってください。
Idでもできるんじゃないかと思ってExpermentのResourceIdをどうにかして取得できないかとPowerShell叩いて調べてみましたが、現段階では取得できないようです。
ちなみに、C#のコードサンプルはちゃんと"Name"としてリクエストを投げてくれますので問題なく動作しますのでご安心を。今回はFiddlerで確認していて、たまたま気付きました。RESTで実装される方は気を付けてください。