Ứ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.

Xây dựng ngân hàng từ khóa, các thẻ và phân loại giữa chúng

Xây dựng ngân hàng từ khóa, các thẻ và phân loại giữa chúng

Từ bài viết: Phương án thu thập các từ khóa  , nghĩ lại thì ta làm rõ mục đích nghiên cứu về từ khóa.

Trong biển vô tận các từ khóa, ta khó lòng xác định được hết các từ khóa liên quan hoặc đám mây các từ khóa về một lĩnh vực hoặc chủ đề nào đó.

Ta cần phân tích các từ khóa, để tìm ra mối tương quan, liên hệ giữa các từ khóa để tiến hành xác định danh sách các từ khóa vào một lĩnh vực.

Ý tưởng như sau:

Mỗi một từ khóa là một điểm, mỗi một từ khóa cùng xuất hiện ở 1 trang web hoặc 1 tên miền hoặc có sự liên quan thì ta đánh là 1 cung(có thể đánh thêm trọng số, cung là có hướng). Đồ thị hóa toàn bộ thông tin này cho ta một đồ thị có hướng, xác định  được đồ thị này ta có thể tiến hành phân tích tiếp theo

  • Dựa vào số bậc (số cạnh) để xác định được từ khóa cha con..
  • Xác định được miền từ khóa
  • Phân loại từ khóa thuộc các lĩnh vực nào
  • Phân cấp được từ khóa
  • Tìm các từ khóa tương đương
  • Nghiên cứu các vấn đề xung quanh 1 từ khóa

Cảnh báo khoảng cách an toàn giữa các xe

Cảnh báo khoảng cách an toàn giữa các xe
Đầu tháng 09/2017, thời sự VTV đã thông báo về nguyên nhân xảy ra việc tai nạn thảm khốc trên cao tốc Nội Bài – Lào Cai giữa xe khách Hà Nội – Lào Cai với xe tải là do khoảng cách an toàn giữa các xe bị vi phạm.
Không chỉ trên cao tốc mà trên đường quốc lộ thường, việc làm chủ tốc độ là 1 vấn đề nhưng việc giữ khoảng cách an toàn là 1 điều cần thiết. Việc sự cố bất ngờ xảy ra với xe đằng trước sẽ dẫn đến tai nạn liên hoàn nếu việc giữa khoảng cách an toàn không được tuân thủ. Không phải tự nhiên mới sinh ra luật, cảnh báo, yêu cầu về việc giữ khoảng cách an toàn khi lưu thông trên đường.
Để hỗ trợ lái xe và đưa ra các cảnh báo về khoảng cách giữa các xe khi lưu thông trên đường là điều cần thiết.
Ứng dụng Công nghệ thông tin có thể giúp các lái xe chú ý hơn về khoảng cách an toàn:
– Ứng dụng, chương trình được cài trên xe sẽ đo và cảnh báo trực tiếp tới tài xế đơn giản bằng cách thông báo tốc độ xe đang di chuyển, khoảng cách với xe đằng trước – xe đằng sau, tốc độ của xe đằng trước hoặc các thông tin khác một cách tức thì(real time).
– Tương tự ứng dụng ở trên nhưng kết nối internet để tiến hành thông tin về trung tâm giám sát hành trình của nhà xe hoặc công an giao thông để tiến hành xử phạt(khi ứng dụng hộp đen cho toàn bộ xe hơi)
– Việc giám sát tương tự được thực hiện bởi các camera trên các đường cao tốc hoặc đường thường nhằm xác định sự vi phạm hoặc cảnh báo, xử phạt đối với các xe vi phạm.
Các cách thức để xác định khoảng cách giữa các xe như sau:
+ Sử dụng các camera hành trình trên chính các chiếc xe, sử dụng các thuật toán xử lý ảnh để tính toán trên video thu được.
+ Sử dụng các camera giám sát giao thông, sử dụng các thuật toán xử lý ảnh để tính toán.
+ Khi đã số hóa, trang bị hộp đen cho các xe thì có thể sử dụng GPS để tiến hành định vị hoặc tính khoảng các giữa các xe…
Hi vọng các ứng dụng này góp phần làm giảm việc không giữ khoảng cách an toàn khi tham gia lưu thông trên đường, nhất là đường cao tốc.

