web-dev-qa-db-ja.com

機械学習を使用してデータを重複排除する

私は次の問題を抱えており、機械学習を使用できると考えていましたが、それが私のユースケースで機能するかどうかは完全にはわかりません。

名前、住所、メールアドレス、電話番号などの顧客データを含む約1億件のレコードのデータセットがあり、この顧客データをクリーンアップして、データセット内の重複の可能性を特定する方法を見つけたいと考えています。

ほとんどのデータは検証なしで外部システムを使用して手動で入力されているため、多くのお客様がDBに複数のプロファイルを作成し、レコードごとに異なるデータを使用する場合があります。

たとえば、顧客John Doeに対して5つの異なるエントリがあり、それぞれに連絡先の詳細が異なる場合があります。

また、異なる顧客を表す複数のレコードが電子メールなどの主要なフィールドで一致する場合もあります。たとえば、顧客が電子メールアドレスを持っていないが、データ入力システムでコンサルタントがランダムな電子メールアドレスを使用する必要がある場合、同じ電子メールアドレスを使用する多くの異なる顧客プロファイルが作成され、電話やアドレスなどにも同じことが当てはまります。

すべてのデータはElasticsearchでインデックスが作成され、SQLServerデータベースに保存されます。私が最初に考えたのは、Mahoutを機械学習プラットフォームとして使用し(これはJavaショップであるため)、H-baseを使用してデータを保存することでした(Hadoopエコシステムに適合しているからです。それが実際の価値があるかどうかは確かです)が、それについて読むほど、私の場合にどのように機能するかについて混乱します。初心者にとっては、私が使用できるアルゴリズムの種類がわかりません。この問題がどこに該当するかわからない場合、クラスタリングアルゴリズムまたは分類アルゴリズムを使用できますか?もちろん、プロファイルの一意性を構成するもの、つまりどのフィールドについては、特定のルールを使用する必要があります。

アイデアは、これを最初は、新しい顧客プロファイルを入力するときにデータ入力システムが重複の可能性を検証および検出するために使用できる種類の顧客プロファイル重複排除サービスとして展開し、将来的にはこれを分析プラットフォームに発展させて収集することです。お客様に関する洞察。

フィードバックは大歓迎です:)

ありがとう。

24
John K

これについては実際に多くの研究が行われており、人々はこれにさまざまな種類の機械学習アルゴリズムを使用しています。私は個人的に 遺伝的プログラミング を試しましたが、これはかなりうまくいきましたが、個人的には手動でマッチングを調整することを好みます。

このテーマに関する研究論文の参考文献がいくつかあります。 StackOverflowはあまり多くのリンクを必要としませんが、Googleを使用して十分なはずの書誌情報は次のとおりです。

  • リンク検出構成の教師なし学習、Andriy Nikolov、Mathieu d’Aquin、Enrico Motta
  • 類似性メトリック、Shu Rong1、Xing Niu1、Evan Wei Xiang2、Haofen Wang1、Qiang Yang2、およびYongYu1に基づくインスタンスマッチングのための機械学習アプローチ
  • レコードリンケージのブロッキングスキームの学習、MatthewMichelsonおよびCraigA。Knoblock
  • 遺伝的プログラミング、Robert Isele、ChristianBizerを使用した連鎖規則の学習

しかし、それはすべて研究です。あなたがあなたの問題に対する実用的な解決策を探しているなら、私はこのタイプの重複排除のためのオープンソースエンジンを構築しました デューク と呼ばれます。 Luceneを使用してデータにインデックスを付け、より詳細な比較を行う前に一致するものを検索します。遺伝的プログラミング(上記のリンクを参照)を使用してセットアップを作成できるスクリプトがありますが、手動でセットアップする必要があります。 Duke用のElasticSearchプラグインを作成したい人もいますが( スレッドを参照 )、これまでのところ何も行われていません。

とにかく、それは私があなたの場合に取るアプローチです。

16
larsga

ちょうど同様の問題に遭遇したので、少しグーグルもしました。 「Dedupe Python Library」」というライブラリを検索します https://dedupe.io/developers/library/en/latest/

このライブラリのドキュメントには、エントリを重複排除する際の一般的な問題と解決策の詳細、および重複排除フィールドの論文が含まれています。したがって、使用していない場合でも、ドキュメントを読むことをお勧めします。

12
Ryan Li