Sử dụng các thuộc tính để phân loại / cụm hồ sơ người dùng


14

Tôi có một bộ dữ liệu người dùng mua sản phẩm từ một trang web.

Các thuộc tính tôi có là id người dùng, vùng (trạng thái) của người dùng, id danh mục của sản phẩm, id từ khóa của sản phẩm, id từ khóa của trang web và số tiền bán hàng của sản phẩm.

Mục tiêu là sử dụng thông tin của một sản phẩm và trang web để xác định người dùng là ai, chẳng hạn như "nam game thủ trẻ" hay "mẹ ở nhà".

Tôi đính kèm một hình ảnh mẫu như dưới đây:

nhập mô tả hình ảnh ở đây

Có tất cả 1940 danh mục duy nhất và 13845 từ khóa duy nhất cho các sản phẩm. Đối với trang web, có 13063 từ khóa duy nhất. Toàn bộ dữ liệu là rất lớn vì đó là dữ liệu đăng nhập hàng ngày.

Tôi đang nghĩ đến việc phân cụm, vì những cái đó không được giám sát, nhưng những id đó được đặt số không có ý nghĩa số. Sau đó, tôi không biết làm thế nào để áp dụng thuật toán. Tôi cũng đang nghĩ đến việc phân loại. Nếu tôi thêm một cột lớp dựa trên số lượng bán sản phẩm đã mua. Tôi nghĩ rằng cụm được ưa thích hơn. Tôi không biết nên sử dụng thuật toán nào cho trường hợp này vì kích thước của id từ khóa có thể hơn 10000 (mỗi sản phẩm có thể có nhiều từ khóa, trang web cũng vậy). Tôi cần sử dụng Spark cho dự án này.

Bất cứ ai có thể giúp tôi với một số ý tưởng hoặc đề xuất?

Cảm ơn bạn rất nhiều!


1
bạn có thể cung cấp thêm thông tin không? "danh mục id của sản phẩm A" là gì và "tìm kiếm từ khóa id của sản phẩm A" có cùng độ dài cho tất cả các mục? "Kích thước của id từ khóa tìm kiếm có thể lớn hơn 10000" tại sao? họ là ai? Bạn có bao nhiêu mẫu? tất cả các câu hỏi có thể được trả lời nếu bạn đăng một vài mẫu dữ liệu của bạn ở đây. Sau đó tôi có thể đề nghị bạn một cái gì đó.
Kasra Manshaei

Sản phẩm A và sản phẩm B có phải là hai sản phẩm mà người dùng đã mua không? Từ ngữ dường như gợi ý rằng các sản phẩm A và B khác nhau đối với mỗi người dùng, vì các từ khóa có thể khác nhau. Có phải vậy không? Và bình luận cuối cùng, bạn muốn phân loại hoặc cụm? Đó là những kỹ thuật khá khác nhau :)
logc

Cảm ơn bạn @kasramsh rất nhiều vì đã trả lời. Tôi đã cập nhật mô tả và cũng đính kèm một dữ liệu mẫu. Hy vọng sẽ nhận được một số gợi ý từ bạn!
sylvia

@logc có, sản phẩm (tôi đã nói sản phẩm A sớm hơn) và trang web (tôi đã nói sản phẩm B trước đó) khác với mỗi người dùng. Mỗi sản phẩm có một vài từ khóa và mỗi trang web cũng có một vài từ khóa. Hoặc phân cụm hoặc phân loại là tốt, miễn là tôi có thể tạo một hồ sơ người dùng, chẳng hạn như "nam game thủ trẻ"; "Ở nhà đi mẹ". Tôi nghĩ rằng phân cụm là thích hợp hơn. Cảm ơn bạn!!
gió

@sylvia - Mình có vấn đề tương tự cần giải quyết. Tôi đã đăng nó như một câu hỏi riêng biệt. Bạn có thể đưa ra một số gợi ý về cách bạn giải quyết nó? datascience.stackexchange.com/questions/12930/ Từ nghi ngờ khác của tôi là cho K có nghĩa là, bạn đã nhóm các hồ sơ theo khách hàng? Có nghĩa là mỗi hàng đại diện cho một giao dịch hoặc nó đại diện cho các giao dịch mua tổng hợp của khách hàng đó cho đến ngày.
Neil

Câu trả lời:


11

Ngay bây giờ, tôi chỉ có thời gian cho một câu trả lời rất ngắn gọn, nhưng tôi sẽ cố gắng mở rộng nó sau này.

Những gì bạn muốn làm là một cụm , vì bạn muốn khám phá một số nhãn cho dữ liệu của bạn. (Trái ngược với phân loại, nơi bạn sẽ có nhãn cho ít nhất một số dữ liệu và bạn muốn gắn nhãn cho phần còn lại).

Để thực hiện phân cụm trên người dùng của bạn, bạn cần có chúng dưới dạng một số điểm trong một không gian trừu tượng. Sau đó, bạn sẽ đo khoảng cách giữa các điểm và nói rằng các điểm "gần" là "tương tự" và gắn nhãn chúng theo vị trí của chúng trong không gian đó.

