DataRobotに非線形なデータを学習させてみたらどうなるか

# はじめに

はじめまして。社内でデータサイエンティストを務めております [@nttd-dakimoto](https://qiita.com/nttd-dakimoto) です。

[NTTデータ デザイン＆テクノロジーコンサルティング事業本部](https://enterprise-aiiot.nttdata.com/)では、お客様企業のAI・データ活用を、コンサルティングから基盤構築、実行支援を通じた成果創出までワンストップで創出しており、その支援テクノロジーの一つとして [DataRobot](https://enterprise-aiiot.nttdata.com/service/datarobot) を提供しております。

DataRobot は最適なモデルを自動的に選択する AutoML 機能を備えていますが、三角関数や指数関数等の非線形なデータを学習させた際に、どのようなモデルを選択し、特徴量がどう解釈されるのか本記事では見てみたいと思います。

# DataRobotについて

DataRobot社は、人工知能（AI）に対するユニークなコラボレーション型のアプローチであるバリュー・ドリブン AIのリーダーです。

https://www.datarobot.com/jp/

DataRobot社の製品であるDataRobotは、自動機械学習（AutoML）プラットフォームであり、機械学習モデルの構築、トレーニング、評価、デプロイメントを自動化することができます。複雑なデータ分析を迅速かつ簡単に実行し、優れた予測モデルの作成をサポートすることが可能です。

# データの準備

今回のデータは簡単に Excel で作成しました。

- データ件数は200件
- 各特徴量 X_0, X_1 は区間 [0, 10] の一様分布に従い乱数生成(`rand()*10`)
- e を平均0, 標準偏差0.1の正規分布に従う乱数(`NORM.INV(RAND(), 0, 0.1)`)とし各関数に加算する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/030af351-ea69-a2d3-5609-e1efad8757a3.png)


# DataRobot での学習の前提

DataRobot では、GUI 上の操作から簡単に最適なモデルでの学習が可能ですが、今回は下記条件を画面上で指定して行いました。

- 学習に使う特徴量は X_0, X_1 の二つとする
    - X_1 は目的変数には関連のない特徴量となっている
- 学習・評価指標は RMSE を共通で用いる
- DataRobot 上のクイックモードで自動学習

# まずは線形データ

下記数式に従うデータを学習させてみます。

```math
\begin{eqnarray}
Y = 2X_0 + e \\
\end{eqnarray}
```

最適なモデルとして、下記のように **Elastic-Net Regressor** が選ばれました。きちんと線形モデルを解釈できてそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/7275cd3a-d10c-1c05-330d-398369a431f5.png)
また特徴量ごとの作用で、特徴量のインパクトおよび部分依存(Partial Dependence)を見てみると、X_0 のみが寄与しており、かつ X_0 に対する傾き2の線形予測になっていそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/988d20da-c8e0-b471-4c3f-c1a04c7911cd.png)
しかし実際に Elastic-Net Regressor の STANDARDIZED X_0 に対する係数の表示を見てみますと、6近い値になっていました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/de15dda5-a51c-22d4-cf8c-367174538af7.png)
後からデータを振り返ってみると、X_0の標準偏差が2.92となっており、DataRobotの前処理での標準化で、標準偏差による除算を行っていますので、それと実際の係数2を考慮して上記のように6付近の係数になったと思われます。
また、他にもX_0のデータ品質にアラートがついており、ターゲットリーケージの可能性があることも教えてくれています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/31247762-52a6-df81-4a6d-59f29c1564f6.png)

# 正弦関数 sin

下記数式に従うデータを学習させてみます。

```math
\begin{eqnarray}
Y = \rm{sin}(X_0) + e \\
\end{eqnarray}
```

すると今度は最適なモデルとして **RuleFit Regressor** が選ばれました。どうやらこれは各特徴量の場合分けに応じて、線形回帰の係数を足し引きしていくモデルのようです([参考](https://hacarus.github.io/interpretable-ml-book-ja/rulefit.html))
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/9df2b83b-61ce-8880-7714-c44263c08825.png)
下図のように予測したい X_0, X_1 が含まれる区間が複数あり、その係数を足し引きしていくことで、予測したい特徴量の係数が求まる仕組みのようです。
実際は X_1 は目的変数とは関連がないのですが、ここの係数では X_1 も少しばかり関連あるように学習されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/d41ac088-91ae-bba5-89c7-823f787f2e2b.png)
特徴量ごとの作用を見てみると、X_1 の特徴量インパクトは少なく、また X_0 の部分依存を見てみると[0, 10]の区間では正弦波を描けています。
これを見ることで、目的変数と特徴量の関係が分かりそうです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/ca68c83f-0864-f546-b9cd-9c577de94111.png)
ここで [0, 10] 以外の区間がどうなるか気になったので、 $X_0 = 4 \pi, X_1 = 0$ として予測を実行してみました。結果は $-0.58487$ となり、正しい結果の $0$ とはかなり離れた結果になってしまいました。やはり場合分けによる回帰係数の決定では外挿には弱いようです。

