入力データの特徴量同士をかけ合わせて
新しい特徴量を作り出し、入力データに加えたいのですが
それを自動で行う方法をご存知でしたらコメント頂けますと幸いです。
以下2つの記事を参照しました
① https://docs.datarobot.com/ja/docs/modeling/analyze-models/describe/ga2m.html
② https://www.datarobot.com/jp/blog/2017-10-24-ga2m-and-rating-table/
データを投入してオートパイロットを実施する前段階で
「特徴量制約」→「二項間の交互作用」→「GA2Mモデル内の二項間の交互作用の指定」
のところで、掛け合わせる特徴量の名称を記載したcsvファイルをアップロードすると、自動で処理してくれる
ということだと理解したのですが、
1行目に1セルに1特徴量を記載する形で19セル横に記載していったcsv(下記がそのサンプル画像)を投入すると
error parsing pairwise interactions csv
というエラー文が表示されてしまいました。
※なお各セルの名称は、入力データの各特徴量名と一致させてあります
こちらcsvの形式に他になにか仕様制約があるのでしょうか?
@Sasaki さん
ご質問ありがとうございます。
まず、「GA2Mモデル内の二項間の交互作用の指定」については、これは検出する交互作用を特定の組み合わせのみに絞りたい場合に使用する機能です。
つまり、何らかの理由で一部の交互作用を作成するのが不適切なケースの際に、「これとこれとこれの中でのみで交互作用を探して下さい」という指定に使う機能です。
ご希望のように全ての特徴量から交互作用を探したい場合は、ここの指定をせずに通常通りオートパイロットを回して頂ければ、GAMモデルにて交互作用を探索してくれます。(検出された場合にはGAMモデルの格付け表で確認が可能です。)
なお、該当のcsv自体のエラーについては、データ要求の箇所に記載の通り「コンマ刻みのcsvファイル」にエクセルなどで変換頂く必要があり、ここの変換が正常に出来ていないと「error parsing xxxxx」となります。(ただし、1行に記載できるのは10列までですので、いずれにしても今回のケースではご利用頂く必要はないかと存じます。)
@Isao さん
ご回答いただきありがとうございます。
AutoMLの資料を参照したところ、オートパイロットを回すと、
「⼀部のblue printでは前処理段階で⾃動で特徴量同⼠の差や⽐を取っている」
とのことですが、
全ての特徴量から交互作用を探す(かつ差と比に加えて、積も)
のは、GAMモデル以外のモデルについては実行できないでしょうか?
@Sasaki さん
いくつか話がございますので、分けて説明します。
特徴量間の差や比というのはブループリント内で"search for differences"や"search for ratios"と記載のある場合、そのモデル内で探索して自動で追加してモデルに使ってくれます。こうしたアルゴリズム的に探索して追加したものは過学習となる危険もあり、無い方が良い精度になる場合もあります。また、探索自体にも時間が掛かるため、全てのモデルでは実行しません。
一方、「高度なオプション」の中に「組み合わせ特徴量の探索」という機能があり、こちらを使えば発見した差や比の特徴量がデータタブでの一覧に追加され、全てのモデルで使ってくれます。しかし、前述した危険があるため、こちらでの探索はかなり保守的になっており、設定しても何も見つからない場合も多いです。
特徴量の積についてはGA2Mモデルでのみ探索されます。こちらで見つかったものは元データに追加頂いてプロジェクトを作成し直すことで、他のモデルでも使える様になります。ただし、予測モデルの精度が上がる場合もありますが、前述した過学習による精度が下がる場合もありますし、あるいは木系のアルゴリズムであれば特徴量間の積というのはある程度学習しますので、効果が全くない場合もあります。また、特徴量間の相関が強くなるため、解釈性が落ちることも懸念の一つです。
可能であればこうした差や比などの組み合わせ特徴量や交互作用についは、上記の様なアルゴリズムで見つかったものをヒントに、ドメイン知識で意味のありそうなものだけを元データに追加してモデリングし直すことがおすすめです。
@Isao さん
ご返信いただきありがとうございます。
非常に有益なご助言をありがとうございます。
2点伺いたいことがございまして
① 「アルゴリズム的に探索して追加したものは過学習となる危険」があるということなのですが、過学習になってしまう理由についてご教示、または参考となるページがあればご共有いただけますと幸いです。
② GA2Mモデルで探索した特徴量の積を、元データに追加してプロジェクトを作成し直す、という部分なのですが、この「データを追加してプロジェクトの再作成」はデータロボット上で行えるでしょうか?(データを追加する部分は手動で生データに対して行って、再投入になるでしょうか)
@Sasaki さん
①「アルゴリズム的な探索」というのをもう少し説明しますと、例えば差分を見つけるSearch for differencesの前処理であれば、数値特徴量から全ての組み合わせの差分特徴量を一度作成し、その中から有用なものだけを選択してモデルで使用します。
しかし、特にデータ行数が少ない場合、多くの特徴量を作成することにより、「学習データの中だけでたまたま適合するものの、汎用性がなく予測にあまり有用でない特徴量」というのも出てきてしまう可能性があります。このような特徴量をモデルが重視して学習した場合には、Search for differencesの前処理を入れた方が精度が下がるということもあり得るということです。(もちろん上がる場合も多いです。)
②DataRobot上でも変換を頂くことは可能です。
データタブのメニュー→アクション→f(x)変換を作成 にて、
そうした特徴量をDataRobotの中で作成頂くことができます。
とはいえ、私個人としては試行錯誤を行う際に毎回こちらで実施するのは面倒ですので、元データ側を編集してしまうことの方が多いです。