特徴量選択
予測に効く列だけを残します。 説明変数が多すぎるとき、重要な順に選んで絞り込みます。
入出力
| ポート | 内容 |
|---|---|
| 入力データ | データ |
| 出力データ | データ |
| 変数重要度 | データ |
出力が 2 つあります。 2 つ目の 変数重要度 には 特徴量名 と 重要度 の 2 列が入り、重要度の高い順に並びます。
Spark エンジンでも動きます。
設定項目
詳細な項目は「詳細設定」の見出しの下にあります。 条件によって出ないこともあります。
- 予測値の種類を選択
- 連続値(既定)かカテゴリ変数。選んだ側によって、目的変数に選べる列の型が変わります。
- 目的変数を選択必須
- 予測したい列。連続値なら数値の列、カテゴリ変数なら文字列の列だけが候補に出ます。
- 説明変数を選択
- 候補にする列。数値と文字列が選べます。複数選べます。
- アルゴリズムを選択必須
- 単変量解析で選択(既定)かランダムフォレストの変数重要度で選択。
- 選択する特徴量の数を指定必須
- いくつ残すか。1 以上、説明変数の数以下の整数です。
0もエラーにならず通りますが、目的変数だけの出力になります。 - 乱数シードを固定する
- ランダムフォレストの変数重要度で選択のときだけ出ます。入れると毎回同じ結果になります。考え方は乱数シードを参照。
2 つのアルゴリズム
| 見るところ | 単変量解析 | ランダムフォレスト |
|---|---|---|
| 見方 | 1 列ずつ目的変数との関係を見る | 全部まとめてモデルを作って重要度を出す |
| 速さ | 速い | 遅い |
| 列どうしの関係 | 考えない | 考える |
| 結果の再現 | 常に同じ | シードを固定しないと変わる |
まず単変量解析で当たりを付け、絞り込みたければランダムフォレストという順が扱いやすいです。
文字列の説明変数の扱い
文字列の列は、内部で 0 から始まる番号に置き換えてから重要度を測ります。 番号に大小の意味はないので、単変量解析では文字列の列の重要度があてになりません。 文字列の列を候補に含めるときは、ランダムフォレストを選ぶか、先にダミー変数列の作成で 0/1 に展開してください。
欠損値は「欠損という 1 つの値」として番号を取るので、文字列の列に欠損があってもエラーにはなりません。
エラーと対処
選ぶ数が範囲外
選択する特徴量の数を指定が、説明変数の数を超えているか、負の数のときに出ます。
選択する特徴量の数は、1以上説明変数の数以下に設定してください。
直し方 — 1 以上、説明変数の数以下にしてください。
目的変数に欠損値がある
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
この文は目的変数でも説明変数でも同じです。 どちらが欠けているかは書かれないので、両方を確かめてください。
直し方 — 欠損値処理で埋めるか、欠損のある行を外します。目的変数は予測の答えなので、埋めるより外す方が安全です。
説明変数に欠損値がある
数値の説明変数に欠損があるときに出ます(文字列の列は欠損も 1 つの値として扱うので、このエラーにはなりません)。文は目的変数のときと同じです。
処理対象列に欠損値が含まれています。欠損値を除外するか補完してください。
直し方 — 欠損値処理で埋めるか、その列を説明変数から外します。
数値以外の目的変数で連続値を選んでいる
数値以外の目的変数では連続値モデルは作成できません。目的変数を数値型に変換するか、カテゴリ変数モデルを選択してください。
直し方 — 予測値の種類を選択を「カテゴリ変数」に変えるか、列の型変更で目的変数を数値にします。
カテゴリの種類が多すぎる(Spark エンジンのみ)
Spark エンジンで、値が 100 種類以上ある文字列の列を説明変数に入れたときに出ます。
カテゴリ変数のユニーク数が100以上の場合はモデルが作成できません。問題のある列を除外するか、カテゴリをまとめるなどしてください。
直し方 — 種類の多い文字列の列を説明変数から外すか、条件に応じて値を列に挿入で大分類にまとめてください。
処理対象列を選んでいない
目的変数を選択または説明変数を選択が空のまま実行したときに出ます。
対象の列が選択されていません。
直し方 — 目的変数を選択 / 説明変数を選択で列を選んでください。
選んだ列が入力データにない
前のノードで列名を変えたり列を削ったりして、選んである列がなくなったときに出ます。
対象の列が存在しません。
直し方 — 目的変数を選択 / 説明変数を選択で選び直してください。
よく使う例
1. 列が多すぎるので絞る
説明変数の候補が 100 列あり、まずどれが効くかの当たりを付けたいとき。
入力
| 売上 | 客数 | 気温 | 広告費 | …(97 列) |
|---|---|---|---|---|
| 150 | 12 | 24.1 | 3000 | … |
| 90 | 8 | 18.5 | 1000 | … |
設定
| 設定項目 | 値 |
|---|---|
| 予測値の種類を選択 | 連続値 |
| 目的変数を選択 | 売上 |
| 説明変数を選択 | 残りの 100 列 |
| アルゴリズムを選択 | 単変量解析で選択 |
| 選択する特徴量の数を指定 | 20 |
出力 — 1 つ目は 売上 と重要度上位 20 列だけの 21 列になります。2 つ目には 100 行の重要度表が出ます。
2. 列どうしの関係も見て選ぶ
似た列が多いので、1 列ずつではなくまとめて評価したいとき。
入力 — 例 1 と同じ
設定
| 設定項目 | 値 |
|---|---|
| アルゴリズムを選択 | ランダムフォレストの変数重要度で選択 |
| 選択する特徴量の数を指定 | 20 |
| 乱数シードを固定する | 42 |
出力 — 単変量解析とは違う 20 列が選ばれることがあります。シードを入れたので、流し直しても同じ 20 列になります。
3. 重要度だけを見る
絞り込みはせず、どの列が効いているかの一覧だけが欲しいとき。
入力 — 例 1 と同じ
設定
| 設定項目 | 値 |
|---|---|
| 選択する特徴量の数を指定 | 説明変数の数と同じ値(例 1 なら 100) |
出力 — 1 つ目は入力とほぼ同じ内容になり、2 つ目の 変数重要度 に全列が重要度の降順で並びます。
4. 分類の問題で使う
離反するかどうかを予測したく、答えが文字列の列になっているとき。
入力
| 離反 | 利用月数 | 問い合わせ回数 |
|---|---|---|
| あり | 3 | 5 |
| あり | 5 | 4 |
| なし | 28 | 0 |
| なし | 24 | 3 |
設定
| 設定項目 | 値 |
|---|---|
| 予測値の種類を選択 | カテゴリ変数 |
| 目的変数を選択 | 離反 |
| 説明変数を選択 | 利用月数、問い合わせ回数 |
| アルゴリズムを選択 | 単変量解析で選択 |
| 選択する特徴量の数を指定 | 1 |
出力 — 2 つ目の 変数重要度 はこうなります。
| 特徴量名 | 重要度 |
|---|---|
| 利用月数 | 96.8 |
| 問い合わせ回数 | 3.6 |
1 つ目は 離反 と 利用月数 の 2 列になります。問い合わせ回数 は残りません。