数値分類を利用した分類のやり方

Categorize data with the classification model

数値分類を利用した分類のやり方

はじめに

このドキュメントは、BLOCKS の機械学習サービスの使い方を解説するチュートリアルです。

BLOCKS の機械学習サービスでは、学習データを使って学習する機能(学習機能)と、予測データを使って予測する機能(予測機能)を分けて提供しています。

学習機能は、モデルジェネレーターサービスと DataEditor サービスのモデル作成機能で提供しています。一方、予測機能は、フローデザイナーサービスの予測ブロックと DataEditor の予測機能で提供しています。

このチュートリアルでは、DataEditor を一切使わずにモデルジェネレーターを使った学習機能と、フローデザイナーを使った予測機能を組み合わせた方法で BLOCKS の機械学習サービスを使います。

DataEditor を使った BLOCKS の機械学習について知りたい方は、「数値分類を利用した分類のやり方(DataEditor 編)」を参照願います。

ここでは、あやめのがく片と花びらの長さや幅の情報から 3 種類のあやめに分類する例を通して、BLOCKS 機械学習サービスの数値分類タイプの使い方を解説します。

チュートリアル例のイメージ図

BLOCKS 機械学習サービスの数値分類タイプを利用すると、このようなあやめの分類の他に、以下のような予測ができます。

  • キャンペーンなどの実施により「会員登録する/会員登録しない」に分類
  • ウェブサイトで表示される広告を「クリックしない/クリックする」に分類
  • ユーザーの趣向性を数値化して「地域特性など数パターン」に分類
  • クレジットカードや ATM の利用特性から「正当利用/不正利用」に分類

このチュートリアルを実践すると、上記例も含め分類する課題への適用も簡単にできるようになります。

数値分類のおおまかな流れ

下図は、今回の例における数値分類のおおまかな流れです。

BLOCKS での数値分類の流れ図
  1. Microsoft Excel(Excel)を使ってデータを BLOCKS で扱える形式に加工

    • あやめのデータをトレーニング用データと予測(検証)用データに分割します。
  2. モデルジェネレーターを使って学習(トレーニング)

    • あやめのがく片の長さ・がく片の幅・花びらの長さ・花びらの幅とあやめの種類の因果関係を学習させます。
    • トレーニング結果として、モデルと呼ばれる学習成果が得られます。
  3. フローデザイナーを使ってあやめを分類

    • モデルと予測(検証)用データを使ってあやめを分類します。

この流れは、データが異なっても(別の課題でも)基本的に同じです。

数値分類を試してみよう

このチュートリアルでは、下図のステップで数値分類の一連の流れを解説します。

チュートリアルの流れ図

機械学習では、まとまったデータが必要不可欠です。機械学習では、まとまったデータを元に学習を行うことで、予測が可能となります。このため、機械学習においてデータの収集と加工が最初の作業となります(上図左端のステップ)。

なお、チュートリアルを進めるにあたって、BLOCKS 推奨のウェブブラウザー Google Chrome を準備してください。Firefox でも構いませんが、このチュートリアルでは、Google Chrome の使用を前提にしています。

CSV ファイルを準備しよう

まず、数値分類のトレーニングと予測に必要なデータを準備します。データは、コンマ区切りの CSV ファイル(BOM なし・UTF-8)で用意します。

あやめの情報をまとめた CSV ファイルは、カルフォルニア大学アーバイン校のサイト からダウンロードできます。ダウンロードサイト bezdekIris.data ファイルが最新のものなので、今回はこのデータを利用します。

ファイルをダウンロードする用数

ダウンロードサイトから bezdekIris.data をマウスの右ボタンクリックで、ファイルをダウンロードします。ファイル名は、拡張子を .csvに変更し、bezdekIris.csv とします。

ダウンロードしたファイルを Excel で開きます。

ダウンロードしたファイルを Excel で開いた様子

ダウンロードしたファイルは、左から順に以下の項目で構成されています。

  • あやめのがく片の長さ(単位:cm)
  • あやめのがく片の幅(単位:cm)
  • あやめの花びらの長さ(単位:cm)
  • あやめの花びらの幅(単位:cm)
  • あやめの花の種類(Iris-versicolor・Iris-setosa・Iris-virginica)

