Tôi cần giúp đỡ về những gì nên là bước tiếp theo của tôi trong một thuật toán tôi đang thiết kế.
Do NDA, tôi không thể tiết lộ nhiều, nhưng tôi sẽ cố gắng chung chung và dễ hiểu.
Về cơ bản, sau vài bước trong các thuật toán, tôi có điều này:
Đối với mỗi khách hàng mà tôi có và các sự kiện họ thực hiện trong một tháng, trong các bước đầu tiên, tôi đã phân nhóm các sự kiện thành nhiều loại (mỗi khách hàng sẽ có các sự kiện được phân tách thành các loại từ 1 đến x là x từ 1 đến 25, nói chung các loại đầu tiên có mật độ sự kiện nhiều hơn các loại khác).
Đối với mỗi danh mục và khách hàng, tôi đã tạo một chuỗi thời gian tổng hợp các sự kiện của tháng mỗi giờ (lấy mẫu khi các sự kiện này được thực hiện). Ngoài ra, tôi đang sử dụng một vài biến số chuẩn hóa dựa trên số ngày trong một tháng (30 ngày) mà anh chàng thực hiện ít nhất một sự kiện và số ngày có ít nhất một sự kiện trong tổng số ngày có ít nhất một sự kiện sự kiện (tổng hợp tất cả các cụm). Cái đầu tiên cho tôi một tỷ lệ về mức độ chủ động của khách hàng trong tháng và cái thứ hai có trọng số so với các loại khác.
Bảng cuối cùng trông như thế này
|*Identifier*| *firstCat* | *feature1* | *feature2* | { *(TIME SERIES)* }
CustomerID | ClusterID | DaysOver30 | DaysOverTotal | Events9AM Events10AM ...
xx | 1 | 0,69 | 0,72 | 0,2 0,13 ...
xx | 2 | 0,11 | 0,28 | 0,1 0,45 ...
xy | 1 | 0,23 | 0,88 | 0,00 0,60 ...
xy | 2 | 0,11 | 0,08 | 1,00 0,00 ...
xy | 3 | 0,10 | 0,04 | 0,40 0,60 ...
Các biến chuỗi thời gian là tỷ lệ phần trăm trên tổng số sự kiện mỗi ngày trên mỗi danh mục cụ thể (điều này có nghĩa là trên mỗi hàng cộng tất cả các biến phải là 1). Lý do của việc đó là vì ví dụ một chuỗi thời gian với các sự kiện 0 0 0 1 0
và 1 1 1 2 1
hoàn toàn khác nhau, và tiêu chuẩn hóa thành bình thường sẽ cho kết quả tương tự. Và do độ lệch cao giữa các loại khác nhau, tôi kiểm tra các giá trị trên chuỗi thời gian một cách độc lập với các loại khác.
Điều tôi cần làm bây giờ là xác định các danh mục này (hãy nhớ rằng chúng có thể từ 1 đến x là x bất kỳ số nào từ 1 đến 25) thành 3 thẻ: thẻ A, thẻ B và Không ai trong số chúng. Nhìn vào các biến này tôi có thể tự xác định chúng thuộc về thẻ nào và ý tưởng là xác định thủ công nhiều nhất có thể và sử dụng bất kỳ thuật toán phân loại nào để tìm hiểu từ đó và xác định tất cả chúng.
Ý tưởng của tôi là sử dụng nhiều hồi quy logistic trên bảng, nhưng tất cả các biến của chuỗi thời gian đều tương quan với nhau (vì chúng là sự kết hợp tuyến tính của nhau), vì vậy tôi nghĩ rằng tôi chỉ nên sử dụng thuật toán phân cụm theo chuỗi thời gian bằng euclidean khoảng cách để phân loại các mẫu khác nhau và sử dụng kết quả và hai biến bình thường hóa khác trong hồi quy logistic.
Một mối quan tâm khác mà tôi có là cách tiếp cận này lấy từng hàng độc lập với các hàng khác và theo lý thuyết, đối với mỗi khách hàng chỉ nên có 0 hoặc 1 thẻ A, 0 hoặc 1 thẻ B và các thẻ còn lại sẽ không có gì (khác mẹo là thông thường Thẻ A và B nằm giữa các loại đầu tiên, vì phụ thuộc nhiều vào các tính năng chuẩn hóa (nếu số ngày trên tổng là Cao, có khả năng cao là hàng là A hoặc B, tùy thuộc vào Mẫu chuỗi thời gian) .
Chỉnh sửa: Đây không còn là vấn đề đáng lo ngại nữa, tôi sẽ chỉ thực hiện hai hồi quy logistic khác nhau, một cho Tag A hoặc Other và một cho Tag B hoặc khác, với xác suất kết quả tôi chỉ có thể chọn tốt nhất.
Bộ dữ liệu là rất lớn và thuật toán cuối cùng cần được áp dụng bằng SQL (trên Teradata), nhưng để có được các hệ số của hồi quy logistic, hoặc các trung tâm của cụm tôi lấy một mẫu và sử dụng R.