4 分類

分類(教師あり機械学習手法)によって、質的ターゲットを予測する方法を学習します。

4.1 分類とは

分類とは、ある集合内の項目をターゲットのカテゴリまたはクラスに割り当てる機械学習手法です。

分類の目的は、データの各ケースのターゲット・クラスを正確に予測することです。たとえば、分類モデルを使用すれば、融資希望者を信用リスク別(低、中、高)で識別することが可能です。

分類タスクは、クラスの割当てが判明しているデータセットから着手します。たとえば、信用リスクを予測する分類モデルは、一定の期間に観測された多数の融資希望者のデータに基づいて作成されます。これらのデータには、支払能力の履歴だけでなく、雇用履歴、持ち家または賃貸、居住年数、投資の数と種類などが含まれていることが考えられます。支払能力をターゲット、他の属性を予測子として、各顧客のデータが1つのケースを構成します。

分類は離散的であり、順序を示すものではありません。連続的な浮動小数点値の場合、ターゲットは質的ではなく量的になります。量的ターゲットを扱う予測モデルでは、分類アルゴリズムではなく、回帰アルゴリズムを使用します。

最も単純なタイプの分類問題は、2項分類です。2項分類では、ターゲット属性が取り得る値は2つのみ(たとえば「支払能力が高い」と「支払能力が低い」)です。多クラス・ターゲットは、3つ以上の値(たとえば支払能力の場合、低、中、高、不明など)を持ちます。

分類アルゴリズムは、モデルの作成(トレーニング)プロセスにおいて、予測子の値とターゲットの値の関係を見つけます。関係の検出に使用される手法は、分類アルゴリズムによって異なります。これらの関係はモデル内に集約され、このモデルはクラスの割当てが未知である別のデータセットに適用できます。

分類のモデルは、テスト・データセット内の既知のターゲット値と予測値を比較することでテストされます。通常、分類プロジェクト用の履歴データを2つのデータセットに分割し、一方をモデルの作成用、もう一方をモデルのテスト用として使用します。

分類モデルを適用すると、各ケースについてのクラスの割当ておよび確率が生成されます。たとえば、顧客を低、中、高の値に分類するモデルの場合、各顧客についてそれぞれの値に分類される確率も予測されます。

分類は、顧客のセグメンテーション、ビジネスのモデル化、マーケティング、信用分析、生物医学および薬物反応モデリングなど、様々な分野で利用されます。

4.2 分類モデルのテスト

互換性のあるテスト・データに適用し、予測を実績と比較し、テスト・メトリックで精度を評価することで分類モデルをテストします。

分類モデルをテストするには、既知のターゲット値を持つテスト・データにそのモデルを適用し、予測値と既知の値を比較します。

モデルを適用するテスト・データは、モデルの構築で使用したデータと互換性があることが必要で、モデル構築データが準備されたのと同じ方法で準備される必要があります。通常、作成データとテスト・データは、同じ履歴データ・セットからのものである必要があります。モデルの作成に数パーセントのレコードが使用され、残りのレコードはモデルのテストに使用されます。

これらの既知の値をモデルがどれくらい正確に予測するかを評価するために、テスト・メトリックが使用されます。モデルの予測精度が高くビジネス要件を満たす場合は、新しいデータにそのモデルを適用して将来の予測に役立てることができます。

4.2.1 混同マトリックス

混同マトリックスは、モデルによる予測をテスト・データでの実際の分類と比較した場合の、正確な予測と不正確な予測の数を表したものです。このマトリックスはn×nの行列(nはクラスの数)です。

次の図は、2項分類モデルの混同マトリックスです。各行は、テスト・データでの実際の分類の数を表しています。各列は、モデルにより予測された分類の数を表しています。

図4-1 2項分類モデルの混同マトリックス

図4-1の説明が続きます
「図4-1 2項分類モデルの混同マトリックス」の説明

