数値分類を利用した分類のやり方
はじめに
このドキュメントは、BLOCKSの機械学習サービスの使い方を解説するチュートリアルです。
BLOCKSの機械学習サービスでは、学習データを使って学習する機能(学習機能)と、予測データを使って予測する機能(予測機能)を分けて提供しています。
学習機能は、モデルジェネレーターサービスとDataEditorサービスのモデル作成機能で提供しています。一方、予測機能は、フローデザイナーサービスの予測ブロックとDataEditorの予測機能で提供しています。
このチュートリアルでは、DataEditorを一切使わずにモデルジェネレーターを使った学習機能と、フローデザイナーを使った予測機能を組み合わせた方法でBLOCKSの機械学習サービスを使います。
info_outlineDataEditorを使ったBLOCKSの機械学習について知りたい方は、「数値分類を利用した分類のやり方(DataEditor編)」を参照願います。
ここでは、あやめのがく片と花びらの長さや幅の情報から3種類のあやめに分類する例を通して、BLOCKS機械学習サービスの数値分類タイプの使い方を解説します。

BLOCKS機械学習サービスの数値分類タイプを利用すると、このようなあやめの分類の他に、以下のような予測ができます。
- キャンペーンなどの実施により「会員登録する/会員登録しない」に分類
- ウェブサイトで表示される広告を「クリックしない/クリックする」に分類
- ユーザーの趣向性を数値化して「地域特性など数パターン」に分類
- クレジットカードやATMの利用特性から「正当利用/不正利用」に分類
このチュートリアルを実践すると、上記例も含め分類する課題への適用も簡単にできるようになります。
数値分類のおおまかな流れ
下図は、今回の例における数値分類のおおまかな流れです。

-
Microsoft Excel(Excel)を使ってデータをBLOCKSで扱える形式に加工
- あやめのデータをトレーニング用データと予測(検証)用データに分割します。
-
モデルジェネレーターを使って学習(トレーニング)
- あやめのがく片の長さ・がく片の幅・花びらの長さ・花びらの幅とあやめの種類の因果関係を学習させます。
- トレーニング結果として、モデルと呼ばれる学習成果が得られます。
-
フローデザイナーを使ってあやめを分類
- モデルと予測(検証)用データを使ってあやめを分類します。
この流れは、データが異なっても(別の課題でも)基本的に同じです。
数値分類を試してみよう
このチュートリアルでは、下図のステップで数値分類の一連の流れを解説します。

機械学習では、まとまったデータが必要不可欠です。機械学習では、まとまったデータを元に学習することで、予測が可能となります。このため、機械学習においてデータの収集と加工が最初の作業となります(上図左端のステップ)。
なお、チュートリアルを進めるにあたって、BLOCKS推奨のウェブブラウザーGoogle Chromeを準備してください。Firefoxでも構いませんが、このチュートリアルでは、Google Chromeの使用を前提にしています。
CSVファイルを準備しよう
まず、数値分類のトレーニングと予測に必要なデータを準備します。データは、カンマ区切りのCSVファイル(BOMなし・UTF-8)で用意します。
あやめの情報をまとめたCSVファイルは、カルフォルニア大学アーバイン校のサイトopen_in_newからダウンロードできます。ダウンロードサイトopen_in_newのbezdekIris.dataファイルが最新のものなので、今回はこのデータを利用します。

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

ダウンロードしたファイルは、左から順に以下の項目で構成されています。
- あやめのがく片の長さ(単位:cm)
- あやめのがく片の幅(単位:cm)
- あやめの花びらの長さ(単位:cm)
- あやめの花びらの幅(単位:cm)
- あやめの花の種類(Iris-versicolor・Iris-setosa・Iris-virginica)
このファイルを加工して、トレーニング用データと予測(検証)用データに分割します。
トレーニングでは、あやめのがく片と花びらの情報(長さ・幅)とあやめの種類の間にどのような因果関係があるのかを学習させます。

