2012-05-08 4 views
3

問題文は次のように多少です:バイナリの分類は、ルールベースのアプローチではなく、適切なアルゴリズムで

は、ウェブサイトを考えると、我々は2つの定義済みのクラスのいずれかにそれを分類する必要がある(と言うその電子商取引か)

私たちはすでに複数の前処理技術(ストップワード除去、ステミングなど)と適切な機能を備えたNaive Bayes Algorithmsを試しています。

精度を90以上に近づけたいと考えていますが、このアプローチでは得られていません。

ここで問題となるのは、精度を手動で評価する際に、Googleのアルゴリズムでは紛失することがあるウェブページ(チェックアウトボタン、ショップ/ショッピング、ペイパルなど)でいくつかの識別子を探します。

これらの識別子があまりにも確信が持てる場合は、rule based classifierを作成して、一連の規則(ある優先度に基づいて書かれています)に従ってページを分類してください。

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

いくつかのルールによっては、ウェブサイトの他のページにもアクセスします(現在、私たちはホームページだけを訪問しており、それはあまり正確性が高くないためです)。

ルールベースのアプローチで直面する潜在的な問題は何ですか?それとも、ユースケースの方が良いでしょうか?

洗練されたアルゴリズム(たとえばFOIL, AQなど)でルールを作成することをおすすめしますか?

答えて

1

ディシジョン・ツリーアルゴリズムは、データを取得し、非標識インスタンスの予測にを設定ルールを返すことができます。実際に

、決定木が実際に各ルールは、ラベルなしデータのインスタンスにそのルールのツリーと、アプリケーションでノードに座っているする一連のルールで構成だけ再帰下降パーティで、このインスタンスを送信左側のフォークまたは右側のフォークのいずれかを押し下げます。

多くのデシジョンツリーの実装では、ルールセットが明示的に生成されますが、これは必須ではありません。ルール(ルールとそのルールの位置の両方)は、ツリーであり、訓練された決定木分類器を表す。

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

たとえば、各データ行の機能の1つがのタイプを記述しているとします。アプリケーションキャッシュ;さらに、この機能が3つの可能な値、すなわちmemcache,redisおよびカスタムを有すると仮定する。それから、規則はApplilcation Cache | memcache、またはこのデータインスタンスには、redisに基づくアプリケーションキャッシュがありますか?

決定木から抽出される規則は、ブール - 真または偽です。慣例により、Falseは左端(またはこの親ノードの左下側の子ノードへのリンク)によって表されます。 Trueは右辺エッジで表されます。

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

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

無料&オープンソースライブラリ、Orange、C4.5の固体実装であるように思われた(特定のML技術の実装はオレンジの「ウィジェット」と呼ばれている)decision tree moduleを持っていますおそらく最も広く使用されており、おそらく最良の意思決定ツリーの実装です。

O'Reillyサイトにはtutorial on decision tree construction and useがあり、作業決定木モジュールのソースコードはpythonです。

+0

「規則ベースのすべての分類子を決定木として表すことができる」または「規則に基づく分類子が決定木と同等である」という文を妨げる唯一の事柄は、サイクルを有する規則的でないルールセットまたはルールセットを作成することができ、定義上、決定木は非周期的です。 –

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つに依存しています。あなたは両方を持っていることを確認してください!

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

+1

これらの機能を追加した後も、電子商取引以外のカテゴリのノイズやその他の機能により、非電子商取引として分類されることがあります。 ええ、私はルールベースの部分に同意します。興味深いもの: – instanceOfObject

+2

おそらく、意思決定ツリーベースの分類子を使って問題を突き詰める価値があります。これは、フィーチャ間の依存関係を導入するため、見ているノイズをカットする可能性があります。 – nflacco

+0

また、より良い方法でルールを作成し、機能よりも多くの情報を(時には)提供することができます。例 - 複数の 'と'/'または'句でルールを作成することはできますが、このような機能は提供されません。 私が間違っている場合は、私を訂正してください。 – instanceOfObject

関連する問題