Thuật toán kết hợp ưu tiên


12

Có dự án phụ này tôi đang làm việc ở nơi tôi cần cấu trúc một giải pháp cho vấn đề sau.

Tôi có hai nhóm người (khách hàng). Nhóm Adự định mua và nhóm Bdự định bán một sản phẩm xác định X. Sản phẩm có một loạt các thuộc tính x_ivà mục tiêu của tôi là tạo thuận lợi cho giao dịch giữa ABbằng cách phù hợp với sở thích của họ. Ý tưởng chính là chỉ ra cho mỗi thành viên của Amột Bsản phẩm tương ứng phù hợp hơn với nhu cầu của anh ta và ngược lại.

Một số khía cạnh phức tạp của vấn đề:

  1. Danh sách các thuộc tính không hữu hạn. Người mua có thể quan tâm đến một đặc điểm rất đặc biệt hoặc một loại thiết kế nào đó, điều hiếm thấy trong dân chúng và tôi không thể dự đoán được. Trước đây không thể liệt kê tất cả các thuộc tính;

  2. Các thuộc tính có thể là liên tục, nhị phân hoặc không định lượng được (ví dụ: giá cả, chức năng, thiết kế);

Bất kỳ đề nghị về cách tiếp cận vấn đề này và giải quyết nó một cách tự động?

Tôi cũng sẽ đánh giá cao một số tài liệu tham khảo cho các vấn đề tương tự khác nếu có thể.


Gợi ý tuyệt vời! Nhiều điểm tương đồng trong cách tôi nghĩ về cách tiếp cận vấn đề.

Vấn đề chính về ánh xạ các thuộc tính là mức độ chi tiết của sản phẩm sẽ được mô tả phụ thuộc vào từng người mua. Hãy lấy một ví dụ về một chiếc xe hơi. Sản phẩm của hãng xe hơi có rất nhiều thuộc tính từ hiệu suất, cấu trúc cơ học, giá cả, v.v.

Giả sử tôi chỉ muốn một chiếc xe giá rẻ, hoặc một chiếc xe điện. Ok, thật dễ dàng để lập bản đồ vì chúng đại diện cho các tính năng chính của sản phẩm này. Nhưng giả sử, ví dụ, tôi muốn một chiếc xe có hộp số Dual-Clutch hoặc đèn pha Xenon. Vâng, có thể có nhiều chiếc xe trên cơ sở dữ liệu có thuộc tính này nhưng tôi sẽ không yêu cầu người bán điền mức độ chi tiết này cho sản phẩm của họ trước thông tin rằng có ai đó đang tìm kiếm chúng. Một thủ tục như vậy sẽ yêu cầu mỗi người bán điền vào một mẫu phức tạp, rất chi tiết, chỉ cần cố gắng bán chiếc xe của mình trên nền tảng. Chỉ là không làm việc.

Tuy nhiên, thách thức của tôi là cố gắng chi tiết đến mức cần thiết trong quá trình tìm kiếm để tạo ra một trận đấu hay. Vì vậy, cách tôi nghĩ là lập bản đồ các khía cạnh chính của sản phẩm, những khía cạnh có thể phù hợp với mọi người, để thu hẹp nhóm người bán tiềm năng.

Bước tiếp theo sẽ là một cuộc tìm kiếm tinh tế của người Viking. Để tránh tạo ra một hình thức quá chi tiết, tôi có thể yêu cầu người mua và người bán viết một văn bản miễn phí về đặc điểm kỹ thuật của họ. Và sau đó sử dụng một số thuật toán kết hợp từ để tìm các kết quả khớp có thể. Mặc dù tôi hiểu rằng đây không phải là một giải pháp thích hợp cho vấn đề này vì người bán không thể đoán được những gì người mua cần. Nhưng có thể khiến tôi gần gũi.

Các tiêu chí trọng số được đề xuất là tuyệt vời. Nó cho phép tôi định lượng mức độ mà người bán phù hợp với nhu cầu của người mua. Tuy nhiên, phần tỷ lệ có thể là một vấn đề, bởi vì tầm quan trọng của từng thuộc tính khác nhau tùy theo từng khách hàng. Tôi đang nghĩ đến việc sử dụng một số loại nhận dạng mẫu hoặc chỉ yêu cầu người mua nhập mức độ quan trọng của từng thuộc tính.

Câu trả lời:


9

Đề xuất đầu tiên của tôi là bằng cách nào đó ánh xạ các thuộc tính không định lượng thành số lượng với sự trợ giúp của các hàm ánh xạ phù hợp. Nếu không, chỉ cần để chúng ra.

Thứ hai, tôi không nghĩ rằng bạn cần phải giả định rằng danh sách các thuộc tính không hữu hạn. Một cách tiếp cận tiêu chuẩn và trực quan là biểu diễn mỗi thuộc tính như một thứ nguyên riêng trong không gian vectơ. Mỗi sản phẩm sau đó chỉ đơn giản là một điểm trong không gian này. Trong trường hợp đó, nếu bạn muốn tự động thêm nhiều thuộc tính, bạn chỉ cần sắp xếp lại các vectơ sản phẩm vào không gian tính năng mới (với các kích thước bổ sung).

