[ML] Phân tích và đặc tả yêu cầu trong Machine Learning

Phân tích và định rõ yêu cầu là bước kỹ thuật đầu tiên trong tiến trình thực hiện Machine Learning. Henry Ford đã nói một câu rất hay rằng:

“Nếu tôi hỏi khách hàng xem họ muốn gì, có lẽ họ sẽ nói rằng họ muốn có một con ngựa biết chạy nhanh hơn”.

Có rất nhiều bài toán mà End User đưa ra khá mơ hồ, không cụ thể rõ ràng khiến cho việc xây dựng mô hình dự đoán không thể thực hiện được hoặc không đáp ứng được yêu cầu của khách hàng. Vậy làm thế nào để có thể xác định được bài toán hiện tại thuộc loại nào để giải quyết bằng Machine Learning?

Mẫu dữ liệu này là A hay B?

Chó hay mèo?

Ta có thể đưa câu hỏi nghiên cứu này sang bài toán phân loại hai lớp (two-class classification). Đây là dạng bài toán chỉ có hai câu trả lời:  hoặc khôngon hay off, có gian lận hay không gian lận… Dưới đây là một số câu hỏi điển hình của dạng này.

  • Đây là chó hay mèo?
  • Đây là đàn ông hay phụ nữ?
  • Khách hàng có trả tiền hay không?
  • Khuyến mãi giảm giá 100 nghìn hay 20% thì tốt hơn?

Mẫu dữ liệu này là A hay B,C,D … hay Z?

Ta có thể đưa câu hỏi nghiên cứu này sang bài toán phân loại đa lớp (multi-class classification). Ta sẽ thu được câu trả lời là một hay nhiều các khả năng: thích cái nào, người nào, bộ phận nào, công ty nào, ứng viên nào. Đa số các thuật toán multi-class classification là phiên bản mở rộng của thuật toán two-class classification.

Dưới đây là một số câu hỏi điển hình của dạng này:

  • Có con vật nào trong bức ảnh này?
  • Bài viết này thuộc chủ đề gì?
  • Tâm trạng của status facebook này là gì?
  • Ai đang xuất hiện trong video clip?
  • Con chó này thuộc giống nào?

Mẫu dữ liệu này có gì lạ không?

Ta có thể đưa câu hỏi nghiên cứu này sang bài toán phát hiện sự bất thường (anomaly detection). Mục tiêu của chúng ta là nhận diện các điểm dữ liệu không bình thường. Nếu để ý kĩ, ta có thể thấy đây có vẻ như là bài toán two-class classification bởi vì câu trả lời có thể có hoặc không. Điểm khác biệt ở đây đó là two-class classification sử dụng tập dữ liệu bao gồm cả hai trường hợp có hoặc không nhưng bài toán anomaly detection thì ngược lại. Những điểm dữ liệu bất thường hiếm khi xuất hiện do đó ta không thể thu thập được ví dụ như khi nào thì thiết bị này sẽ hỏng hay gian lận trong thẻ tín dụng…

Dưới đây là một số câu hỏi điển hình của dạng này:

  • Nhịp tim, huyết áp của bệnh nhân như thế này có phải là hiện tượng bình thường không?
  • Lần thanh toán thẻ tín dụng này của khách hàng có bất bình thường không?
  • Cách điều khiển xe oto của người lái xe ngày hôm nay có bất bình thường không?

Bao nhiêu?

Khi bạn muốn kết quả trả về là một con số thay vì là một lớp hay một loại, ta có thể đưa câu hỏi nghiên cứu này sang bài toán hồi quy (regression). Thông thường các thuật toán regression sẽ trả về câu trả lời là một giá trị thực. Kết quả sẽ gồm rất nhiều số thập phân hay thậm chí mang giá trị âm. Thông thường các giá trị âm sẽ được chuyển thành số 0 và các giá trị thập phân sẽ được làm tròn đến giá trị gần nhất.