Năm mức ngu dốt

Bài báo Five levels of ignorance ở Communications of the ACM (số 10, năm 2000) của Phillip G. Armour nhìn quá trình phát triển phần mềm như việc nắm bắt tri thức và giảm sự ngu dốt. Lý luận của ông rằng phần mềm là phương tiện thứ năm chứa tri thức rất hay (bốn phương tiện kia là DNA, não, phần cứng các loại, và sách).

Ông chia sự ngu dốt (về vấn đề X nào đó) nói chung, và dốt trong phát triển phần mềm nói riêng ra là năm mức:

  • 0OI – không dốt: để đạt mức này ta phải biết X và chứng minh được rằng ta biết X. Ví dụ: tôi biết viết blog!
  • 1OI – thiếu kiến thức: để … đạt được mức dốt này thì ta phải biết là ta thiếu kiến thức về X. Ví dụ: tôi biết là tôi không biết gì về cơ học lượng tử. Đạt được mức dốt này cũng đã tốt, vì nếu có nhu cầu tôi có thể đi tìm sách vở tài liệu về cơ học lượng tử để học thêm.
  • 2OI – thiếu nhận thức: ở mức dốt này thì ta không biết là ta không biết gì về X. Hiển nhiên là ta không thể cho ví dụ về 2OI nào! Tuy nhiên, thỉnh thoảng đọc sách đọc báo,đọc blog KHMT (!), tôi có thể tìm ra được nhiều thứ chưa bao giờ biết là mình không biết, và như thế tôi chuyển các thứ đó lên 1OI. Dù rằng với cơ học lượng tử nói chung thì tôi ở mức 1OI, chắc chắn là có các đối tượng cụ thể nào đó trong cơ học lượng tử mà tôi ở mức 2OI.
  • 3OI – thiếu quá trình: ở mức dốt này thì ta thiếu một quá trình cụ thể để khám phá ra rằng mình đang không biết rằng mình đang không biết về X. Nói cách khác, ở mức dốt này thì ta không biết cách nào để tìm ra các thứ mà ta không biết rằng ta không biết :-).
  • 4OI – siêu dốt: chữ này tôi dịch bừa từ chữ meta-ignorance, vì meta-physics người ta dịch là siêu hình (học). Ở mức dốt này thì ta không biết gì về năm mức ngu dốt.

Đến đây thì tôi không còn ở mức 4OI được nữa. (OI viết tắt của Order of Ignorance.)

Dân máy tính thường phải đọc/học rất nhiều để theo kịp sự phát triển với tốc độ ánh sáng của ngành mình. Trong quá trình này, với mỗi vấn đề X của ngành, ta sẽ chuyển dần dần từ 3OI xuống 1OI. Sau đó, nếu X là cái mà ta thật sự thích hoặc cần cho công việc thì sẽ chuyển nó lên 0OI.

Rất nhiều sinh viên và nghiên cứu sinh KHMT ở mức 3OI khi mới bắt đầu đi học. Sau đó họ tìm hiểu về quá trình nghiên cứu, quá trình tìm các vấn đề và hướng nghiên cứu mới, quá trính cập nhật kiến thức về ngành của mình, và chuyển dần các thứ lên 2OI. Để có một quá trình hiệu quả từ 3OI lên 2OI không dễ chút nào. Ví dụ đơn giản: các journals, conference nào trong ngành mình là có giá trị, làm thế nào để tìm đọc các bài trong chúng, phương pháp lọc bài đọc thế nào, vân vân.

Sau khi học được quá trình này rồi, ta có phương tiện để chuyển dần các khối kiến thức khác nhau lên 1OI. Đến khi sắp ra trường, chuẩn bị làm luận án Ph.D về cái gì đó thì (hy vọng rằng) ta đã có vài thứ ở 0OI.

Bookmark online

 

