分類分析とは、識別したいクラスが未知のデータが、どのクラスに属するのかを分類する分析である。分類分析では、まず分類したいクラスが既知のデータ(教師付きデータ)を用いてデータの中に潜むパターン(データとクラスの関係)をモデルとして学習し、学習したモデルを用いて未知のデータを予測・分類することになる。
例えば、新規顧客の信用度を知りたい場合、既存顧客の情報、例えば、年齢、性別、教育、収入と信用度のデータから、信用度を目的変数に、年齢、性別、教育、収入を説明変数にして、顧客の信用度のクラスを分類するモデルを作成する。次に、そのモデルを用いて新規顧客の年齢、性別、教育、収入からその顧客の信用度を推定するという事を行う。
未知データの識別は、データとクラスとの対応関係に関する確率的知識を利用し、クラスが未知のデータがどのクラスに属しているかを推定する。通常、誤判別率を最小にするという方法が取られる。この方法は統計的決定論を援用したBayesの識別理論として知られている。しかし、データとクラスとの確率的知識が知られている事は希で、実際に分類分析を行う場合にはこの確率的知識をデータから推定する必要がある。
確率的知識を推定する方法には様々な手法が考案されている。以下に、Visual Mining Studioで提供している手法として、Neural Network、Radial Basis Function Network、Decision Tree、k-NN分析、Support Vector Machine、nuSVM、Naive Bayesとそれらのモデルを用いての予測・検証や、複数のモデルの統合、上記のモデルを用いたBoostingおよびBagging、又、アソシエーション分析の結果を用いて予測を行うルールベース予測[2]、大規模データに対応したSupport Ball Machineについて紹介する。
Neural Network、Radial Basis Function Network、Decision Tree、k-NN分析、Support Vector Machine、nuSVM、Naive Bayes、モデル統合、Boosting、Baggingでは、データに重みを付けて学習する事が出来る。重みの付けの方法は、クラス毎と行毎がある。クラス毎の重み付けは、そのクラスを誤判別した時の誤差に重みを付ける。これは非常に希なケース(クラス)を学習する場合などに有効である。例えば、希なケースが全体の1%であったとすると、全て希ではないケースと予測するモデルが作成されても、このモデルの正解率は99%となる。その様な場合、その希なケースに重みを付ける事で、希なケースを正しく学習する事が出来る。また、行毎の重み付けは、そのレコード(行)を誤判別した時の誤差に重みを付ける。これは、行毎にデータの重要性が異なる場合に有効である。例えば、昔のデータに比べ、最近のデータがより重要であるような場合に、その時間情報に従って重み付けを行う事で、時間情報を考慮したモデルを作成する事が出来る。
入力層、隠れ層、出力層の三層から構成される階層型のNeural Networkを用いて教師付き学習を行い、目的変数が数値の場合には回帰モデルを、カテゴリ値の場合には判別モデルを作成する。Neural Networkの学習は、出力層と教師値とからなる目的関数を最小化するようにNetworkの結合荷重を調整する事で行う。隠れ層のユニットのactivate functionにはsigmoid 関数を用いる。隠れ層のユニット数と出力層のユニットのactivate function、最小化する目的関数は問題に応じてユーザが指定する。出力層のユニットのactivate function、目的関数の定義を以下に示す。
◇activate function
◇目的関数
隠れ層のユニット数はNetworkの複雑さをコントロールし、複雑な非線型写像を実現する。この数は問題の複雑さに応じて決定する。Weight Decayは目的関数に付加するRegularization項で、不要な結合荷重の増大を抑える効果がある。これにより、ユニット間の結合の剪定の効果を生み、また、Networkのユニットへの入力を小さくする事でユニットの出力を線形にし、複雑すぎるモデルの学習を抑え、過剰学習の問題を回避しモデルの汎化性を高める。乱数の初期値で結合加重の初期値を設定する。重み付けでは、クラス指定、列指定を行う事が出来る。クラス指定では、クラス毎に誤判別に対する誤差が定義され、列指定では、行毎の重みを指定した列を指定し、行毎に誤判別に対する誤差を定義出来る。
学習方法はBackpropagation法を用いている。
図 パラメータ設定画面
設定項目 |
内容 |
説明変数 |
Networkへ入力するデータ |
目的変数 |
教師値 |
目的関数 |
出力層のactivation functionの形と、教師値と出力値から最小化する目的関数を指定する。以下の中から選択する。 Linear-Sum of Square Sigmoid-Sum of Square Sigmoid-Binomial Softmax-Binomial Softmax-Multinomial |
隠れ層のユニット数 |
隠れ層のユニット数。Networkの複雑さを制御する。 |
Weight Decay |
目的関数に付加する結合荷重の2乗和のpenalty項の係数。この値でNetworkの過剰学習を制御する。 |
繰り返し最大数 |
学習の繰り返し最大数 |
乱数の初期値 |
乱数の初期値(Seed)を指定 自動 初期値を自動設定 手動 初期値を手動設定 |
重み付け |
学習時のデータの重み付け方法を指定 デフォルト 全て同じ重み 列指定 重み列を指定 クラス指定 クラス毎の重みを指定 |
Neural Networkの出力は以下の通り。
種類は目的変数名を表し、種類.予測はNeural Networkが予測したクラス、種類.判定結果は教師データと予測データとの評価結果を表し、Setoasa,Versicolor,Virginicaはそれぞれ目的変数のクラスの確率を表す。
図 出力結果
Christopher M. Bishop. Neural Networks: A Pattern Recognition Perspective. Technical Report: NCRG/96/001
Martin Riedmiller. Advanced Supervised Learning in Multi-layer Perceptrons From Backpropagation to Adaptive Learning Algorithm. Computer Standards and Interfaces Special Issue on Neural Networks, 16(3):265-275, 1994.
Martine Riedmiller and Heinrich Braun. A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm. Proceedings of the IEEE International Conference on Neural Networks, San Francisco, CA, USA, Mar.28-Apr. 1, 1993.
Anders Krogh and John A. Herts. A Simple Weight Decay Can Improve Generalization. In Advances in Neural Information Processing Systems, volume 4, pages 951--957. 1992.
入力層、中間層、出力層の三層から構成される階層型のNeural Networkを用いて教師付き学習を行い、目的変数が数値の場合には回帰モデルを、カテゴリ値の場合には判別モデルを作成する。中間層のユニットのactivate functionにはGauss 関数を用いる。Networkの学習は、中間層のGauss関数の中心値、分散を求めるフェーズと、出力層と教師値とからなる目的関数を最小化するようにNetworkの結合荷重を調整するフェーズからなる。Gauss関数の中心値、分散はクラスタリングを行うことで求める。その際に係数で指定した値を用いてクラスタリングを行なう。この係数でNetworkの複雑さをコントロールする。この値を小さくする事で中間層の数が増え、大きくすることで少なくなる。この値は問題の複雑さに応じて決定する。出力層のユニットのactivate function、最小化する目的関数は問題に応じてユーザが指定する。activate function、目的関数の定義を以下に示す。
◇目的関数
結合荷重の学習方法はBackpropagation法を用いている。Weight Decayは目的関数に付加するRegularization項で、不要な結合荷重の増大を抑える効果がある。これにより、ユニット間の結合の剪定の効果を生み、また、Networkのユニットへの入力を小さくする事でユニットの出力を線形にし、複雑すぎるモデルの学習を抑え、過剰学習の問題を回避しモデルの汎化性を高める。乱数の初期値で結合加重の初期値を設定する。重み付けでは、クラス指定、列指定を行う事が出来る。クラス指定では、クラス毎に誤判別に対する誤差が定義され、列指定では、行毎の重みを指定した列を指定し、行毎に誤判別に対する誤差を定義出来る。
図 パラメータ設定画面
設定項目 |
内容 |
説明変数 |
Networkへ入力するデータ |
目的変数 |
教師値 |
目的関数 |
教師値と出力値からなる最小化する目的関数。以下の中から選択。 Linear-Sum of Square Sigmoid-Sum of Square Sigmoid-Binomial Softmax-Binomial Softmax-Multinomial |
係数 |
Networkの複雑さを制御する。 |
Weight Decay |
目的関数に付加する結合荷重の2乗和のpenalty項の係数。この値でNetworkの過剰学習を制御する。 |
繰り返し最大数 |
学習の繰り返し最大数。 |
乱数の初期値 |
乱数の初期値(Seed)を設定 自動 初期値を自動設定 手動 初期値を手動で指定 |
重み付け |
学習時のデータの重み付け方法を指定 デフォルト 全て同じ重み 列指定 重み列を指定 クラス指定 クラス毎の重みを指定 |
Radial Basis Function Networkの出力は以下の通り。
図 出力結果
種類は目的変数名を表し、種類.予測はRadial Basis Function Networkが予測したクラス、種類.判定結果は教師データと予測データとの評価結果を表し、Setoasa、Versicolor、Virginicaはそれぞれ目的変数のクラスの確率を表す。
Christopher M. Bishop. Neural Networks: A Pattern Recognition Perspective. Technical Report: NCRG/96/001
Martin Riedmiller. Advanced Supervised Learning in Multi-layer Perceptrons From Backpropagation to Adaptive Learning Algorithm. Computer Standards and Interfaces Special Issue on Neural Networks, 16(3):265-275, 1994.
Martine Riedmiller and Heinrich Braun. A Direct Adaptive Method for Faster Backpropagation Learning: The RPROP Algorithm. Proceedings of the IEEE International Conference on Neural Networks, San Francisco, CA, USA, Mar.28-Apr. 1, 1993.
Anders Krogh and John A. Herts. A Simple Weight Decay Can Improve Generalization. In Advances in Neural Information Processing Systems, volume 4, pages 951--957.
Hwang Young-Sup and Bang Sung-Yang. An Efficient Method to Construct a Radial Basis Function Neural Network Classifier. Neural Networks, 10, 8, pp. 1495--1503(1997).
教師付き学習を行い、多分岐型の決定木を作成する。目的変数が数値の場合には回帰モデルを、カテゴリ値の場合には判別モデルを作成する。決定木の作成は、ある基準の下での最良の分岐変数と分岐値を求めることで行う。分岐基準は問題に応じてユーザが指定する。分岐基準の定義を以下に示す。|S|はノードのデータ数、|Cj|はクラスCjのデータ数、Aは分割に用いた変数、|Sj|は分割後のノードのデータ数とする。
◇Gini係数
分割後のgini係数は以下のようになる。
よって、分割による改善度は以下のように定義される。
◇InfoGain
分割後のInformationは以下のように定義される。
よって、分割による改善度は以下のように定義される。
◇InfoGain Ratio
分割のInformation
を用い、Information Gain Ratioは以下のように定義される。
◇数値の場合
目的変数が数値の場合は、ノードの分散と、分割後のノードの分散から改善度を計算 する。ノードの分散は以下のようになる。
よって分割による改善度は以下のようになる。
交差検証では、学習データをランダムに指定したテストブロック数(n)に分割し、その中の1つブロックをテスト用データとし、残りn-1個のブロックを学習データとする。n-1個の学習データを用いてツリーを作成し、テストデータを用いてモデルの誤判別率を計算する。上記の処理をn回(nブロックすべてに対して)行い、誤判別率が一番良いものを結果モデルとする。繰り返し回数では上記のブロック分け回数を指定する。例えば、テストブロック数=3、繰り返す回数=5と指定した場合、3×5=15個のTreeが生成される。誤り削減剪定を選択した場合、作成されたモデルに対して枝刈りを行うことによって誤判別率が減少すれば、枝刈りされた木を採用する。複雑度係数は分岐基準に付加するペナルティー項で、複雑度係数×末端ノードの数をペナルティーとして分岐基準に追加し、本来の分岐基準+複雑度係数×末端ノードの数でツリーの分岐を再計算する(対話画面の自動剪定)。これにより複雑すぎるTreeの生成を抑える。重み付けは、分類モデルの場合、クラス毎、または学習データの行毎に重みをつける。あるクラスの重みを上げることによって生成されたモデルは、そのクラスに対する予測精度を上げことができる。その代わりに他のクラスに対する予測精度が低くなる可能性がある。
図 パラメータ設定画面
図 パラメータ設定画面2
図 パラメータ設定画面3
設定項目 |
内容 |
説明変数 |
Tree作成に使用するデータ。変数毎に最大分岐数を選択可能。 |
目的変数 |
教師値 |
生成方法 |
以下の中から選択 対話画面での生成 一括自動生成 |
分岐方法 |
分岐基準。以下の中から選択 Gini係数 InfoGain InfoGain Ratio |
節点最小データ数 |
分岐を停止する条件。節点に含まれるデータ数が指定した値以下ならこれ以上分岐しない。 |
変数の最大分岐数(共通) |
共通の最大分岐数。説明変数の最大分岐数で共通を選択した場合に適用される。 |
節点の不純度 |
節点に含まれるデータの不純度 |
高さ制限 |
Treeの高さの制限 |
欠損値パターン |
欠損値として扱うパターン |
テストブロック数 |
交差検証に用いるテストブロックの数 |
繰り返し回数 |
テストブロックの分割を行う回数 |
誤り削減剪定 |
交差検証を用いて剪定を行うかどうか |
複雑度係数 |
Treeが複雑になる事により分岐基準に追加するペナルティー項。対話画面の自動剪定で計算 |
重み付け |
データの重みを変更する。以下の中から選択 デフォルト値 列指定 クラス別指定 |
分岐変数の繰り返し利用 |
分岐変数を繰り返し利用するかどうかを指定する |
全数値領域分岐 |
数値データの分岐範囲としてデータの両側を無限大まで想定するかどうかを指定する |
回帰予測値選択 |
回帰木を作成した場合に出力する予測値を選択する |
分岐点候補数 |
分岐の境界となる値の候補数を指定する。0を指定した場合、VMStudioが自動的に分岐点の候補数を決定する |
GUI画面を見ながらユーザが対話的にTreeを生成する。
GUI画面は以下のようになる。Tree ImageではTree全体のImageが表示される。ParametersではTree生成に使用したParameterの一覧が表示される。Treeの画面では現在注目しているノードの親、子、兄弟のみ表示される。
図 対話画面
節点に含まれる情報は以下の通りである。
項目 |
内容 |
節点番号 |
節点の番号 |
クラス |
節点を代表するクラス |
クラス確率 |
節点に含まれるクラスの確率 |
重み |
節点に含まれるデータ数 |
Info |
分岐基準値 |
分岐変数/Leaf |
分岐に使用された変数/Leaf |
分岐数 |
分岐した数 |
対話的に行える操作は以下の通りである。
項目 |
内容 |
一段成長 |
Treeを一段成長させる |
全成長 |
節点以下のTreeを全て成長させる |
強制分岐 |
選択した分岐変数で強制的にTreeを成長させる。 |
交差検証 |
交差検証法によりTreeを全成長させる。ルートノードのみ |
剪定 |
節点以下のTreeを剪定する |
高さ剪定 |
節点の高さでTreeを剪定する |
自動剪定 |
複雑度係数を用いて再計算 |
含まれるデータ表示 |
そのノードに含まれるデータ表示 |
分岐表示 |
分岐(子ノード)を表示する |
オプション |
Tree生成を最初から行う |
l 欠損の取り扱いについて
欠損を含む列が分岐変数として選ばれた場合、まず、その変数が欠損でないデータのみで分岐させる。欠損のデータは、分岐したノードの数(重み)に比例して重みを配分するようにして次の分岐に進む。
Decision Treeの出力は以下の通りである。
項目 |
内容 |
No. |
レコード番号 |
Level |
Treeの深さ |
Path |
節点へのPath |
親No. |
親の節点の番号 |
GUI番号 |
GUI上の節点の番号 |
クラス |
節点のクラス |
確率 |
節点がそのクラスになる確率 |
重み |
節点に含まれるデータ数 |
分岐基準値 |
分岐方法で指定した指標の値 |
条件 |
節点へ入る分岐条件 |
分岐変数・Leaf |
節点の分岐変数/Leaf |
分岐型 |
分岐変数の型 |
分岐数 |
分岐する数 |
Setosa/Versicolor/… |
クラスの確率 |
TreeNode.Cond.Frm.Root1 |
ルートノードからの分岐条件 |
図 出力画面
![]() |
MathSoft, S-PLUS 2000 Guide to Statistics.
Michael J.A.Berry, Gordon Linoff, Data Mining Techniques-For Marketing, Sales, and Custormer Support, 1997.
Breiman,L., Friedman, J.H., Olshen, R.A., and Stone, C.J., Classification and Regression Trees. Wadsworth and Brooks/Cole, Moterey, CA.
J.Ross Quinlan, C4.5: Programs for Machine Learning, Morgan Kaufmann Publishers, Inc. All rights reserved, 1993.
Decision Tree(決定木)では目的変数を1つのみ選択可能である。多目的決定木では複数の数値列を目的変数に指定することが可能である。決定木の作成は、ある基準の下での最良の分岐変数と分岐値を求めることで行う。多目的決定木における基準とは目的変数を数値列とした決定木を拡張したものとなる。以下、その基準について紹介する。
目的変数をとし、ノードのデータの集合を
とする。
の子ノードのデータの集合を
,
とする。子ノードは説明変数(A)の値によって分割される。目的変数が複数の場合、平均値と分散は以下のように定義する。
ここで, はノードのデータ数を表し、distは2つのベクトルの間の距離を定義する関数で距離関数とよばれる。距離関数はユークリッド距離,マンハッタン距離,コサイン距離などから選択するか、外部DLLによってユーザ指定できる。例えば、ユークリッド距離を指定した場合は
となる。
分割による改善度は以下のように定義される。
すべての分割の組み合わせについて改善度を算出し、最も高い改善度の分割方法が選ばれることになる。
また、重みを用いた場合、平均値と分散は加重平均と加重分散として以下のように定義される。目的変数が1つの時は
目的変数が複数ある場合は
となる。ここで、はノード
のj行目の目的変数のセットを意味する。ここで重み付きの決定木の改善度は以下の用に定義される。
パラメータ設定画面とオプション画面は目的変数が1つの決定木と同様であるので、
説明はDecision Treeの項目に委ねる。ここでは目的変数が1つの場合とは異なる設定項目について説明する。
図 パラメータ設定画面
項目 |
説明 |
多目的回帰モデル距離計算 |
各ノードのデータ集合の分散を求めるときに用いる、予測値とデータ間の距離を計算する手法の指定 |
Euclid |
ユークリッド距離で距離を計算 |
Manhattan |
マンハッタン距離で距離を計算 |
Cosine |
コサイン距離で距離を計算 |
DLL関数名、DLLパス |
ユーザ定義DLLで距離を計算する場合に利用する。 DLL関数名とDLLパス名を同時に指定する。ユーザ定義の仕様は、double myDistFun(long n,double* a,double* b) である。nは目的変数の数、a、bはVMSから渡されたn次元のデータである。 |
目的変数の数が1つの場合と同様である。
Decision Treeの出力は以下の通りである。
項目 |
内容 |
No. |
レコード番号 |
Level |
Treeの深さ |
Path |
節点へのPath |
親No. |
親の節点の番号 |
GUI番号 |
GUI上の節点の番号 |
クラス |
節点のクラス |
確率 |
節点がそのクラスになる確率 |
重み |
節点に含まれるデータ数 |
分岐基準値 |
分岐方法で指定した指標の値 |
条件 |
節点へ入る分岐条件 |
分岐変数・Leaf |
節点の分岐変数/Leaf |
分岐型 |
分岐変数の型 |
分岐数 |
分岐する数 |
Setosa/Versicolor/… |
クラスの確率 |
TreeNode.Cond.Frm.Root1 |
ルートノードからの分岐条件 |
図 出力画面
k-Nearest Neighbor法を用いて教師付き学習を行い、目的変数が数値の場合は回帰モデルを、カテゴリの場合は判別モデルを作成する。k-NN法は、識別したいデータの近傍にあるk個のデータを調べ、回帰分析の場合はその平均値を、判別分析の場合はそれらのクラスの中で最大のクラスをその識別値とする。この方法では学習データを全て記憶しておくので記憶ベースの方法とも呼ばれる。この分析方法は完全にデータのみから分類を行えるノンパラメトリックな方法なので、データに対して変数が多い場合に有効である。
近傍のkの値は小さいと局所的な性質を反映し、大きいとデータ分布の詳細が失われるので、問題に応じた適切なkの値を指定する事が重要である。kの値、近傍の計算方法は問題に応じてユーザが指定する。
距離関数の定義は、判別分析の場合は以下のようになる。
第2項は、カテゴリ列に関する距離の定義で、それぞれ
j:判別したいクラス
Cx:列i内のカテゴリxiが現れる回数
Cxj:列i内のカテゴリxiがクラスjであった回数
である。回帰分析の場合は以下のようになる。
重み付けでは、各列の重みに差をつけないデフォルトの他、クラス指定、列指定が行える。クラス指定では、クラス毎に誤判別に対する誤差が定義され、列指定では、行毎の重みを指定した列を指定し、行毎に誤判別に対する誤差を定義出来る。
図 パラメータ設定画面
項目 |
内容 |
説明変数 |
モデル作成の変数 |
目的変数 |
教師値 |
距離関数 |
データ間の距離を計算する関数。以下の中から選択 Manhattan Euclid |
k値 |
近傍のデータ数 |
重み付け |
学習時のデータの重み付け方法を指定 列指定 重み列を指定 クラス指定 クラス毎の重みを指定 |
k-NN分析の出力は以下の通り。
種類は目的変数名を表し、種類.予測はk-NN分析が予測したクラス、種類.判定結果は教師データと予測データとの評価結果を表し、Setoasa,Versicolor,Virginicaはそれぞれ目的変数のクラスの確率を表す。
図 k-NN分析出力結果
Paolo Ciaccia, Marco Patella and Pavel Zezula. M-Tree: An Efficient Access Method for Similarity Search in Metric Space. Proc. of the 23rd VLDB Conf. Athens, Greece, 1997.
Nick Roussopoulos, Stephen Kelley and Federic Vincent. Nearest Neighbor Queries. Proc. of ACM-SIGMOD, pages 71-79, May 1995.
Support Vector Machineを用いて分類分析を行う。目的変数がカテゴリ変数の場合には判別分析を、数値変数の場合には回帰分析を行う。判別分析では、データを多次元空間内の点とみなしたときに、データ集合を二つに分ける超平面を求める。回帰分析では、データを多次元空間内の点とみなした時に、データの分布が偏差εに入るような超平面を求める。この超平面はSupport Vectorと呼ばれるデータ点により構成される。これらの分析では、超平面との距離が最小になるデータ点との距離(マージンと呼ぶ)を最大化するようにパラメータを最適化する。超平面(線形モデル)による分析が適切ではない場合、非線型写像により別な空間(Feature Space)へ写像し、その空間内での超平面による分析を行う。これは元の空間での超曲面(非線型モデル)による分析になっている。Support Vector Machineによる分析には空間内の内積のみ現れるので、写像した空間内での内積のみ定義されていればよい。その内積を表す関数をカーネル関数とよぶ。カーネル関数とそのパラメータは問題に応じてユーザが指定する。カーネル関数の定義を以下に示す。
超平面や超曲面によりデータの分離が可能ではない場合(データ集合のマージンが正にならない場合)、Slack変数を導入し制約条件をゆるめて解く。このSlack変数の係数Cを指定する。スラック変数を導入した場合の最適化問題は下記のようになる。
Support Vector Machine
Support Vector Regression
Cの値が小さい時は、大きなSlack変数を許す事になり、モデルの精度が悪くなる。Cの値が大きい時は、大きなSlack変数を許さないという事になり、モデルの方で調整するので過剰学習の問題が発生する。マージンとSlack項の関係は、正則化の立場からは、モデルの誤判別損失と正則化項の関係になっている。Slack変数の係数を大きくすると、誤判別に対する損失を大きく見積もることになるので、誤判別が少なくなるように学習する。
重み付けでは、クラス指定、列指定を行える。クラス指定では、クラス毎に誤判別に対する誤差が定義され、列指定では、行毎の重みを指定した列を指定し、行毎に誤判別に対する誤差を定義出来る。
Support Vector Machineでの判別分析は、そのアルゴリズム上、2群判別を行うものであるが、多群判別も行えるように拡張してある。多群判別は、複数の2群判別問題を解くことで行う。多群判別を2群判別に帰着させる方法は大きくOne versus restとOne versus Oneと呼ばれる方法がある。このSupport Vector Machineで採用した方法は、One-versus-oneでモデルを作成し、そのモデル間にDAG構造の関連性を持たせ判別を行う。例えば、3つのクラス {1,2,3} の場合、DAG構造は以下のようになる。
図 DAG SVM
それぞれのノードはOne-versus-oneのモデルになっている。ノードの中に書かれている数字はそのノードのクラスを表す。Linkに書いてある数字は判定する内容である。最初のノードではクラスが1か3かを判定するモデルで、3以外であれば左のノードへ、1以外であれば右のノードへ行く。2段目の左のノードではクラスが1か2かを判定するモデルで、2以外であれば左のノードへ、1以外であれば右のノードへ行く。2段目の右のノードはクラスが2か3かを判定するモデルで、3以外であれば左のノードへ、2以外であれば右のノードへ行く。最後のノードは最終的に判定されるクラスを表す。
図 パラメータ設定画面
図 オプション設定画面
項目 |
内容 |
目的変数 |
教師値 |
説明変数 |
モデル作成の変数 |
カーネル関数 |
Feature Spaceでの内積の定義。以下の中から選択。 linear gaussian polyomial sigmoid |
カーネル関数のパラメータ |
カーネル関数のパラメータ linear なし gaussian σ2 polynomial d sigmoid θ |
Slack変数の係数 |
Slack変数の係数。 |
回帰分析の精度 |
回帰分析の精度。ε |
重み付け |
学習時のデータの重み付け方法を指定 列指定 重み列を指定 クラス指定 クラス毎の重みを指定 |
Support Vector Machineの出力は以下の通り。
図 Support Vector Machine 出力画面
種類は目的変数名を表し、種類.予測はSupport Vector Machineが予測したクラス、種類.判定結果は教師データと予測値の評価結果(True or
False)を表し、SVM出力はSupport Vector Machineの出力を表す。
C.J.C.Burges, A Tutorial on Support Vector Machines for Pattern Recognition, Data Mining and Knowledge Discovery, 2(2):121-167, 1998.
S.S.Keerthi,S.K.Shevade,C.Bhattacharyya, and K.R.K.Murthy, Improvements to Platt's SMO Algorithm for SVM classifier design, Tech. Report CD-00-14, Control Division, Dept. of Mechanical and Production Engineering, National University of Singapole.
E.Osuna,R.Freund and F.Girosi, Training Support Vector Machines: An application to free detection, in Proceedings of CVPR '97, Puerto Rico, 1997.
J.Platt. Fast training of support vector machine using sequential minimal optimization, in Advance in Kernel Method ・Support Vector Learning, B.Sholkopf,C.J.C.Burges, and A.J.Smola, eds, pp 185-208, Cambridge, MA, MIT Press
A.J.Smola and B.Scholkopf. A Tutorial on Support Vector Regression, NeuroCOLT Technical Report TR 1998-030, 1998.
V.N.Vapnik, The Nature of Statistical Learning Theory (Second Edition), Springer, 1999.
Support Vector Machineを用いて分類分析を行う。目的変数がカテゴリ変数の場合には判別分析を、数値変数の場合には回帰分析を行う。判別分析では、データを多次元空間内の点とみなしたときに、データ集合を二つに分ける超平面を求める。回帰分析では、データを多次元空間内の点とみなした時に、データの分布が偏差εに入るような超平面を求める。この超平面はSupport Vectorと呼ばれるデータ点により構成される。これらの分析では、超平面との距離が最小になるデータ点との距離(マージンと呼ぶ)を最大化するようにパラメータを最適化する。超平面(線形モデル)による分析が適切ではない場合、非線型写像により別な空間(Feature Space)へ写像し、その空間内での超平面による分析を行う。これは元の空間での超曲面(非線型モデル)による分析になっている。Support Vector Machineによる分析には空間内の内積のみ現れるので、写像した空間内での内積のみ定義されていればよい。その内積を表す関数をカーネル関数とよぶ。カーネル関数とそのパラメータは問題に応じてユーザが指定する。カーネル関数の定義を以下に示す。
超平面や超曲面によりデータの分離が可能ではない場合(データ集合のマージンが正にならない場合)、Slack変数を導入し制約条件をゆるめて解く。判別問題を解く場合、nuSVMではSlackの係数ではなくパラメータνを指定する点が通常のSupport Vector Machineと異なる点である。また、回帰分析を行う場合、nuSVM(nuSVR)ではεではなくパラメータνを指定する。それぞれ、定式化は以下のようになる。
nuSVM
nuSVR
νを指定することは、この定式化だけではわかりづらいが、双対問題を考えた場合、
nuSVM
nuSVR
であることから、αの制約条件から、サポートベクターの下限値をコントロールしていることがわかる。
重み付けでは、クラス指定、列指定を行える。クラス指定では、クラス毎に誤判別に対する誤差が定義され、列指定では、行毎の重みを指定した列を指定し、行毎に誤判別に対する誤差を定義出来る。
Support Vector Machineでの判別分析は、そのアルゴリズム上、2群判別を行うものであるが、多群判別も行えるように拡張してある。多群判別は、複数の2群判別問題を解くことで行う。多群判別を2群判別に帰着させる方法は大きくOne-versus-restとOne-versus- Oneと呼ばれる方法がある。このSupport Vector Machineで採用した方法は、One-versus-oneでモデルを作成し、そのモデル間にDAG構造の関連性を持たせ判別を行う。例えば、3つのクラス {1,2,3} の場合、DAG構造は以下のようになる。
図 DAG SVM
それぞれのノードはOne-versus-oneのモデルになっている。ノードの中に書かれている数字はそのノードのクラスを表す。Linkに書いてある数字は判定する内容である。最初のノードではクラスが1か3かを判定するモデルで、3以外であれば左のノードへ、1以外であれば右のノードへ行く。2段目の左のノードではクラスが1か2かを判定するモデルで、2以外であれば左のノードへ、1以外であれば右のノードへ行く。2段目の右のノードはクラスが2か3かを判定するモデルで、3以外であれば左のノードへ、2以外であれば右のノードへ行く。最後のノードは最終的に判定されるクラスを表す。
図 パラメータ設定画面
図 パラメータ設定画面
項目 |
内容 |
目的変数 |
教師値 |
説明変数 |
モデル作成の変数 |
カーネル関数 |
Feature Spaceでの内積の定義。以下の中から選択。 linear gaussian polyomial sigmoid |
カーネル関数のパラメータ |
カーネル関数のパラメータ linear なし gaussian σ2 polynomial d sigmoid θ |
ν値 |
パラメータ |
Slack変数の係数 |
Slack変数の係数。 |
重み付け |
学習時のデータの重み付け方法を指定 列指定 重み列を指定 クラス指定 クラス毎の重みを指定 |
nuSVMの出力は以下の通り。
図 nuSVM 出力画面
種類は目的変数名を表し、種類.予測はnuSVMが予測したクラス、種類.判定結果は教師データと予測値の評価結果(True or
False)を表し、SVM出力はnuSVMの出力を表す。
C.J.C.Burges, A Tutorial on Support Vector Machines for Pattern Recognition, Data Mining and Knowledge Discovery, 2(2):121-167, 1998.
S.S.Keerthi,S.K.Shevade,C.Bhattacharyya, and K.R.K.Murthy, Improvements to Platt's SMO Algorithm for SVM classifier design, Tech. Report CD-00-14, Control Division, Dept. of Mechanical and Production Engineering, National University of Singapole.
E.Osuna,R.Freund and F.Girosi, Training Support Vector Machines: An application to free detection, in Proceedings of CVPR '97, Puerto Rico, 1997.
J.Platt. Fast training of support vector machine using sequential minimal optimization, in Advance in Kernel Method ・Support Vector Learning, B.Sholkopf,C.J.C.Burges, and A.J.Smola, eds, pp 185-208, Cambridge, MA, MIT Press
A.J.Smola and B.Scholkopf. A Tutorial on Support Vector Regression, NeuroCOLT Technical Report TR 1998-030, 1998.
V.N.Vapnik, The Nature of Statistical Learning Theory (Second Edition), Springer, 1999.
クラスタリングによるデータ圧縮とSupport Vector Machineを用いて大規模データに対して分類分析を行う。判別分析のみを行ない回帰分析には対応していない。通常のSupport Vector Machineでは、データを多次元空間内の点とみなし、データ集合を二つに分ける超平面を求める。その際、超平面との距離が最小になるデータ点との距離(マージンと呼ぶ)を最大化するようにパラメータを最適化する。クラスタリングによりまとめられたデータは位置と大きさという情報を持つ。そのためこのSupport Ball Machineでは位置のみならずサイズの情報をも用いて解く。データが大きさを持っているという事からを半径とすると、超平面に対するデータのマージンは
となる。マージンの一意性を保証する為にと規格化条件を課すと、マージン最大化問題は以下のように定式化できる。
ここでCはSlack変数の係数である。双対問題は以下のように定式化できる。
超平面(線形モデル)による分析が適切ではない場合、非線型写像により別な空間(Feature Space)へ写像し、その空間内での超平面による分析を行う。これは元の空間での超曲面(非線型モデル)による分析になっている。Support Ball Machineによる分析には空間内の内積のみ現れるので、写像した空間内での内積のみ定義されていればよい。その内積を表す関数をカーネル関数とよぶ。カーネル関数とそのパラメータは問題に応じてユーザが指定する。カーネル関数の定義を以下に示す。
半径もKernelに依存し変化する。Gaussian Kernelの場合は以下のように変換する。
より、Kernel関数を用いて
となる。Gaussian Kernelでは、以下のようになり、単位ベクトルの取り方に依存しない。
データ圧縮の為のクラスタリングにはBIRCHと呼ばれるアルゴリズムを用いた。データ圧縮時のパラメータとしてデータ間の距離計算方法はManhattan、Euclid、Intra Cluster、Inter Cluster、Valiance Increaseの中から選択する。それぞれの定義は以下の通りである。
また、規格化オプションでは入力データを0-1の範囲に規格化してからクラスタリングを行う。クラスタリングの結果、そのデータに含まれるデータ数は分析時の重みとして利用される。
Support Ball Machineは、そのアルゴリズム上、2群判別を行うものであるが、多群判別も行えるように拡張してある。多群判別は、複数の2群判別問題を解くことで行う。多群判別を2群判別に帰着させる方法は大きくOne-versus-restとOne-versus-Oneと呼ばれる方法がある。このSupport Ball Machineで採用した方法は、One-versus-oneでモデルを作成し、そのモデル間にDAG構造の関連性を持たせ判別を行う。例えば、3つのクラス {1,2,3} の場合、DAG構造は以下のようになる。
図 DAG SVM
それぞれのノードはOne-versus-oneのモデルになっている。ノードの中に書かれている数字はそのノードのクラスを表す。Linkに書いてある数字は判定する内容である。最初のノードではクラスが1か3かを判定するモデルで、3以外であれば左のノードへ、1以外であれば右のノードへ行く。2段目の左のノードではクラスが1か2かを判定するモデルで、2以外であれば左のノードへ、1以外であれば右のノードへ行く。2段目の右のノードはクラスが2か3かを判定するモデルで、3以外であれば左のノードへ、2以外であれば右のノードへ行く。最後のノードは最終的に判定されるクラスを表す。
図 パラメータ設定画面
項目 |
内容 |
目的変数 |
教師値 |
説明変数 |
モデル作成の変数 |
圧縮オプション |
データの圧縮率 |
距離計算方法 |
クラスタリングの際の距離の計算方法。 以下の中から選択する。 Manhattan Euclid Intra Cluster Inter Cluster Valiance Increase |
規格化 |
クラスタリングの際に規格化を行なうかどうか |
カーネル関数 |
Feature Spaceでの内積の定義。以下の中から選択。 Linear Gaussian |
カーネル関数のパラメータ |
カーネル関数のパラメータ Linear なし Gaussian σ2 |
Slack変数の係数 |
Slack変数の係数 |
Support Ball Machineの出力はresultとsquashの2つである。resultは圧縮後のデータを用いてSVMで学習、予測した結果である。pickは目的変数を表し、pick.予測はモデルが予測したクラス、pick.判定結果は判定結果を表す。SVM.出力はSVMの出力を表す。squashは圧縮後のデータである。pickは目的変数。Nはそのクラスのデータ数、income.7.5,…は説明変数を表す。それぞれ以下の通りである。
図 result
図 squash
H.Yu,J.Yang and J.Han, Classifying large data sets using SVM with hierarchical clusters. In Ninth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, 2003.
D.Boley and Dongwei Cao, Training support vector machine using adaptive clustering. Technical report, University if Minesota, 2004
J.Bi and T.Zhang, Support Vector Classification with Input Data Uncertainty. In Advances in Nural Information Proceeding Systems, 2004
C.Bhattacharyya, K.S.Pannagadatta and A.J.Smola, A second order cone programming formulation for classifying missing data., In Advances in Nural Information Proceeding Systems, 2004
Tian Zhang, Raghu Ramakrishnan and Miron Livny, BIRCH:an efficient data clustering method for very large databases. Proceedings of the 1996 ACM SIGMOD international conference on Management of data, 1996
山下浩,雪島正敏. 大規模データに対する新しいサポートベクター分類法の解析, 日本計算機統計学会第19回大会
Naive Bayesを用いて判別分析を行う。ある変数が与えられたとき、Targetの確率
は、Bayesの定理より、
となる。Naive
Bayesは以下の式のように、説明変数間に完全な独立性を仮定し、
としたBayesian
Networkモデルである。
図 Naive Bayes
このモジュールでは通常のNaive Bayesを拡張したモデルで、説明変数間の関連性に木構造を許すTree Augmented Naive Bayesである。
図 Tree Augmented Naive Bayes
目的変数と説明変数の関係は条件付確率テーブルで与える。説明変数間の関連性は目的変数を指定したときの条件付独立性から判断し、全体としてより大きな確率分布が得られるような木構造を構築する。条件付独立性の判定基準は、AIC、BIC、MICの中から選択する。これらの基準は独立モデル、従属モデル対数尤度の定義を用いると以下のようになる。
独立モデル
従属モデル
Tree構造を作成する時、閾値で指定した値以下の変数間の関連性(リンク)は考慮しない。数値変数に対しては離散化を行い、条件付確率テーブルを計算する。離散化の方法には等間隔、等数、χ2乗、Gini係数、誤判別数がある。χ2乗、Gini係数、誤判別数では、目的変数に関してその値が最も良くなるように数値変数を分割する。(離散化の詳細についてはFeature Selectionの章を参照。)
重み付けでは、クラス指定、列指定を行える。クラス指定では、クラス毎に誤判別に対する誤差が定義され、列指定では、行毎の重みを表す列を指定し、行毎に誤判別に対する誤差を定義出来る。
Naive Bayesでは計算によりモデルを構築することも、編集画面により編集を行うことも可能である。
図 パラメータ設定画面
設定項目 |
内容 |
目的変数 |
教師値 |
説明変数 |
モデル作成の変数 |
情報量基準 |
条件付独立性を判定する規準値 |
閾値 |
変数間の従属性の閾値 |
離散化方法 |
数値変数の離散化方法 |
重み付け |
学習時のデータの重み付け方法を指定 デフォルト 全て同じ重み 列指定 重み列を指定 クラス指定 クラス毎の重みを指定 |
Naive BayesではEditボタンを押すことで、Networkを編集することが可能である。Naive Bayesの編集画面は下図のようになる。種類は目的変数で、がく長、がく幅、花びら長、花びら幅が説明変数である。このNetworkではがく長とがく幅に関連を示すリンクが張られている。
図 Naive Bayes
この編集画面では説明変数ノード間のリンクを作成したり削除したり出来る。また、編集したNetworkに対してCPT計算を行いモデルのパラメータを計算することも可能である。
Naive Bayesの出力はresultとicの二つである。
resultはNaive Bayesで作成したモデルで予測した結果である。種類.目的変数は目的変数名を表し、種類.予測はNaive Bayesが予測したクラス、種類.判定結果は教師データと予測値の評価結果(True or False)を表し、Setosa、Versicolor、Virginicaはそれぞれのクラスの確率を表す。
図 出力結果 result
icは変数間の条件付独立性の計算結果で、ノードのリンク情報を表す。
図 出力結果 ic
N.Friedman, D.Geiger and M.Goldszmidt, Bayesian Network Classifier. Machine Learning, 29 (1997).
M.Singh and G.M.Provan, Efficient Learning of Selective Bayesian Network Classifiers, Proceedings Of 12th International Conference on Machine Learning. San Francisco,1996.
M.J.Pazzani, Searching for Dependencies in Bayesian Classifiers. Proceedings od 5th International Workshop of Artificial Intelligence and Statistics,1995.
分類分析で作成したモデルや統合されたモデルを用いて予測、検証を行う。予測を選択した場合は、入力データから予測される値を計算し出力する。検証の場合は予測される値を既存の値と比較し検証(summary、recall、precision)する。Summaryは本来のクラスと予測クラスの正誤数を求める。Recallは本来のクラスの正誤の割合(第1種の誤り率)を求める。precisionは予測クラスの正誤の割合(第2種の誤り率)を求める。評価を選択した場合は検証を行い、その結果から評価 (Lift、Cumulative、ROC)を出力する。それぞれの定義を以下に示す。
◇Lift図
◇Cumulative図
◇ROC図
以下の量をclass tであると識別する確率の閾値を変えて計算。
モデルが決定木の場合には、データがTreeのどのLeafノードにも合致しない場合の予測方法を指定する。判定不能を選択した場合、予測結果は判定不能となる。中間ノードでの予測を選択した場合は途中のノードで予測を行う。子ノードによる予測では、重みを按分し、子ノードでの予測値と重みから最終的な予測を行う。
図 パラメータ設定画面(Neural Network)
図 パラメータ設定画面(Decision Tree)
項目 |
内容 |
処理選択 |
処理内容を以下の中から選択 予測 検証 評価 |
出力オプション |
入力データを出力するかどうか |
Treeの欠損値対処方法 |
欠損値対処方法を以下の中から選択 判定不能 中間ノードでの予測 子ノードによる予測 |
Treeの欠損値対処方法はそれぞれ次のような意味を持つ。
判定不能 |
予測対象データが決定木モデルのルートから順に辿り、それ以上リーフへ向かえないノードに着いたとき、それ以上の探索は行わず、判定不能とする。 |
中間ノードでの予測 |
予測対象データが決定木モデルのルートから順に辿り、それ以上リーフへ向かえないノードに着いたとき、その辿り着いたノードの結果を基に予測する。 |
子ノードでの予測 |
予測対象データが決定木モデルのルートから順に辿り、それ以上リーフへ向かえないノードに着いたとき、そのノードからの分岐をすべて辿ることにし、残りの変数情報を用いてデータに合うリーフまで辿り着くようにする。最終的にたどり着くノードは複数あるため、それらのノードの結果を集計して予測を行う。 |
予測の場合の出力は以下の通り。
種類、がく長、がく幅、花びら長、花びら幅は入力データを表す。種類.予測は目的変数の予測値を表す。Setosa、Versicolor、Virginicaはそれぞれ目的変数のクラスの予測確率を表す。
図 予測 出力結果
検証の場合の出力は以下の通り。
図 検証 出力結果
種類.目的変数は目的変数の値、種類.判定結果は判定結果を表し、目的変数の値と予測値が同じであればTrue、そうでなければFalseである。また、summary、recall、precisionの結果は以下の通りである。
図 summary 出力結果
図 recall 出力結果
図 precision 出力結果
M.J.A.Berry and G.Linoff, Data Mining Techniques For Marketing, Sales, and Customer Support, Johne Wiley and Sons, Inc., 1997.
J.P.Egan, Signal Detection Theory and ROC Analysis, Series in Cognition and Perception. New York: Academic Press, 1975.
E.Provost and T.Fawcett, Analysis and Visualization of Classifier Performance:Comparison under Imprecise Class and Cost Distributions,Proc. 3rd Intl. Conf. on Knowledge Discovery and Data Mining, Newport Beach, CA, 1997.
分類分析を用いて作成した複数のモデルを用いて、より汎化性の高いモデルを作成する集団学習を行う。モデル統合では、それぞれのモデルの重みを決め、その重みに従い統合されたモデルを作成する。モデルの重みを用いた統合の仕方は、回帰モデル・判別モデルでそれぞれ以下のようになっている。
◇ 回帰モデル
入力xに対して統合モデルの予測値 y(x) は次のように決定される。
y(x) =α1 * y1(x) + α2 * y2(x) + … + αn * yn(x)
y1(x), … , yn(x) は個々のモデルのxにおける予測値である。
◇ 判別モデル
入力xに対して統合モデルの予測値 y(x) は次のように決定される.
y(x) = N個のモデルが投票を行い獲得票数一番多いクラス。
モデルの重みの決定方法には、「LP最適化」と「択一」、「手動」がある。LP最適化では、それぞれのモデルの重みを線形計画法を用いて最適化する。択一では、複数のモデルの中から最適なモデルをひとつ選択する。この時、選択基準として「差の2乗和」と「差の絶対値」を選択できる。差の2乗和では差の2乗和が最小になるモデルを選択し、差の絶対値では差の絶対値の最大値が最小になるモデルを選択する。手動では、個々のモデルに対する重み付けを手動で指定する。また、モデルを選択するとき、「LP最適化」と「択一」では分類分析でのモデル作成と同様に重み付学習を行うことが出来る。回帰分析の場合は、更に、「上限側」・「下限側」で、予測値が教師データに対して上側にずれた場合の重みと下側にずれた場合の重みを別々に指定できる。
LP最適化の方法は下記のように定式化する。
1)判別分析
モデルによる予測の判定結果(正/誤)を1/-1で表現し、複数のモデルの予測結果をまとめ行列Mで表現し、それぞれのモデルの重みをαとし、スラック変数をξとすると、
を最大化する問題になる。ここでiはサンプル番号、jはモデル番号である。
これに対応するLP最適化問題は以下のように定式化できる。
2)回帰分析
回帰分析の場合も同様に、予測の精度(予測結果と教師値との差)を行列Eで表現し、それぞれのモデルの重みをαとし、スラック変数をξとすると
の絶対値を最小化する問題になる。ここでiはサンプル番号、jはモデル番号である。これに対応するLP最適化問題は以下のように定式化できる。
図 パラメータ設定画面 LP最適化 図 パラメータ設定画面 択一
図 パラメータ設定画面 手動
項目 |
内容 |
|
統合方法 |
処理内容を以下の中から選択 LP最適化 択一 手動 |
|
LP最適化 |
モデルの重みを線形計画問題として最適化 |
|
Slack係数 |
線形計画問題のSlack係数 |
|
予測精度係数 |
処理内容を以下の中から選択 デフォルト 列指定 クラス指定 |
|
択一 |
最適なモデルを一つ選択 |
|
選択基準 (回帰) |
処理内容を以下の中から選択 差の2乗和 差の絶対値 |
|
予測精度係数 |
処理内容を以下の中から選択 デフォルト 列指定 クラス指定 |
|
手動 |
モデルの重みを手動で指定 |
|
重み |
モデルの重みを指定 |
|
各モデルの予測結果を出力する |
それぞれのモデルの予測結果を出力するかどうかのオプションを指定 |
モデル統合の出力は以下の通り。
pick.予測がモデル統合の結果、予測されるクラスを表す。M1.w、M1.predがそれぞれモデルM1の重みとモデルM1の予測クラスである。この情報は各モデルの予測結果を出力するオプションを指定しなければ出力されない。また、~cardには入力データの情報が表示されている。
図モデル統合出力画面
Breiman,L., “Bagging predictors”, Machine Learning 24,123-140(1996).
Breiman,L., “Arcing classifiers”, Technical report, Statistics Department, University California, Berkeley(1996).
Schapire,R.E., “Theoretical Views of Boosting and Applications”, Proceedings of Algorithmic Learning Theory(1999).
Schapire,R.E., “A Brief Introduction to Boosting”, Proceedings of the Sixteenth International Joint Conference of Artificial Intelligence(1999).
R.Meir and G.Rtsch. “An introduction to boosting and leveraging”. In S.Mendelson and A.Smola, editors, Advanced Lectures on Machine Learning, LNCS, pages 119-184. Springer, 2003. In press. Copyright by Springer Verlag.
村田昇, “Boosting の幾何学的構造と統計的性質”,科研費特定領域研究「確率的情報処理への統計力学的アプローチ」平成14年度研究成果発表会.
N.Duffy and D.P.Helmbold, “Boosting methods for regression”, Technical report, Department of Computer Science, University of Santa Cruz, 2000.
G.Ratsch,A.Demiriz and K.Bennett, “Sparse regression ensembles in infinite and finite hypothesis spaces”, Machine Learning, 48(1-3):193-221,2002. Special Issue on New Methods for Model Selection and Model Combination.
E.L. Allwein, R.E. Schapire and Y.Singer, “Reducing multiclass to binary: A unifying approach for margin classifiers”, Journal of Machine Learning Research,1:113-141,2000.
J.R.Quinlan, “Boosting first-order learning”, Lecture Notes in Computer Science,1160:143,1996.
L.Breiman, “Arcing Classifiers”, Machine Learning,26(2):123-140,1996.
Eric Bauer and Ron Kohavi, “An Empirical Comparison of Voting Classification Algorithms: Bagging, Boosting and Variants”, Machine Learning (1999).
J.Friedman,T.Hastie and R.J. Tibshirani, “Additive logistic regression: a statistical view of boosting”, Annals of Statistics, 2:337-374,2000.
多数の分類分析モデル(弱学習モデル,WeakLearner,WL)をBoostingの手法により統合し、より精度の高い判別モデルを作成する。
スクリプトによってユーザがアルゴリズムを自由に定義することができる。アルゴリズムを定義しなくても、標準で多群判別ができるアルゴリズムが搭載されているため、簡単に利用することができる。Boostingによる学習・予測について説明する。
図 Boostingによる学習のイメージ
Boostingによる学習では、すべての学習データには重みがつけられる(1行が1学習データ)。重みの大きいデータはより重点的に学習される。学習開始時には、初期重みが重みとして用いられる。重み付き学習によりモデルを作成し、そのモデルの正解/不正解に応じてデータごとに重みを更新する。更新された重みは、次のモデルを作成する際に使用される。
このとき、正解したデータについては、重みが小さくなるように、不正解のデータについては重みが大きくなるようにする。つまり、次のモデル作成時には、前のモデルが不正解したデータについて、より重点的に学習するようになる。以上を繰返し、必要な数だけモデルを作成する。
図 Boostingによる予測のイメージ
Boostingによる予測では、まず、学習時に作成されたすべてのモデルに対してテストデータを渡し、予測させる。予測結果などの情報から、WLOutputを計算する。これはすべてのテストデータに対して、クラスの数だけ値が存在する。(上の図では、クラスが”開催”,”中止”の2つあるので、データごとに2つの値がある)すべてのモデルにわたるWLOutputの総和を計算し、総和の最も大きいクラスを、予測クラスとする。
Boostingによる予測は、すべてのモデルの予測についての重み付き多数決とみなすことができる。このときWLOutputの値は、モデルの重み付き投票値である。WLOutputの値が大きいほど、「データがそのクラスに属する可能性が高い」とモデルが予測していることになる。
図 Boostingパラメータ設定画面
□説明
Boostingタブでは、Boostingのパラメータを指定する。用いる分類分析の手法はアルゴリズムで指定し、モデル数で統合するモデルの数を指定する。サマリ出力にチェックを入れると、学習過程におけるサマリがテーブルとして出力される。このテーブルには、全体の精度、クラス別の精度(Precision)・リコール(Recall)・判定率が含まれる。それぞれの定義は、
である。途中経過出力にチェックをいれると、サマリ出力と同様の情報がメッセージウインドウに表示される。ただしクラス数が3つより多い場合には、全体の精度のみが出力される。
□設定項目
□アルゴリズム |
弱学習モデルを構築するアルゴリズムを以下から指定する。 |
Neural Network |
|
Decision Tree |
|
Radial Basis Function Network |
|
k-NN分析 |
|
Support Vector Machine |
|
Naive Bayes |
|
□モデル数 |
統合するモデルの数を指定する。 |
□サマリ出力 |
学習結果のサマリテーブルを出力する。 |
□途中結果出力 |
メッセージウインドウにサマリを出力する。 |
図 継続学習
□説明
継続学習ボタンを押すことで、直前の学習から継続して学習を行うことができる。通常は継続学習ボタンは押せないようになっているが、一度学習が終了して、次に起動したときにモデル数を増加させることで継続学習が可能な状態となり、ボタンを押せるようになる。アルゴリズムと初期重み以外であれば、パラメータを変化させて継続学習を行うことができる。
図 学習パラメータ設定画面
□説明
学習タブでは、個々の学習アルゴリズムのパラメータを指定する。
図 初期重み設定画面
□説明
初期重みタブでは、重みの初期値を設定する。デフォルト・列指定・クラス指定がある。デフォルトでは、すべてのデータに対して均等に重みがつけられる。列指定では列ごとに重みを指定し、クラス指定ではクラスごとに重みを指定する。重みが大きいデータほど、弱学習モデルに重点的に学習される。値としては、0より大きい値を指定する。
□設定項目
□初期重み |
初期重みの付け方を指定する。0より大きい実数を指定する。 |
デフォルト |
すべてのデータに対して均等に重みをつける。 |
列指定 |
列ごとに重みを指定する。 |
クラス指定 |
クラスごとに重みを指定する。 |
図 重み更新設定画面
□説明
重み更新タブでは、重み更新方法の詳細を指定する。更新された重みは、次の弱学習モデルの学習の際に使用される。重み更新方法には大きく分けて3通りあり、デフォルト・重み更新係数指定(列指定、クラス別指定)・スクリプト指定である。デフォルトでは、システムが提供する手法を用いる。重み更新係数指定では、データによって重み更新の大きさを調整することができる。値としては-1から1の間の値を指定する。重み更新係数を大きくすると、正解/不正解のときに重みの変化が激しくなり、小さくすると、重みの変化が穏やかになる。つまり、係数を大きくすればそのデータの学習結果に敏感に重みが更新され、小さくすれば、鈍感になる。-1に近い値を設定すると、正解/不正解のときにほとんど重みが変化しなくなる。スクリプト指定では、重みを更新する処理を、スクリプトによってユーザが指定できる。スクリプト編集ボタンを押すと、編集画面が開く。スクリプトでは、以下のテーブルに示すテーブルを使用できる。また、任意のスクリプト関数を使用することができる。これらを用いてB.weightという変数にデータごとの重みを格納する。
表 重み更新スクリプトで定義されている変数
変数名 |
内容 |
入/出 |
データイメージ |
□ B.obj |
目的変数列 |
入力 |
|
□ B.pred |
弱学習モデル学習で得られた予測クラス。 |
入力 |
|
□ B.pred.value |
弱学習モデル学習で得られた予測の信頼度。一部のモデル(Decision Tree, k-NN分析, Naive Bayes)を用いた場合のみ利用できる。 |
入力 |
|
□ B.class |
クラス名の一覧 |
入力 |
|
□ B.idx |
モデル番号。1からモデル数まで。 |
入力 |
|
□ B.num.model |
モデル数。 |
入力 |
|
□ B.train.data |
学習データ。 |
入力 |
|
□ B.summary |
サマリ出力オプションによって出力されるテーブルと同じデータ。学習の進行に応じてサマリが追加されていくので、最初の学習時にはこのテーブルは使用できない。 |
入力 |
|
□ B.sum.result |
直前の弱学習モデルまでの弱学習モデルの出力の総和。 |
入力 |
|
□ B.all.pred |
B.sum.resultから決定された予測クラス。 |
入力 |
|
□ B.alpha1〜3 |
ユーザが自由に使用できる変数。初期値として0が入っている。WL出力のスクリプトでも同じ変数を参照することができる。 |
入・出 |
|
□ B.weight |
データに対する重み。 |
入・出 |
|
□設定項目
□重み更新 |
重み更新の詳細を指定する。 |
デフォルト |
システムが提供する手法を用いる。 |
列指定 |
データごとの学習の緩急をコントロールする係数を列ごとに指定する。-1より大きく、1より小さい値を指定する。 |
クラス指定 |
データごとの学習の緩急をコントロールする係数をクラスごとに指定する。-1より大きく、1より小さい値を指定する。 |
スクリプト |
重み更新の処理をスクリプトにより指定する。 |
■WL出力
図 WL出力設定画面
□説明
WL出力タブでは、弱学習モデルの出力の計算方法を指定する。この値は、すべての弱学習モデルを重み付き多数決により統合する際に、それぞれのモデルの投票値として使用される。デフォルトまたはスクリプト指定による方法を選ぶことができる。デフォルトでは、システムが提供する手法を用いる。スクリプト指定では、重み更新と同様に、ユーザーがスクリプトによりWL出力の計算方法を指定できる。WL出力のスクリプトでは、以下の表に示すテーブルが使用できる。これらを用いてB.resultという変数に出力を格納する。
表 WL出力スクリプトで使用できる変数
変数名 |
内容 |
入/出 |
データイメージ |
□ B.pred |
弱学習モデル予測で得られた予測クラス。 |
入力 |
|
□ B.pred.value |
弱学習モデル予測で得られた予測の信頼度。一部のモデル(Decision Tree, k-NN分析, Naive Bayes)を用いた場合のみ利用できる。 |
入力 |
|
□ B.class |
クラス名の一覧 |
入力 |
|
□ B.idx |
モデル番号。1からモデル数まで。 |
入力 |
|
□ B.num.model |
モデル数。 |
入力 |
|
□ B.test.data |
テストデータ。 |
入力 |
|
□ B.sum.result |
直前の弱学習モデルまでの弱学習モデルの出力の総和。 |
入力 |
|
□ B.all.pred |
B.sum.resultから決定された予測クラス。 |
入力 |
|
□ B.alpha1〜3 |
ユーザが自由に使用できる変数。 |
入・出 |
- |
□ B.result |
弱学習モデルの出力。 |
出力 |
|
□設定項目
□弱学習モデル出力 |
弱学習モデルの出力の計算方法を指定する。 |
デフォルト |
システムが提供する手法を用いる。 |
スクリプト |
スクリプトにより計算方法を指定する。 |
図 スクリプト編集画面
□説明
重み更新、WL出力のスクリプトを編集する。右側に定義済み変数一覧があり、変数名をダブルクリックすると、スクリプトに変数名を挿入できる。「入力」はスクリプトへの入力変数、「出力」はスクリプトからの出力変数、「入・出」は入力および出力変数であることを示す。
Boostingの出力は以下の通り。
クラス.目的変数は教師値、クラス.予測は出力結果から識別されるクラス、クラス.判定結果は教師値と識別したクラスとの評価結果、開催、中止 はそれぞれのクラスへのWLOutputの総和である。開催.確率、中止.確率はデータが各クラスに該当すると予測した確率である。
図 Boosting 出力結果 result
回数は統合したモデルの数、全体.precisionは全体の精度、開催.precision、開催.recall、開催.判定率などは、クラスごとの精度、リコール、判定率である。
図 Boosting 出力結果 boosting
Robert E. Schapire. The boosting approach to machine learning: An overview.
In D. D. Denison, M. H. Hansen, C. Holmes, B. Mallick, B. Yu, editors, Nonlinear Estimation and Classification. Springer, 2003.
Robert E. Schapire and Yoram Singer. Improved boosting algorithms using confidence-rated predictions. Machine Learning, 37(3):297-336, 1999.
Ji Zhu, Saharon Rosset, Hui Zhou and Trevor Hastie. Multiclass Adaboost. A multiclass generalization of the Adaboost algorithm, based on a generalization of the exponential loss. Technical report., Stanford University, 2005
多数の分類分析モデルをBaggingの手法により統合し、未知の入力データに対して安定した予測を行う判別モデルを作成する。Baggingの手法では、与えられた学習データから、同じデータが重複するのを許してサンプリングを行い(復元抽出法)、モデルの学習を行う。最終的な結果は、このようにして学習した複数のモデルの多数決により得られる。
Baggingによる学習・予測について説明する。
図 Baggingによる学習のイメージ
Baggingによる学習では、まず学習データから復元抽出によりサンプリングを行う。そのデータを用いて学習を行い、モデルを作成する。これを繰返し、必要な数だけモデルを作成する。
図 Baggingによる予測のイメージ
Baggingによる予測では、学習時に作成されたすべてのモデルに対してテストデータを渡し、予測させる。そして、その結果から多数決を行い、それぞれのデータに対して最も多かった予測クラスを、そのデータの予測クラスとする。
■Bagging
図 Baggingパラメータ設定画面
□説明
Baggingタブでは、Baggingのパラメータを指定する。用いる分類分析の手法はアルゴリズムで指定し、モデル数で統合するモデルの数を指定する。サマリ出力にチェックを入れると、学習途中でのサマリがテーブルとして出力される。このテーブルには、全体の精度、クラス別の精度(Precision)・リコール(Recall)・判定率が含まれる。それぞれの定義は、
である。途中経過出力にチェックをいれると、サマリ出力と同様の情報がメッセージウインドウに表示される。ただしクラス数が3つより多い場合には、全体の精度のみが出力される。
□設定項目
□アルゴリズム |
モデルを構築するアルゴリズムを以下から指定する。 |
Neural Network |
|
Decision Tree |
|
Radial Basis Function Network |
|
k-NN分析 |
|
Support Vector Machine |
|
Naive Bayes |
|
□モデル数 |
統合するモデルの数を指定する。 |
□サマリ出力 |
学習結果のサマリを表示する。 |
□途中結果出力 |
メッセージウインドウにサマリを出力する。 |
■継続学習
図 継続学習
□説明
継続学習ボタンを押すことで、直前の学習から継続して学習を行うことができる。通常は継続可能ボタンは押せないようになっているが、一度学習が終了して、次に起動したときにモデル数を増加させることで継続学習が可能な状態となり、ボタンを押せるようになる。アルゴリズム以外であれば、パラメータを変化させて継続学習を行うことができる。
■学習
図 学習パラメータ設定画面
□説明
学習タブで、個々の学習アルゴリズムのパラメータを指定する。
■重み
図 重み設定画面
□説明
重みタブで、データごとの重みを設定する。デフォルト・列指定・クラス指定がある。デフォルトでは、すべてのデータに対して均等に重みがつけられる。列指定では列ごとに重みを指定し、クラス指定ではクラスごとに重みを指定する。重みが大きいデータほど、復元抽出法によるサンプリング時にサンプリングされる確率が高くなる。値としては、0より大きい値を指定する。
□設定項目
□重み |
重みの付け方を指定する。0より大きい実数を指定する。 |
デフォルト |
すべてのデータに対して均等に重みをつける。 |
列指定 |
列ごとに重みを指定する。 |
クラス指定 |
クラスごとに重みを指定する。 |
Baggingの出力は以下の通り。
クラス.目的変数は教師値、クラス.予測は出力結果から識別されるクラス、クラス.判定結果は教師値と識別したクラスとの評価結果、開催、中止 はそれぞれのクラスを予測したモデルの数である。
図 Bagging 出力結果 result
回数は統合したモデルの数、全体.precisionは全体の精度、開催.precision、開催.recall、開催.判定率などは、クラスごとの精度、リコール、判定率である。
図 Bagging 出力結果 bagging
Breiman, L. Bagging predictors. Machine Learning, 24(2):124-140, 1996a.
アソシエーションルールを用いて予測・検証を行う。ルールベース予測では、入力データに含まれる項目が前提に含まれるルールを、モデルとなるルール集合の中から探索し、それらのルールから結論となる値を予測値とする。予測を選択した場合は入力データから予測される値を出力する。検証を選択した場合は予測される値と既存の値を比較し検証する。Summaryは本来のクラスと予測クラスの正誤数を求める。Recallは本来のクラスの正誤の割合(第1種の誤り率)を求める。precisionは予測クラスの正誤の割合(第2種の誤り率)を求める。評価を選択した場合は検証を行い、その結果から評価 (Lift、Cumulative、ROC)を出力する。それぞれの定義については予測項参照。出力オプションで対象データも出力を選択した場合は対象となる入力データ出力する。
判別関数では、予測値を判別する方法を指定する。最大値では信頼度の値が最も高いルール、信頼度が同じ場合にはサポートの値の大きいルール、信頼度、サポート共に同じ場合はルールの長さの短いルールを採用し、その信頼度を予測値とする。平均ではサポートの重みを考慮して予測を行う。
入力するアソシエーションルールの形式は以下の通りである。
図 ルールベース入力データ
RuleNo.がルールの番号を表す。この番号が同じものは一つのルールと見做す。列名が列の名前、パターンはその列がカテゴリ属性の場合にパターンが入る。数値.From、数値.Toは列属性が数値変数の場合の数値の範囲を表す。結論.種類列は結論の値を表す。信頼度、サポート、Lift、Conviction、ルール.数、前提.数、結論.数、キー.数はアソシエーションルールの指標である。
図 パラメータ設定画面
項目 |
内容 |
処理選択 |
処理の方法を以下の中から選択 予測 検証 評価 |
出力オプション |
入力データも出力するかどうかを選択 |
判別関数 |
判別方法を以下の中から選択 最大 平均 |
出力結果は以下の通り。
種類.目的変数が目的変数の値を表し、種類.予測がルールベースで予測した結果を表す。種類.判定結果はこれらの結果があっていればTrue、間違っていればFalseを返す。Virginica、Versicolor、Setosaの値は、ルールが予測した値で信頼度の値になる。
処理選択で検証を選択した場合には、これに加えてsummary、recall、precisionのデータが出力される。処理選択で評価を選択した場合には、summary、recall、precisionに加え、さらにlift、cumulative、rocが出力される。これらの詳細についでは予測の項を参照。
図 出力画面
B.Liu, W.Hsu and Y.Ma. Integrating classification and association rule mining. In KDD’98, New York, NY, Aug.1998.
G.Dong, X.Zhang, L.Wong and J.Li. CEAP: Classification by aggregating emerging patterns. In DS’99,Japan,Dec. 1999.
W.Li, J.Han and J.Pei. CMAR: Accurate and efficient classification based on multiple class-association rule set. In Proc. of 5th Pacific-Asia Conference in Methodologies for KDD, 2001.