1. 概要

この記事では、機械学習タスクの単純ベイズ分類の簡単な説明を学習します。

この記事を読むことで、科学的な予測を行う際に、私たち自身のアプリオリを理解することが重要である理由を学びます。 また、ベイズの定理を予測関数として使用する単純なベルヌーイ分類理をどのように実装できるかについても見ていきます。

この記事の終わりまでに、統計における最も基本的な定理の1つを直感的に理解し、その可能なアルゴリズムの実装の1つを見てきました。

2. ベイズの定理

基本から始めましょう。 これはベイズの定理であり、覚えるのは簡単で、すべてのベイズ分類器の基礎として機能します。

ここで、とは2つのイベントであり、独立したイベントとして扱われる場合のABの2つの確率であり、B[X180Xが与えられた場合のAの複合確率です。 ]とBはそれぞれAを与えられます。

ここで重要なポイントであり、これらはAとBのいわゆる先験的確率を指します。

3. A Priori の確率とは何ですか?なぜそれらが重要なのですか?

3.1. A Prioriの意味

アプリオリはラテン語の表現で、未確認または未テストだけでなく、想定または推定を意味します。

では、イベントの確率が未確認または推定されるとはどういう意味ですか? 次の思考実験を例として使用してみましょう。これについては、この記事の残りの部分で参照します。 次のテキストのコーパスに基づいて、推測ゲームをプレイしています。

3.2. 私たちがプレイしているゲーム

このゲームでは、私たちが話さない言語である英語のテキストが、私たちが理解できない概念動物について話しているかどうかを推測する必要があります。 上記のコーパスの各テキストは、動物について話しているかどうかは関係ありません。推測を始める前に、すべてのテキストを何度でも読むことができます。

ゲームを開始すると、ゲームホストは、以前は表示されていなかった新しいテキストを表示し、動物について話しているかどうかを正しく推測するように求めます。

もちろん、英語を話す人なら誰でも、どのテキストがどのカテゴリに属しているかをすぐに識別できますが、私たちがその言語を話せないため、タスクを解決するための意味の手がかりに頼ることができないと想像してみましょう。 その場合でも、観測の合計に対するクラスや特徴の発生頻度に基づいて簡単な推測を行うことができます。

このタイプのゲームは、自然言語処理テキスト分類と呼ばれます。 私たちがそれに取り組む方法は、最初に単純な推測を行い、その後、データの構造についてより多くの洞察を得るにつれて、それらを複雑に構築することです。

4. ベイズ推定の作り方

4.1. 事前の知識がなくても推測できますか?

私たちが読んだテキスト間で、または一般的に、私たちが研究している言語システムで、クラスがどのように分散されているかはまだわかりません。 私たちは英語を話さないことを忘れないでください。 この状況は、実行しなければならない予測に関連して、システムの動作に関する事前の知識が不足していることに対応しています。

このような状況下では、事前の知識がなければ、予測を行うことはできません

これは非常に直感に反します。実際、テキストの半分を animal、として分類し、半分をnot_animalsとして分類するのが適切な推測であると主張するかもしれません。 次に、一様分布からランダムに描画し、描画の結果と、これがその分布の中央値よりも高いか低いかに応じてラベルを割り当てます。

4.2. 事前の知識がなければ予測はありません

残念ながら、それを自由に行うことはできません。そうしないと、システムの動作に関する仮説を追加することになります。これは、先験的な知識の追加に対応し、その結果、この段落の基礎となる仮説。

これにより、テキストのクラス所属への事前確率の割り当ては、推測を実行するために必要な追加の仮説になります。

したがって、事前の知識がない場合の予測は不可能です。

しかし、ゲームのホストは、私たちのタスクが現在のところ不可能であることを理解しているので、親切にもいくつかの追加情報を提供してくれます。 具体的には、私たちが読んだテキストに関連付けられているクラスラベルのリストを提供します。

4.3. クラス分布に関する事前知識による推測

これで、受け取ったばかりの追加情報に基づいて、見えないテキストのクラス所属に関する基本予測を作成できます。

推測1:新しいテキストは、観察されたコーパスに最も頻繁に現れるクラスに属します。

この推測は簡単に理解できます。 観察された6つのテキストのうち4つが動物について話していることを考えると、観察されていないテキストも動物について話している可能性が高いと推測されます。

この推測を実行するために、コーパスの機能や、テキストのクラス所属との関係についての知識や、その問題に関する言語の理解は必要ありません。 実際、上の表からテキストの内容を削除しても、次の予測を実行できます。

簡単な予測ルールによると、新しいテキストが表示された場合は、 animal として分類します。これは、このクラスが最も頻繁に使用されるためです 2つのクラスがあり、[X194X ] animal が最も可能性が高いものであり、新しいテキストがそれに属していると常に推測します。

予測は不十分ですが、テキストの特徴をまだ利用していません。これについては、ここで説明します。

4.4. クラスと機能の配布に関する事前知識を使って推測する

次に、すべての単語が同じ概念に等しく関連しているわけではなく、テキスト内の一部の単語が他の単語よりもターゲットクラスanimalに関連付けられていることが多いと想像できます。

この仮定はおおむね恣意的であることに注意することが重要です。「これは動物に関するテキストではありません」というテキストは、定義上、動物については説明していませんが、クラスラベル自体に対応する単語が含まれています。 。 ただし、この仮定により、次のように、見えないテキストのクラスを推測できます。

推測2:新しいテキストに含まれる単語が、ターゲットクラスに属するテキストで以前に見られた場合、新しいテキストはターゲットクラスに属する可能性が高くなります。