この例では、affinity_cardのポジティブ・クラスをモデルが正確に予測した(真のポジティブ(TP)とも呼ばれる)のが516回、不正確に予測した(不適切なネガティブ(FN)とも呼ばれる)のが25回ということになります。affinity_cardのネガティブ・クラスの予測については、正確だった(真のネガティブ(TN)とも呼ばれる)のが725回、不正確だった(不適切なポジティブ(FP)とも呼ばれる)のが10回です。この混同マトリックスから次のことが計算できます。

  • このモデルは1241回(つまり、TP + TN、(516 + 725))正確な予測を行いました。

  • このモデルは35回(つまり、FN + FP、(25 + 10))不正確な予測を行いました。

  • スコアリングされたケースの合計は1276 (516 + 25 + 10 + 725)です。

  • 誤差率は0.0274 (35/1276)です。(FN+FP/合計)

  • 総合精度は0.9725 (1241/1276) (TP+TN)/合計)です。

精度およびリコール

同じ例を考えてみます。精度率は0.97です。ただし、モデルが正しく予測されない場合があります。精度(ポジティブ予測値)は、関連するケースのみを返す分類モデルの能力です。精度は、TP/TP+FPとして計算できます。リコール(感度または真のポジティブ率)は、関連するケースを返す分類モデルの能力です。リコールは、TP/TP+FNとして計算できます。この例の精度は516/526 = 0.98です。この例のリコールは516/541 = 0.95です。モデルは、精度とリコールの両方が1の場合に最適です。これは分子と分母が等しいときに発生します。つまり、精度ではFPがゼロ、リコールではFNがゼロです。

4.2.2 リフト

リフトは、ランダムに生成された予測と比較して、分類モデルの予測がどの程度信頼できるかを計算したものです。

リフトが適用されるのは2項分類のみで、ポジティブ・クラスを指定する必要があります。モデル自体に2項ターゲットがない場合は、1つのクラスをポジティブとして指定し、その他すべてのクラスを1つにまとめたものをネガティブ・クラスとして、リフトを計算できます。

多数の統計量計算を使用して、リフトの概念をサポートできます。基本的に、リフトは、モデルにより正確に予測されたポジティブ分類の割合と、テスト・データでの実際のポジティブ分類の割合という、2つの割合の比率として考えることができます。たとえば、ある市場調査で、過去に実施された販促キャンペーンに対して40%の顧客が好意的な反応を示し(ポジティブ分類)、モデルではそれらの顧客の75%を正確に予測したとする場合、リフトは0.75を0.40で割ることによって求めることができます。この計算で求められるリフトは、1.875です。

リフトは、それぞれが同数のケースを含んでいる複数の分位に対して計算されます。対象のデータは、スコアリングされた後で分位に分割されます。ポジティブ・クラスの確率が最も高いものから最も低いものの順にランク付けされ、ポジティブ予測の集中度が高い方が上位の分位になります。標準的な分位数は10です。

リフトは通常、マーケティング用途の反応モデルの性能を測定するために使用されます。反応モデルの目的は、マーケティング・キャンペーンに対する肯定的な反応者が潜在的に多数集まっている母集団のセグメントを特定することです。リフトを使用することにより、最高率の潜在的反応者を得るためには母集団のどの部分にマーケティング活動を行うべきかが明らかになります。

4.2.2.1 リフト統計量

Oracle Machine Learning for SQLで計算可能な各種リフト統計量を学習します。

Oracle Machine Learning for SQLでは、次のリフト統計量が計算されます。

  • 分位n確率しきい値: ポジティブ・ターゲットが、その分位またはそれより前の任意の分位(分位n-1、n-2、...、1)に含まれる最小確率です。コスト・マトリックスを使用する場合は、かわりにコストしきい値が示されます。コストしきい値は、ポジティブ・ターゲットが、その分位またはそれより前の任意の分位に含まれる最大コストです。

  • 累積増加率: ポジティブ・ターゲットの総数に対するポジティブ・ターゲットの累計数の割合。

  • ある分位のターゲット密度: その分位内の実際のポジティブ・インスタンスの数を、分位内のインスタンスの総数で割った値。

  • 分位n累積ターゲット密度: 最初のn個の分位に対して計算されるターゲット密度。

  • 分位リフト: すべてのテスト・データのターゲット密度に対する分位のターゲット密度の割合。

  • レコードの累積比率: ある分位について、最初のn個(ポジティブである信頼度が最も高い最後の分位から指定の分位までを含むn個)の分位によって表されるすべてのケースの割合。

  • 分位n累積ターゲット数: 最初のn個の分位内における実際のポジティブ・インスタンスの数。

  • 累積非ターゲット数: 最初のn個の分位における実際のネガティブ・インスタンスの数。

  • ある分位の累積リフト: すべてのテスト・データのターゲット密度に対する累積ターゲット密度の割合。