このファイルを加工して、トレーニング用データと予測(検証)用データに分割します。

トレーニングでは、あやめのがく片と花びらの情報(長さ・幅)とあやめの種類の間にどのような因果関係があるのかを学習させます。

トレーニング用データの解説図

ここでは、因果関係の原因となる項目(がく片の長さ・がく片の幅・花びらの長さ・花びらの幅)のことを「因子」と呼び、因果関係の結果となる項目(あやめの種類)のことを「結果となる値」と呼びます。

トレーニング用データは、下図のように「因子」→「結果となる値」の順に並べて、ひとまとまりのデータとします(ダウンロードしたデータの形式そのまま)。

トレーニング用データの形式図

データの見出しは、図のように英数字およびアンダースコア(_)で構成します(日本語は不可)。ただし、実際に準備するデータには、見出しは含めません。この見出しは、モデルジェネレーターでトレーニング情報を設定するときに必要にです。

予測では、モデルを使って未学習の因子から結果となる値を予測します。

予測用データの解説図

予測用データでは、「キー項目」と「因子」を使用します。キー項目は、ひとまとまりの予測用データ(1 行分のデータ)を特定するための値です。キー項目は、予測用データ全体でユニークな値でなければなりません。今回は、ユニークな番号をキー項目として用います。

予測用データは、下図のように「キー項目」と「因子」をひとまとまりのデータとします。

予測用データの形式図

データの見出しは、図のように英数字およびアンダースコア(_)で構成します(日本語は不可)。また、キー項目の見出しは、key でなければなりません

それでは、実際に Excel で加工していきます。

まず、先頭列に key 列を追加し、1 から 150 までの連続した数値で埋めます。

先頭に key 列を追加し、1 から 150 までの連続した数値で埋めたた様子

最終列に、データをランダムに並び替えるための乱数列を追加し、乱数でデータを埋めます。

G1 セルに乱数を入力する様子
  1. G1 セルに、=RAND() と入力
  2. G1 セル右下隅をダブルクリック
G 列に乱数を埋めた様子

先頭行に見出しを追加します。

先頭行に見出しを追加する様子
  1. 先頭に行を挿入し、以下の見出しを左から順に入力
    1. key
    2. sepal_length
    3. sepal_width
    4. petal_length
    5. petal_width
    6. class
    7. RAND

RAND 列をキーに昇順(最小から最大)で並び替えます。

ユーザー設定の並び替えを実行する様子
  1. 並び替えとフィルター]をクリック
  2. ユーザー設定の並び替え]をクリック
並び替えの設定をする様子
  1. RAND]を選択
  2. セルの値]を選択
  3. 小さい順]を選択
  4. OK]ボタンをクリック

トレーニング用データと予測(検証)用データのシートを追加します。

シートを 2 枚追加した様子

Sheet1 をトレーニング用、Sheet2 を予測用に使います。

データは、8:2 でトレーニング用と予測用に分けます。このデータは 150 件あるため、トレーニング用に 120 件、予測用に 30 件とします。

予測用データを準備する様子
  1. bezdekIris シートの A1 セルから E31 セルの範囲をコピー
  2. Sheet2A1 セルへ貼り付け
トレーニング用データを準備する様子
  1. bezdekIris シートの B32 セルから F151 セルの範囲をコピー
  2. Sheet1A1 セルへ貼り付け

これで、トレーニング用データと予測(検証)用データの準備ができました。これらを CSV ファイルへ出力します。

まず、トレーニング用データを出力します。Sheet1 で、F12 キーを押します。

トレーニング用データを CSV ファイルで出力する様子
  1. iris-train.csv に変更
  2. 保存]ボタンをクリック
確認画面で OK ボタンをクリックする様子
  1. OK]ボタンをクリック

次に、予測(検証)用データを出力します。Sheet2 で、F12 キーを押します。

予測用データを CSV ファイルで出力する様子
  1. iris-test.csv に変更
  2. 保存]ボタンをクリック
確認画面で OK ボタンをクリックする様子
  1. OK]ボタンをクリック

この Excel ブックは、名前を付けて保存で、Excel ブック形式で保存してください。保存時の名前は自由に決めて構いません(例:iris.xlsx)。