ここでは、因果関係の原因となる項目(がく片の長さ・がく片の幅・花びらの長さ・花びらの幅)のことを「因子」と呼び、因果関係の結果となる項目(あやめの種類)のことを「結果となる値」と呼びます。
トレーニング用データは、下図のように「因子」→「結果となる値」の順に並べて、ひとまとまりのデータとします(ダウンロードしたデータの形式そのまま)。

info_outlineデータの見出しは、図のように英数字およびアンダースコア(_)で構成します(日本語は不可)。ただし、実際に準備するデータには、見出しは含めません。この見出しは、モデルジェネレーターでトレーニング情報を設定するときに必要にです。
予測では、モデルを使って未学習の因子から結果となる値を予測します。

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

info_outlineデータの見出しは、図のように英数字およびアンダースコア(_)で構成します(日本語は不可)。また、キー項目の見出しは、keyでなければなりません。
それでは、実際にExcelで加工していきます。
まず、先頭列にkey列を追加し、1から150までの連続した数値で埋めます。

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

- G1セルに、
=RAND()
と入力 - G1セル右下隅をダブルクリック

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

- 先頭に行を挿入し、以下の見出しを左から順に入力
- key
- sepal_length
- sepal_width
- petal_length
- petal_width
- class
- RAND
RAND列をキーに昇順(最小から最大)で並び替えます。

- [並び替えとフィルター]をクリック
- [ユーザー設定の並び替え]をクリック

- [RAND]を選択
- [セルの値]を選択
- [小さい順]を選択
- [OK]ボタンをクリック
トレーニング用データと予測(検証)用データのシートを追加します。

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

- bezdekIrisシートのA1セルからE31セルの範囲をコピー
- Sheet2のA1セルへ貼り付け

- bezdekIrisシートのB32セルからF151セルの範囲をコピー
- Sheet1のA1セルへ貼り付け
これで、トレーニング用データと予測(検証)用データの準備ができました。これらをCSVファイルへ出力します。
まず、トレーニング用データを出力します。Sheet1で、F12キーを押します。

iris-train.csv
に変更- [保存]ボタンをクリック

- [OK]ボタンをクリック
次に、予測(検証)用データを出力します。Sheet2で、F12キーを押します。

iris-test.csv
に変更- [保存]ボタンをクリック

- [OK]ボタンをクリック
このExcelブックは、名前を付けて保存で、Excelブック形式で保存してください。保存時の名前は自由に決めて構いません(例:iris.xlsx
)。
最後に、iris-train.csvとiris-test.csvのファイルをGoogle Cloud Storage(GCS)へアップロードします。これは、BLOCKSの機械学習が、トレーニング用データ・予測用データのCSVファイルをGCSから読み取る仕様となっているためです。
ファイルをGCSへアップロードするには、BLOCKSのサポートツールGCS Explorerを使用します。
ウェブブラウザーで、BLOCKSにログインopen_in_newします。

- グローバルナビゲーション左端のmenuをクリック
- [GCS Explorer]をクリック

- 適切なGCPサービスアカウントをクリック
既に適切なGCPサービスアカウントが選択されている場合はそのまま
info_outline既にGCPサービスアカウント選択済みでこの画面を表示したい場合は、❷のアイコンをクリックします。

- 末尾が-us-central1-dataのバケット名をクリック
既に適切なバケットが選択されている場合はそのまま
info_outline既に他のバケットもしくはフォルダーを選択している場合で、この画面を表示したい場合は、❷の[バケット一覧]をクリックします。
info_outlineセルフサービスプラン(無料トライアル含む)の場合は、プロジェクト作成時にオプションを選択してバケットが同時に作成されていることを前提としています。
バケットがひとつもない場合は、プロジェクト設定のGCPサービスアカウントの項で、バケットの作成ができます(下図❶の部分をクリック)。

既に異なるバケットが作成済みの場合は、そのバケットを選択しても構いません。ただし、そのバケットのロケーションタイプはRegion、ロケーションはus-central1、ストレージクラスはStandardを速度およびコストの面から強く推奨します。

- フォルダーに歯車の絵柄のボタンをクリック
- [ファイルアップロード]をクリック