Dưới đây là một số câu hỏi điển hình của dạng này:

  • Lượng mưa ngày mai là bao nhiêu?
  • Bao nhiêu người sẽ mua món đồ này?
  • Doanh số tháng này là bao nhiêu?
  • Có bao nhiêu người có nguy cơ mắc bệnh này?

Phân loại hai lớp dưới dạng regression

Thật ra, bản chất một số thuật toán two-class classification đều kết hợp với regression. Bài toán này áp dụng cho các trường hợp như biến cố này có thể xảy ra cũng có thể không xảy ra, mẫu dữ liệu này vừa xuất hiện thành phần A và thành phần B. Các câu hỏi dạng này thường bắt đầu với “Xác suất… là bao nhiêu” hay “Tỉ lệ… là bao nhiêu”.

Có thể mọi người đã nhận ra các bài toán two-class classification, multi-class classification, anomaly detection, và regression đều có hướng tiếp cận chung là huấn luyện có giám sát (supervised learning). Hướng tiếp cận này cần tập dữ liệu huấn luyện (training set) có gán nhãn (labeled). Sau đó, mô hình dự đoán sẽ gán giá trị xác suất cho mẫu dữ liệu cần dự đoán thuộc về lớp nào (tiến trình này gọi là scoring).

Dưới đây là một số câu hỏi điển hình của dạng này:

  • Xác suất người dùng sẽ click vào link quảng cáo này là bao nhiêu?
  • Tỉ lệ thắng khi kéo máy đánh bạc này là bao nhiêu?
  • Xác suất nhân viên này là mối đe doạ an ninh ngầm trong công ty là bao nhiêu?
  • Tỉ lệ các chuyến bay xuất phát đúng giờ là bao nhiêu?

Phân loại đa lớp dưới dạng regression

Đôi khi câu hỏi nghiên cứu liên quan đến multi-class classification phù hợp hơn khi kết hợp với regression. Ví dụ ta thường gặp câu hỏi sau “Bài viết nào thu hút độc giả này nhiều nhất?”. Ta có thể chuyển sang câu hỏi tương tự “Mức độ hứng thú của độc giả đối với từng bài viết này là bao nhiêu?” bằng cách cho điểm từng bài viết, ta sẽ chọn ra bài viết có điểm đánh giá cao nhất để gợi ý cho độc giả.

Dưới đây là một số câu hỏi điển hình của dạng này:

  • “Chiếc máy tính nào cần sửa chữa nhiều nhất” hay “Tình trạng cần sửa chữa của từng chiếc máy tính là như thế nào?”
  • “Liệt kê 10% lượng nhân viên muốn nghỉ việc” hay “Mức độ muốn nghỉ việc của từng nhân viên là như thế nào?”

Dữ liệu được tổ chức như thế nào?

Câu hỏi về  cách tổ chức của dữ liệu thuộc hướng tiếp cận về huấn luyện không giám sát (unsupervised learning). Có nhiều kĩ thuật khác nhau tương tác và chuyển đổi cấu trúc của dữ liệu hiện tại. Một trong số đó là gom nhóm (clustering) hay còn có các tên gọi khác như chunking, grouping, bunching, hay segmentation.

Nếu supervised learning cố gắng phân loại các hành tinh trong số các vì sao thì clustering cố gắng gom cụm để tạo ra các chòm sao. Clustering cố gắng phân chia dữ liệu thành các khối dễ quan sát để người phân tích dễ dàng diễn giải tính chất của các thành viên trong nhóm.

Dưới đây là một số câu hỏi điển hình của dạng này:

  • Những người mua sắm nào có cùng gu sản phẩm?
  • Những người xem nào có cùng sở thích về một thể loại phim?
  • Những mẫu máy in nào có cùng chi tiết dễ bị hư hỏng?

Có cách nào giảm việc tính toán nhưng vẫn giữ được độ chính xác không?

Một kĩ thuật khác cùng hướng tiếp cận unsupervised learning đó là giảm số chiều (dimensionality reduction). Dimensionality reduction là một cách để đơn giản hóa dữ liệu, giúp dữ liệu dễ trao đổi, tính toán nhanh hơn, và dễ lưu trữ hơn.

