15

Tôi có vấn đề sau và nghĩ rằng tôi có thể sử dụng máy học nhưng tôi không hoàn toàn chắc chắn nó sẽ làm việc cho trường hợp sử dụng của tôi.Sử dụng máy học để khử trùng dữ liệu

Tôi có một tập dữ liệu khoảng một trăm triệu bản ghi dữ liệu khách hàng bao gồm tên, địa chỉ, email, điện thoại, v.v ... và tìm cách để làm sạch dữ liệu khách hàng này và xác định các bản sao có thể có trong tập dữ liệu.

Hầu hết dữ liệu đã được nhập thủ công bằng hệ thống bên ngoài không có xác thực nên rất nhiều khách hàng của chúng tôi đã kết thúc với nhiều hồ sơ trong DB của chúng tôi, đôi khi có dữ liệu khác nhau trong mỗi bản ghi.

Ví dụ chúng ta có thể có 5 mục khác nhau cho khách hàng John Doe, mỗi chi tiết liên lạc khác nhau.

Chúng tôi cũng có trường hợp nhiều bản ghi mà đại diện cho khách hàng khác nhau phù hợp trên các lĩnh vực quan trọng như email. Ví dụ: khi khách hàng không có địa chỉ email nhưng hệ thống nhập dữ liệu yêu cầu tư vấn của chúng tôi sẽ sử dụng địa chỉ email ngẫu nhiên, kết quả là nhiều hồ sơ khách hàng khác nhau sử dụng cùng một địa chỉ email, áp dụng cho điện thoại, địa chỉ, v.v.

Tất cả dữ liệu của chúng tôi được lập chỉ mục trong Elasticsearch và được lưu trữ trong Cơ sở dữ liệu SQL Server. Ý tưởng đầu tiên của tôi là sử dụng Mahout như một nền tảng học máy (vì đây là một cửa hàng Java) và có thể sử dụng H-base để lưu trữ dữ liệu của chúng tôi (chỉ vì nó phù hợp với Hệ sinh thái Hadoop, không chắc chắn nó sẽ có giá trị thực), nhưng tôi càng đọc về nó thì tôi càng bối rối về việc nó sẽ hoạt động như thế nào trong trường hợp của tôi, cho những người mới bắt đầu, tôi không chắc loại thuật toán nào tôi có thể sử dụng vì tôi không chắc vấn đề này rơi vào đâu, thế nào tôi có thể sử dụng thuật toán Clustering hoặc thuật toán phân loại? và tất nhiên các quy tắc nhất định sẽ phải được sử dụng như những gì cấu thành tính độc đáo của một cấu hình, tức là các trường nào. Ý tưởng ban đầu được triển khai như một dịch vụ sao chép hồ sơ khách hàng của các loại hệ thống nhập dữ liệu của chúng tôi có thể sử dụng để xác thực và phát hiện các bản sao có thể có khi nhập hồ sơ khách hàng mới và trong tương lai. nền tảng phân tích để thu thập thông tin chi tiết về khách hàng của chúng tôi.

Mọi phản hồi sẽ được đánh giá cao :)

Cảm ơn.

+1

'đôi khi có dữ liệu khác nhau trong mỗi bản ghi.', vậy thuật toán học máy nên tìm bản sao như thế nào? Ngoài ra làm thế nào để bạn biết nếu John Doe là cùng một người nếu anh ta đã được thêm vào với gần như cùng một dữ liệu? IMHO bạn đang ném buzzwords arround và tất cả những gì bạn cần là một mô hình quan hệ chặt chẽ trong cơ sở dữ liệu khách hàng của bạn. –

+0

@thomas Đúng là tôi đang thực sự ném những từ ngữ, sự thật là tôi đang cố gắng tìm hiểu dữ liệu lớn và nghĩ đây sẽ là cơ hội tốt để học, đó là lý do tại sao tôi không biết liệu điều này có hiệu quả không . Ý tưởng là tôi sẽ cần phải phù hợp trên các lĩnh vực quan trọng như email ví dụ đại diện cho tính độc đáo như xa như các doanh nghiệp đi, nghĩ rằng nó không phải luôn luôn đúng sự thật. Cảm ơn bạn đã nhập liệu. –

+0

Không chắc chắn phiên bản Sql Server của bạn là gì nhưng bạn có thể tận dụng lợi thế của các biến đổi làm sạch dữ liệu trong SSIS (nhóm mờ và tra cứu mờ): http://msdn.microsoft.com/en-us/magazine/cc163731. aspx –

Trả lời

14

Có thực sự là rất nhiều nghiên cứu về vấn đề này, và mọi người đã sử dụng nhiều loại khác nhau của các thuật toán máy học cho việc này. Cá nhân tôi đã thử genetic programming, hoạt động khá tốt nhưng cá nhân tôi vẫn thích điều chỉnh theo cách thủ công.

Tôi có một vài tài liệu tham khảo về các tài liệu nghiên cứu về chủ đề này. StackOverflow không muốn quá nhiều liên kết, nhưng đây là thông tin bibliograpic nên đủ sử dụng Google:

  • có giám sát học tập của liên kết Discovery Configuration, Andriy Nikolov, Mathieu d'Aquin, Enrico Motta
  • Một Machine Learning cách tiếp cận để Instance phù hợp Dựa trên tương đồng Metrics, Shu Rong1, Xing Niu1, Evan Wei Xiang2, Haofen Wang1, Qiang Yang2, và Yong Yu1
  • Learning Chặn Schemes cho Ghi Linkage, Matthew Michelson và Craig A. Knoblock
  • Learning Liên kết Quy tắc sử dụng lập trình di truyền, Robert Isele và Christian Bizer

Đó là tất cả nghiên cứu, mặc dù.Nếu bạn đang tìm kiếm một giải pháp thiết thực cho vấn đề của mình, tôi đã xây dựng một công cụ nguồn mở cho loại PC này, được gọi là Duke. Nó lập chỉ mục dữ liệu với Lucene và sau đó tìm kiếm các kết quả phù hợp trước khi thực hiện so sánh chi tiết hơn. Nó yêu cầu thiết lập thủ công, mặc dù có một kịch bản có thể sử dụng lập trình di truyền (xem liên kết ở trên) để tạo một thiết lập cho bạn. Ngoài ra còn có một người muốn thực hiện một plugin ElasticSearch cho Duke (see thread), nhưng không có gì được thực hiện cho đến nay.

Dù sao, đó là cách tiếp cận tôi muốn thực hiện trong trường hợp của bạn.

8

Chỉ gặp vấn đề tương tự như vậy đã làm một chút Google. Tìm thư viện có tên "Thư viện Python Dedupe" https://dedupe.io/developers/library/en/latest/

Tài liệu cho thư viện này có chi tiết về các vấn đề thường gặp và các giấy tờ trong trường không phân biệt. Vì vậy, ngay cả khi bạn không sử dụng nó, vẫn còn tốt để đọc tài liệu.

+0

Tôi hoàn toàn đồng ý, Dedupe trông thực sự tốt và bài viết được viết bởi tác giả cũng đáng đọc nếu bạn muốn giới thiệu về chủ đề: http://www.cs.utexas.edu/~ml/papers/marlin-dissertation-06.pdf –