最後に、これらのファイルを Google Cloud Storage(GCS)へアップロードします。これは、BLOCKS の機械学習が、トレーニング用データ・予測用データの CSV ファイルを GCS から読み取る仕様となっているためです。

ファイルを GCS へアップロードするには、BLOCKS のサポートツール GCS Explorer(beta)を使用します。

ウェブブラウザーで、BLOCKS にログイン します。

GCS Explorer に切り替える様子
  1. グローバルナビゲーション左端の をクリック
  2. GCS Explorer(beta)]をクリック
GCS Explorer でファイルをアップロードする様子
  1. GCP サービスアカウントをクリック
  2. 末尾が -data で終わるバケット名をクリック
  3. ファイルをアップロードする]をクリック
アップロードするファイルを選択する様子
  1. iris-train.csviris-test.csv を選択
  2. 開く]ボタンをクリック
アップロード結果を GCS Explorer で確認する様子

これで CSV ファイルの準備ができました。

モデルジェネレーターでトレーニングしよう

続いて、準備したトレーニング用データを使って、モデルジェネレーターで学習(トレーニング)を行います。

まず、モデルジェネレーターを準備します。

モデルジェネレーターに切り替える様子
  1. グローバルナビゲーション左端の をクリック
  2. モデルジェネレーター]をクリック

モデルジェネレーターがひとつもない場合は、「モデルジェネレーターとは」の画面が表示されます。

モデルジェネレーターとはの画面

この画面が表示された場合は、[利用開始]ボタン(❶)をクリックします。

モデルジェネレーターがひとつ以上ある場合は、作成済みのモデルジェネレーターの一覧が表示されます。

モデルジェネレーター一覧画面

この画面が表示された場合は、[追加]ボタン(❶)をクリックします。

数値回帰タイプを選択する様子
  1. 数値分類タイプ]をクリック
  2. 次へ]ボタンをクリック
名前を入力する様子
  1. 名前を入力(例:あやめの分類
  2. 次へ]ボタンをクリック

無料トライアルおよびセルフサービスプランの場合は、画面の案内に沿って以下のステップを進めてください。

  1. GCP サービスアカウントの設定
  2. ストレージの設定
トレーニングデータの形式を設定する様子

この画面で、トレーニング用データの形式を設定します。

項目を追加する]ボタン(❶)を 4 回クリックして、結果となる値を除く項目名を入力します。

入力する項目名は、以下のとおりです。型と型別指定は、そのままとします。

  1. sepal_length
  2. sepal_width
  3. petal_length
  4. petal_width
分類するラベルを設定する様子
  1. Iris-versicolor,Iris-setosa,Iris-virginica と入力
  2. 追加]ボタンをクリック
トレーニングデータ設定画面で次へボタンをクリックする様子
  1. 次へ]ボタンをクリック
設定内容の確認画面
  1. 完了]ボタンをクリック
最終確認画面で OK をクリックする様子
  1. OK]ボタンをクリック

これで、トレーニングの準備ができました。早速、トレーニングしていきます。

トレーニング詳細画面
  1. トレーニング開始]ボタンをクリック
トレーニング名を設定する様子
  1. トレーニング名を入力(例:1回目のトレーニング
  2. をクリック
トレーニング用データを選択する様子
  1. -data で終わるバケット名の をクリック
  2. iris-train.csv をクリック
  3. 選択]ボタンをクリック
トレーニングを開始する様子
  1. 開始]ボタンをクリック

トレーニングに必要な設定は他にもいくつかありますが、今回は標準値のまま進めます。トレーニングに必要な設定項目について詳しくは、モデルジェネレーターヘルプの「トレーニング開始」を参照してください。

トレーニング状況を確認する様子

トレーニングが始まり、トレーニングの状況が画面内で確認できます。

トレーニングの所要時間は、4 時間ほどです(時間はサーバー側の状況により前後)。しばらくお待ちください。

トレーニングが終了した様子

トレーニングが成功で終わると、トレーニング一覧の当該トレーニングのステータスが成功に変わります。

このトレーニングのモデルを予測で使用するためには、このトレーニングのモデルを予測で使用することを明示する必要があります。モデルジェネレーターでは、この行為を適用と呼びます。

