Ứng dụng Machine Learning: phân loại khách hàng thân thiết

Từ dữ liệu về lịch sử sử dụng dịch vụ của khách hàng (giá trị gói dịch vụ, thời gian sử dụng, hình thức gia hạn, thời gian gia hạn dịch vụ(trước khi hết hạn hay sau khi hết hạn mấy ngày)…) ta có thể phân chia khách hàng thành từng nhóm khách hàng khác nhau để có thể chăm sóc khách hàng được tốt hơn.
Một số ví dụ để phân loại khách hàng:

  • Tổng thời gian sử dụng dịch vụ của khách hàng
  • Nhóm khách hàng sử dụng các phương pháp gia hạn
  • Khách hàng gia hạn dựa trên các nhóm truyền thông nào (qua tin nhắn, qua báo chí, qua mạng xã hội, qua ứng dụng…)
  • Nhóm khách hàng theo độ tuổi
  • Nhóm khách hàng theo chương trình hay muốn tham gia
  • Nhóm khách hàng lâu dài…

Ta có thể sử dụng một số phương pháp cơ bản để phân loại khách hàng như thuật toán phân cụm K-MEAN, sử dụng SVM để phân lớp… hoặc các thuật toán nâng cao.

Ứng dụng Machine Learning: phân loại tin nhắn spam (thư spam)

Hàng ngày mình nhận được rất nhiều tin nhắn spam thông qua tin nhắn SMS. Những tin nhắn này bao hàm cả của nhà mạng hoặc các đội spam khác như các cá nhân, công ty, lừa đảo…
Thử làm ứng dụng để phân loại tin nhắn spam để biết đâu là spam, đâu là tin nhắn thường hoặc tin nhắn báo khuyến mại để nhận.

Cách làm phân loại tin nhắn spam đã được nhiều người làm, để đơn giản chắc mình làm trước với nội dung tiếng anh:

  • Loại bỏ các ký tự đặc biệt và các ký tự hay được sử dụng (stop words)
  • Chuyển nội dung SMS dạng text về dạng vector (do các bộ máy đều làm việc dưới dạng số)
  • Tách 80% để train và 20% để test
  • Sử dụng một số thuật toán phổ biến để phân loại: SVM, Naive Bayes.

TIL: Quảng cáo qua Facebook đối với khách hàng tiềm năng

Xem tivi thấy có quảng cáo dịch vụ của một công ty đang có khuyến mãi, mình có gọi điện lên số của tổng đài để hỏi về chương trình khuyến mại này. Cuối cùng cũng không chốt sử dụng vì một số lý do nhưng một điều lạ là sau đó vài hôm trên new feed facebook cá nhân của mình tràn ngập các quảng cáo của công ty đó.

Nghĩ mãi không rõ nguyên nhân vì trước đó mình cũng không quan tâm dịch vụ này nên cũng không tìm kiếm hoặc click quảng cáo gì liên quan.

Một thời gian sau nhân viên công ty đó gọi điện tư vấn chương trình KM mới với mình. Mãi về sau mình mới phát hiện ra cách mà đội quảng cáo đã làm, khá thú vị đó là:
Khi mình gọi điện lên tổng đài của công ty đó, vì mình chưa là khách hàng của công ty nên sẽ được xếp vào dạng khách hàng tiềm năng. Từ danh sách này, công ty đó đã thuê quảng cáo Facebook nhắm đến đối tượng là danh sách người dùng Facebook có số điện thoại đăng ký là mình. Thảo nào trước đây Fb gợi ý và gần như bắt buộc người dùng cập nhật số điện thoại dưới chiêu trò đảm bảo bảo mật.

Ở đây thông tin cá nhân của mình đã bị Facebook sử dụng cho mục đích kiếm tiền của họ thông qua các công ty cần quảng cáo dịch vụ. Đây là một mẹo khá hay vì ít nhất mình có liên hệ chứng tỏ mình đã có 1 chút gì đó quan tâm đến dịch vụ nên việc quảng cáo đến đối tượng này khá hiệu quả.

Câu chuyện này cũng tương tự cách mà 1 đồng nghiệp cũ của mình đề xuất tới công ty đẩy mạnh quảng cáo đối với người dùng qua Facebook với đối tượng như sau:
Sử dụng 1 con bot crawl toàn bộ người dùng ở các Page của đối thủ hoặc người dùng liên quan đến mảnh dịch vụ của công ty để tiến hành quảng cáo trên đối tượng đó.

Hướng tiếp cận bài toán bằng cách vét cạn từng Số nguyên tố

Một bài học quý báu mà thầy Thắng có truyền lại cho đội O trong kỳ thi Olympic như sau:
Vào một năm nào đó, kỳ thi của đội anh Hinh hay anh Hùng dự ACM-ICPC có bài toán cần giải đại loại là cho 1 khoảng và in ra các số nguyên tố trong khoảng đó. Tất nhiên kết quả phải được đưa ra dưới x giây.
Xét về kỹ thuật thông thường ta buộc phải kiểm tra từng số trong khoảng đó và xác định xem đó là có phải số nguyên tố hay không? Với bài toán kinh điển kiểm tra có phải số nguyên tố hay không thì có nhiều thuật toán, nhưng số càng lớn thì càng cần nhiều thời gian hơn để kiểm tra. Và việc xử lý vấn đề thời gian là yếu tố quan trọng nhất vì với các thuật toán hiện tại thì không thể xử lý được trong khoảng thời gian mà ban tổ chức đưa ra…
Vì thi ACM-ICPC không chấm thuật toán mà tính pass hay không thông qua tập test của ban tổ chức. Tất nhiên nếu có danh sách tập test và kết quả của ban tổ chức thì chỉ cần IF ELSE cũng đạt điểm.
Một ý tưởng xử lý rất thông minh đó là ta tiến hành liệt kê ra 1 tập sẵn các số nguyên tố nằm trong phạm vi của đề của ban tổ chức trước, sau đó chương trình chỉ cần đọc file và lấy danh sách số nguyên tố trong khoảng mà đề bài yêu cầu. Độ phức tạp sẽ O(n).
Kết quả của đội là đã giải thành công bài toán, bài đã chấp nhận, file sinh danh sách số nguyên tố gần 1GB, mất gần hết thời gian cả cuộc thi.

Đây là bài toán kinh điển về kinh nghiệm xử lý vấn đề, nó thay đổi tư duy và cách tiếp cận bài toán. Cũng như là phải hiểu rõ phương thức và hoàn cảnh. Nó có thể ứng dụng trong nhiều trường hợp trong công việc và đời sống.

P/S: Tất nhiên cách này không thể áp dụng được trong cuộc thi Olympic vì cuộc thi Olympic là cuộc thi thuật toán, khi ta chưa thể code được chương trình nhưng ta đưa ra được quan điểm, giải thuật xử lý đúng đắn thì ban tổ chức vẫn có thể cộng điểm cho chúng ta.
Với bài toán trên nếu giới hạn dung lượng file thì cũng không thể đạt điểm cho bài toán này.