3

問題の説明は次のようになります。

Webサイトを考えると、2つの事前定義されたクラスのいずれかに分類する必要があります(eコマースWebサイトかどうかなど)。

複数の前処理技術(ストップワードの削除、ステミングなど)と適切な機能を使用して、このためのナイーブベイズアルゴリズムをすでに試しました。

精度を90またはそれより少し近づけたいのですが、このアプローチでは得られません。

ここでの問題は、精度を手動で評価しているときに、アルゴリズムで見落とされることがあるいくつかの識別子(たとえば、チェックアウトボタン、ショップ/ショッピング、ペイパルなど)を探すことです。

rule based classifierこれらの識別子に確信が持てない場合は、一連のルール(優先度に基づいて記述される)に従ってページを分類する場所を作成してみませんか。

たとえば、ショップ/ショッピングが含まれていて、チェックアウトボタンがある場合は、eコマースページです。そして、いくつかの優先順位の多くの同様のルール。

いくつかのルールに応じて、Webサイトの他のページにもアクセスします(現在、ホームページのみにアクセスします。これも、精度があまり高くない理由です)。

ルールベースのアプローチで直面する可能性のある問題は何ですか?それとも、私たちのユースケースに適していますか?

FOIL, AQ洗練されたアルゴリズム(例など)を使用してこれらのルールを作成することをお勧めしますか?

4

2 に答える 2

2
The issue here is, while evaluating the accuracy manually, we look for a few identifiers on web page (e.g. Checkout button, Shop/Shopping,paypal and many more) which are sometimes missed in our algorithms.

では、この情報を分類スキームに含めてみませんか?HTMLで支払い/チェックアウトボタンを見つけるのは難しいことではないので、これらの存在は間違いなく機能であるはずです。優れた分類器は、優れたデータと優れた機能の2つに依存しています。両方持っていることを確認してください!

ルールベースの分類子を実行する必要がある場合は、多かれ少なかれ決定木のように考えてください。関数型プログラミング言語を使用している場合は、非常に簡単に実行できます。基本的には、エンドポイントに到達するまで繰り返します。エンドポイントに到達すると、分類が与えられます。

于 2012-05-08T18:26:59.947 に答える
1

デシジョンツリーアルゴリズムは、データを取得して、ラベルのないインスタンスを予測するためのルールセットを返すことができます。

実際、ディシジョンツリーは実際には一連のルールで構成される再帰下降パーティショナーであり、各ルールはツリー内のノードに配置され、ラベルのないデータインスタンスにそのルールを適用すると、このインスタンスが左フォークまたは右フォーク。

多くのデシジョンツリーの実装では、ルールセットが明示的に生成されますが、これは必須ではありません。ルール(ルールとは何か、デシジョンフローにおけるそのルールの位置の両方)は、を表すツリーを見るだけで簡単に確認できるためです。訓練された決定木分類器。

特に、各ルールは、特定の機能(データ列またはフィールド)の特定の値に対するブールテストにすぎません。

たとえば、各データ行の機能の1つがアプリケーションキャッシュのタイプを記述しているとします。さらに、この機能にmemcacherediscustomの3つの可能な値があるとします。その場合、ルールはアプリケーションキャッシュ| memcache、またはこのデータインスタンスにはredisに基づくアプリケーションキャッシュがありますか?

デシジョンツリーから抽出されたルールはブール値であり、trueまたはfalseのいずれかです。慣例により、Falseは左端(または下の子ノードとこの親ノードの左側へのリンク)で表されます。Trueは、右側のエッジで表されます。

したがって、新しい(ラベルのない)データ行はルートノードで始まり、ルートノードのルールの答えがTrueかFalseかに応じて、右側または左側に送信されます。次のルールは、データインスタンスが最下位レベル(ルールのないノード、またはリーフノード)に到達するまで(少なくともツリー階層のレベルで)適用されます。

データポイントがリーフノードにフィルタリングされると、本質的に分類されます。これは、各リーフノードにトレーニングデータインスタンスの分布が関連付けられているためです(たとえば、GoodとBadがクラスラベルの場合、25%Good | 75%Bad)。 )。この経験分布(理想的な場合は、クラスラベルが1つしかないデータインスタンスで構成されます)によって、不明なデータインスタンスの推定クラスラベルが決まります。

フリー&オープンソースライブラリのOrangeには、おそらく最も広く使用されているC4.5の堅実な実装のように見える決定木モジュール(特定のML手法の実装はOrangeでは「ウィジェット」と呼ばれます)があります。そしておそらく最良の決定木の実装。

O'Reillyサイトには、Pythonで機能するデシジョンツリーモジュールのソースコードを含む、デシジョンツリーの構築と使用に関するチュートリアルがあります

于 2012-05-09T14:44:50.070 に答える