トレーニング結果を本番用に適用する様子
  1. をクリック
  2. 適用対象から[本番用]をクリック
  3. 適用]ボタンをクリック

適用対象について詳しくは、モデルジェネレーターヘルプの「トレーニングを一覧する」のアクションの項を参照してください。

もし、トレーニングが失敗する場合は、再度トレーニングを実行してみてください。トレーニング失敗の理由の確認方法については、「操作中にエラーとなったら」を参考にしてください。

フローデザイナーで予測しよう

フローデザイナーを準備しよう

予測は、フローデザイナーで行います。フローデザイナーのフローテンプレート作成機能を活用すると、簡単に予測ができます。このチュートリアルでは、このフローテンプレートを使った方法を解説します。

フローデザイナーを開く様子
  1. グローバルナビゲーション左端の をクリック
  2. フローデザイナー]をクリック
フローデザイナーとはの画面
  1. 利用開始]ボタンをクリック

既にフローデザイナーを作成している場合は、フローデザイナーの一覧画面が表示されます。その場合は、既存のフローデザイナーの名前をクリックして、以降の作業を進めてください。もし無料トライアル以外をお使いで、新たにフローデザイナーを作成できるライセンス枠がある場合は、フローデザイナー一覧画面の左上にある[追加]ボタンをクリックしてください。

フローデザイナーを作成する様子
  1. フローデザイナーの名前を入力(例:チュートリアル
  2. 作成]ボタンをクリック
作成したフローデザイナーを開く様子
  1. チュートリアル]をクリック
予測フローを作成しよう

新しいタブでフローデザイナーが開きます。引き続き、フローテンプレート作成機能を使って、数値分類の予測を行うフローを作成します。

フローテンプレート機能を実行する様子
  1. フローテンプレート作成]ボタンをクリック
数値分類予測のフローテンプレートを作成する様子
  1. 数値分類予測]をクリック
  2. 次へ]ボタンをクリック
フロー名を入力する様子
  1. 電力の需要予測 と入力
  2. 次へ]ボタンをクリック
予測ブロックを設定する様子
  1. あやめの分類(数値分類タイプ)]をクリック
  2. オンライン予測]をクリック
  3. 次へ]ボタンをクリック
予測用データを設定する様子
  1. Google Cloud Storage(GCS)]をクリック
  2. をクリック
予測用データを選択する様子
  1. をクリック
  2. iris-test.csv をクリック
  3. 選択]ボタンをクリック
予測用データを設定した様子
  1. 次へ]ボタンをクリック
予測結果の出力先を設定する様子
  1. Google Cloud Storage(GCS)]をクリック
  2. 表示されている URL に続けて iris-results.csv を追加入力
  3. 次へ]ボタンをクリック

この設定で予測結果は、GCS 上の iris-results.csv ファイルに出力されます。

フローを配置する様子
  1. 配置]ボタンをクリック

作成されたフローが下図の赤枠部分に配置されます。

フローを保存する様子
  1. 保存]ボタンをクリック
予測フローを実行して予測をしよう

これで、予測の準備ができました。早速、予測を試してみます。

フローを実行する様子
  1. フロー先頭の[あやめの分類]ブロック右端の をクリック
  2. フローの実行]をクリック

予測の実行状況を確認するために、フローの実行ログを確認します。

ログを見る様子
  1. ログを見る]をクリック
ログのステータスが実行中であることをを確認する様子

画面下部に、ログパネルが表示されます。ログパネル左側のログリストのステータスでフローの実行状況が確認できます。フローの実行中は、[実行中](❶)の表示になります。実行が終わるまで、しばらく待ちます。

ログのステータスが成功であることをを確認する様子

フローの実行が正常に終了すると、ログリストのステータスが[成功](❶)に変わります。これで予測は完了です。

予測結果を確認しよう

予測結果は、GCS 上に CSV ファイルとして出力されています。CSV ファイルをダウンロードして、Excel で内容を確認します。

別タブにある BLOCKS の画面(フローデザイナーの一覧画面)に切り替えます。

  1. グローバルナビゲーション左端の をクリック
  2. GCS Explorer(beta)]をクリック