関連項目

4.2.3 受信者操作特性(ROC)

ROCは、分類モデルにおいて予測値と実際のターゲット値を比較するためのメトリックです。

リフトと同様に、ROCが適用されるのは2項分類のみで、ポジティブ・クラスを指定する必要があります。

ROCを使用すると、モデルの意思決定能力を的確にとらえることが可能です。つまり、モデルがどの程度正確にネガティブ・クラスまたはポジティブ・クラスを予測できるかを知ることができます。

ROCは、確率しきい値における変化の影響を測定します。確率しきい値は、モデルが分類に使用する決定ポイントです。2項分類のデフォルトの確率しきい値は、0.5です。ある予測の確率が50%以上である場合、モデルは該当するクラスを予測します。確率が50%より低い場合は、もう一方のクラスが予測されます。(多クラス分類の場合、予測されるクラスは、予測の確率が最も高いクラスになります。)

4.2.3.1 ROC曲線

ROCは、X-Y軸上の曲線として描くことができます。X軸を偽陽性率にします。Y軸を真陽性率にします。

ROCグラフでは左上隅が最適位置です。つまり、真のポジティブ率が高く不適切なポジティブ率が低いことを表します。

4.2.3.2 曲線下面積

ROC曲線下面積(AUC)により、2項分類モデルの識別能力が測定されます。AUCが大きいほど、実際のネガティブ・ケースではなく実際のポジティブ・ケースが高い確率でポジティブに割り当てられるという尤度も高くなります。AUC測定は、ターゲット分布が不均衡である(1つのターゲット・クラスが他のクラスに比べて顕著である)データセットに対して特に有効です。

4.2.3.3 ROCとモデルのバイアス

モデルのROC曲線は、その混同マトリックスの値について可能なすべての組合せを表します。

確率しきい値の変化は、モデルにより生成される予測に影響します。たとえば、ポジティブ・クラス予測のしきい値が0.5から0.6に変わった場合、生成されるポジティブ予測の数が少なくなります。これにより、混同マトリックスでの値の分布が影響を受け、真のポジティブ数と不適切なポジティブ数および真のネガティブ数と不適切なネガティブ数が変わることになります。

ROCを使用することにより、全体の最高精度またはクラスごとの最高精度が得られる確率しきい値を見つけることが可能です。たとえば、ポジティブ・クラスを正確に予測することが重要である一方、ネガティブ・クラスの予測ミスについては許容できる場合には、ポジティブ・クラスのしきい値を下げることができます。つまり、ポジティブ・クラスを優先するようにモデルにバイアスをかけることができます。

コスト・マトリックスは、モデルのスコアリング用の確率しきい値を変更する際に便利なメカニズムです。

関連項目

4.2.3.4 ROC統計量

Oracle Machine Learning for SQLでは、次のROC統計量が計算されます。

  • 確率しきい値: ポジティブ・クラス予測が生成される最小予測ポジティブ・クラス確率。しきい値が異なると、ヒット率および不適切な警告率も異なります。

  • 真のネガティブ数: 確率しきい値未満の予測確率を持つテスト・データにおけるネガティブ・ケース数(正確に予測されたケース)。

  • 真のポジティブ数: 確率しきい値以上の予測確率を持つテスト・データにおけるポジティブ・ケース数(正確に予測されたケース)。

  • 不適切なネガティブ数: 確率しきい値未満の予測確率を持つテスト・データにおけるポジティブ・ケース数(不正確に予測されたケース)。

  • 不適切なポジティブ数: 確率しきい値以上の予測確率を持つテスト・データにおけるネガティブ・ケース数(不正確に予測されたケース)。

  • 真のポジティブの割合: ヒット率 (真のポジティブ数/(真のポジティブ数+不適切なネガティブ数))。

  • 不適切なポジティブの割合: 不適切な警告率 (不適切なポジティブ数/(不適切なポジティブ数+真のネガティブ数))。

