本稿からさかのぼる事約3年前、各社からクラウドサービスの提供開始が相次ぐ中、すでに代表的なサービスの1つであったニフティクラウドを取り上げ、「現役エンジニアが本音で試すニフティクラウド」という企画を実施した。

クラウドサービスが本当の普及期に入ったといわれている今、ニフティクラウドがどのような進化を遂げているのか、どんな新しい機能が追加されているのかを、再びエンジニアによる本音ベースでの体験レポートとしてお届けするのが、本企画の趣旨である。

「前処理」「モデル構築」「API化」が簡単にできる、ニフティクラウド Machine Learning

ニフティクラウドの機械学習機能「ニフティクラウド Machine Learning」は、2016年10月に発表があった「ニフティクラウドIoTプラットフォーム」の大幅拡充にともなって追加されたものだ。現在、トライアルαの受付中で、Webから申込むと無料で試すことができる。どのような使い勝手なのか、実際に試してみよう。

ニフティクラウド Machine Learning

ニフティクラウド Machine Learningの強みは、機械学習における「データの前処理」「モデル構築」「APIを用いたアプリ適用」が簡単に行えることだ。一般にこれらは高度な専門性を必要とし、企業が機械学習を気軽に利用する場合の障害になることが多かった。 たとえば、データの前処理では、入力データを機械学習に適したかたちにあらかじめ処理しておく必要がある。データのなかの欠損値を埋めたり、補正したりといった作業では、モデルで利用するアルゴリズムに合わせてデータを調整する必要があるのだ。また、モデル構築では、どんなモデルを選択するか、またモデルの特性にあわせてパラメータをどうチューニングするかがカギになる。機械学習には、教師あり学習、教師なし学習、強化学習などのモデルがあるが、それらをどう選択してチューニングするかは、専門家でなければ判断が難しかった。

システムへの実装もやっかいだ。うまく予測モデルを作成できたとしても、そのモデルをアプリケーションから簡単に使えなければ意味がない。モデル作成時の一連の処理を、予測時にも簡単に適用できる必要がある。

ニフティクラウド Machine Learningはこうした課題を全て解決する。データの前処理やモデル構築はWeb GUIで行うことができ、構築した予測モデルからAPIを自動作成してくれるので、アプリケーションからの利用も容易だ。

実際にどのくらい簡単に利用できるのか。今回の検証では、機械学習の基本データである「UCI Machine Learning Repository」のアヤメ(Iris)のデータセットを使って、これを確認してみた。

アヤメのデータセットをCSVに保存してアップロード

ニフティクラウド Machine Learningのトライアルαの申し込みが完了すると、サービスサイトのリンクがメールで送られてくる。サイトにアクセスし、トライアル用のアカウントでログインすると、以下のようなダッシュボード画面が表示される。

ニフティクラウド Machine Learningのダッシュボード画面

まず、ニフティクラウド Machine Learningで利用するデータを入手しよう。UCIのアヤメのデータセットをサイトからダウンロードする。データには、アヤメの3つの品種(Setosa, Versicolor, Virginica)について、がく片の長さ(Sepal Length)、がく片の幅(Sepal Width)、花びらの長さ(Petal Length)、花びらの幅(Petal Width)という4つの数値が記載されている。データ数は1品種につき50件で計150件だ。

このデータを「iris.csv」として保存し、先頭行にカラム名を付け加える。カラム名は、「Sepal Length」「Sepal Width」「Petal Length」「Petal Width」「Class」のカンマ区切りだ。また、Classについては、Iris-setosaを「0」に、Iris-versicolorを「1」にそれぞれ置換した。さらに、今回は、予測モデルとして「二値分類」を利用することから、Iris-virginicaのデータ50件はあらかじめ削除した。

このCSVファイルを表計算ソフトで開いたのが下図となる。

CSVをもとにデータソースを作成して、予測モデルを構築していく

CSVをデータソースとして利用するためには、ニフティクラウドのオブジェクトストレージにCSVを保存する必要がある。そこで、左上のメニューからオブジェクトストレージのページを開き、バケットに「iris」、ファイル名(オブジェクト名)「iris.csv」として保存する。これで、事前準備は終わりだ。

ニフティクラウド オブジェクトストレージへCSVを保存

