来月の売上を予測するときに、検証対象より後の売上を学習に使うと、実運用より良いスコアが出ることがあります。同じ顧客の履歴を学習側と検証側の両方に入れる場合も、新規顧客への予測性能を高く見積もりがちです。Fione v2の開発版では、学習フォームで予測先に合わせて行の分け方を選べます。以下は関連変更を含む開発ビルドの手順です。
来月の売上は過去から未来へ検証する
学習フォームの「行の時間順」で売上日などを選びます。APIの項目は time_column で、初期値は未指定です。時刻の順序を表す数値、日付、日付として読み取れる文字列を使えます。欠損のない列が必要です。同じ日付の行は同じ区間に入り、異なる値が少ないと分割数が減ります。
分割数 nfolds の初期値は5です。5分割なら行を時系列順におおむね6区間に分け、最初は第1区間で学習して第2区間を検証し、次は第1・第2区間で学習して第3区間を検証します。先頭区間に交差検証の予測は作られません。分類では各分割の学習側にすべてのクラス、検証側に複数のクラスが必要です。この方式では派生特徴量の自動試行が省かれます。日付を特徴量から外しても、行の順序には使えます。
新規顧客を予測するなら顧客単位で分ける
「同じ値の行をまとめる列」に customer_id などを指定します。APIの cv_group_column は初期値が未指定です。同一グループは探索や派生特徴量の評価でも同じ分割に入ります。欠損はまとめて1グループとして数えます。グループは最低2つ必要で、希望分割数より少ない場合は分割数が減ります。分類の学習側からあるクラスが消える分割はエラーになります。
IDらしい列の候補が表示されても、設定は手動で選びます。指定した列は学習入力にも残るため、顧客IDを入力に使わない場合は除外列にも指定します。「行の時間順」とグループ列は同時に指定できません。
小さいデータでは繰り返し回数を確認する
「交差検証の繰り返し回数」(cv_repeats) の初期値は自動です。通常は2,000行以下で3回、5,000行以下で2回、それより多ければ1回です。指定できる値は1〜10で、1なら繰り返しません。時系列分割や、グループ数が分割数以下の場合は1回です。
探索は各回のスコアの平均で候補を比較します。診断や保存する交差検証の予測は初回分です。同じ実行時間では、繰り返しが多いほど試せる候補は少なくなります。設定を変えて比較するときは、最終的に予測したい期間や顧客に合わせて取っておいた検証用データでもスコアを確認します。