Cách xác định bài toán trong Machine Learning

machine-learning-cheet-sheet
machine-learning-cheet-sheet

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
– Henry Ford

Trong thực tế, trước khi giải bất kỳ bài toán nào, việc đầu tiên chúng ta cần làm đó là xác định vấn đề. Đặc biệt khi làm trong lĩnh vực Machine Learning (ML), nhiều khi bài toán do các doanh nghiệp đặt ra khá mơ hồ và không cụ thể khiến cho quá trình xây dựng mô hình dự đoán đi đến ngõ cụt 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 bài toán nào để giải quyết bằng ML? Bài viết này sẽ liệt kê các câu hỏi nghiên cứu và đưa ra bài toán cụ thể để giải bằng ML.

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

Cat or dog
Cat or dog

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: có hoặc không, on hay off, có hút thuốc hay không hút thuốc, đã thanh toán hay chưa thanh toán. Dưới đây là một số câu hỏi điển hình của dạng này.

  • Khách hàng này sẽ gia hạn thuê bao hay không?
  • Đây là ảnh một con mèo hay một con chó?
  • Liệu khách hàng có click vào link này hay không?
  • Liệu lốp xe này có bị vỡ trong ngàn dặm tiếp theo hay không?
  • Coupon giảm 5 đô so với giảm 25% thì coupon nào thu hút nhiều khách hàng quay trở lại hơn?

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

Rada signature
Rada signature

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). Như tên gọi của nó, 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ó con vật nào trong bức ảnh này?
  • Xác định tên máy bay thu được trên ra-da?
  • Bài viết này thuộc chủ đề gì?
  • Tâm trạng của tweet này là gì?
  • Speaker trong bản ghi âm này là ai?

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

Are these voltages normal for this season and time of day
Are these voltages normal for this season and time of day

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.

  • Huyết áp như vậy có bình thường hay không?
  • Tin nhắn này có bình thường hay không?
  • Các thao tác thanh toán của khách hàng này có bất thường so với những lần trước đó hay không?
  • Điện áp như vậy có bình thường hay không trong điều kiện khí hậu và thời điểm hiện tại?

Bao nhiêu?

Regression
Regression

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.

  • Nhiệt độ vào thứ ba tuần tới sẽ là bao nhiêu?
  • Doanh số bán hàng quý 4 ở Bồ Đào Nha sẽ là bao nhiêu?
  • Bao nhiêu kilowatts điện thu được từ trang trại gió trong 30 phút tới?
  • Có bao nhiêu người theo dõi bài viết của tôi trong tuần tới?

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

Van
Van

Đô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.

  • “Xe tải nào trong hạm đội này cần sửa chữa nhiều nhất?” hay “Tình trạng mỗi xe tải hiện tại ra sao để kịp thời sửa chữa?”
  • “Đâu là 5% số khách hàng có xu hướng chuyển sang đối thủ cạnh tranh trong năm tới?” hay “Xác suất từng khách hàng hiện tại muốn chuyển sang đối thủ cạnh tranh trong năm tới là bao nhiêu?”

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

Slot machine
Slot machine

Không có gì đáng ngạc nhiên khi bài toán two-class classification có thể kết hợp với 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.

  • 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?

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

Constellations
Constellations

Câu hỏi liên quan đến cách tổ chức của dữ liệu thuộc hướng tiếp cận 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.

  • 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 phân chia văn bản thành năm thể loại khác nhau?

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

GPA
GPA

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 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à quá sức. May mắn thay, 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.

  • Các nhóm cảm biến nào của động cơ phản lực có xu hướng đối chọi nhau?
  • Điểm chung của những CEO thành công là gì?
  • Nguyên lý chung của sự thay đổi giá xăng dầu trên khắp nước Mỹ là gì?
  • Những nhóm từ nào có xu hướng xuất hiện cùng với nhau trong tập văn bản này? (Các chủ đề được đề cập 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ờ?

Auto adjust temperature
Auto adjust temperature

Nhóm thứ ba trong các hướng tiếp cận của ML 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). Thay vì thuật toán regression chỉ dự đoán nhiệt độ có thể cao đến 36 độ vào ngày mai thì reinforcement learning sẽ thực hiện bước tiếp theo đó là đưa ra hành động cụ thể ví dụ như làm lạnh trước tầng trên cùng của tòa nhà văn phòng mặc dù nhiệt độ ngày hôm nay vẫn mát mẻ.

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.

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 ML - Algorithm Cheat Sheet.png