この仮定を行うことにより、コーパス内のすべてのテキストを読み、動物について説明するテキストに存在する可能性に応じて各単語にスコアを付けることができます。

これは次のように行われます。 まず、最初のテキストの最初の単語である記事THEから始めます。 次に、コーパスを2つのセットに分割し、単語の存在に応じてグループ化します。

次に、テキストが動物について話している場合、THEという単語も含まれている可能性がどの程度あるかを自問することができます。 これは、上記のベイズの定理に示されているイベントAおよびBを、イベント「動物としてラベル付けされたテキスト」および「」に置き換えることによって行われます。テキストには、それぞれ「THE」という単語が含まれています。

ここで重要なことがわかります。 THE という単語がテキストに含まれていることを知っていても、そのテキストについて私たちが知らなかったことは何も教えてくれません。 より具体的には、以前の推測ルールですでに作成できたよりも良い推測は得られません。

4.5. より有益な言葉

次に、最初の文の2番目の単語に進み、同じ手順を繰り返します。

CAT という単語は、英語を知っていれば予想できるように、THEという単語よりも有益です。 animal とラベル付けされたテキストの大部分、具体的にはそれらの75% ofにそれが含まれているようです。 同時に、not_animalsというラベルの付いたテキストには含まれていません。

これは、テキストのクラス所属を予測する際に、CATという単語がsensitivespecificの両方であることを意味します。

これは非常に良い結果のようで、前の結果よりもはるかに有益です。 次に、すべてのテキストのすべての単語に対して同じプロセスを繰り返すことができます。 そうすれば、テキスト機能が与えられた場合に、クラス所属の条件付き確率の分布を構築できます。

5. 私たちのA Prioriの知識に高い信頼を置くことの危険性

ここで停止し、上記で取得したテーブルを、推測のルールを含むルックアップテーブルとして使用できます。 一部の単語が、1に等しいクラスanimalに関連付けられている可能性があることに注意してください。

したがって、これらの単語の1つを読むときはいつでも、そのクラスに属するものとしてテキストにラベルを付けることができます。

ただし、システムの動作に関する先験的な知識に絶対的な自信を持っているこのタイプのアプローチは、予測を実行するときに非常に危険です。 それは実際、私たちが絶対的または100%の信頼を持っているという仮定に反するすべての証拠を無視することにつながります。

6. ベイズの定理の直観的かつ合理主義的な解釈

6.1. 仮定がなければ、予測はあり得ません

私たちが議論した小さな思考実験は、私たちに何か重要なことを示しています。 私たちが研究しているシステムで大量の背景知識がなければ、予測を実行することは非常に困難であり、実際には不可能です。

これは、ベイズの定理の合理主義的解釈の基礎となる重要な考慮事項につながります。 システムの一般的な動作に関する事前の仮定がない限り、予測を実行することはできません。

これらの仮定、ベイズの用語を使用したアプリオリがあれば、予測を実行できます。 その後、私たちの予測は、基礎となる仮定の有効性と同じくらい有効になります。

6.2. 仮定は適切ですが、適度に使用してください

人間と機械の両方の分類器に共通する微妙な問題は、アプリオリの高い信頼性に関連する問題です。 仮定の数またはそれらに対する信頼性を高めることにより、通常、予測の精度が向上します。 しかし、ある時点以降、これには問題があります。

より多くの事前の仮定またはそれらに対するより高い信頼は、一般的に新しい知識の獲得を妨げます。 機械学習の用語では、トレーニングデータセットのモデルの過剰適合につながり、一般化の能力が低下します。

6.3. 中道は最良の方法です

次に、次の結論を導き出すことができます。 私たちは私たちの知識への絶対的な信頼と絶対的な無知の両方を避けるべきであることを学びました。 今後の道は、私たち自身の知識にある程度の自信を持ちながら、賛成または反対の新しい証拠が現れたときにそれを更新することをいとわないことです。

ベイズの定理のこの合理主義的な解釈は、単純ベイズ分類器によく当てはまります。 トレーニング中に分類器が行うことは、予測を定式化し、仮説を立てることです。 次に、これらは観測値(トレーニングデータセット)に対してテストされ、観測値と予測の間の不一致が記録されます。

次に、分類子は、証拠がそれらを支持するか拒否するかに応じて、それらの仮説に対する信頼度を増減します。

7. ベルヌーイナイーブベイズ分類器

独自のシミュレーションでこのコーパスを試すことに興味がある場合は、次のコードでPython 3+、Pandas、skLearnを使用してベイズの定理を実装し、この記事のテキストのサンプルコーパスに関連付けられたラベルを学習します。

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import BernoulliNB
corpus = ['the cat is on the table','the dog is in the room','the table is in the room','the cat is not a dog',
    'the cat and the dog are in the room','the room is not a table']
labels = ['animals','animals','not_animals','animals','animals','not_animals']
df = pd.DataFrame({'Texts':corpus,'Labels':labels})
cv = CountVectorizer(token_pattern='\w+')
BoW = cv.fit_transform(df['Texts'])
classifier = BernoulliNB()
classifier.fit(BoW,df['Labels'])
predictions = classifier.predict(BoW)
df['Predictions']=predictions
print(df)

8. 結論

ベイズの定理は、すべての確率はいくつかのアプリオリの条件付き確率であると述べています。これは、予測は、それらが基づく未検証の仮定がない限り作成できないことを意味します。

同時に、それはまた、私たちの事前の知識に対する絶対的な自信が、私たちが新しいことを学ぶことを妨げることを意味します

したがって、前進の道は真ん中です。 途中で、それを支持または矛盾することで生じる新しい証拠に基づいて知識を更新します