ファイルをダウンロードする様子
  1. iris-results.csv ファイル先頭のチェックボックスにチェックを入れる
  2. ファイルをダウンロードする]をクリック
ファイル名をクリックする様子
  1. iris-results.csvをクリック
ファイルを保存する様子
  1. 保存]ボタンをクリック
ダウンロード画面を閉じる様子
  1. 閉じる]ボタンをクリック

これで、予測結果の CSV ファイルがダウンロードできました。早速、Excel で開いて確認してみます。

予測結果の CSV ファイルを Excel で開いて確認する様子

各列の意味は、以下のとおりです。

意味
key

予測用データのキー項目です。

label

キー毎の予測用データに対応する予測結果(あやめの分類)です。

score

label(予測結果)の確からしさです。

score_Irisversicolor
score_Irissetosa
score_Irisvirginica

各分類ごとの確からしさです。

予測結果を確認したところで、予測値と答えを比較してみます。

答えは、保存した Excel ブックファイルの中にあります。この Excel ブックの中にある答えを取り込みます。

答えを取り込む様子
  1. 3 列目に列を挿入し、class という見出しを入力
  2. C2 セルに =VLOOKUP($A2,[iris.xlsx]bezdekIris!$A:$F,6,FALSE) と入力
    iris.xlsx の部分は、保存した Excel ブックのファイル名に置き換えてください。
  3. C2 セル右下隅をダブルクリック
答えを取り込んだ様子

これで予測結果と実際の値を比較する表が表示されました。正誤を確認してみると、この例では 30 件中 28 件が正解していました。精度は約 93% という結果でした。

数値分類の評価について詳しくは、弊社ブログ記事「精度の評価と評価指標について(分類編)」を参考にしてください。

操作中にエラーとなったら

トレーニングや予測時にエラーが発生した場合は、以下に紹介する方法で、エラー情報が収集できます。

モデルジェネレーターの場合は、トレーニング詳細画面の「エラー内容」で確認できます。以下に、モデルジェネレーターでのエラー内容の確認方法を紹介します。

トレーニング詳細画面を表示する様子
  1. ステータスが[失敗]と表示されているトレーニングのトレーニング名をクリック
エラー内容を確認する様子
  1. エラーログ]をクリック
  2. エラーログをコピーする]をクリック(問い合わせをする場合)

フローデザイナーの場合は、先に紹介したログパネルで確認できます。

フローデザイナーのログパネルでのエラー内容を確認する様子

エラー部分が赤字で表示されます。

エラーの原因を特定するには、エラー部分を中心に前後のメッセージも含めて読み解くと良いです(フローデザイナーは、[エラーログの詳細を表示]チェックボックスをチェック)。

エラーが発生し、何度リトライしても失敗するようであれば、グローバルナビゲーション右端のユーザーアイコンをクリックして表示される[お問い合わせ]からエラー内容をテキストファイル化したファイルを添付してお問い合わせください。エラー内容をテキストファイル化する場合は、赤字のエラー部分だけではなく、すべてのエラーメッセージを含めてください(フローデザイナーは、[エラーログの詳細を表示]チェックボックスをチェック)。

フローデザイナーでエラーが発生する場合は、フローをエクスポートした JSON ファイルも添付してください。

お問い合わせについて詳しくは、基本操作ガイドの「お問い合わせ」を参考にしてください。

まとめ

このように BLOCKS を使うと、データを準備するだけで、機械学習の専門的な知識は必要なく簡単に数値分類が利用できます。

ただし、データの準備に際し、留意点があります。準備するコンマ区切りの CSV ファイルは、BOM なし・UTF-8 にしてください。これ以外だと、BLOCKS で扱うことができません。

BOM なし・UTF-8 について詳しくは、弊社ブログの「MAGELLAN BLOCKSを利用する上で文字コードのお話し」を参考にしてください。

機械学習を使ってビジネスの課題を解決するには、チュートリアル同様にまずデータ収集から始めます。社内にある既存のデータを集めたり、新たにアンケートを採ってデータを集めたり、データを購入することもあります。更にそれらデータを精査し、データを選別したり、不正なデータを除去するなどのデータ加工の作業も必要です。このデータ収集と加工作業が、機械学習のステップの大半を占めると言っても過言ではありません。