VCディメンションの計算方法は?


12

機械学習を勉強しています。VCディメンションの計算方法を教えてください。

例えば:

h(x)={1if axb0else B R 2、パラメータ。(a,b)R2

それのVC次元は何ですか?

回答:


10

VCディメンションは、バイナリ分類子の機能の推定値です。あなたは一連の見つけることができる場合それは分類器によって粉々にすることができるようにポイントを、(すなわち分類すべての可能な正しくラベル付け)を、あなたはできません見つけるの任意のセット任意のセットのために、すなわち(粉々にできるポイントを分類器が正常にすべてのポイントを区切ることができないように、少なくとも一つのラベリング順序)がある点が、その後、VCの寸法である。2 n n + 1 n + 1 nn2nn+1n+1n

あなたのケースでは、最初に2つの点と考えます。たとえば、です。次に、可能なラベルがありますx 2 x 1 < x 2 2 2 = 4x1x2x1<x222=4

  1. x 21x1:1x2:1
  2. x 20x1:0x2:0
  3. x 20x1:1x2:0
  4. x 21x1:0x2:1

パラメータように設定することにより、分類子を介してすべてのラベル付けを実現できます。A < B Rha<bR

  1. a<x1<x2<b
  2. x1<x2<a<b
  3. a<x1<b<x2
  4. x1<a<x2<b

それぞれ。(実際には、はwlogと見なすことができますが、粉砕できる1つのセットを見つけるには十分です。)x1<x2

ここで、3つの任意(!)点、、およびwlogがであると想定すると、ラベル付け(1,0,1)を達成できません。上記のケース3のように、ラベル:1および:0は意味ます。これは、 > b を意味するため、のラベルは0である必要があります。したがって、分類子は3つの点のセットを粉砕できず、VC次元は2になります。x1x2x3x1<x2<x3x1x2a<x1<b<x2x3x3

-

多分それはより有用な分類器でより明確になります。超平面(つまり、2Dの線)を考えてみましょう。

ラベル付けの方法に関係なく、正しく分類できる3つのポイントのセットを簡単に見つけることができます。

ここに画像の説明を入力してください

すべての可能なラベル付けについて、それらを完全に分離する超平面を見つけることができます。23=8

ただし、4点のセットが見つからないため、可能なすべてのラベリングを正しく分類できました。正式な証明の代わりに、私は視覚的な議論を提示しようとします:24=16

今のところ、4つの点が4つの辺を持つ図形を形成していると仮定します。次に、反対側のコーナーに同じラベルを付けると、点を正しく分離できる超平面を見つけることができません。

それらが4辺の図を形成しない場合、2つの「境界ケース」があります。「外側」の点は、三角形を形成するか、すべて直線を形成する必要があります。三角形の場合、「内側」の点(または2つの角の間の点)に他の点とは異なるラベルが付けられているラベリングが達成できないことが簡単にわかります。

線分の場合も同様です。端点に他の点の1つとは異なるラベルが付けられている場合、それらを超平面で分離することはできません。

2Dで4ポイントの可能なフォーメーションをすべてカバーしたので、粉砕できる4ポイントはないと結論付けることができます。したがって、VCディメンションは3でなければなりません。


1
>しかし、関数はx1 = 0、x2 = 0、x3 = 0を達成できます。すべてのラベルを取得する必要がありますか?
铭声孙

ここでdatascience.stackexchange.com/questions/39064/…と同様の質問をしましたが、これは線形仮説関数に関連しています。答えてくれませんか?
Suhail Gupta

3

分類子のVCディメンションは、次の方法で決定されます。

VC = 1
found = False
while True:
    for point_distribution in all possible point distributions of VC+1 points:
        allcorrect = True
        for classdist in every way the classes could be assigned to the classes:
            adjust classifier
            if classifier can't classify everything correct:
                allcorrect = False
                break
        if allcorrect:
            VC += 1
            continue
    break

したがって、このポイント配置間のすべての可能なクラス分布が正しい方法で分類できるように、3つのポイントを配置する方法は1つだけです。

3点を線上に配置しないと、認識は正しくなります。しかし、どのようにポイントを配置しても、知覚に4ポイントのすべての可能なクラス分布を分類させる方法はありません。

あなたの例

あなたの機能はます。すべての分類子には、少なくとも次元1があります。R

VCディメンション2:4つの状況すべてを正しく分類できます。

  1. ポイント:0および42
  2. 分布:
    • class(0)= False、class(42)= False =>はこれを正しく分類しますa=1337,b=3141
    • class(0)= False、class(42)= True =>はこれを正しく分類しますa=40,b=1337
    • class(0)= True、class(42)= False =>はこれを正しく分類しますa=1,b=1
    • class(0)= True、class(42)= True =>はこれを正しく分類します。a=1,b=1337

VCディメンション3:いいえ、それは機能しません。クラスtrueを想像して、次のfalseように注文してくださいTrue False True。あなたの分類子はそれを扱うことができません。したがって、VC次元は2です。

証明

明らかに、点は、値が異なる場合にのみ区別できます。一般性を失うことなく、と想定できます。したがって、分類子は分類できる必要がありますx1,x2,x3Rx1<x2<x3

class()= True、class()= False、class()= Truex1x2x3

正しくはVC次元3 になりますをTrueとして分類するには が必要です。ため falseに、 必要です。およびとしてでなければなりません。状況は、現在あるよう: については真に分類される、 必要です。しかし、他の制約ではすでに必要でした。したがって、この分類器では、任意の3点のすべてのクラス分布を正しく分類することはできません。したがって、VC次元3はありません。x1

ax1b
x2 A X 1 、X 1 < X 2 B < X 2 A X 1B < X 2 < X 3 X 3、A X 3B B < X 3
x2<a or b<x2
ax1x1<x2b<x2
ax1b<x2<x3
x3
ax3b
b<x3

1
定数分類子のVC次元は0です(そもそも分類子と見なすべきではないと主張することはできますが)
oW_

1
ああ...そうです。しかし、はい、私は、機械学習のコンテキストでデータにまったく適応できないシステムを呼び出しません。
マーティントーマ2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.