- iris-train.csvとiris-test.csvを選択
- [開く]ボタンをクリック

これでCSVファイルの準備ができました。
モデルジェネレーターでトレーニングしよう
続いて、準備したトレーニング用データを使って、モデルジェネレーターで学習(トレーニング)を行います。
まず、モデルジェネレーターを準備します。

- グローバルナビゲーション左端のmenuをクリック
- [モデルジェネレーター]をクリック
モデルジェネレーターがひとつもない場合は、「モデルジェネレーターとは」の画面が表示されます。

この画面が表示された場合は、[利用開始]ボタン(❶)をクリックします。
モデルジェネレーターがひとつ以上ある場合は、作成済みのモデルジェネレーターの一覧が表示されます。

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

- [数値分類タイプ]をクリック
- [次へ]ボタンをクリック

- 名前を入力(例:
あやめの分類
) - [次へ]ボタンをクリック
info_outline無料トライアルおよびセルフサービスプランの場合は、画面の案内に沿って以下のステップを進めてください。

この画面で、トレーニング用データの形式を設定します。
[項目を追加する]ボタン(❶)を4回クリックして、結果となる値を除く項目名を入力します。
入力する項目名は、以下のとおりです。型と型別指定は、そのままとします。
sepal_length
sepal_width
petal_length
petal_width

Iris-versicolor,Iris-setosa,Iris-virginica
と入力- [追加]ボタンをクリック

- [次へ]ボタンをクリック

- [完了]ボタンをクリック

- [OK]ボタンをクリック
これで、トレーニングの準備ができました。早速、トレーニングしていきます。

- [トレーニング開始]ボタンをクリック

- トレーニング名を入力(例:
1回目のトレーニング
) - folderをクリック

- -dataで終わるバケット名のarrow_drop_downをクリック
- iris-train.csvをクリック
- [選択]ボタンをクリック

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

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

トレーニングが成功で終わると、トレーニング一覧の当該トレーニングのステータスが成功に変わります。
このトレーニングのモデルを予測で使用するためには、このトレーニングのモデルを予測で使用することを明示する必要があります。モデルジェネレーターでは、この行為を適用と呼びます。

- arrow_drop_downをクリック
- 適用対象から[本番用]をクリック
- [適用]ボタンをクリック
info_outline適用対象について詳しくは、モデルジェネレーターヘルプの「トレーニングを一覧する」のアクションの項を参照してください。
もし、トレーニングが失敗する場合は、再度トレーニングしてみてください。トレーニング失敗の理由の確認方法については、「操作中にエラーとなったら」を参考にしてください。
フローデザイナーで予測しよう
フローデザイナーを準備しよう
予測は、フローデザイナーで行います。フローデザイナーのフローテンプレート作成機能を活用すると、簡単に予測ができます。このチュートリアルでは、このフローテンプレートを使った方法を解説します。

- グローバルナビゲーション左端のmenuをクリック
- [フローデザイナー]をクリック

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

- フローデザイナーの名前を入力(例:
チュートリアル
) - [作成]ボタンをクリック

- [チュートリアルopen_in_new]をクリック
予測フローを作成しよう
新しいタブでフローデザイナーが開きます。引き続き、フローテンプレート作成機能を使って、数値分類で予測するフローを作成します。

- [+]ボタンをクリック

- [数値分類予測]をクリック
- [次へ]ボタンをクリック

あやめの分類
と入力- [次へ]ボタンをクリック

- [あやめの分類(数値分類タイプ)]をクリック
- [オンライン予測]をクリック
- [次へ]ボタンをクリック

- [Google Cloud Storage(GCS)]をクリック
- folderをクリック

- arrow_drop_downをクリック
- iris-test.csvをクリック
- [選択]ボタンをクリック

- [次へ]ボタンをクリック

- [Google Cloud Storage(GCS)]をクリック
- 表示されているURLに続けて
iris-results.csv
を追加入力 - [次へ]ボタンをクリック
この設定で予測結果は、GCS上のiris-results.csvファイルに出力されます。

- [配置]ボタンをクリック
作成されたフローが下図の赤枠部分に配置されます。