Với đại diện này, người bán là một điểm trong không gian tính năng với các thuộc tính sản phẩm và người mua là một điểm trong cùng một không gian tính năng với các thuộc tính ưu tiên. Nhiệm vụ sau đó là tìm ra điểm người mua tương tự nhất cho một điểm người bán nhất định.

Nếu tập dữ liệu của bạn (tức là số lượng người mua / người bán) không lớn, bạn có thể giải quyết vấn đề này bằng cách tiếp cận hàng xóm gần nhất được thực hiện với sự trợ giúp của cây kd.

Đối với dữ liệu có kích thước rất lớn, bạn có thể thực hiện phương pháp IR. Lập chỉ mục nhóm người bán (tức là các thuộc tính sản phẩm) bằng cách coi mỗi thuộc tính là một thuật ngữ riêng với trọng số thuật ngữ được đặt thành giá trị thuộc tính. Một truy vấn trong trường hợp này là một người mua cũng được mã hóa trong không gian thuật ngữ dưới dạng một vectơ truy vấn với trọng số thuật ngữ phù hợp. Bước truy xuất sẽ trả về cho bạn một danh sách các trận đấu tương tự K hàng đầu.


Wright. Vấn đề chính ở đây là số lượng kích thước, tức là mức độ chi tiết tôi cần sử dụng. Bạn có thể làm rõ cho tôi cách tiếp cận IR IR.
RD

1
Theo IR, tôi có nghĩa là Truy xuất thông tin. Bạn có thể nghĩ rằng các tài liệu (người bán) trong bộ sưu tập của bạn và truy vấn (người mua) đều là các vectơ được nhúng trong một không gian (thuộc tính). Như tôi đã nói, cách tiếp cận như vậy cần một số lượng kích thước đặt trước để làm việc.
Khởi nghiệp

7

Theo đề nghị, đi hoang . Trước hết, hãy sửa tôi nếu tôi sai:

  • Chỉ có một vài tính năng tồn tại cho mỗi sản phẩm độc đáo;
  • Không có danh sách các tính năng cuối cùng và khách hàng có thể thêm các tính năng mới vào sản phẩm của họ.

Nếu vậy, việc xây dựng bảng tính năng sản phẩm đầy đủ có thể tốn kém về mặt tính toán. Và bảng dữ liệu cuối cùng sẽ rất thưa thớt.

Bước đầu tiên là thu hẹp danh sách khách hàng (sản phẩm) để phù hợp. Hãy xây dựng một biểu đồ lưỡng cực, trong đó người bán sẽ là các nút loại 1 và người mua sẽ là các nút loại 2. Tạo lợi thế giữa bất kỳ người bán và người mua nào mỗi khi họ tham chiếu một tính năng sản phẩm tương tự, như trong bản phác thảo sau:

đồ thị

Sử dụng biểu đồ trên, đối với mỗi sản phẩm của người bán duy nhất, bạn chỉ có thể chọn những người mua quan tâm đến các tính năng phù hợp với sản phẩm (có thể lọc ít nhất một tính năng chung, khớp với toàn bộ tính năng hoặc đặt mức ngưỡng). Nhưng chắc chắn, điều đó là không đủ. Bước tiếp theo là so sánh các giá trị tính năng, như được mô tả bởi người bán và người mua. Có rất nhiều biến thể (ví dụ: k-Recent-Neighbor). Nhưng tại sao không thử giải quyết câu hỏi này bằng biểu đồ hiện có? Hãy thêm trọng lượng cho các cạnh:

  • cho các tính năng liên tục (ví dụ: giá):

    price_ weight

  • cho các tính năng nhị phân và không định lượng - chỉ cần điều kiện hai chiều hợp lý:

    tính năng

Ý tưởng chính ở đây là mở rộng mọi tính năng cho khoảng thời gian [0, 1]. Ngoài ra, chúng ta có thể sử dụng các hệ số tính năng để xác định hầu hết các tính năng quan trọng. Ví dụ, giả sử giá quan trọng gấp đôi so với tính khả dụng của một số chức năng hiếm:

adj_w_1

adj_w_2

Một trong những bước cuối cùng là đơn giản hóa cấu trúc biểu đồ và giảm nhiều cạnh xuống một cạnh với trọng số bằng tổng trọng số tính toán trước đó của từng tính năng. Với cấu trúc giảm như vậy, mỗi cặp khách hàng / sản phẩm chỉ có thể có một cạnh (không có cạnh song song). Vì vậy, để tìm thỏa thuận tốt nhất cho người bán chính xác, bạn chỉ cần chọn người mua được kết nối với các cạnh có trọng số tối đa.

Thách thức trong tương lai: giới thiệu một phương pháp giá rẻ cho các cạnh trọng số ở bước đầu tiên :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.