4.3 分類モデルのバイアス

コスト、事前確率およびクラスの重みの決定基準を調整することで、分類モデルにバイアスがかかります。

コスト、事前確率およびクラスの重みは、分類モデルにバイアスをかけるための手法です。

4.3.1 コスト

コスト・マトリックスは、モデルの意思決定に影響を与えるためのメカニズムです。コスト・マトリックスを使用することにより、モデルによるコストの高い分類ミスを最小化することが可能です。また、モデルが利益の高い正確な分類を行う確率を最大化することもできます。

たとえば、あるモデルが信用リスクの高い顧客を低リスクとして分類した場合、このような分類ミスにはコストがかかります。コスト・マトリックスを使用することによって、こうしたミスを回避するようにモデルにバイアスをかけることができます。また、信用履歴が最も悪い顧客を正確に分類することを優先するようモデルにバイアスをかける際に、コスト・マトリックスを使用する場合もあります。

確率しきい値が変化したときにモデルがどのように動作するかを評価するメトリックとしては、ROCが有効です。ROCは、用途が異なるいくつかのシナリオがある場合に、特定の分類子について最適なコストを見つけるのに役立ちます。この情報を利用して、モデルの配置に影響を与えるコスト・マトリックスを作成できます。

4.3.1.1 コストと精度

モデルの質を評価するために、コストと精度のコスト・マトリックスと混同マトリックスを比較します。

混同マトリックスと同様、コスト・マトリックスはn×nの行列(nはクラスの数)です。混同マトリックスとコスト・マトリックスはいずれも、特定のテスト・データセットに基づく実測値と予測値のすべての可能な組合せを含んでいます。

混合マトリックスは、精度、つまり予測の総数に対する正確な予測の割合を測定するために使用します。コスト・マトリックスは、それぞれの予測の精度について相対的な重要度を特定するときに使用されます。ビジネスに応用する場合は、モデルの質を評価するときに、精度に加えコストが重視されることがほとんどです。

4.3.1.2 ポジティブ・クラスとネガティブ・クラス

混同マトリックスにおけるポジティブ・クラスとネガティブ・クラスの重要度について示します。

ポジティブ・クラスは、最も重要性が高いクラスです。リフトおよびROCを計算するときは、ポジティブ・クラスの指定が必要となります。

次の図の混同マトリックスでは、値1がポジティブ・クラスとして指定されています。これは、提携カードがあれば消費を増やす可能性がある顧客(affinity_card=1)を正確に予測する方が、反応のない顧客(affinity_card=0)を正確に予測するよりも重要であるとモデルの作成者が判断したことを意味します。提携カードを使用する可能性が低い顧客にカードを提供したとしても、カードのコストが低いため企業の損失はそれほど大きくはありません。しかし、反応する可能性が高い顧客を見落とした場合は、収益増加の機会を逃すことになります。

図4-2 ポジティブ予測とネガティブ予測

図4-2の説明が続きます
「図4-2 ポジティブ予測とネガティブ予測」の説明

この混同マトリックスでの真のポジティブ率と不適切なポジティブ率は次のようになります。

  • 不適切なポジティブ率 — 10/(10 + 725) =0.01

  • 真のポジティブ率 — 516/(516 + 25) =0.95

4.3.1.3 コストと利益の割当て

コスト・マトリックスでは、正の数(コスト)を使用してネガティブの結果に影響を与えることが可能です。負数のコストは利益と解釈されるため、負の数(利益)を使用するとポジティブの結果に影響を与えることができます。

消費を増やす可能性がある顧客に提携カードを提供しなかった場合、ビジネスに$1500の損害を与えることになる、と算定したとします。図4-2の混同マトリックスを持つモデルを使用した場合、不適切なネガティブ予測(反応する顧客の分類ミス)により1500ドルのコストがかかることになります。反応しない顧客の分類ミスの方が、ビジネスに与える損害は小額です。不適切なポジティブ予測(反応しない顧客の分類ミス)それぞれによるコストは$300しかかからないものと想定します。