- [保存]ボタンをクリック
予測フローを実行して予測をしよう
予測結果を確認しよう
予測結果は、GCS上にCSVファイルとして出力されています。CSVファイルをダウンロードして、Excelで内容を確認します。
別タブにあるBLOCKSの画面(フローデザイナーの一覧画面)に切り替えます。

- グローバルナビゲーション左端のmenuをクリック
- [GCS Explorer]をクリック

- iris-results.csvファイル先頭のチェックボックスにチェックを入れる
- [ファイルダウンロード]ボタンをクリック

- iris-results.csvopen_in_newをクリック

- [保存]ボタンをクリック

- [閉じる]ボタンをクリック
これで、予測結果のCSVファイルがダウンロードできました。早速、Excelで開いて確認してみます。

各列の意味は、以下のとおりです。
列 | 意味 |
---|---|
key |
予測用データのキー項目です。 |
label |
キー毎の予測用データに対応する予測結果(あやめの分類)です。 |
score |
label(予測結果)の確からしさです。 |
score_Irisversicolor score_Irissetosa score_Irisvirginica |
各分類ごとの確からしさです。 |
予測結果を確認したところで、予測値と答えを比較してみます。
答えは、保存したExcelブックファイルの中にあります。このExcelブックの中にある答えを取り込みます。

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

これで予測結果と実際の値を比較する表が表示されました。正誤を確認してみると、この例では30件中28件が正解していました。精度は約93%という結果でした。
info_outline数値分類の評価について詳しくは、弊社ブログ記事「精度の評価と評価指標について(分類編)open_in_new」を参考にしてください。
操作中にエラーとなったら
トレーニングや予測時にエラーが発生した場合は、以下に紹介する方法で、エラー情報が収集できます。
モデルジェネレーターの場合は、トレーニング詳細画面の「エラー内容」で確認できます。以下に、モデルジェネレーターでのエラー内容の確認方法を紹介します。

- ステータスが[失敗]と表示されているトレーニングのトレーニング名をクリック

- [エラーログ]をクリック
- [エラーログをコピーする]をクリック(問い合わせをする場合)
フローデザイナーの場合は、先に紹介したログパネルで確認できます。

エラー部分が赤字で表示されます。
エラーの原因を特定するには、エラー部分を中心に前後のメッセージも含めて読み解くと良いです(フローデザイナーは、[エラーログの詳細を表示]チェックボックスをチェック)。
エラーが発生し、何度リトライしても失敗するようであれば、グローバルナビゲーション右端のユーザーアイコンをクリックして表示される[お問い合わせ]からエラー内容をテキストファイル化したファイルを添付してお問い合わせください。エラー内容をテキストファイル化する場合は、赤字のエラー部分だけではなく、すべてのエラーメッセージを含めてください(フローデザイナーは、[エラーログの詳細を表示]チェックボックスをチェック)。
フローデザイナーでエラーが発生する場合は、フローをエクスポートしたJSONファイルも添付してください。
info_outlineお問い合わせについて詳しくは、基本操作ガイドの「お問い合わせ」を参考にしてください。
まとめ
このようにBLOCKSを使うと、データを準備するだけで、機械学習の専門的な知識は必要なく簡単に数値分類が利用できます。
ただし、データの準備に際し、留意点があります。準備するカンマ(,)区切りのCSVファイルは、BOMなし・UTF-8にしてください。これ以外だと、BLOCKSで扱うことができません。
info_outlineBOMなし・UTF-8について詳しくは、弊社ブログの「MAGELLAN BLOCKSを利用する上で文字コードのお話し」を参考にしてください。
info_outline機械学習を使ってビジネスの課題を解決するには、チュートリアル同様にまずデータ収集から始めます。社内にある既存のデータを集めたり、新たにアンケートを採ってデータを集めたり、データを購入することもあります。更にそれらデータを精査し、データを選別したり、不正なデータを除去するなどのデータ加工の作業も必要です。このデータ収集と加工作業が、機械学習のステップの大半を占めると言っても過言ではありません。