2011-11-20 12 views
5

Im khá nhiều mới với các hệ thống khai thác dữ liệu và giới thiệu, bây giờ cố gắng để xây dựng một số loại hệ thống rec cho những người dùng có các thông số như:Kết hợp tương đồng khác nhau để xây dựng một tương thức

  • thành phố
  • giáo dục
  • lãi

Để tính tương tự giữa chúng, chúng sẽ áp dụng độ tương tự cosin và độ tương đồng rời rạc. Ví dụ:

  • thành phố: nếu x = y thì d (x, y) = 0. Ngược lại, d (x, y) = 1.
  • giáo dục: đây tôi sẽ sử dụng sự tương đồng cosin như lời xuất hiện trong tên của bộ phận hoặc bằng cử nhân
  • quan tâm: sẽ có hardcoded số người dùng quan tâm có thể chọn và cosin tương tự sẽ được tính toán dựa trên hai vectơ như thế này:

1 0 0 1 0 0 ... n 
1 1 1 0 1 0 ... n 

nơi 1 có nghĩa là sự hiện diện của sở thích và n là tổng số tất cả sở thích.

Câu hỏi của tôi là: Cách kết hợp 3 điểm tương đồng đó theo thứ tự thích hợp? Tôi có nghĩa là chỉ tổng hợp chúng không âm thanh khá thông minh, phải không? Ngoài ra tôi muốn nghe ý kiến ​​về "hệ thống tương tự newbie" của tôi, hah.

+0

Có rất nhiều phương pháp, bạn đã đọc rất nhiều tài liệu về văn học? –

Trả lời

3

Không có câu trả lời khó và nhanh vì câu trả lời ở đây phụ thuộc rất nhiều vào miền nhập và vấn đề của bạn. Rất nhiều công việc học máy là nghệ thuật (không khoa học) chuẩn bị đầu vào của bạn, vì lý do này. Tôi có thể cung cấp cho bạn một số ý tưởng chung để suy nghĩ. Bạn có hai vấn đề: tạo ra những điểm giống nhau có ý nghĩa trong từng mục này và sau đó kết hợp chúng.

Tính tương đồng của thành phố có vẻ hợp lý nhưng thực sự phụ thuộc vào miền của bạn. Có thật là trường hợp ở cùng một thành phố có nghĩa là mọi thứ, và ở các thành phố lân cận có nghĩa là gì không? Ví dụ như ở các thành phố có kích thước tương tự được tính cho bất cứ điều gì? Trong cùng một tiểu bang? Nếu họ làm tương tự của bạn nên phản ánh điều đó.

Giáo dục: Tôi hiểu lý do tại sao bạn có thể sử dụng sự giống nhau về cosin nhưng điều đó sẽ không giải quyết được vấn đề thực sự ở đây, đó là xử lý các mã thông báo khác nhau có cùng ý nghĩa. Bạn cần "eng" và "kỹ thuật" để khớp, và "ba" và "cử nhân", những thứ như thế. Một khi bạn chuẩn bị các thẻ như vậy nó có thể cho kết quả tốt.

Quan tâm: Tôi không nghĩ rằng cosin sẽ là sự lựa chọn tốt nhất ở đây, hãy thử một sự tương đồng về hệ số tanimoto đơn giản (chỉ kích thước giao lộ với quy mô công đoàn).

Bạn không thể chỉ tổng hợp chúng, vì tôi cho rằng bạn vẫn muốn có giá trị trong phạm vi [0,1]. Bạn có thể trung bình họ. Điều đó làm cho giả định rằng đầu ra của mỗi cái này có thể so sánh trực tiếp, rằng chúng là cùng một "đơn vị" nếu bạn muốn. Họ không có ở đây; ví dụ như không phải là xác suất.

Nó có thể vẫn hoạt động OK trong thực tế để trung bình chúng, có lẽ với trọng số. Ví dụ, trong cùng một thành phố ở đây cũng quan trọng như có chính xác cùng sở thích. Điều đó có đúng hay ít quan trọng hơn?

Bạn có thể thử và thử nghiệm các biến thể và trọng số khác nhau với hy vọng bạn có một số lược đồ để thử nghiệm dựa trên dữ liệu lịch sử. Tôi sẽ chỉ cho bạn tại dự án của chúng tôi, Mahout, vì nó có một khuôn khổ hoàn chỉnh cho người giới thiệu và đánh giá.

Tuy nhiên, tất cả các loại giải pháp này đều là hacky và heuristic. Tôi nghĩ bạn có thể muốn thực hiện một cách tiếp cận chính thức hơn để có tính năng mã hóa và tương đồng. Nếu bạn sẵn sàng mua một cuốn sách và như Mahout, Mahout in Action có mức độ phù hợp tốt trong các chương phân cụm về cách chọn và mã hóa các tính năng và sau đó làm thế nào để tạo ra một điểm giống nhau.

+0

Xin cảm ơn! Bảo hiểm thực sự rộng trên ý tưởng chung, giúp rất nhiều. Tôi sẽ suy nghĩ nhiều hơn về sự tương đồng về địa điểm và tôi hoàn toàn hiểu suy nghĩ của bạn về các từ giáo dục phù hợp, tôi hy vọng tôi cũng có thể làm điều đó trong tương lai :) – Leg0

+0

Vậy làm thế nào bạn có thể giới thiệu cho tôi trung bình tất cả những điểm tương đồng đó? Ví dụ, nếu tầm quan trọng của chúng đi theo thứ tự giảm dần, tôi không thể hình dung được nó. – Leg0

+0

Không có ý tưởng đặt hàng; bạn chỉ có thể tính toán mức trung bình có trọng số của các điểm tương đồng theo một số trọng số bạn tạo nên. –

0

Đây là mẹo thông thường trong học máy.

thành phố: nếu x = y thì d (x, y) = 0. Ngược lại, d (x, y) = 1.

tôi thực hiện việc này có nghĩa là bạn sử dụng một-of -K mã hóa. Tốt lắm.

giáo dục: đây tôi sẽ sử dụng sự tương đồng cosin như lời xuất hiện trong tên của bộ phận hoặc bằng cử nhân

Bạn cũng có thể sử dụng một-of-K mã hóa ở đây, để tạo ra một vector của kích thước | V | trong đó V là từ vựng, nghĩa là tất cả các từ trong dữ liệu đào tạo của bạn.

Nếu bây giờ bạn bình thường hóa số lãi suất để nó luôn nằm trong phạm vi [0,1], thì bạn có thể sử dụng các chỉ số khoảng cách L1 (Manhattan) hoặc L2 (Euclide) bình thường giữa các vectơ cuối cùng của bạn. Sau này tương ứng với số liệu tương tự cosin của việc truy xuất thông tin.

Thử nghiệm với L1 và L2 để quyết định cái nào là tốt nhất.

+0

Cảm ơn, nhưng didnt thực sự có được cụm từ "một trong K mã" – Leg0

+0

@ Leg0: đó là một chút khó khăn để giải thích trong một hộp bình luận. Hãy xem [câu hỏi này của tôi] (http://stackoverflow.com/questions/8020403/1-of-k-coding-in-octave) để biết ví dụ. –