Học máy đã trở thành một phần không thể thiếu trong bối cảnh công nghệ, cho phép các doanh nghiệp trích xuất những hiểu biết có giá trị từ dữ liệu của họ. Bây giờ nó đã trở nên phổ biến và tạo thành nền tảng của Trí tuệ nhân tạo (AI).
Ví dụ: bạn có thể đã nghe nói về một thứ gọi là ChatGPT, gần đây đã thực hiện một số vòng trên Internet và vừa được ca ngợi vì khả năng kỳ lạ (đôi khi) của nó, vừa bị nguyền rủa vì nó gây đau đầu cho bất cứ điều gì từ trường học và Đại học đến nghiên cứu các ấn phẩm giấy đến các trang web Hỏi & Đáp như StackOverflow.
Tuy nhiên, việc xây dựng các mô hình học máy có khả năng dự đoán kết quả dựa trên một số thông tin hiện có (ví dụ: dự đoán liệu khối u là lành tính hay ác tính) theo truyền thống đòi hỏi chuyên môn đáng kể về mã hóa và khoa học dữ liệu, khiến nhiều tổ chức không thể tiếp cận được. Điều này đặc biệt đúng đối với các công ty nhỏ hơn, có thể không thể thuê các nhà khoa học dữ liệu hoặc không thể mua phần cứng đủ mạnh để chạy một số thuật toán phức tạp hơn.
Học máy low-code đang nổi lên như một cách để chống lại những vấn đề này. Với sự trợ giúp của các nền tảng low-code, doanh nghiệp có thể xây dựng và triển khai các ứng dụng machine learning mà không cần đội ngũ chuyên gia. Ngay cả các công ty lớn hơn cũng có thể hưởng lợi từ các nền tảng như vậy, vì một số tác vụ có thể được giảm tải cho nền tảng để giải phóng thời gian cho các nhiệm vụ phức tạp hơn được thực hiện bởi các nhà khoa học dữ liệu và chuyên gia học máy.
Trong bài viết này, một nền tảng học máy mã thấp sẽ được điều tra để xem loại công cụ nào có sẵn, dễ sử dụng như thế nào, loại kết quả nào có thể đạt được và liệu nó có thể thay đổi cách các doanh nghiệp tiếp cận việc ra quyết định dựa trên dữ liệu hay không.
Có rất nhiều công ty trò chơi, với mục đích không chỉ là khiến mọi người chơi trò chơi của họ mà còn giữ họ chơi trò chơi càng lâu càng tốt. Điều này đặc biệt quan trọng đối với các trò chơi miễn phí, thường bao gồm một số hình thức giao dịch vi mô.
Có lẽ một trong những hình thức giao dịch vi mô phổ biến nhất là mua tiền tệ trong trò chơi, sau đó cho phép người chơi mua các vật phẩm có thể tạo điều kiện thuận lợi cho tiến trình cấp độ hoặc cho phép tùy chỉnh. Chính những giao dịch mua trong trò chơi này đã tài trợ cho sự phát triển của trò chơi.
Do đó, điều quan trọng là phải theo dõi số lượng người chơi ngừng chơi trò chơi, còn được gọi là tỷ lệ rời bỏ. Tỷ lệ rời bỏ càng cao, số lượng người chơi rời khỏi trò chơi càng cao và thu nhập được tạo ra càng ít.
Trong bài viết này, chúng tôi sẽ sử dụng một tập dữ liệu trong thế giới thực, chứa thông tin về từng cấp độ mà một người đã chơi. Ví dụ: có thông tin về lượng thời gian chơi, người chơi thắng hay thua cấp độ, số cấp độ, v.v. Tính năng mục tiêu cần được dự đoán trong tập dữ liệu của chúng tôi là 'Churn', có giá trị là 1 nếu người chơi không chơi trò chơi trong hơn 2 tuần sau khi hoàn thành cấp độ và 0 nếu không.
ID người dùng cũng đã được đưa vào, nhưng chúng đã được ẩn danh để không tiết lộ danh tính của người chơi ban đầu. Một số trường cũng đã bị xóa. Tuy nhiên, nó sẽ cung cấp một cơ sở vững chắc để xem liệu các công cụ của Actable AI có thể hữu ích trong việc cố gắng dự đoán liệu người chơi có rời bỏ hay không. Ứng dụng web, thay vì tiện ích bổ sung Google Trang tính, sẽ được sử dụng trong bài viết này.
Bộ dữ liệu có tổng cộng 789.879 hàng (mẫu), khá đáng kể và sẽ giúp giảm các hiệu ứng như mô hình quá phù hợp.
Ý nghĩa của từng tính năng như sau:
Một trong những nhiệm vụ đầu tiên cần được thực hiện bởi các nhà khoa học dữ liệu - và có lẽ là một trong những nhiệm vụ tẻ nhạt hơn - liên quan đến phân tích dữ liệu thăm dò (EDA).
EDA là một phương pháp phân tích dữ liệu liên quan đến việc tóm tắt, trực quan hóa và hiểu các đặc điểm chính của tập dữ liệu. Mục tiêu của EDA là hiểu rõ hơn về dữ liệu và xác định bất kỳ mẫu, xu hướng hoặc bất thường nào có thể có mặt.
Khi thực hiện EDA, các nhà phân tích thường sử dụng các phương pháp thống kê để tính toán số liệu thống kê tóm tắt như giá trị trung bình, trung vị và độ lệch chuẩn. Họ cũng tạo ra các hình ảnh trực quan như biểu đồ, biểu đồ phân tán và biểu đồ hộp để hiểu rõ hơn về phân phối và mối quan hệ giữa các biến.
Rõ ràng, EDA là một bước quan trọng trong quá trình phân tích dữ liệu vì nó có thể giúp các nhà phân tích phát hiện ra các vấn đề tiềm ẩn với dữ liệu, chẳng hạn như các giá trị bị thiếu hoặc ngoại lệ và thông báo cho việc lựa chọn các mô hình thống kê thích hợp cho các phân tích tiếp theo. Nó cũng có thể giúp hiểu mối quan hệ giữa các tính năng và cách kết hợp các tính năng hiện có để tạo ra các tính năng mới mang tính mô tả nhiều hơn và có khả năng cải thiện hiệu suất mô hình.
Như đã đề cập, Actable AI cung cấp một bộ công cụ cho phép trực quan hóa và tính toán số liệu thống kê. Tuy nhiên, trước khi sử dụng bất kỳ công cụ nào trong số này, dữ liệu phải được cung cấp cho nền tảng. Có ba cách để thực hiện việc này, cụ thể là tải lên tệp CSV, bằng cách tải lên tệp Excel hoặc bằng cách kết nối trực tiếp với cơ sở dữ liệu:
Vì dữ liệu của tôi được lưu trữ trong một tệp .csv, tôi đã chọn tùy chọn 'tải lên CSV' sau đó tôi có thể xem dữ liệu trên nền tảng:
Các hàng cũng có thể được lọc nhanh để tập trung vào các giá trị cụ thể bằng cách nhập giá trị mong muốn vào hàng trên cùng cho cột mong muốn. Tab 'thống kê' cung cấp một số thống kê cho từng cột trong tập dữ liệu, trong đó giá trị trung bình và độ lệch chuẩn của các giá trị số được tính toán và số lượng (và tỷ lệ phần trăm) mẫu cho mỗi nhãn trong một lớp được đưa ra:
Trong hình trên, chúng ta có thể thấy rằng nguyên nhân chính của kết thúc cấp độ (đại diện bởi 'EndType') là do người chơi thua trò chơi (63.6%) so với 35.2% người chơi thắng trò chơi.
Chúng ta cũng có thể thấy rằng mỗi cấp độ được chơi trung bình 126.6 giây +/- 133.2 giây và cột 'UsedChangeCar' dường như vô dụng vì nó chứa cùng một giá trị cho tất cả các hàng.
Hơn nữa, giá trị mục tiêu của chúng tôi rất mất cân bằng, chỉ có 63 mẫu trong số 10.000 hàng đầu tiên (tức là 0,6% dữ liệu) có giá trị rời bỏ là 1 (tức là người chơi đã khuấy động).
Một loại phân tích hữu ích là mối tương quan giữa các tính năng, đặc biệt là các tính năng của các tính năng dự đoán với tính năng đích. Điều này có thể được thực hiện bằng cách sử dụng công cụ 'Phân tích tương quan', nơi có thể thu được một số thông tin chi tiết hữu ích (có thể được xem trực tiếp trên nền tảng AI có thể hành động tại đây):
Trong biểu đồ trên, các thanh màu xanh lam cho biết mối tương quan của một đối tượng địa lý với Churn khi giá trị bằng 1, trong khi các thanh màu cam biểu thị mối tương quan tính năng khi Churn bằng 0. Có một số điều rút ra, chẳng hạn như những người chơi mất cấp độ dễ bị khuấy động hơn, và ngược lại những người chơi giành được một cấp độ có xu hướng tiếp tục chơi. Điều này cũng được thể hiện bằng cách sử dụng bản đồ nhiệt:
Rõ ràng là phần lớn các mẫu mà người chơi đã thua trò chơi tương ứng với trường hợp khi Churn bằng 1. Điều đó nói rằng, cũng cần lưu ý rằng mối tương quan Spearman khá thấp, cho thấy các tính năng riêng lẻ này tương quan khá yếu với mục tiêu của chúng tôi. Điều này có nghĩa là có thể sẽ cần phải thực hiện kỹ thuật tính năng, theo đó các tính năng hiện có được sử dụng để tạo ra các tính năng mới nắm bắt thông tin nổi bật hơn cho phép mô hình thực hiện các dự đoán chính xác hơn.
Trong thế giới thực, chúng ta thường phải tạo ra các tính năng mới tương quan hơn với tính năng mục tiêu, từ đó cho phép dự đoán đáng tin cậy hơn. Tuy nhiên, trước khi tạo các tính năng mới, cần xem loại hiệu suất nào chúng ta có thể đạt được chỉ bằng cách sử dụng các tính năng gốc trong tập dữ liệu của mình. Để làm như vậy, chúng ta cần sử dụng phân tích phân loại, vì chúng ta muốn dự đoán liệu một người chơi có khuấy động hay không. Nói cách khác, chúng tôi muốn gán một trong hai nhãn cho mỗi hàng, dựa trên một tập hợp các tính năng.
Điều này có nghĩa là chúng ta có thể dự đoán liệu người chơi sẽ khuấy động (ngừng chơi) dựa trên dữ liệu như thời gian chơi, loại kết thúc, số lần di chuyển đã được sử dụng để hoàn thành cấp độ, v.v. Do đó, nó sẽ cho phép nhà phát triển trò chơi phản hồi nhanh chóng nếu dự đoán rằng nhiều người sẽ ngừng chơi trò chơi. Nó cũng có thể giúp xác định xem có cấp độ nào đặc biệt rắc rối hay không, để có thể thiết kế các cấp độ hấp dẫn hơn.
Khởi chạy phân tích phân loại trong Actable AI cung cấp cho chúng ta một số tùy chọn, trong đó chủ yếu nhất như sau:
Ngoài ra còn có một số tùy chọn nâng cao hơn (nằm trong tab 'Nâng cao') như sau:
Sau khi hoàn tất, chúng ta có thể tiếp tục và đào tạo các mô hình bằng cách nhấp vào nút 'chạy'.
Sau vài phút, kết quả được tạo và hiển thị, cũng có thể được xem tại đây. Một số số liệu khác nhau được tính toán, đây không chỉ là thực hành tốt mà còn khá cần thiết nếu chúng ta thực sự muốn hiểu mô hình của mình, vì mỗi số liệu tập trung vào các khía cạnh nhất định của hiệu suất của mô hình. Chỉ số đầu tiên được hiển thị là chỉ số tối ưu hóa, với giá trị là 0,675.
Điều này không tuyệt vời, nhưng hãy nhớ lại rằng chúng tôi đã không tối ưu hóa mô hình cho chất lượng. Hơn nữa, trong EDA của chúng tôi, chúng tôi nhận thấy rằng các tính năng tương quan khá yếu với mục tiêu, vì vậy không có gì ngạc nhiên khi hiệu suất có lẽ không đột phá.
Kết quả này cũng nhấn mạnh tầm quan trọng của việc hiểu kết quả; Chúng tôi thường sẽ rất hài lòng với độ chính xác 99,7%. Tuy nhiên, điều này phần lớn là do tính chất mất cân bằng của tập dữ liệu, vì vậy ngay cả một bộ phân loại giả chỉ đơn giản là chọn lớp phổ biến nhất cũng có thể đạt được điểm cao. Một bài viết tuyệt vời về điều này có thể được xem ở đây.
ROC và các đường cong thu hồi chính xác cũng được hiển thị, một lần nữa cho thấy hiệu suất hơi kém:
Những đường cong này cũng hữu ích để xác định ngưỡng nào chúng ta có thể sử dụng trong ứng dụng cuối cùng của mình. Ví dụ: nếu mong muốn giảm thiểu số lượng dương tính giả, thì chúng ta có thể chọn ngưỡng mà mô hình đạt được độ chính xác cao hơn và kiểm tra việc thu hồi tương ứng sẽ như thế nào.
Một ma trận nhầm lẫn cũng được hiển thị, so sánh các nhãn dự đoán với các nhãn thực tế. Tuy nhiên, điều này giả định ngưỡng xác suất là 0,5, điều này không đặc biệt hữu ích trong trường hợp của chúng tôi vì chúng tôi có thể muốn sử dụng các ngưỡng khác nhau như đã thảo luận ở trên:
Tiếp theo, chúng ta có thể thấy bảng tầm quan trọng của tính năng, đây có lẽ là một trong những tính năng thú vị hơn trong ứng dụng Actable AI. Điều này là do, như tên cho thấy, nó thể hiện tầm quan trọng của từng tính năng đối với mô hình tốt nhất thu được. Giá trị P cũng được hiển thị để xác định độ tin cậy của kết quả:
Có lẽ không có gì đáng ngạc nhiên, tính năng quan trọng nhất là 'EndType' (hiển thị nguyên nhân khiến cấp độ kết thúc, chẳng hạn như thắng hoặc thua), tiếp theo là 'MaxLevel' (cấp độ cao nhất do người dùng chơi, với số lượng cao hơn cho thấy người chơi khá tham gia và tích cực trong trò chơi). Mặt khác, 'UsedMoves' (số lần di chuyển được thực hiện bởi người chơi) thực tế là vô dụng và 'StartMoves' (số lần di chuyển có sẵn cho người chơi) thực sự có thể gây hại cho hiệu suất. Điều này cũng có ý nghĩa, vì số lần di chuyển được người chơi sử dụng và có sẵn cho người chơi không có nhiều thông tin; Tuy nhiên, so sánh giữa chúng có thể hữu ích hơn nhiều.
Tiếp theo là một bảng hiển thị xác suất ước tính của mỗi lớp (trong trường hợp này là 1 hoặc 0), được sử dụng để suy ra lớp dự đoán (theo mặc định, lớp có xác suất trên 0,5, tức là xác suất cao nhất, được gán là lớp dự đoán).
Vì tùy chọn 'Giải thích dự đoán' cũng được chọn, các giá trị Shapley cũng được hiển thị. Về cơ bản, các giá trị này cho thấy sự đóng góp của tính năng vào xác suất của lớp dự đoán. Ví dụ: ở hàng đầu tiên, chúng ta có thể thấy rằng giá trị 'RollingLosses' là 36 làm giảm xác suất của lớp dự đoán (0, tức là người đó sẽ tiếp tục chơi trò chơi) cho người chơi đó.
Ngược lại, điều này có nghĩa là xác suất của lớp khác (1, tức là một người chơi khuấy động) được tăng lên. Điều này có ý nghĩa, bởi vì các giá trị cao hơn của 'RollingLosses' chỉ ra rằng người chơi đã mất nhiều cấp độ và do đó có nhiều khả năng ngừng chơi trò chơi. Mặt khác, các giá trị thấp của 'RollingLoss' thường cải thiện xác suất của lớp âm (tức là người chơi sẽ không ngừng chơi).
Thông tin nâng cao hơn cũng có thể được xem trong tab 'Bảng xếp hạng', hiển thị chi tiết về tất cả các mô hình được đào tạo, bao gồm loại của chúng (ví dụ: XGBoost, LightGBM, v.v.), điểm số liệu, loại đào tạo, thời gian dự đoán, siêu tham số được sử dụng và các tính năng (cột) được sử dụng. Tất cả các mô hình này được đào tạo tự động mà chúng tôi không cần phải xử lý trực tiếp việc viết mã, bao gồm đặc tả dữ liệu và gói để nhập, xử lý các loại dữ liệu, cài đặt tùy chọn, v.v.
Sau đó, chúng ta cũng có thể sử dụng mô hình tốt nhất để tạo các dự đoán mới, sử dụng một trong hai phương pháp: chúng ta có thể điền thủ công các giá trị cho mỗi cột và đặt ngưỡng xác suất để xác định lớp nào sẽ chọn hoặc chúng ta cũng có thể sử dụng API được cung cấp để sử dụng mô hình trên tập dữ liệu của riêng mình.
Tại thời điểm này, chúng ta có thể thử cải thiện hiệu suất của mô hình. Có lẽ một trong những cách dễ nhất là chọn tùy chọn 'Tối ưu hóa cho chất lượng' và xem chúng ta có thể đi được bao xa. Tôi đã làm điều đó và nhận được kết quả sau (bạn cũng có thể xem tại đây):
Tập trung vào chỉ số ROC AUC mà chúng tôi đã chọn làm chỉ số tối ưu hóa, hiệu suất đã cải thiện từ 0,675 lên 0,709. Đây là một sự gia tăng khá tốt đẹp cho một thay đổi đơn giản như vậy. Nhưng có điều gì khác mà chúng ta có thể làm để cải thiện hiệu suất hơn nữa không?
Thực sự có một cách để làm điều này, nhưng liên quan đến một số phức tạp bổ sung dưới dạng kỹ thuật tính năng. Điều này liên quan đến việc tạo ra các tính năng mới từ các tính năng hiện có, có thể nắm bắt các mẫu mạnh hơn và có tương quan cao hơn với biến được dự đoán.
Thông thường, tại thời điểm này, chúng tôi sẽ cố gắng tạo ra một số tính năng mới có thể hữu ích hơn trong việc dự đoán mục tiêu của chúng tôi. Phải thừa nhận rằng đây là một bước nâng cao được thực hiện bởi các chuyên gia, nhưng nó cho thấy rằng nền tảng AI có thể hành động có thể xử lý cả các trường hợp sử dụng đơn giản và các trường hợp phức tạp hơn.
Trong trường hợp của chúng tôi, có thể rất hữu ích để tóm tắt các bản ghi theo thời gian. Ví dụ: chúng tôi có thể tạo các cột trong đó mỗi hàng được cập nhật dựa trên lịch sử chơi trong quá khứ của người chơi. Điều này có thể được thực hiện bằng hai phương pháp trong nền tảng Actable AI, đó là (1) cột được tính toán hoặc (2) SQL Lab.
Hãy bắt đầu với các cột được tính toán. Bạn được trình bày với một giao diện nơi bạn có thể cung cấp tên cho cột mới và biểu thức SQL được sử dụng để tạo cột mới. Các tùy chọn khác cũng được cung cấp, chẳng hạn như đặc tả kiểu dữ liệu của cột.
SQL Lab, như tên cho thấy, cũng liên quan đến việc viết các biểu thức SQL. Tuy nhiên, bây giờ bạn được cung cấp một bảng điều khiển nơi bạn có thể viết một số truy vấn. Điều này mang lại sự linh hoạt cao hơn khi tạo nhiều cột và khi cần sử dụng các tùy chọn nâng cao hơn, chẳng hạn như cửa sổ bộ lọc. Truy vấn sau đó có thể được chạy, theo đó bảng được tạo có thể được lưu dưới dạng tập dữ liệu mới mà trên đó các công cụ và phân tích mong muốn có thể được áp dụng.
Nếu bạn không quá quen thuộc với SQL, bạn có thể thử sử dụng một cái gì đó như ChatGPT để tạo các truy vấn cho bạn. Trong thử nghiệm hạn chế của tôi, đó là một chút hit-and-miss, vì vậy tôi khuyên bạn nên kiểm tra kết quả theo cách thủ công để xác minh rằng đầu ra mong muốn đang được tính toán chính xác. Rất may, điều này có thể dễ dàng thực hiện bằng cách kiểm tra bảng được hiển thị sau khi truy vấn được chạy trong SQL Lab. Đây là mã SQL tôi đã sử dụng để tạo các cột:
LỰA
*,
SUM ("PlayTime") OVER UserLevelWindow AS "time_spent_on_level",
(a." Max_Level" - a." Min_Level") LÀ "levels_completed_in_last_7_days",
COALESCE(CAST("total_wins_in_last_14_days" LÀ SỐ THẬP PHÂN)/NULLIF("total_losses_in_last_14_days", 0), 0,0) LÀ "win_to_lose_ratio_in_last_14_days",
COALESCE(SUM("UsedCoins") OVER User1DayWindow, 0) AS "UsedCoins_in_last_1_days",
COALESCE(SUM("UsedCoins") OVER User7DayWindow, 0) LÀ "UsedCoins_in_last_7_days",
COALESCE(SUM("UsedCoins") OVER User14DayWindow, 0) LÀ "UsedCoins_in_last_14_days",
COALESCE(SUM("ExtraMoves") OVER User1DayWindow, 0) LÀ "ExtraMoves_in_last_1_days",
COALESCE(SUM("ExtraMoves") OVER User7DayWindow, 0) LÀ "ExtraMoves_in_last_7_days",
COALESCE(SUM("ExtraMoves") OVER User14DayWindow, 0) LÀ "ExtraMoves_in_last_14_days",
AVG("RollingLosses") OVER User7DayWindow AS "RollingLosses_mean_last_7_days",
AVG ("MaxLevel") OVER PastWindow AS "MaxLevel_mean"
TỪ (
LỰA
*,
MAX ("Cấp độ") OVER User7DayWindow AS "Max_Level",
MIN ("Level") OVER User7DayWindow AS "Min_Level",
SUM(CASE WHEN "EndType" = 'Lose' THEN 1 ELSE 0 END) OVER User14DayWindow AS "total_losses_in_last_14_days",
SUM(CASE WHEN "EndType" = 'Win' THEN 1 ELSE 0 END) OVER User14DayWindow AS "total_wins_in_last_14_days",
SUM ("PlayTime") OVER User7DayWindow AS "PlayTime_cumul_7_days",
SUM ("RollingLosses") OVER User7DayWindow AS "RollingLosses_cumul_7_days",
SUM ("PlayTime") OVER UserPastWindow AS "PlayTime_cumul"
TỪ "game_data_levels"
CỬA SỔ
User7DayWindow AS (
PHÂN VÙNG THEO "UserID"
ĐẶT HÀNG THEO "ServerTime"
PHẠM VI GIỮA KHOẢNG THỜI GIAN "7" NGÀY TRƯỚC VÀ HÀNG HIỆN TẠI
),
User14DayWindow AS (
PHÂN VÙNG THEO "UserID"
ĐẶT HÀNG THEO "ServerTime"
PHẠM VI GIỮA KHOẢNG THỜI GIAN "14" NGÀY TRƯỚC VÀ HÀNG HIỆN TẠI
),
UserPastWindow AS (
PHÂN VÙNG THEO "UserID"
ĐẶT HÀNG THEO "ServerTime"
CÁC HÀNG GIỮA HÀNG TRƯỚC VÀ HÀNG HIỆN TẠI KHÔNG GIỚI HẠN
)
) NHƯ một
CỬA SỔ
UserLevelWindow AS (
PHÂN VÙNG THEO "UserID", "Cấp độ"
ĐẶT HÀNG THEO "ServerTime"
CÁC HÀNG GIỮA HÀNG TRƯỚC VÀ HÀNG HIỆN TẠI KHÔNG GIỚI HẠN
),
PastWindow AS (
ĐẶT HÀNG THEO "ServerTime"
CÁC HÀNG GIỮA HÀNG TRƯỚC VÀ HÀNG HIỆN TẠI KHÔNG GIỚI HẠN
),
User1DayWindow AS (
PHÂN VÙNG THEO "UserID"
ORDER BY "ServerTime"
PHẠM VI GIỮA KHOẢNG THỜI GIAN '1' NGÀY TRƯỚC VÀ HÀNG HIỆN TẠI
),
User7DayWindow AS (
PHÂN VÙNG THEO "UserID"
ĐẶT HÀNG THEO "ServerTime"
PHẠM VI GIỮA KHOẢNG THỜI GIAN "7" NGÀY TRƯỚC VÀ HÀNG HIỆN TẠI
),
User14DayWindow AS (
PHÂN VÙNG THEO "UserID"
ĐẶT HÀNG THEO "ServerTime"
PHẠM VI GIỮA KHOẢNG THỜI GIAN "14" NGÀY TRƯỚC VÀ HÀNG HIỆN TẠI
)
ĐẶT HÀNG THEO "ServerTime";
Hầu hết các tên tính năng phải tự giải thích; Ví dụ: chúng tôi hiện đang tính toán tổng thời gian mà người dùng đã chơi trò chơi (tức là không chỉ cho phiên hiện tại), số xu được sử dụng trong ngày, tuần và 2 tuần qua, v.v. Tất cả những điều này nhằm cung cấp một số bối cảnh lịch sử về hành trình của người chơi trong trò chơi.
Sau khi hài lòng với các tính năng được tạo, chúng tôi có thể lưu bảng dưới dạng tập dữ liệu mới và chạy một mô hình mới (hy vọng) sẽ đạt được hiệu suất tốt hơn.
Đã đến lúc xem các cột mới có hữu ích không. Chúng ta có thể lặp lại các bước tương tự như trước đây, với sự khác biệt duy nhất là bây giờ chúng ta sử dụng tập dữ liệu mới có chứa các tính năng bổ sung. Các cài đặt tương tự được sử dụng để cho phép so sánh công bằng với kết quả ban đầu, với các kết quả sau (cũng có thể được xem tại đây):
Một lần nữa tập trung vào AUC, điều này được cải thiện nhiều so với giá trị ban đầu là 0,675; Nó thậm chí còn tốt hơn mô hình được tối ưu hóa cho chất lượng (0,709). Điều này thể hiện tầm quan trọng của việc hiểu dữ liệu của bạn và tạo ra các tính năng mới có thể cung cấp thông tin phong phú hơn.
Bây giờ sẽ rất thú vị khi xem tính năng mới nào của chúng tôi thực sự hữu ích nhất; Một lần nữa, chúng ta có thể sử dụng bảng tầm quan trọng của tính năng:
Có vẻ như tổng số trận thua trong 2 tuần qua là khá quan trọng, điều này có ý nghĩa bởi vì người chơi càng thường xuyên thua một trò chơi, họ có nhiều khả năng trở nên thất vọng và ngừng chơi. Mức tối đa trung bình trên tất cả người dùng cũng có vẻ quan trọng, điều này một lần nữa có ý nghĩa vì nó có thể được sử dụng để xác định khoảng cách giữa người chơi với phần lớn người chơi khác (cao hơn nhiều so với mức trung bình cho thấy người chơi đắm chìm trong trò chơi, trong khi các giá trị thấp hơn nhiều so với mức trung bình có thể chỉ ra rằng người chơi vẫn không có động lực tốt).
Đây chỉ là một vài tính năng đơn giản mà chúng tôi có thể đã tạo. Có những tính năng khác mà chúng tôi có thể tạo, có thể cải thiện hiệu suất hơn nữa. Tôi sẽ để lại điều đó như một bài tập cho người đọc để xem những tính năng khác có thể được tạo ra.
Đào tạo một mô hình được tối ưu hóa về chất lượng với cùng giới hạn thời gian như trước đây không cải thiện hiệu suất. Tuy nhiên, điều này có lẽ là dễ hiểu vì một số lượng lớn các tính năng đang được sử dụng, do đó có thể dành nhiều thời gian hơn để tối ưu hóa. Như có thể quan sát ở đây, việc tăng giới hạn thời gian lên 6 giờ thực sự cải thiện hiệu suất lên 0.923 (về AUC):
Tóm lại, chúng tôi đã sử dụng nền tảng Actable AI để tải tập dữ liệu, khám phá các tính năng của nó, tạo các tính năng mới và đào tạo các mô hình phân loại. Tầm quan trọng của tính năng và sự đóng góp của mỗi giá trị tính năng đối với xác suất của lớp dự đoán cũng được tính toán, có thể được nghiên cứu để xác định những hiểu biết hữu ích nào có thể được rút ra để cải thiện hiệu suất mô hình. Chúng cũng có thể được sử dụng để giúp nhà phát triển trò chơi cải thiện thiết kế cấp độ để giữ cho người chơi tham gia nhiều hơn, giảm tỷ lệ rời bỏ và từ đó tăng doanh thu.
Như đã đề cập ở trên, có nhiều hơn nữa có thể được thực hiện. Các mô hình có thể được đào tạo lâu hơn, có thể tạo nhiều tính năng hơn, các bộ lọc và số liệu tối ưu hóa khác nhau có thể được sử dụng và các cách khác để xác định tỷ lệ rời bỏ có thể được xem xét.
Các công cụ khác cũng có thể được sử dụng, chẳng hạn như phân tích phản thực tế (để xác định ảnh hưởng đến kết quả khi một trong các đầu vào thay đổi), dự báo chuỗi thời gian (để xác định xem có bất kỳ xu hướng theo mùa nào không) và suy luận nhân quả (xem xét các tương tác giữa các tính năng để xác định xem sự thay đổi trong các biến dự đoán có thực sự gây ra thay đổi cho kết quả hay không).