販促キャンペーンを計画する際は、これらのコストを考慮する必要があります。このキャンペーンの対象として顧客を1人追加するには10ドルのコストがかかると見積ります。そのため、真のネガティブ予測には10ドルの利益を関連付けます(これは、反応しない顧客を販促の対象外にできるためです)。対象外となる顧客1人につき、10ドルの節約になります。コスト・マトリックスでは、この利益を負のコスト(-10)として指定します。

次の図は、これらのコストおよび利益をコスト・マトリックスで表したものです。

図4-3 コストと利益を表すコスト・マトリックス

図4-3の説明が続きます
「図4-3 コストと利益を表すコスト・マトリックス」の説明

Oracle Machine Learning for SQLでは、分類モデルのスコアリングに影響するようにコストを指定できます。デシジョン・ツリー・モデルでは、コスト・マトリックスを使用してモデルの作成に影響を与えることも可能です。

4.3.2 事前確率およびクラスの重み

有益な結果を生み出すために、分類モデルの中の事前確率およびクラスの重みについて学習します。

ベイズ・モデルでは、作成データと実際の母集団(スコアリング・データ)との間の分布の差を埋めるために、事前確率を指定できます。分類のその他の形式を使用して、事前確率と同じバイアス効果を持つクラスの重みを指定できます。

多くの問題では、1つのターゲット値が頻繁に出現します。たとえば、電話によるマーケティング・キャンペーンに対する好意的(ポジティブ)な反応は2%以下で、クレジット・カード決済での不正行為の発生率は1%未満となります。このタイプの履歴データを基に作成された分類モデルの場合、2つのクラスの特性を区別するのに十分な数の希少クラスを見つけられない可能性があり、その結果、新しいデータに適用すると、すべてのケースに対し頻出クラスを予測するというモデルになる可能性があります。このようなモデルの精度は非常に高い可能性がありますが、あまり有用ではありません。これは、精度のみを分類モデルの質の判断材料とするのは好ましくないことを示しています。

トレーニング・データにおける非現実的な分布を補正するには、モデルの作成プロセスで事前確率を指定します。データの分布に関する問題を補正するその他の方法としては、層別サンプリングや異常検出があります。

4.4 分類のアルゴリズム

Oracle Machine Learning for SQLで使用する様々な分類アルゴリズムを学習します。

Oracle Machine Learning for SQLには、分類のための次のアルゴリズムが用意されています。

  • デシジョン・ツリー

    デシジョン・ツリーは、ツリーの作成に使用されるロジックを明らかにする条件文であるルールを自動的に生成します。

  • 明示的セマンティック分析

    明示的セマンティック分析(ESA)は、テキスト・データの予測を目的としています。このアルゴリズムでは、数十万のクラスがあるユース・ケースに対応できます。

  • 一般化線形モデル

    一般化線形モデル(GLM)は、線形モデリングでよく使用される統計的手法です。OML4SQLでは、2項分類および回帰に対してGLMを実装しています。GLMでは、係数統計情報やモデルの統計情報、行の診断情報など多数の情報を利用できます。GLMは信頼限界もサポートしています。

  • Naive Bayes

    Naive BayesではBayesの定理が使用されます(履歴データの値の組合せと値の頻度を数えて確率を計算する式)。

  • ランダム・フォレスト

    ランダム・フォレストとは、強力で一般的な機械学習アルゴリズムのことであり、パフォーマンスとスケーラビリティに多大なメリットがあります。

  • サポート・ベクター・マシン

    サポート・ベクター・マシン(SVM)は、線形回帰および非線形回帰に基づく強力な最新のアルゴリズムです。OML4SQLは、2項分類および多クラス分類に対してSVMを実装しています。

  • XGBoost

    XGBoostは、XGBoostオープン・ソース・パッケージを使用可能にする、回帰および分類用の機械学習アルゴリズムです。Oracle Machine Learning for SQL XGBoostでは、トレーニング・データの準備、XGBoostの起動、モデルの作成と保持、予測のためのモデルの適用を実施します。

ノート:

OML4SQLでは、デフォルトの分類アルゴリズムとしてNaive Bayesが使用されます。