Thuật toán nào tôi có thể sử dụng để tìm mối tương quan giữa các sự kiện?


12

Tôi chưa quen với học máy nên tôi đang cố gắng tìm một số tài liệu nhưng tôi thậm chí không chắc Google sẽ làm gì. Dữ liệu của tôi có dạng sau:

User A performs Action P
User B performs Action Q
User C performs Action R
...
User C performs Action X
User A performs Action Y
User B performs Action Z
...

Trong đó mỗi Hành động có một số đặc điểm nhất định (ngày, giờ, khách hàng, v.v.). Có khoảng 300 người dùng và chúng tôi có khoảng 20.000 hành động.

Câu hỏi :

Tôi muốn tìm hiểu xem có bất kỳ mối quan hệ nhân quả / tương quan giữa các hành động của người dùng. Ví dụ: "mỗi lần Người dùng E thực hiện Hành động T, 2 ngày sau Người dùng G thực hiện Hành động V". Nhưng ở giữa, có thể có nhiều người dùng khác thực hiện nhiều hành động khác và có thể không tìm thấy mối tương quan nào. Cũng có thể một số người dùng có tương quan, nhưng những người khác hoàn toàn độc lập. Đây có phải là thứ mà máy học có thể tìm thấy cho tôi không? Có một thuật toán cụ thể hoặc bộ thuật toán nào có thể giúp tôi không?

Tôi đã đọc về Phân tích Hiệp hội và thuật toán Apriori nhưng tôi không nghĩ rằng điều này sẽ cung cấp cho tôi những gì tôi cần, vì nó dường như yêu cầu các bộ dữ liệu được phân tách rõ ràng, làm đầu vào, trong khi tôi chỉ có một dòng người dùng dường như ngẫu nhiên hành động. Bất kỳ đề xuất về những gì để xem sẽ được đánh giá cao nhất!


1
G= =(V,E)P(Tôi,j)Tôij

Câu trả lời:


1

Tôi nghĩ rằng bạn đã thực hiện một số chuẩn bị dữ liệu trước khi sử dụng bất kỳ thuật toán nào để tìm các mục thường xuyên được đặt và quy tắc kết hợp.

Xem bảng giao dịch trong bài viết này: phân tích giỏ thị trường

Trong trường hợp của bạn, bạn cần đặt (và tinh chỉnh) khoảng thời gian tối đa giữa các tương tác dự kiến ​​sẽ tương quan, sau đó bạn có thể chọn một người dùng thường xuyên và với mỗi giao dịch anh ta thực hiện (hoặc một mẫu), bạn sẽ đính kèm hồ sơ duy nhất 2 ngày giao dịch người dùng khác. Các thuộc tính nên được boolean như

UserA,transactionP |UserB,transaction Z| UserB, transaction F | [...]

Điều đó thực sự hữu ích, cảm ơn! Vì vậy, tôi sẽ chạy thuật toán một lần cho mỗi người dùng, hỏi xem liệu có người dùng nào khác có tương quan với người dùng đó không, hoặc có thể chạy nó chỉ một lần và hỏi "hiển thị cho tôi các nhóm người dùng có tương quan" không?
Matt

Bằng cách làm theo cách tiếp cận của tôi, bạn chỉ có thể kiểm tra một "mẫu" được bắt đầu bởi một vài người dùng + tra sition. Những người dùng và hành động nào sẽ được chọn, nó phụ thuộc vào kiến ​​thức của bạn về mối tương quan có thể.
Caesko80

Ba gợi ý. 1. Thu hẹp yêu cầu của bạn. Không phải là thiếu tôn trọng, nhưng không có một quy trình thống kê toàn diện, tuyệt vời nào có thể cho bạn biết tất cả các hiệp hội có ý nghĩa trong số rất nhiều, rất nhiều điều có thể có trong dữ liệu của bạn. 2. Đọc lên phân tích chuỗi thời gian. 3. Đọc các phương pháp phân biệt nguyên nhân với tương quan đơn thuần. Thật không may, tôi không có bất kỳ sửa chữa nhanh chóng để cung cấp!
rolando2

1

Một cách để khám phá dữ liệu của bạn là tạo một bảng hành động trước x hành động tiếp theo. Vì vậy, đối với mỗi sự kiện, hãy tìm hành động tiếp theo của cùng một người dùng. Bạn có thể lập bảng tương tự trì hoãn hành động X trước đó cho đến hành động tiếp theo.

Sau đó, bạn có thể khám phá xem hành động trước có ảnh hưởng đến hành động tiếp theo hay không. Nếu không, thì người dùng của bạn là "không quốc tịch".

Một cách đơn giản hóa khác có thể là bỏ qua các userids và hỏi xem tần suất của mỗi hành động có giống nhau theo thời gian hay khác nhau không; và nếu thay đổi cho dù đó là chu kỳ hoặc cho thấy một xu hướng.

Câu trả lời cho những câu hỏi này có thể cho thấy rằng dữ liệu của bạn có ít cấu trúc. Ngoài ra, họ có thể đưa ra một số giả thuyết mới để kiểm tra.


1

Đây là một câu hỏi thú vị. Cách tiếp cận tốt nhất là xem xét toàn bộ tập dữ liệu và tạo bảng tần số. Ví dụ: Người dùng A đang thực hiện Hành động P và Y Người dùng B đang thực hiện Hành động Q và Z, Người dùng C thực hiện Hành động R và X Tương tự như vậy, có nhiều người dùng thực hiện nhiều hành động hơn. Vì vậy, có một số cách tiếp cận để đối phó với tập dữ liệu này 1) Thuật toán cụm để nhóm các mục tương tự trong các nhóm khác nhau 2) Phân tích giỏ thị trường để xác định người dùng so với ánh xạ và tần suất hành động

Không đi qua toàn bộ tập dữ liệu, không nên quy định bất kỳ thuật toán cụ thể nào cho các loại câu hỏi này.

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.