ターゲット定義
公開: 2015-08-21機械学習の方法は、教師ありと教師なしの2つの大きなカテゴリに分類できます。 教師あり学習は、観測値が特定のクラスに属する(分類問題の場合)か、特定の値を持つ(回帰問題の場合)ことがわかっている、ラベル付けされた一連の観測値から学習します。 教師なし学習は、ラベル付けされていない一連の観測から学習します。ここでは、観測自体以外に何も知られていません。
教師あり学習方法の場合、基本的に「この「真の」データを見て、見えないデータの「真実」を知っていることを教えてください」と言います。 教師なし学習方法の場合、これは「このデータを見て、私が知らない興味深いことを教えてください」と同等です。 明確な二分法は有用ですが、この投稿では、ターゲットの定義自体が非常に興味深いタスクになる可能性がある興味深いバリアントについて説明します。
半教師あり
これは、教師ありデータと教師なしデータの中間であり、「真の」ラベルは一部の観測値にのみ存在し、すべてではありません。 手元の情報を無視することは、分析モデルの品質に不当ですが、この情報を使用すると、問題が異常になる可能性があります。 データ生成が簡単で(インターネットを考えてください)、ラベリングが高価な世界では、多くの問題が半教師ありドメインに分類されます。
1つのアプローチは、モデリング用のラベル情報を含めず、モデルの検証とパフォーマンスの比較のためだけにすることです。 たとえば、教師なしクラスタリングを使用してデータをkクラスターにセグメント化し、予測されたクラスターを実際のクラスターと比較することでモデルの能力を検証できます。 これは、複数のクラスタリングソリューションの中からより適切に判断するのに役立つ場合があります。
別のアプローチは、モデリングにこの情報を使用することです。 以前のブログ投稿で、半教師ありクラスタリングについて説明しました。
離散対連続
多くの状況は明らかに分類または回帰のカテゴリに分類されますが(「真の」値は離散クラスまたは連続値)、ターゲット変換が理にかなっている場合があります。
顧客レベルの収益を、顧客の人口統計および過去の取引行動の関数として考えます。 これは、小売、銀行、保険、通信業界で十分に一般的な問題です。 多くの場合、過去Nか月の収益は、明らかに継続的な数値です。 (線形、おそらく)回帰はここに当てはまるかもしれません、あなたは言います! しかし、ニューラルネットワークのように、分類の問題に利用できるより複雑で洗練された方法があります。これは、より良い仕事をする可能性がありますが、継続的なターゲットには適用されません。 ビジネスの状況によっては、実際の収益を予測する必要がない場合がありますが、収益が高、中、低の場合に限ります。 もしそうなら、あなたはすべての顧客の収益の分布をレビューし、高中低、そして出来上がりの境界を定義することができます! 連続ターゲット問題を3クラスの離散分類問題に変換しました。
継続的な目標がパーセンテージ(たとえば、学校ごとに試験に合格した生徒の割合)であり、新しい/見えない学校のパーセントも予測したい場合は、回帰モデルとは別のオプションがあります。 データを分割することができます! パーセリングは、観測値を複製することにより、連分数をバイナリクラスに変換します。 ターゲット値が40%の観測値の場合、観測値を100回複製し、そのうちの40個にクラス1を割り当て、残りの60個にクラス60を割り当てます。観測値が同じで機能セットが同じ場合、モデルは1を区別しようとします。 0から、この種の観測値は1になる可能性が40%、0になる可能性が60%であると結論付けます。すべての観測値に対して同じことができます。 (はい、これによりトレーニングデータ多様体のサイズが大きくなります。)とにかく、最も一般的な分類モデルは、結果としてclass = 1の確率を生成し、それはとにかくあなたが望む結果です!
離散クラスを連続値に変換する場合はありますか? ほとんどありませんが、例があります。 誰かの年齢を年単位で予測しようとしている場合(基本的には0〜100(またはそれ以上)の離散整数)、年齢を継続的なターゲットとして扱うことができます。 同様に、0-50k、50k-100k、100k-150kなど、十分にきめ細かい収入カテゴリがある場合は、20クラスの問題を解決するのではなく、収入を連続変数として扱うことでメリットが得られる場合があります。
クラスなしの場合
すべてのデータにはラベルが付けられているか、ラベルが付けられていません。 データにラベルが付けられている場合(仮定、バイナリ)、データは1つのクラスまたは別のクラスに属します。 ただし、実際には、データはどのクラスにも属していない可能性があります。
たとえば、一連の保険金請求の中で、特定の請求が詐欺であり、他の請求が詐欺ではないことは確かに知っているかもしれませんが、調査されなかった多くの請求については知らないかもしれません。 銀行のアプリケーションスコアリングモデルの一部として受け入れられた、または拒否されたクレジットカード申請者の間で考えてみてください。 でも、全く応募しなかったお客様も多く、受け入れられたかどうかもわかりません。 多くの場合、ラベルのないデータを処理することはできず、開発人口からそれらを除外する必要があります。 ただし、これがモデリングにバイアスを引き起こす場合は注意が必要です。 上記の保険の例では、調査されたクレームが最初から疑わしいものであったか(詐欺ではないことが判明したものでさえ)、または銀行の例では、申請しなかった顧客は、人口統計カテゴリを完全に除外した営業部隊によって勧誘されませんでした。
前のセクションで説明したようにターゲット変換を行う場合は、クラスなしのデータを自分で作成できます。 連続ターゲットをバイナリターゲットに変換するために、年間5000 /-を超える収益を高く、年間5000/-未満を低く定義するとします。 ただし、5000で任意のカットオフがあるため、これは悪い設計になります。収益が4999 /-の顧客は、収益が5001 /-の顧客と大差ありませんが、世界を分けています。 あなたの定義は、5001/-の収益が4999/-の収益よりも10000/-の収益に類似していることを意味します。 問題がわかりますか? 技術的にはそうすることができますが、類似の顧客との違いを学ぶように求めているため、結果として得られるモデルは適切で堅牢ではありません。
通常は、バッファ/クラスなしゾーンを含めることをお勧めします。 したがって、6000 /-以上の収益を高く、4000 /-以下の収益を低く定義し、収益が4000/-から6000/-の間の観測値を無視することができます。 一部のデータが失われますが、異なると定義するものは実際には異なるため、モデルははるかに優れた仕事をします。
データの準備、特徴の生成、機械学習の方法に多くの焦点を当てるのは当然ですが、適切なターゲットを定義することも、全体的な分析結果の品質に役立つ可能性があります。