Hiện nay tất cả các trình duyệt đều hỗ trợ tính năng lưu bookmark cá nhân của mình. Nhưng đối với mình thì hiện tại bookmark có 1 số điểm yếu như sau:
– Do bookmark là đi theo từng trình duyệt cài từng máy nên việc lưu động chuyển qua các máy tính khác khó khăn. Ví dụ ở công ty dùng thì khó đồng bộ realtime với máy ở nhà, rồi đối với các thiết bị di động.
– Google Chrome đã tích hợp sẵn bookmark với tài khoản email. Nên mọi lúc mọi nơi đều có thể truy cập được, đây là 1 tính năng khá tiện ích.(Firefox cũng có nhưng khá khó hiểu và khó khăn khi dùng)
– Các bookmark của các trình duyệt khác nhau khá khó để tiến hành đồng bộ với nhau được.(Tất nhiên có thể import và export)
– Khi lưu bookmark, việc duyệt ngoại tuyến là không thể hoặc khi link chết thì không thể nào truy cập được, theo đó cũng mất luôn hoặc không còn tác dụng nữa. Firefox có extention là Pocket cũng khá hay nhưng có vẻ phức tạp.
– Đối với các trình duyệt thì đều có thể tạo phân cấp thư mục được nhưng việc quản lý nó khá là sơ khai. Khó có thể thống kê hoặc thao tác với nó.
– Việc trích xuất các thông tin ra để thống kê… thì cũng rất hạn chế.

Qua kiểm tra trên internet cũng có khá nhiều bọn nước ngoài làm cái bookmark online nhưng cảm giác không phù hợp với người Việt mình. Mình đề xuất ý tưởng thiết kế bookmark online với các tính năng sau:
– Là một trang web quản lý bookmark của mình
– Các tính năng tương đương với bookmark của trình duyệt. Làm được việc này thì cần thiết kế các extention cho các trình duyệt để người dùng thao tác dễ dàng hơn
– Cung cấp tài khoản cho người dùng để người dùng có thể dùng muôn nơi, không phụ thuộc loại trình duyệt, các máy tính khác nhau
– Khi lưu thông tin trang web phải đảm bảo lưu được các thông tin sau: url, title, description, keywork, lưu trang với dạng ngoại tuyến.
– Một url có thể lưu ở nhiều thư mục khác nhau.
– Có thể thống kê, đánh giá các lĩnh vực lưu nhiều, các trang phổ biến…

Mỗi ngày một kiến thức mới

Lấy tên theo ý tưởng từ chương trình Mỗi ngày một cuốn sách trên chương trình VTV1 mỗi buổi sáng, thì đây là mỗi ngày một kiến thức mới.

Mỗi ngày một kiến thức mới

Manh nha ra ý tưởng này xuất phát từ việc mình luôn muốn tìm hiểu về nhiều lĩnh vực, vấn đề này mình đã đề cập đến ở bài Muốn tìm hiểu những cái mà ta chưa biết. Một phương pháp mình định áp dụng đó là tận dụng thông tin từ trang https://vi.wikipedia.org.

Đây là từ điển bách khoa toàn thư mở, ai cũng có thể sửa chữa hoặc thêm bài (tất nhiên sẽ phải có đội ngũ quản trị – phi chính phủ) bởi vậy thông tin là đa chiều và có thể một số thông tin không được chính xác và chính thống. Chi tiết bạn có thể xem thêm thông tin.

Từ nguồn dữ liệu phong phú này, ta có thể tận dụng để làm bàn đạp lấy các thông tin ở đây để tiến hành mở mang trí thức cho bản thân. Bởi vì dù làm thợ hay làm thầy, mọi người đều cần phải biết rộng (sau đó sâu theo vấn đề nào thì tùy).

Trang này có mục: Bài viết ngẫu nhiên khá là hay và thú vị.

Theo ý tưởng trên, mình sẽ thiết kế 1 app hay trang web để lấy thông tin ngẫu nhiên này làm tính năng đề xuất hàng ngày để mình tìm hiểu. Hàng ngày ta chỉ cần vào 1 lần, lấy ý tưởng từ đó mà dành một thời gian ngắn 10-15 phút để có thêm những kiến thức bổ ích mới.

Mỗi ngày một kiến thức mới đem đến cho ta sự tò mò và có những hiểu biết mới về cuộc sống. Vì không cố định về chủ đề nào nên ta có thể vô tình biết được những kiến thức bổ ích mà trước đây có thể ta chưa bao giờ có thể tưởng tượng tới.