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

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)。

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

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

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

GCS Explorerに切り替える様子
  1. グローバルナビゲーション左端のをクリック
  2. GCS Explorer]をクリック
GCS ExplorerでGCPサービスアカウントを選択する様子
  1. 適切なGCPサービスアカウントをクリック
    既に適切なGCPサービスアカウントが選択されている場合はそのまま

既にGCPサービスアカウント選択済みでこの画面を表示したい場合は、❷のアイコンをクリックします。

バケットを選択する様子
  1. 末尾が-us-central1-dataのバケット名をクリック
    既に適切なバケットが選択されている場合はそのまま

既に他のバケットもしくはフォルダーを選択している場合で、この画面を表示したい場合は、❷の[バケット一覧]をクリックします。

セルフサービスプラン(無料トライアル含む)の場合は、プロジェクト作成時にオプションを選択してバケットが同時に作成されていることを前提としています。

バケットがひとつもない場合は、プロジェクト設定のGCPサービスアカウントの項で、バケットの作成ができます(下図❶の部分をクリック)。

プロジェクト設定のGCPサービスアカウントの項目例

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

GCS Explorerでファイルをアップロードする様子
  1. フォルダーに歯車の絵柄のボタンをクリック
  2. ファイルアップロード]をクリック
アップロードするファイルを選択する様子
  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の画面(フローデザイナーの一覧画面)に切り替えます。

GCS Explorerを開く様子
  1. グローバルナビゲーション左端のをクリック
  2. GCS Explorer]をクリック
ファイルをダウンロードする様子
  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を利用する上で文字コードのお話し」を参考にしてください。

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

この情報は役に立ちましたか?