Về mặt ý tưởng, dimensionality reduction nhằm mô tả dữ liệu ngắn gọn hơn. Ví dụ như điểm điểm học tập trung bình (GPA). Để đánh giá một sinh viên trong quá trình học, ta cần biết hàng chục lớp học sinh viên đó đã tham gia, hàng trăm bài kiểm tra và hàng ngàn bài tập mà sinh viên đó đã làm. Mỗi bài kiểm tra sẽ cho biết sinh viên này hiểu được nội dung bài giảng đến đâu. Nhưng đối với nhà tuyển dụng việc đọc hết các điểm số này là không thể. Do đó ta có thể tổng hợp điểm số lại bằng cách lấy trung bình. Ta không cần quan tâm đến hàng đống điểm số vừa rồi mà chỉ cần quan sát điểm GPA để đánh giá lực học của sinh viên đó. Dưới đây là các câu hỏi điển hình.

Dưới đây là một số câu hỏi điển hình của dạng này:

  • Điểm chung của các lập trình viên giỏi là gì?
  • Nguyên lý chung của sự thay đổi giá xăng dầu trên toàn thế giới là gì?

Nếu mục tiêu của bạn là tóm tắt và đơn giản hóa tập các dữ liệu, dimensionality reduction và clustering là hai công cụ mà bạn nên dùng.

Tôi nên làm gì bây giờ?

Nhóm thứ ba trong các hướng tiếp cận của Machine Learning tập trung vào hành động là chủ yếu. Những thuật toán này gọi là huấn luyện tăng cường (reinforcement learning). Đây là một lĩnh vực con của học máy, nghiên cứu cách thức một agent trong một môi trường nên chọn thực hiện các hành động nào để cực đại hóa một khoản thưởng (reward) nào đó về lâu dài. Các thuật toán học tăng cường cố gắng tìm một chiến lược ánh xạ các trạng thái của thế giới tới các hành động mà agent nên chọn trong các trạng thái đó.

Các thuật toán RL ban đầu được lấy cảm hứng từ cách mà não loài chuột và loài người phản ứng lại với hình phạt và phần thưởng. Chúng có xu hướng cố gắng hành động thật nhiều để đạt được phần thưởng cao nhất. Ta cần cung cấp trước tập các hành động có thể có đồng thời cần phản hồi lại sau mỗi hành động để chúng biết được đâu là hành động tốt, xấu hay bình thường. Người ta vẫn thường hay huấn luyện thú vật theo cách này.

Các thuật toán RL thích hợp cho các hệ thống tự động đưa ra nhiều quyết định nhỏ mà không có sự hướng dẫn của con người. Thang máy, máy sưởi, máy lạnh và hệ thống chiếu sáng là những ví dụ điển hình. RL ban đầu được phát triển để điều khiển robot, vì vậy bất cứ thứ gì cần di chuyển tự động, từ máy bay do thám đến máy hút bụi tự động đều có thể áp dụng vào. Dưới đây là những câu hỏi điển hình.

  • Tôi nên đặt quảng cáo ở đâu trên trang web để người xem có xu hướng click vào nhiều nhất?
  • Tôi nên điều chỉnh nhiệt độ phòng lên, xuống, hay giữ nguyên?
  • Tôi nên hút bụi phòng khách một lần nữa hay đem máy đi cắm sạc?
  • Tôi nên mua bao nhiêu cổ phiếu của chứng khoán này ngay bây giờ?
  • Tôi nên tiếp tục giữ nguyên tốc độ, thắng lại, hay tăng tốc khi thấy đèn tín hiệu vàng?

RL thường đòi hỏi nỗ lực nhiều hơn so với các loại thuật toán khác vì nó được tích hợp quá chặt chẽ với các phần còn lại của hệ thống. Ngược lại, đây là thuật toán có thể bắt đầu làm việc mà không cần bất kỳ dữ liệu nào ban đầu. Chúng thu thập dữ liệu khi bắt đầu chạy mô hình, và học thông qua thử và sai.


[Microsoft Azure] Deploy PHP website lên Azure App Service