【条件付き無料】Microsoft Azureで機械学習をやってみた!【自動機械学習(自動ML)編】

4 min 223 views

はじめに

今回は、Microsoft Azureについて、以前から気になってはいたものの、AmazonのAWSやGoogleのGCPなどクラウドとしてはわりと先進的っぽいイメージだったので、そちらをテストしてみたりしていましたが、当社では、Microsoft365も使っていますし、200$くらいのクレジットを無料で試せるということもあり、また、ちょっとだけ時間ができたので、使ってみることにしました。

Microsoft Azureには、学習システムがあり、今回は、それをベースに自分にとってとても興味が深い機械学習についてやってみましたので、そちらをシェアしたいと思います。

前提条件と対象者

今回は、Microsoft Azureのアカウント登録や、仮想コンピュータ、サブスクリプション等の初期設定は省略させていただいております。

また、正直なところ、多少の機械学習の知識がある人を対象としております。(私自身がほぼ素人なので、ここに関してはあまり問題ないと思いますが。)

最終系

お忙しい人は、こちらの動画をご覧ください。

説明

正直、今回は、Microsoft AzureのMLについての学習を見ながら動画を撮影しておりますので、そのラーニングシステムを見ていただいたらいいかとは思いますが、流れや、重要そうなポイントだけちょっとだけ解説したいと思います。

  1. STEP

    データセットの設定

    当然ですが、何かの予測をする際には、何を予測するのか、とどういうデータからその目的とするデータを予測するのかという情報が必要になります。

    そこで、今回は、上記URLでの学習で使用しております、自転車レンタルの数を予測するということをやっていきます。

    データセットの画像

    かなり見づらいかと思いますが、一番右にある「rentals」というレンタル数を予測するということをやっていきます。

  2. STEP

    モデルの構築

    とても親切なことに、自動で学習するシステムをMicrosoft側が用意してくれておりますので、今回は、この学習に沿って使っていきます。

    上記データベースの中の列(特微量と呼ばれる)の中で、ターゲットとするものは、STEP1で示した通り、「rentarls」となるので、ターゲット列を「 rentarls 」とします。

    自動ML設定の画像

    上記から次へを押すと、タスクの設定の選択になるのですが、ここでちょっとしたテクニックになります。

    自動MLの設定画像

    まず、分類、回帰、時系列の予測とありますが、今回は、ある数値(レンタル数がどのくらいになるか)を予測したいので、その場合は「回帰」を選択します。

    そして、ここがポイントなのですが、「追加の構成設定を表示する」で、「ブロックされたアルゴリズム」という項目があるのですが、本来、「資金が潤沢にあり、時間もかなりあるよ」という場合は、ここを特に設定する必要ないですが、仮に、よさそうなアルゴリズムはすでに分かっているという場合には、例えば、「ランダムフォレスト」や「LightGMB」特に優れたアルゴリズム以外は学習させないという設定をすることで、時間やお金を短縮することが可能となります。

    学習が終了すると、下図のように学習が終わった状態を視覚的に確認することができます。

    モデル評価の画像
  3. STEP

    モデルのデプロイ

    ここでデプロイという謎の単語が出てきます。

    せっかく予測するモデルを作ったのだから、これを使える状態にしたいということで、その状態を構築するといった意味でしょうか、要は、新しい情報が入って、何か結果を返してくれるそんな状態にする作業をします。

    ここで、残念ながら、Pythonというプログラムが登場して、もはやわけわからないですが、以下のコードを「Notebooks」というところで、新規で作成していきます。

    endpoint = 'YOUR_ENDPOINT' #Replace with your endpoint
    key = 'YOUR_KEY' #Replace with your key
    
    import json
    import requests
    
    #An array of features based on five-day weather forecast
    x = [[1,1,2022,1,0,6,0,2,0.344167,0.363625,0.805833,0.160446],
        [2,1,2022,1,0,0,0,2,0.363478,0.353739,0.696087,0.248539],
        [3,1,2022,1,0,1,1,1,0.196364,0.189405,0.437273,0.248309],
        [4,1,2022,1,0,2,1,1,0.2,0.212122,0.590435,0.160296],
        [5,1,2022,1,0,3,1,1,0.226957,0.22927,0.436957,0.1869]]
    
    #Convert the array to JSON format
    input_json = json.dumps({"data": x})
    
    #Set the content type and authentication for the request
    headers = {"Content-Type":"application/json",
            "Authorization":"Bearer " + key}
    
    #Send the request
    response = requests.post(endpoint, input_json, headers=headers)
    
    #If we got a valid response, display the predictions
    if response.status_code == 200:
        y = json.loads(response.json())
        print("Predictions:")
        for i in range(len(x)):
            print (" Day: {}. Predicted rentals: {}".format(i+1, max(0, round(y["result"][i]))))
    else:
        print(response)

    ここで、6行目くらいのx=の部分で、日付とか、気温、湿度、風の強さなどを適当に変えると結果が変わります。

    Pythonコードの画像

    上のコードの、「endpoint」と「key」をSTEP2で生成されたものを入力して、上図の「▷」ボタン(もしくはShift+enter)を押して、しばらくすると、上図の下のように、結果が返ってきます。

    結果で言いますと、例えば、2022年1月1日が、上記で設定したような、気温、湿度、風の強さだったとしたら、どのくらいのレンタル数が予想されるかといったことが分かるということです。

    当然、季節や時期、天候状態等もありますが、その年、その時の豊かさや流行、健康志向といったものもあると思いますので、一概に自転車レンタルについてその時にどのくらいかなどは分からないと思いますが、一つの目安にはなるかと思います。

    どのくらいの従業員が必要になりそうかなどの予算策定などには使えるかもしれません。

さいごに

いかがだったでしょうか。感想としては、ほとんどノーコードで実装できるので、プログラミング初心者でもわりと簡単に実装できるのではないでしょうか。

今回は、自動ML回帰というものを使っていきましたが、次回は、自分で作ったモデルで実装したものをシェアしたいと思います。

30日しか無料でできる期間がないので、できる限りテストして皆さんにシェアできればと考えております。

関連記事