---
title: "一般化加法モデルと格付表"
description: "精度が良く更に完全なホワイトボックスの一般化加法モデルとその係数表（格付表）の見方を説明します"
url: "https://www.datarobot.com/jp/blog/2017-10-24-ga2m-and-rating-table/"
authors:
  - "中野 高文（Takafumi Nakano）, データサイエンティスト"
published: "2017-10-24"
updated: "2025-01-07"
category: "データサイエンス"
language: "ja"
---

# 一般化加法モデルと格付表

DataRobotのデータサイエンティスト中野高文です。

近年非線形モデル（ツリー系のモデル、カーネルを用いたSVM、K近傍、ニューラルネットなど）の機械学習のモデルは多くのデータにおいて精度が高くなる事が多く、頻繁に用いられていますが昔ながらの線形モデルが好まれるケースも未だに存在します。

例えば、規制の強い金融、保険などの業界では**はっきりと係数がわかるアルゴリズム**である必要がある場合もありますし、デプロイする際に**直接SQLで書ける必要がある**などといった制約のために線形モデルを利用する必要が生じる場合もあります。

今回はそこで上記のような線形モデルの利点を全て保ったまま、多くのデータセットで機械学習のモデルと同レベルの精度の予測が可能と言われている**一般化加法モデル (Generalized Additive Model, GAM)**を紹介します。DataRobotでも一般化加法モデルの中でも２項間の相互作用も含まれている**Generalized Additive 2 Model (GA2M)**[\*1](#fn1)が数ヶ月前に利用可能となりました。

![Screen Shot 2017-10-04 at 15.43.51.png](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/screen-shot-2017-10-04-at-15-43-51.png)

今回はGA2Mモデルの紹介を以下のように行なって行きます。

1. 対比のために一般化線形モデルを簡単に紹介
2. 一般化加法モデルのコンセプト
3. GA2Mの係数**「格付表」**のアウトプットと見方

## 一般化線形モデルとは

**一般線形モデル**とはyの値を特徴量![latex_a3c56d13a69a4441e0a31ba148314a72](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/latex_a3c56d13a69a4441e0a31ba148314a72.png)に重みをつけて組み合わせた値でyを説明しようとするモデルです。式で表すと係数![latex_024f7255b0671ff213ef2765791a999a](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/latex_024f7255b0671ff213ef2765791a999a.png)を用いて

![texclip20171005163513](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/texclip20171005163513.png)

と書くことができます。簡単に言うと、yの値を![latex_a3c56d13a69a4441e0a31ba148314a72](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/latex_a3c56d13a69a4441e0a31ba148314a72.png)の値を組み合わせて説明を行って、説明できない部分（ノイズ）を![latex_cef6c2e84573e536f02948cdd135d25c](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/latex_cef6c2e84573e536f02948cdd135d25c.png)と表していると言うことですね。期待値を取ってとノイズを取り除いて表す（感覚的には何度も繰り返して行えば、ノイズはゼロと見なせる）と

![texclip20171005163718](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/texclip20171005163718.png)

と表されます。yが正規分布と言われるバランスの取れた分布である時には一般線形モデルを用いるのですが、yの分布が歪曲している際にはそれを発展させた**一般「化」線形モデル**が使われます。数式で持って書くと、

![texclip20171005163735](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/texclip20171005163735.png)

となります。感覚としてはE(y)が歪曲しているので、それをある関数gを持って歪みを取り除く（正規化させる）と考えていただいても良いかもしれません。例えばyがポワソン分布の場合にはgとしてlog関数が使われます。

一般化線形モデルは数式(3)の形を持っているため、係数の値を見ることで明確に理解できるモデルとなっています。

## 一般化加法モデルとは

一般化加法モデルとは一般化線形モデルのそれぞれの特徴量![latex_a3c56d13a69a4441e0a31ba148314a72](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/latex_a3c56d13a69a4441e0a31ba148314a72.png)に重みをつけるだけでなく、もっと複雑な形を持った関数とする事で複雑な現象も表す事ができるようにしたモデルです。

![texclip20171005163747](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/texclip20171005163747.png)

![latex_f6b7859fa4583bfbc3dcbd8641a2ef27](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/latex_f6b7859fa4583bfbc3dcbd8641a2ef27.png)を係数との掛け算に限ると数式(3)となる事がわかると思いますが、一般化加法モデルは**単純な比例関係で無い物をを説明できる**ため、多くのデータで一般化線形モデルより精度がよくなることが多くみられます。

しかし世の中にある一般のプロセスはいくつかの特徴量がお互いに相互に影響を及ぼす場合も多く見られます。例えばある商品の世界の国々（特徴量１）での年齢別（特徴量２）の売上を見てみると、日本ではお年寄りによく売れているがアメリカでは若い人によく売れるといった事が見受けられるかもしれません。そこでそのような相互作用を上手く説明するために一般化加法モデルに２項間の相互作用を含めたものが**「GA2M」モデル**となります。

## 格付表の見方

一般化線形モデルではリーダーボードの係数タブより係数を確認する事ができますが、一般化加法モデルの係数はその横にある**「格付表」**タブで確認する事ができます。こちらではこのモデル内で用いられている変換と変換後の値に対する係数、さらにはそれぞれの特徴量の強さを表す「Feature Strength」といったものを全てが一目でわかるようになっています。

![Screen Shot 2017-10-04 at 15.46.18.png](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/screen-shot-2017-10-04-at-15-46-18.png)

「表のダウンロード」よりCSVをダウンロードしてその中身を確認していきます。見ていただくとわかるように、大きく分けて⑴モデル全体の情報、⑵個々の係数情報の2つの部分にわかれています。

![Screen Shot 2017-10-04 at 16.35.49.png](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/screen-shot-2017-10-04-at-16-35-49.png)

## モデル全体の情報

モデル全体の情報としては⑴全てのモデルに共通の項目と⑵モデルごとに特有の項目があります。モデルごとに特有の項目としては前処理の情報（例えばword-gramの情報など）があり、全てのモデルに共通の項目としては以下のようなものがあります。

1. Intercept : 切片の値（数式(4)の![latex_f1b2dd8f4fa57309a723a0294e913d01.png](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/latex_f1b2dd8f4fa57309a723a0294e913d01.png)に該当）
2. Loss distribution : Least-Square Loss, Binomial Deviance, Poisson Deviance, Gamma Deviance, Tweedie Devianceの４種があります。これは最適化する指標で選択したものに対応します。
3. Link function : 数式(4)の変換gに対応します。この変換は最適化する指標によって以下のように決められています。![Screen Shot 2017-10-24 at 17.32.19.png](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/screen-shot-2017-10-24-at-17-32-19.png)この表にあるInverse link functionとは数式(4)をE(y)をアウトプットするように書き換えた以下の数式の![latex_4d7cdf0c6ab5f390485311c55cc9e400.png](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/latex_4d7cdf0c6ab5f390485311c55cc9e400.png)に当たります。![texclip20171005164700](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/texclip20171005164700.png)
4. Pairwise interactions found : ２項間の相互作用は実際にモデルの作成に有効な物のみ使われます。その有効な相互作用のリストがこちらにリストアップされています。その横には後から説明する「Feature Strength」が表示されています。

## 個々の係数情報

このリストでは１行１行の情報が、ある特徴量に対する条件文に相当し、その係数 (Coefficient)や重み (Weight)をリスト化しています。

1. Feature Name : 対応する特徴量名。相互作用の場合は (特徴量１ & 特徴量２)といったように括弧付けで表される。
2. Feature Strength : その特徴量の影響度。それぞれの特徴量にCoefficientをWeightを用いた加重和を取り、和が１となるように正規化した値。
3. Type : その特徴量の型。相互作用の場合「2W-INT」と表記。
4. Transform1 : 特徴量（相互作用の場合は特徴量１）の変換方法
5. Value1 : Transform1変換に対応する値/値域
6. Transform2 : 相互作用の場合の特徴量２の変換方法
7. Value2 :  Transform2変換に対応する値/値域
8. Weight : その特徴量の値域に存在するデータ行数
9. Coefficient : その特徴量の値域への係数
10. Relativity : exp(Coefficient)の値を表示。Inverse link functionがexpの時のみ表示。

具体例として以下の格付表の個々の係数情報をみていきましょう。

![Screen Shot 2017-10-04 at 17.39.06.png](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/screen-shot-2017-10-04-at-17-39-06.png)

例えば上のテーブル2行目の「Feature Name = 平日」の行を見ていただくと、これは”平日という数値型の特徴量をグループにまとめる「Binning」という処理を行い、そしてその値が「(0, inf)」(０と無限大の間) の場合は係数-22.454798を割り当てます”といったプロセスに相当し、そのデータがトレーニングデータ中に3774行見受けられます、といった説明を行なっています。

上のテーブル2行目の「Feature Name = ( 平日 & 時間 )」の行の場合、相互作用を表し、”平日という特徴量が(0, inf)、かつ時間という特徴量が(-inf, 0.499・・・)の場合は係数-21.196061を割り当てます”というプロセスに相当し、そのようなデータが167行存在すると説明しています。

![Screen Shot 2017-10-04 at 18.22.29](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/screen-shot-2017-10-04-at-18-22-29.png)

それでは上のような格付表で「平日 = 1, 時間 = 0.3」のデータ（個々の係数情報の3行の条件全てに当てはまっています）に対してどのような予測値が返されるのでしょうか？今回Link functionは”identity”つまり必要ないため、Inverse link functionも必要ありません。それを数式(5)に当てはめると

![texclip20171005163115](https://www.datarobot.com/jp/wp-content/uploads/sites/11/2020/05/texclip20171005163115.png)

となります。

## まとめ

今回は線形モデル同様に⑴モデルが係数の大きさで明確に判断でき、⑵係数で簡単にコード内に埋め込みも可能、⑶同時に多くのデータで精度も非常に良い、といった多くの利点を持った２項間の相互作用を含む一般化加法モデル（Generalized Additive 2 Model, GA2M) と格付表を紹介しました。

今後はダウンロードしたcsvの格付表の係数に手動で変更を加えてモデルを細かくチューニングすると言った機能も利用可能になる予定なので、完全にホワイトボックスであるモデルを使う必要がある場合には精度も同時に担保したこちらのモデルを注目してください。

\*1 : [Accurate Intelligible Models with Pairwise Interactions](https://www.cs.cornell.edu/~yinlou/papers/lou-kdd13.pdf)の論文を参照
