Rでのメールの分類


8

私はRでプロジェクトに取り組んでいます。会社からのメールが約1200通あり、そのほとんどがリクエストのタイプであるclassまたはclassというラベルが付いています。およそ1000通のメールにclassというラベルが付けられ、200通にはclassというラベルが付けられ。私の目標は、教師あり学習を使用して、新しいメールを分類するモデルを構築することです。11 2212

しかし、多くの前処理(構文解析、ストップワードの削除など)を行い、ドキュメント用語行列で一般的なアルゴリズム(SVM、決定木など)を試した後、混乱行列には多くの偽陽性と偽陰性が含まれていましたが、 SVMのほんの少しの偽陰性。

どうすれば結果を改善できるでしょうか。オーバーサンプリング、つまりバイグラムの特徴表現を使用する必要がありますか?問題は、2つのカテゴリのトピックが本当に近いということです。


さらに情報を提供できますか?どのタイプのSVMを使用していますか。たとえば、どのカーネル機能、およびどのようにパラメーターを最適化しましたか?使用した前処理方法の詳細を教えてください。また、クラスは主に2つあるとおっしゃっていましたが、他のクラスはどのように扱っていますか?
カイル。

「2つのカテゴリは本当に近い」 -それらに(または類似のカテゴリに)名前を付けられますか?
lukeA 2016年

各クラスの実際のクラスラベルと説明テキストを提供できますか?科学が詳細です...
Brandon

回答:


2

(すべてのメールはフランス語または英語です)

前処理方法:

  • メールとコンテンツの先頭である「Summary」と「Content」をマージします
  • すべてのメールアドレスを削除
  • すべての「From:Someone To:someone ... subject:something」を削除します
  • メールに含まれるすべての画像を削除する
  • クラスに応じてメールを注文する
  • すべてのフランス語のアクセントをé-> eのようなアクセントなしに置き換えます。ê-> e ...
  • 下にテキストを置く
  • 句読点を削除する
  • 番号を削除
  • 空白を取り除く
  • リストから名前と特定の単語を削除する
  • フランス語と英語のストップワードを削除する
  • フランス語と英語の語幹文書
  • 用語を削除

->次に、TF-IDFを使用して用語行列を文書化します。

2つのクラスは技術サポートからのもので、「複雑」と「簡単」の2つのカテゴリがあります。「複雑」は、金融に関する理論(理論)、ソフトウェアに関する「単純な」問題(理論)ですが、実際には多くの言葉があります。共通して。そして、私がそれらを考慮に入れていない他のクラスは、私は今のところ2つに焦点を当てています

実際、私が使用した分類アルゴリズムの種類は、5つのアルゴで試したがどれも良い結果が得られなかったため、あまり関係がありません。

例(混乱行列)決定木:

  Decision tree:           

pred:

335 | 10
59 | 12

SVM:

331 | 1
83 | 1

Knn (n=10):

330 | 2

83 | 1

Naive Bayes:

1 | 83

12 | 320


これには十分な理由があるかもしれませんが、なぜ添付ファイルや送信者などのフィールドを削除するのですか?これには情報が含まれる場合があります。ある程度似た設定で、特定の種類のドキュメントを作成する傾向がある人がいることがわかりました。
S van Balen 2017年

NBの混同行列は正しいですか?(左上がクラス1の実績と予測であると想定しています)
S van Balen

0

あなたは2つのクラスしか扱っていないのでcommonality.cloud()、両方のクラスからa を作ることができます(私はRでこの関数を使用していますが、他の言語については知りません)。

それは共通しているの単語が表示されますclass1class2。これらの単語は、アルゴリズムがクラスを区別するのに役立たない可能性があるため、これらの単語を削除していくつかのテストを行うことができます。


0

SVMやディシジョンツリーの代わりにベイジアン分類器を試してみるとよいでしょう。あなたの問題は、スパムフィルター問題の一般化です。つまり、電子メールを「スパム」(クラス1)または「非スパム」(クラス2)に分類します。ほとんどのスパムフィルターは、より一般的な教師あり学習方法の代わりにベイジアン分類を使用します。


0

あなたは特徴を研究することができます:私はあなたが数字を削除したことに気づきました。衝突する可能性が低いのでそうしたかもしれませんが、単語クラス(@ number @や@ big_number @など)を導入することで解決することもできます。

他の単語グループで単語クラスを使用することもできます。それが機能する場合は、セットがスパース性に悩まされていることを示している可能性があります(これは私を驚かせません)。たとえば、情報ゲインでディメンションをランク付けすることにより、その目的で機能セレクターを使用できます。

スパース性と戦うためのより高度な方法には、Rocchioのアルゴリズムまたはword2vecがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.