我們在內部應用上有大量用戶操作資料集。我正在嘗試為路徑和漏斗分析創建一個演算法,該演算法將采用路徑引數(即起點和終點)以及為漏斗定義的操作步驟。用大資料進行編程的最佳演算法是什么?輸出應該只是針對特定操作集的用戶計數,例如:
要掃描的檔案格式:
| 用戶身份 | 行動 | TS |
|---|---|---|
| 1 | 一個 | 2022 年 6 月 4 日 |
| 1 | 乙 | 2022 年 6 月 4 日 |
| 1 | C | 2022 年 6 月 4 日 |
| 1 | D | 2022 年 6 月 4 日 |
| 2 | G | 2022 年 6 月 4 日 |
| 2 | H | 2022 年 6 月 4 日 |
| 2 | ? | 2022 年 6 月 4 日 |
演算法輸入引數:
- 對于路徑:起點 A 和終點 F 的用戶統計資訊
- 對于漏斗:定義步驟 A->B->C->D 的用戶統計資訊
| 小路 | 數數 |
|---|---|
| A->B->C->D | 385 |
| G->H->K | 89 |
其中 A,B,C,D,... 是用戶操作或頁面的節點。
使用 Python 處理較小的集合應該很容易,但問題是,我擔心性能,因為我正在處理數百萬條這樣的記錄。請幫忙!
uj5u.com熱心網友回復:
假如說
...
1 A ts
1 B ts
...
在輸入資料中意味著用戶 1 去了 A -> B
演算法是
CREATE new table paths_users_followed
CREATE new path
LOOP over data input rows, except last
IF user in row equals user in row 1
ADD action in row to path
IF row 1 is last row
ADD action in last to path
ADD user, path to paths_users_followed
ELSE
ADD user, path to paths_users_followed
CREATE new PATH
ENDLOOP
LOOP P over input of "path statistics"
COUNT occurrences of P in paths_users_followed
這可以使用高性能資料庫引擎最容易和最有效地實作——我會使用 SQLite。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/488650.html