Nguồn tham khảo:

Một suy nghĩ 34 thoughts on “Cách xác định bài toán trong Machine Learning

  1. anh có bài viết nào cụ thể về thuật toán reinforcement learning k a. Hiện tại thì e đang k biết xác định thuật toán nào cho project của mình. project của e là tự động nhận biết được nhiệt độ hiện tại và thực hiện một hành động gì đó thì lúc đầu e nghĩ là regression + reinforcement. Nhưng sau đó e lại nghĩ là chỉ mỗi reinforcement vì mình k cần tính trước nhiệt độ là bao nhiêu để hành động

    Thích

      1. e muốn hỏi là loại thuật toán nào có thể thu thập thói quen người dùng một cách tự động, bởi vì các thuật toán như hồi quy, phân lớp đều có bước tiền xử lý dữ liệu đầu vào cả

        Thích

  2. Em chào anh!
    Em muốn hỏi về dạng bài toán “Nhận dạng”. Như trong nội dung bài viết của anh có đề cập tới việc nhận dạng loại máy bay từ radar. Giả sử trong trường hợp mình có thông tin về đặc trưng của các loại radar hoặc máy bay mang loại radar đó. Nếu mình có 1 bộ tham số đo đạc được thông số của radar nhằm mục đích xác định đây là loại nào thì dạng bài toán này thuộc loại nào ạ? Có tài liệu nào mô tả về dạng bài toán “Nhận dạng” kiểu này không ạ? Em cám ơn anh!

    Thích

      1. Cám ơn anh về câu trả lời.
        Anh có thể cho em xin một vài keyword liên quan tới bài toán multi-classification như tên thuật toán có thể được áp dụng trong trường hợp này được không ạ!

        Thích

  3. Em chào anh Hồng,

    Em đang tìm hiểu để làm chatbox tự động trả lời câu hỏi về một môn học cho học sinh/ sinh viên, anh có thể cho biết nhận định của anh về loại của bài toán này cũng như thuật toán phù hợp nhất không ạ. Cảm ơn anh.

    Thích

  4. Chào anh Hồng, bài viết của anh rất hay. Hiện tại, trên lớp em đang có 1 project là xây dựng demo một hệ thống đa tác tử, ở đây demo sẽ là một game đá bóng, cầu thù sẽ là những tác tử phối hợp tương tác với nhau. Em đang nghĩ tới reinforcement learning, anh có tài liệu gì không share e với. Cảm ơn anh rất rất nhiều. Hy vọng sẽ có thêm những bài viết bổ ích từ anh :))

    Thích

  5. Xin chào anh Hồng! Rất mừng và cám ơn những bài viết rất hữu ích của anh trên Blog cá nhân của anh. Mình đang gặp phải khó khăn trong việc xác định bài toán mà cụ thể là mô hình Deep Learning khi nghiên cứu Lab về ” Phát hiện bất thường”, sử dụng tensor flow để trainning tập dữ liệu KDD99, bài toán vừa xuất hiện phân lớp(classification) vừa xuất hiện hồi qui (regression) vậy mô hình kết hợp của cả 2 dạng này là gì? và cơ sở toán học của nó? Cám ơn Anh!

    Thích

    1. Hi, theo mình biết thì đây là bài toán Anomaly detection/Intrusion detection/Outlier detection.

      Có 2 hướng tiếp cận là classification và clustering. Hướng 1 thì ít được áp dùng do vấn đề class-unbalancing: các điểm bất thường xuất hiện quá ít nên không đủ dữ liệu để train. Hướng 2 được áp dụng nhiều hơn: sử dụng outlier detection, clustering, distribution… cơ sở toán ở đây chủ yếu áp dụng thống kê để phân tích.

      Nếu bạn áp dụng Deep learning để phân lớp dữ liệu đầu vào có bất thường không thì bạn có thể tham khảo OneClassSVM.

      Một số link bạn có thể tham khảo:
      https://www.datascience.com/blog/intro-to-anomaly-detection-learn-data-science-tutorials
      https://anomaly.io/blog/

      Click to access tkdd11.pdf

      http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/

      Thích

  6. Rất cám ơn anh đã hỗ trợ rất nhanh chóng, vấn đề khó khăn của mình của mình đó là trong quá trình làm việc với tensorflow để trainning Data theo phương pháp supervised learning thì mình cần nghiên cứu kỹ vấn đề lý thuyết liên quan cụ thể nào vậy Anh? Về Phân lớp hay Hồi qui hay một phương pháp thống kê phân tích nào vậy Anh? Cám ơn Anh!

    Thích

    1. Lý thuyết thì bạn có thể bắt đầu từ logistics regression để hiểu hàm phân lớp sigmoid hoạt động như thế nào trên tập dữ liệu đơn giản, hiểu được hàm này rồi bạn sẽ biết rằng thực tế người ta dùng hàm tanh là chủ yếu, sau đó bạn nghiên cứu mô hình ANN phân lớp nhị phân ra sao, từ đó nâng cao lên phân lớp cho multi-class bằng cách nào. Trong ANN, bạn nên nghiên cứu kĩ cách hoạt động của backpropagation, đây là kĩ thuật giúp bạn update tham số cho các layer lúc training và đầu ra của bạn là gì, ma trận tham số hay vector tham số. Lúc đem testing thì sử dụng model đã trained ra sao…
      Bạn nên cài đặt tất cả các tiến trình trên bằng ngôn ngữ bất kỳ để hiểu rõ bản chất như Python hay Matlab đều được. Đến đây, bạn đã có khả năng nghiên cứu các biến thể của ANN như CNN, RNN, LSTM, …
      Tensorflow là công cụ giúp abstract tất cả các quá trình trên, bạn không nên phụ thuộc vào framework này. Nếu hiểu nguyên lý rồi, bạn có thể áp dụng lên bất kỳ framework tương tự mà hiệu suất lại cao hơn như Torch, Theano, Caffe, …

      Thích

  7. Em chào anh. Cảm ơn về bài viết của anh.
    Anh cho em hỏi là nếu muốn học cơ bản về phân tích data thì nên học như nào ạ? Học từ cái gì và học ở đâu ạ. Anh có thể cho em xin ít lời khuyên được không ạ?
    Em chưa biết gì về phân tích Data cả, nhưng em thấy nó rất có ích cho công việc kinh doanh trong lĩnh vực Start-up của em, nên em rất muốn học mà chưa biết bắt đầu từ đâu. Rất mong sẽ nhận được sự tư vấn của anh ạ.

    Thích

    1. Phân tích data một phần cũng do cảm nhận và năng lực của mỗi người. Nhưng em có thể tìm học các môn liên quan đến xác suất thống kê.
      Các từ khoá để bắt đầu:
      – Descriptive analysis: trả lời cho câu hỏi điều gì đang diễn ra? Lấy sum, avg, median, mod. Show histogram, bar-chart, pie chart, box chart, line chart, …
      – Diagnostic analysis: trả lời cho câu hỏi tại sao điều đó diễn ra? Hypothesis testing, z-statistic, p-value, A/B testing, …
      – Predictive analysis: trả lời cho câu hỏi điều gì sắp diễn ra? Linear regression, Logistic regression, Pattern recognition, …
      – Prescriptive analysis: trả lời cho câu hỏi làm gì nếu điều đó diễn ra? Recommender system, fraud detection, …

      Thích

  8. Chào bạn! Bài viết của bạn rất hay, tuy nhiên mình đã thử áp dụng để xác định bài toán ML cho vấn đề của mình mà không ra, rất mong bạn tư vấn giúp.
    Vấn đề của mình như sau: mình có dữ liệu chơi game của 1 dịch vụ game online như: thời gian đăng nhập của người chơi, quá trình chơi game, lịch sử nạp tiền, lịch sử giao dịch,… Cty dịch vụ game muốn biết “tại sao số lượng người chơi đang giảm dần”?
    Hoặc bạn có thể gợi ý cho mình các bài toán ML có thể làm trên tập dữ liệu này hay giới thiệu cho mình các paper, ví dụ tương tự về bài toán hoặc tập dữ liệu.
    Xin cảm ơn!

    Thích

    1. “Tại sao số lượng người chơi đang giảm dần?”. Đây là bài toán “Dianogstic” trong thống kê. Bạn cần xây dựng report từ mức Descriptive. Machine learning chỉ giúp bạn predict được future, phát hiện pattern, hoặc tự động thực hiện một tác vụ nào đó khi đã biết trước training data. Việc trả lời câu hỏi là do người Data analyst thực hiện.
      http://www.kdnuggets.com/2017/07/4-types-data-analytics.html

      Thích

  9. Hi anh Hồng,
    Em đang muốn xây dựng ML để thực hiện dự báo cho CRM. Dựa theo lịch sử tương tác, hành vi của khách hàng, nội dung cuộc trò chuyện qua tin nhắn fb, các thông tin khác về hồ sơ cá nhân của khách hàng để dự đoán khả năng mua hàng của một khách hàng tiềm năng. Với đề bài này thì em nên dùng thuật toán nào anh nhỉ.
    Cảm ơn anh.

    Thích

  10. Chào anh Hồng
    Cảm ơn anh đã có những bài viết bổ ích về ML
    E hiện đang học về ML, thầy có cho một đề tài bàn về việc xây dung mô hình dự đoán giá của xe grap car. Thầy bắt xây dung mô hình theo dạng hồi quy phi tuyến đa biến, cái này em tìm nhiều mà chưa có. Không biết anh có tài lieu nào về dạng Machine Learning hồi quy đa biến phi tuyến tính không thì share cho em một số link hay bài của anh. chân thành cảm ơn anh nhiều

    Thích

  11. Dear anh Hong Ong!

    Em là newbie trong lĩnh vực machine learning, em muốn lựa chọn lĩnh vực nghiên cứu Ts về ứng dụng machine learning trong một đối tượng vật lý cụ thể, ví dụ như hệ bồn (level tank control). Xin hỏi anh có nguồn tài liệu về lĩnh vực này không? Và với mức độ một hướng nghiên cứu về Automation Control sử dụng machine learning với đối tượng như thế có phù hợp không ah! Em chờ câu trả lời của a.
    Trân trọng!

    Thích

  12. Chào anh Hồng,
    Em đang tìm hiểu và xây dựng hệ thống dựa trên các câu trả lời của bài quiz, chuyên ngành và các skill của học sinh/sinh viên để đưa ra gợi ý công việc phù hợp. Anh có thể cho em xin ý kiến của anh về hệ thống này cũng như những thuật toán phù hợp không ạ?
    Em cám ơn anh.

    Thích

  13. chào anh!
    Em đang muốn xây dựng việc tự học lại của máy trong việc viết chữ nước ngoài rồi người dùng có thể viết lại theo chữ đó. và có thể nhận dạng gần đúng giữa âm thanh trong radio và âm thanh người dùng .Anh có bài toán nào tương tự không ạ? Anh có thể giúp em phân tích một vài hướng đi ko ạ? Em cảm ơn!!

    Thích

  14. Em chào anh!

    Em đọc phần bài toán Classification của anh và có băn khoăn với một ví dụ cụ thể như sau: Cho một tập dữ liệu về người dùng hủy dịch vụ, từ các thông tin này phải phân tích hành vi, đặc điểm của những users này. Em không biết liệu bài toán này có còn là classification nữa không (vì không cho biết thông tin của người dùng vẫn sử dụng dịch vụ)? Nếu không phải thì đây là dạng đề bài nào và hướng giải quyết tiềm năng là gì ạ?

    Em mong nhận được phản hồi của anh. Em cảm ơn anh!

    Thích

Bình luận về bài viết này