# 指数関数 exp

下記数式に従うデータを学習させてみます。

```math
\begin{eqnarray}
Y = \rm{exp}(X_0) + e \\
\end{eqnarray}
```
するとこの場合でも、RuleFit Regressor が選ばれました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/c2ecb87d-ec61-f3a3-dedc-5278e3722cd4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/8c698eb3-4ac0-2cd8-edf8-d5bd5a3f4c93.png)
特徴量の部分依存を見てみると、 X_0 に対して指数関数に近いグラフは描けているようです。ただ 10 付近で傾きが減少しているので、10より大きい予測に対しては難しそうな印象です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/47559/cee5306e-0ffb-a9cd-9a84-50e74f343403.png)

# 指数関数 exp を手動変換して再学習

上記指数関数の特徴量の部分依存から、 X_0 に対して指数関数に近い動きをすることが分かったという前提で、今回は事前に目的関数を対数化した上で学習をかけてみたいと思います。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724692/bf0e21a7-13af-eb4c-a614-82b96931113b.png)

DataRobot では上記のように特徴量を選択することで、簡単に変換を行うことができます。

ここでは log(exp(X_0)) と手動変換を行ったうえで再学習をさせてみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724692/cc51e740-fcd8-7f7c-2b7c-056e65e80173.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724692/1123b190-da81-cca8-fc04-6d88eac34c7d.png)

するとこれは単純な線形関係になるので、**Elastic-Net Regressor** が選ばれました。係数については、線形データの節でも触れたように正規化を考慮して、2.92 という値になっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3724692/ac7147c9-89fb-8054-d4f8-134538f60dd7.png)

特徴量の部分依存を見ても、指数関係は解消され、綺麗な直線が描けています。

# まとめ

今回 DataRobot で非線形なデータを学習させてみましたが、最適なモデルが RuleFit Regressor となり、学習区間以外での予測は難しい印象でした。ただ、特徴量ごとの作用に現れる部分依存(Partial Dependence)のグラフを見ると、特徴量と目的関数との関連が分かるようになるので、これをもとに事前に対数変換等の[手動変換](https://docs.datarobot.com/ja/docs/data/transform-data/feature-transforms.html)を行うことで、より精度の高いモデルを作ることが可能になります。

当部のデータサイエンティストは、DataRobot によるモデリングのみでなく、その結果を適切に解釈し、お客様のためにモデル精度を向上する支援も行っております。

## 仲間募集

NTTデータ テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。

<details><summary>1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)</summary>

クラウド／プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

</details>

<details><summary>2. データサイエンス領域（データサイエンティスト／データアナリスト）</summary>

データ活用／情報処理／AI／BI／統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX／デジタルサクセスを推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

</details>

<details><summary>3.お客様のAI活用の成功を推進するAIサクセスマネージャー</summary>

DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。
https://nttdata.jposting.net/u/job.phtml?job_code=804

</details>

<details><summary>4.DX／デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》</summary>
データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=898

</details>


## ソリューション紹介

<details><summary> Trusted Data Foundationについて</summary><div>

～データ資産を分析活用するための環境をオールインワンで提供するソリューション～
https://enterprise-aiiot.nttdata.com/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ（Datalake+DWH+AI/BI）を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

</div></details>


<details><summary> TDFⓇ-AM（Trusted Data Foundation - Analytics Managed Service）について</summary><div>

～データ活用基盤の段階的な拡張支援（Quick Start) と保守運用のマネジメント（Analytics Managed）をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス～
https://enterprise-aiiot.nttdata.com/service/tdf/tdf_am
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

</div></details>


<details><summary>NTTデータとTableauについて </summary><div>

ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。
https://enterprise-aiiot.nttdata.com/service/tableau

</div></details>


<details><summary>NTTデータとAlteryxについて </summary><div>
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。

Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://enterprise-aiiot.nttdata.com/service/alteryx

</div></details>

<details><summary>NTTデータとDataRobotについて </summary><div>
DataRobotは、包括的なAIライフサイクルプラットフォームです。

NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://enterprise-aiiot.nttdata.com/service/datarobot

</div></details>

<details><summary> NTTデータとInformaticaについて</summary><div>

データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。
https://enterprise-aiiot.nttdata.com/service/informatica

</div></details>

<details><summary>NTTデータとSnowflakeについて </summary><div>
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。

NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://enterprise-aiiot.nttdata.com/service/snowflake

</div></details>