モデルで予測値算出
学習済みのモデルを別のデータに当てて、予測値の列を足します。 オートML・マニュアルML・MLアンサンブル(βver)のどれで作ったモデルでも使えます。
入出力
| ポート | 内容 |
|---|---|
| 機械学習モデル | 学習済みモデル。左側の入力につなぎます |
| 入力データ | 予測したいデータ。右側の入力につなぎます |
| 出力データ | 入力データに予測値列を足したもの |
| エラー情報 | 予測の結果。何も起きなければ「正常に予測が終了しました。」の 1 行だけです |
Spark エンジンでは動きません。
設定項目
フォームには「設定項目はありません」と出ますが、その下にチェックボックスが 1 つあります。
- エラーを無視する
- グループごとに作ったモデルを使うときだけ効きます。一部のグループで予測に失敗しても止めず、通ったグループだけを出力データに出し、落ちたグループをエラー情報に出します。チェックを外していると、1 グループでも落ちた時点でノード全体がエラーになります。
予測対象データに要るもの
学習に使った説明変数の列が、同じ名前でそろっている必要があります。 列が足りないとエラーになります。
| 見るところ | 必要なこと |
|---|---|
| 説明変数の列 | 学習時と同じ名前で全部ある |
| 文字列列の値 | 学習時に出てこなかった値が入っていない |
| 欠損 | 説明変数に欠損がない |
| グループ列(グループごとのモデルのとき) | 同じ名前・同じ型で、学習時に出てきた値である |
目的変数の列は要りません。あっても使われません。
エラーと対処
どのエラーも、つなぎ方か予測対象データを直して実行し直せば消えます。 このノードは元のデータを書き換えないので、やり直しても前の結果は壊れません。
モデルがつながっていない
予測対象モデルが入力されていません。
直し方 — 左側の入力に学習済みモデルをつなぎます
データがつながっていない
予測対象データが入力されていません。
直し方 — 右側の入力に予測したいデータをつなぎます
データが 0 件
予測対象データが0件のため失敗しました。
直し方 — 手前の絞り込みを見直して、行が残るようにします
説明変数の列が足りない
予測データに特徴量 (列名) が存在しません。
直し方 — 足りない列を作るか、列名の変更で学習時と同じ名前に戻します
学習時になかった値がある
(列名) 列の要素、 (値) は評価データには含まれていますが、学習データには含まれていません。
直し方 — その値の行を外すか、文字の置換で学習時にあった値にまとめます
グループごとに予測して、全部失敗した
グループ別のモデルで予測したとき、どのグループも予測できなかったときに出ます。後ろにグループごとの理由が付きます。
全てのグループで予測が実行できませんでした。データを確認してください。
この文面の後ろに、グループごとの理由が続きます。 理由を読んでください。説明変数の列や型が学習時と違う、というのがほとんどです。
グループごとに予測して、一部だけ失敗した
予測できたグループがあるのに、できなかったグループもあるときに出ます。
いくつかのグループで予測が実行できませんでした。「エラーを無視する」オプションをお試しください。
この文面の後ろにも、失敗したグループの理由が続きます。
直し方 — エラーを無視するを on にすると、できたグループだけを出して先に進めます。 失敗したグループの行には予測値が入りません。
説明変数に欠損がある
予測データに欠損値が含まれているため予測に失敗しました。欠損値を除外するか補完してください。
直し方 — 欠損値処理で埋めるか、欠損のある行を外します
グループ列がない・型が違う(古いモデルのとき)
予測データにグループ列 (列名) が存在しません。
予測データのグループ列 (列名) の型が構築したモデルと異なります。
この 2 つは、いまは作れない古いモデルをつないだときだけ出ます。 オートML・マニュアルMLで作ったグループごとのモデルでは、グループ列がないときに上の文言ではないエラーでノードが止まります。
直し方 — モデルを作ったときに指定した列と同じ名前・同じ型の列を用意します(列名の変更 / 列の型変更)
一部のグループで予測できない
いくつかのグループで予測が実行できませんでした。「エラーを無視する」オプションをお試しください。
直し方 — 落ちたグループを捨ててよいならエラーを無視するにチェックを入れます。捨てたくないなら、そのグループのデータを直します
すべてのグループで予測できない
全てのグループで予測が実行できませんでした。データを確認してください。
直し方 — エラーを無視するにチェックを入れても消えません。グループ列の値が学習時とまったく噛み合っていないので、どの値で学習したかを確かめます
よく使う例
1. 作ったモデルを新しいデータに当てる
お題 — 来月の解約を予測したい
入力 — 左に学習済みモデル、右に今月の顧客データ(説明変数の列は学習時と同じ)
設定 — なし
出力 — 顧客データに予測値列が足され、エラー情報には「正常に予測が終了しました。」の 1 行だけが出る
2. 店舗ごとのモデルで予測する
お題 — 店舗ごとに作ったモデルを、店舗が混ざったデータにまとめて当てたい
入力 — 左にオートMLの「グループごとにモデルを作成する」で作ったモデル、右に店舗コード列を持つデータ
設定 — なし
出力 — 店舗ごとに対応するモデルで予測され、1 つのデータにまとまって出る
3. 新しい店舗が混ざっていても最後まで通す
お題 — 学習時になかった店舗が増えたが、既存店の予測だけでも先に出したい
入力 — 例 2 と同じ。ただしデータに新しい店舗の行が混ざっている
設定 — エラーを無視するにチェック
出力 — 既存店の行だけが出力データに出て、新しい店舗はエラー情報に「学習時に無いグループの値のため予測が出来ません。」として並ぶ
4. 予測の当たり外れを数字にする
お題 — 正解が分かっているデータで、モデルの精度を測りたい
入力 — 正解の列も入ったデータ
設定 — なし。出力を予測精度を評価につなぐ
出力 — 指標の表と、精度検証結果が出る