Tất cả là gì về Machine Learning trong thực tế?


11

Tôi là người mới tham gia Học máy (cũng có một số thống kê), đã học kiến ​​thức (thuật toán học có giám sát / không giám sát, phương pháp tối ưu hóa có liên quan, chính quy hóa, một số triết lý (chẳng hạn như đánh đổi sai lệch?) Trong một thời gian. Tôi biết rằng nếu không có bất kỳ thực hành thực tế nào, tôi sẽ không có được sự hiểu biết sâu sắc về những thứ máy học đó.

Vì vậy, tôi bắt đầu với một số vấn đề phân loại với dữ liệu thực, giả sử phân loại chữ số viết tay (MNIST). Thật ngạc nhiên, không có bất kỳ tính năng học tập / kỹ thuật nào , độ chính xác đạt 0,97 bằng cách sử dụng trình phân loại rừng ngẫu nhiên với các giá trị pixel thô làm đầu vào. Tôi cũng đã thử các thuật toán học tập khác, chẳng hạn như SVM, LR với các tham số được điều chỉnh.

Sau đó tôi bị lạc, nó sẽ quá dễ dàng hay tôi thiếu thứ gì ở đây? Chỉ cần chọn một thuật toán học tập từ bộ công cụ và điều chỉnh một số tham số?

Nếu đó là tất cả về học máy trong thực tế, thì tôi sẽ mất hứng thú với lĩnh vực này. Tôi đã suy nghĩ và đọc một số blog trong một vài ngày, và tôi đã đi đến một số kết luận:

  1. Phần quan trọng nhất của học máy trong thực tế là kỹ thuật tính năng , nghĩa là, được cung cấp dữ liệu, tìm ra cách thể hiện tốt hơn các tính năng.

  2. Thuật toán học nào để sử dụng cũng quan trọng, cũng là điều chỉnh tham số, nhưng lựa chọn cuối cùng là về thử nghiệm.

Tôi không chắc là tôi hiểu chính xác, hy vọng bất cứ ai cũng có thể sửa tôi và cho tôi một số gợi ý về học máy trong thực tế.


1
Tôi không nghĩ rằng tôi có thể trả lời toàn bộ câu hỏi của bạn, nhưng tôi muốn trấn an bạn rằng có rất nhiều vấn đề trong đó các thuật toán / công cụ không đạt yêu cầu ngoài chất lượng tính năng kém (theo kinh nghiệm của tôi, khoa học xã hội còn đầy rẫy với cả hai tình huống). Tôi không nghĩ rằng đó là mối quan tâm duy nhất của bạn, nhưng bạn có vẻ khó chịu vì sự dễ dàng của các dự án của bạn cho đến nay.

1
@Matthew, vâng, tôi bị lạc mà không biết bắt đầu từ đâu khi gặp phải một vấn đề thực sự, tôi có nên phân tích dữ liệu để tìm ra bản chất để tôi có thể trích xuất các tính năng hữu ích hay chỉ cần chọn một thuật toán học và chạy?

Tôi sẽ không lên máy bay bay chính xác 97 lần trong số 100.
lcrmorin

Câu trả lời:


12

Học máy (ML) trong thực tế phụ thuộc vào mục tiêu làm ML là gì. Trong một số trường hợp, tiền xử lý vững chắc và áp dụng một bộ các phương pháp ML ngoài luồng có thể đủ tốt. Tuy nhiên, ngay cả trong những tình huống này, điều quan trọng là phải hiểu cách thức các phương thức hoạt động để có thể khắc phục sự cố khi có sự cố. Tuy nhiên, ML trong thực tế có thể nhiều hơn thế, và MNIST là một ví dụ tốt về lý do tại sao.

Thật dễ dàng để có được hiệu suất 'tốt' trên bộ dữ liệu MNIST. Ví dụ, theo trang web của Yann Le Cun về hiệu suất của MNIST , K hàng xóm gần nhất (K-NN) với chỉ số khoảng cách Euclide (L2) cũng có tỷ lệ lỗi là 3%, giống như ngẫu nhiên ngoài hộp của bạn rừng. L2 K-NN đơn giản như thuật toán ML có được. Mặt khác, tốt nhất của Yann, Yoshua, Leon & Patrick, lần đầu tiên vào bộ dữ liệu này, LeNet-4, có tỷ lệ lỗi là 0,7%, 0,7% thấp hơn một phần tư 3%, vì vậy nếu bạn đưa hệ thống này vào Thực hành đọc các chữ số viết tay, thuật toán ngây thơ đòi hỏi nỗ lực gấp bốn lần của con người để sửa lỗi của nó.

Mạng thần kinh tích chập mà Yann và các đồng nghiệp đã sử dụng phù hợp với nhiệm vụ nhưng tôi sẽ không gọi đây là 'kỹ thuật tính năng', giống như nỗ lực tìm hiểu dữ liệu và mã hóa sự hiểu biết đó vào thuật toán học tập.

Vậy, những bài học là gì:

  1. Thật dễ dàng để đạt được đường cơ sở hiệu suất ngây thơ bằng cách sử dụng phương pháp vượt trội và tiền xử lý tốt. Bạn nên luôn luôn làm điều này, để bạn biết đường cơ sở ở đâu và mức độ hiệu suất này có đủ tốt cho yêu cầu của bạn hay không. Mặc dù vậy, hãy cẩn thận, các phương thức ML ngoài luồng thường 'dễ vỡ', tức là nhạy cảm đến bất ngờ với quá trình tiền xử lý. Khi bạn đã huấn luyện tất cả các phương pháp vượt trội, hầu như luôn luôn là một ý tưởng tốt để thử đóng gói chúng.
  2. Các vấn đề khó đòi hỏi kiến ​​thức về miền cụ thể hoặc nhiều dữ liệu hơn hoặc cả hai để giải quyết. Kỹ thuật tính năng có nghĩa là sử dụng kiến ​​thức dành riêng cho miền để giúp thuật toán ML. Tuy nhiên, nếu bạn có đủ dữ liệu, một thuật toán (hoặc cách tiếp cận) có thể tận dụng dữ liệu đó để tìm hiểu các tính năng phức tạp và một chuyên gia áp dụng thuật toán này thì đôi khi bạn có thể từ bỏ kiến ​​thức này (ví dụ như thử thách Kaggle Merck ). Ngoài ra, đôi khi các chuyên gia tên miền sai về các tính năng tốt là gì; vì vậy nhiều dữ liệu và chuyên môn ML luôn hữu ích.
  3. Xem xét tỷ lệ lỗi không chính xác. Một phương thức ML với độ chính xác 99% tạo ra một nửa lỗi mà một phương pháp có độ chính xác 98% mắc phải; đôi khi điều này rất quan trọng

2
+1, cảm ơn rất nhiều. Khi tôi đọc câu trả lời của bạn, nếu tôi không có kiến ​​thức về miền cụ thể để làm kỹ thuật tính năng, thì tôi nên tập trung vào việc phát minh ra các phương pháp tốt để thực hiện tính năng học bằng cách sử dụng dữ liệu đã cho và thử các thuật toán học khác nhau.

@loganecolss Hoặc bạn cũng có thể đọc những gì người khác đã làm trên dữ liệu tương tự hoặc nói chuyện với một chuyên gia tên miền.
qdjm

7

Tôi nghĩ rằng các ví dụ mà bạn tìm thấy trên blog hoặc trang web là các ví dụ mà người ta biết rằng các phương thức phổ biến hoạt động tốt (tất nhiên, ngay cả khi, tất nhiên, chúng có thể được cải thiện).

Chuyên môn của tôi là về kỹ thuật tính năng và tôi có thể nói với bạn rằng thường thì các thuật toán tiêu chuẩn không hoạt động tốt chút nào. (Tôi không có bất kỳ kiến ​​thức nào về lĩnh vực này nhưng tôi thường làm việc với những người có nó.).

Ở đây có một vấn đề thực sự khi tôi làm việc trong 6 tháng: Đưa ra ma trận X với 100 mẫu và 10000 biến đại diện cho giá trị di truyền của bệnh nhân và sản lượng y có kích thước 100 x 1 đại diện cho mật độ của xương.

Bạn có thể cho tôi biết gen nào ảnh hưởng đến mật độ của xương?

Bây giờ tôi đang làm việc về một vấn đề khác. Tôi có một bộ dữ liệu sản xuất với 2000 mẫu và 12000 biến. Sếp của tôi muốn trích xuất từ ​​bộ dữ liệu này không quá 30 biến theo cách không giám sát.
Tôi đã thử một số thuật toán nhưng tôi không thể chọn ít hơn 600 biến vì chúng rất tương quan giữa chúng. (Tôi vẫn đang làm việc này ...)

Một suy nghĩ quan trọng khác cần xem xét là hiệu suất tốc độ của các thuật toán khác nhau. Trong rất nhiều tình huống, bạn không thể đợi 20 phút để chờ kết quả. Ví dụ, bạn cần biết khi nào nên sử dụng NIPALS và khi nào nên sử dụng SVD để tính PCA.

Hy vọng điều này có thể cho bạn một ý tưởng về các vấn đề phổ biến trong ml.


Cảm ơn lời khuyên của bạn, có vẻ như tôi đã không tiếp cận vấn đề như vậy, thật thú vị. n<<p
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.