Bạn cần chuyển đổi dữ liệu của mình thành một cái gì đó trông giống như hồ sơ người dùng, nghĩa là: ID người dùng, theo sau là một vectơ số đại diện cho các tính năng của người dùng này. Trong trường hợp của bạn, mỗi tính năng có thể là "danh mục trang web" hoặc "danh mục sản phẩm" và con số có thể là số tiền được chi cho tính năng đó. Hoặc một tính năng có thể là sự kết hợp của web và sản phẩm, tất nhiên.

Ví dụ, chúng ta hãy tưởng tượng hồ sơ người dùng chỉ với ba tính năng:

  • đô la chi tiêu trong các trang web "techy",
  • đô la chi cho các sản phẩm "thời trang",
  • và đô la chi cho các trò chơi video "hung hăng" trên các trang web "hướng đến gia đình" (ai biết).

Để xây dựng các cấu hình đó, bạn cần ánh xạ "danh mục" và "từ khóa" mà bạn có, quá phong phú, vào các tính năng bạn nghĩ là có liên quan. Nhìn vào mô hình chủ đề hoặc tương tự ngữ nghĩa để làm như vậy. Khi bản đồ đó được xây dựng, nó sẽ cho biết rằng tất cả đô la chi cho các trang web có từ khóa "tiện ích", "điện tử", "lập trình" và X khác, tất cả sẽ được tổng hợp thành tính năng đầu tiên của chúng tôi; và như thế.

Đừng sợ "áp đặt" các tính năng! Bạn sẽ cần tinh chỉnh chúng và có thể thay đổi hoàn toàn chúng sau khi bạn phân cụm người dùng.

Khi bạn có hồ sơ người dùng, hãy tiến hành phân cụm chúng bằng cách sử dụng phương tiện k hoặc bất cứ điều gì khác mà bạn cho là thú vị. Dù bạn sử dụng kỹ thuật nào, bạn sẽ quan tâm đến việc lấy điểm "đại diện" cho mỗi cụm. Đây thường là "tâm" hình học của các điểm trong cụm đó.

Vẽ các điểm "đại diện" đó và cũng vẽ sơ đồ cách chúng so sánh với các cụm khác. Sử dụng biểu đồ radar rất hữu ích ở đây. Bất cứ nơi nào có một tính năng nổi bật (một cái gì đó trong đại diện được đánh dấu rất rõ và cũng rất nổi bật so với các cụm khác) là một ứng cử viên tốt để giúp bạn gắn nhãn cụm từ với một số cụm từ hấp dẫn ("mọt sách", "fashionistas" , "Các bà mẹ hung hăng" ...).

Hãy nhớ rằng một vấn đề phân cụm là một vấn đề mở, vì vậy không có giải pháp "đúng"! Và tôi nghĩ câu trả lời của tôi đã khá dài rồi; cũng kiểm tra về việc chuẩn hóa các cấu hình và lọc các ngoại lệ.


Cảm ơn bạn rất nhiều! Nó rất hữu ích. Tôi sẽ bắt đầu từ bản đồ. Tôi rất trân trọng điều này!
sylvia

Vui vẻ giúp đỡ. :)
logc

Xin chào @logc, tôi đã áp dụng LDA để chọn các tính năng. Tôi coi mỗi user_id là một "tài liệu" và các từ khóa là "từ" trong "tài liệu", sau đó bằng cách áp dụng LDA tôi đã có được một vài chủ đề của từ khóa. Tuy nhiên, tôi không biết tại sao hầu hết các chủ đề của tôi đều có cùng một từ khóa. Điều đó có nghĩa là LDA không phải là phương pháp phù hợp cho trường hợp của tôi hay có một số sai lầm? Cảm ơn bạn rất nhiều!
sylvia

@sylvia: Tôi muốn đề nghị bạn biến câu hỏi đó thành một câu hỏi mới trên trang web này. Mặt khác, chúng tôi có thể sẽ viết rất nhiều bình luận, và đó không phải là định dạng tốt nhất cho Q & A. :)
đăng nhập

Cám ơn vì sự gợi ý. Đây là liên kết tôi đã đăng nếu bạn có thời gian để xem datascience.stackexchange.com/questions/5941/ cảm ơn!
thánh

-2

Để định hướng và khám phá, tôi có thể giới thiệu WeKa , đây là một bộ công cụ rất hay để học máy. Nó có một định dạng đầu vào nhất định (.ARFF) vì vậy bạn cũng có thể cần phải xem xét điều đó.

Đối với vấn đề nan giải từ khóa, tôi khuyên bạn nên thực hiện một số lựa chọn tính năng để loại bỏ các từ khóa dư thừa hoặc không chỉ định.


Cảm ơn bạn @Lennart Kloppenburg đã trả lời của bạn. Làm cách nào để thực hiện lựa chọn tính năng nếu thuộc tính (keword_id) được đặt hàng số? Tôi đã cập nhật một dữ liệu mẫu ở trên. Bạn có thể vui lòng xem và cho tôi một số gợi ý? Cảm ơn bạn!
sylvia
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.