プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

ベイズ分類の基本概念とベイズの定理をわかりやすく解説

分類(Classification)とは

分類は、データインスタンスがどのクラスに属するかを予測するために用いられるデータマイニング手法の一つです。この手法は、大きく2つのステップで構成されます。

第1のステップでは、あらかじめ定義されたデータクラスの集合を表すモデルを構築します。モデルは、属性によって記述されたデータベースのタプル(レコード)をもとにして作成されます。

第2のステップでは、新しく提示されたオブジェクトの特徴を分析し、事前に定義された複数のクラスの中から最も適切なものへと割り当てます。

分類ルールの学習

分類ルールを学習するには、システムが予測用の属性からクラスを予測するためのルールを見つけ出す必要があります。そのために、まず各クラスに対する条件を表現しなければなりません。さらに、あるケース(タプル)がどのクラスに該当するかを予測できるように、既知の属性値を持つケースをシステムに与える必要があります。

クラスが定義された後は、システムが分類を支配するルールを推論し、各クラスの表現を導き出せるようにしなければなりません。ここで重要なのは、記述が訓練データセットの予測用属性のみに基づいており、正例だけがその特徴づけを満たし、負例は満たさないようにすることです。ルールの定義があるクラスのすべての正例を網羅し、負例を一つも含まない場合、そのルールは「正しい」とみなされます。

ベイズ分類(Bayesian Classification)

ベイズ分類器は統計的な分類器であり、あるサンプルが特定のクラスに属する確率といった、クラスへの帰属確率を予測することができます。また、大規模なデータベースに適用した場合でも、高い効率性と処理速度を発揮することが実証されています。

ナイーブベイズ分類器では、ある属性値があるクラスに与える影響は、他の属性値とは互いに独立していると仮定します。この仮定は「クラス条件付き独立性」と呼ばれます。このような単純化のための仮定を採用していることから、「ナイーブ(素朴)」ベイズと称されます。

ベイズの定理(Bayes Theorem)

X をデータタプルとします。ベイズ的手法において、X は「証拠(evidence)」として扱われます。そして H を何らかの仮説、たとえば「データタプル X が特定のクラス C に属する」という仮説とします。このとき注目するのが確率 P(H|X) です。これは、観測された「証拠」すなわちデータタプル X が与えられた条件下で、仮説 H が成立する確率を表します。

P(H|X) は、X を条件とする H の事後確率です。具体例を挙げてみましょう。データタプルが「年齢」と「収入」という属性で定義される顧客であるとし、X を「30歳で収入20,000円の顧客」、H を「その顧客がコンピュータを購入する」という仮説とします。この場合、P(H|X) は「顧客の年齢と収入が判明しているという条件下で、その顧客がコンピュータを購入する確率」を意味します。

一方、P(H) は H の事前確率です。これは、年齢や収入などの他の情報に一切依存せず、任意の顧客がコンピュータを購入する確率に相当します。事後確率 P(H|X) は、X に依存しない事前確率 P(H) よりも多くの情報に基づいて算出される点が特徴です。

同様に、P(X|H) は H を条件とする X の事後確率であり、「ある顧客が30歳かつ収入20,000円である確率」を表します。

P(H)、P(X|H)、および P(X) は、与えられたデータから求めることが可能です。ベイズの定理は、これらの値から事後確率 P(H|X) を計算する方法を提供します。以下の式で表されます。

P(H|X) = P(X|H) × P(H) / P(X)

  1. C言語のトークンとは?種類と基本構成要素をサンプルコード付きで解説

    C言語のプログラムは命令文(ステートメント)の集まりであり、さらにその命令文一つひとつは、より小さな単位の集合によって構成されています。このように、Cプログラムを構成する個々の小さな単位のことを「トークン(token)」と呼びます。つまり、Cプログラム内のすべての命令文は、複数のトークンが集まってできているということです。トークンはCプログラムを作り上げるための材料であり、「プログラムの基本的な構成要素(ビルディングブロック)」とも表現されます。Cプログラムにおけるトークンの種類Cプログラムの中で扱われるトークンには、主に以下の7種類があります。キーワード(予約語):int、if、for、re

  2. C#のコメントとは?複数行・単一行コメントの書き方を解説

    コメントは、コードの内容や意図を説明するために記述する注釈です。コンパイラはコメント部分を完全に無視するため、プログラムの動作には一切影響しません。C#では、複数行にわたるコメントは「/*」で始まり、「*/」で終わります。 複数行コメント /* 以下はC#における 複数行コメントの例です */ 「/* ... */」で囲まれた範囲はすべてコンパイラによって無視されます。処理の概要や注意点など、複数行にわたる説明を残したい場合に使用します。 単一行コメント // 変数の宣言 int a = 10; 単一行コメントは「//」から行末までがコメントとして扱われます。変数の意味や処理の意図を手軽にメモ