2種のアヤメを見分ける予測モデルを作成

では、学習を行ってみよう。ニフティクラウド Machine Learningのダッシュボード上にある「データソースの作成」から、アップロードしたiris.csvを用いてデータソースを作成する。

データソース作成の画面

ここから、オブジェクトストレージに保存したcsvを選択してデータソースを作成する

次に、「予測モデル」からデータソースを指定して、予測モデルを構築する。「予測モデル設定」では、試用時点ではモデルタイプとして「二値分類」しか選択できないので、これを選択。予測を行いたいカラムを選ぶと「予測対象カラム名」にCSVに付与したカラム名が列挙されるので、「Class」を選択する。

Classを選択すると、実際の予測で、アヤメのデータを入力されたときsetosaかversicolorが判定される。setosaなら「0」、versicolorなら「1」と予測することになる

続いて、次のような「前処理変更」のダイアログで前処理の設定を行う。

ここで、モデルが利用するアルゴリズムに合わせて自動的に調整してくれる。試用時点では、カラムごとに欠損値をどう補間するか、どう正規化するか、特徴抽出するかを選択することができた

前処理を設定し終わると、いよいよ予測モデルの構築だ。上部のドロップダウンメニューから「学習を開始する」を選ぶと、学習が始まる。

ドロップダウンメニューに沿って学習を開始(左、中)。するとステータスが「学習前」から「学習中」に変化し、学習が終了すると「学習済み」に変わる

構築した予測モデルの基本情報や前処理情報も見ることができる。データが少ないせいもあるが、ここでは予測モデルのスコアは1.0となった。

作成した予測モデルを使ってアヤメの品種を判定

学習が終わったら、いよいよ予測だ。予測を行うには、まず同じドロップダウンメニューから「予測を行う」を選択する。

予測を行うためのデータは、モデルの構築時と同様にCSVとしてオブジェクトストレージに保存して、そのCSVをデータソースとして登録して利用する。今回は、Iris.csvから部分的に10件を抜き出したCSVをアップロードして予測を行ってみた。

出力先設定のオブジェクト名に「output.csv」を指定し、データソースとして新たにアップロードした「iris2.csv」を指定する。

その後「予測を行う」を実行すると、すぐにoutput.csvが出力される

予測モデルの構築には時間がかかるが、モデルを使った予測は瞬時だ。こうしてできた2つのcsvファイルを比較したのが下図だ。

予測前のiris2.csv(左)と予測後の予測後のoutput.csv(右)

データソースiris2.csvの「Class」と、出力先output.csvの「predictedLabel」の数値が合致している。これにより、setosaならば「0」、versicolorならば「1」と、正しく予測できていることが確認することができた。

予測モデルは、このようにコントロールパネルで利用するだけでなく、APIから利用することも可能だ。APIはAWSのSignature V4互換で、Pythonの場合は「boto/botocore」を使ってリクエストすることができる。具体的なコードは、以下のようになる。

このコードは、ニフティのブログ「ニフティクラウド Machine Learningのご紹介」でも記載されている。APIを使うことで、アプリケーションに実装して予測をどんな環境からでも簡単に利用できるようになる。ブログには、本稿で紹介した一連の流れも詳しく記載してあるのでぜひアクセスしてほしい

ニフティクラウドMachine Learning -まとめ

機械学習が簡単に利用できるようになったことで、ニフティクラウドのユースケースはますます広がったといえよう。たとえば、「IoTデバイスから取得した稼働状況ログを分析し、『デバイスの異常を予測するモデル』を構築して遠隔監視する」「商品情報と顧客の購買情報を分析し、購買可能性の高い商品をおすすめする」といった利用が考えられるだろう。

試用時点では限られた予測モデルしか利用できなかったが、今後、さまざまな改善が加えられていくはずだ。今回軽く使ってみただけでも、ニフティクラウドらしい使いやすいインターフェースと操作性が実現されていることがわかった。正式リリースに期待が集まる。なお、トライアルはここから申し込みが可能だ。気になった点があったら、ぜひ自分で試してみてほしい。
次回は「ニフティクラウドNAS」を取り上げる予定だ。

[PR]提供: 富士通クラウドテクノロジーズ

[PR]提供: