Khi dữ liệu thay đổi về số lượng, sẽ dẫn đến việc thay về xử lý và chất lượng. Và để nắm bắt chúng ta cần tiến hành xử lý trên các mô hình quy mô lớn, nghĩa là cần áp dụng các công cụ và công nghệ mới, như một số công nghệ được biết đến gần đây Apache Hadoop, YARN, MapReduce, Apache Spark, Apache Samza, Apache Storm v.v…
Tuy nhiên, cho sử dụng điều gì để giải quyết, các thuật toán cơ bản sau đây luôn được các nhà khoa học dữ liệu như biết đến là Linear Regrtression, k-Nearest Neighbors, k- means.
Đối với Linear Regression giúp chúng ta giải quyết các bài toán dự báo và phân lớp trong các ngữ cảnh khác nhau. K-NN và k-means là những thuật toán rất quan trọng và được sử dụng phổ biến trong kỹ thuật phân cụm trong khai phá dữ liệu.
Nội dung của báo cáo này được dịch từ chương 3 của tác phẩm“Doing data Sccience” của nhóm tác giả Rachel Schutt & Cathy O’Neil do nhà xuất bản O’Reilly ấn bản 10-2013; giới thiệu một cách nhìn tổng quát về 3 thuật toán cơ bản nêu trên.
Hy vọng rằng, với báo cáo này sẽ cung cấp cho các bạn những cảm nhận mới về ngành khoa học có nhiều triễn vọng này.
1. MỞ ĐẦU
Trong chương trước, chúng ta đã thảo luận chung như thế nào là mô hình được sử dụng trong khoa học dữ liệu. Trong chương này, chúng ta sẽ được tìm hiểu các thuật toán.
Một thuật toán là một thủ tục hoặc tập hợp các các bước hoặc các quy tắc để thực hiện một nhiệm vụ. Thuật toán là một trong những khái niệm cơ bản trong hoặc các khối xây dựng của khoa học máy tính: cơ sở của thiết kế mã hiệu quả, chuẩn bị dữ liệu và gia công và công nghệ phần mềm.
Một số loại công việc cơ bản mà các thuật toán có thể giải quyết được sắp xếp, tìm kiếm và các vấn đề tính toán dựa trên đồ thị. Mặc dù là một nhiệm vụ nhất định như sắp xếp một danh sách các đối tượng có thể được xử lý bằng nhiều thuật toán có thể, có một số khái niệm "tốt nhất" được đo bằng hiệu quả và thời gian tính toán, trong đó quan trọng nhất là khi bạn đang đối phó với số lượng lớn dữ liệu và xây dựng người tiêu dùng phải đối mặt với các sản phẩm.
Hiệu quả các thuật toán làm việc theo tuần tự hoặc song song là cơ sở của đường ống để xử lý và chuẩn bị dữ liệu. Đối với khoa học dữ liệu, có ít nhất ba lớp của các thuật toán chúng ta phải nhận thức được:
1. Dữ liệu xấu (munging), các thuật toán chuẩn bị và xử lý, chẳng hạn như sắp xếp, MapReduce, hoặc Pregel.
Chúng ta sẽ mô tả các loại thuật toán như kỹ thuật dữ liệu, và trong khi chúng tôi cống hiến một chương này, nó không phải là trọng tâm của cuốn sách này. Điều này không phải là để nói rằng bạn sẽ không thể làm dữ liệu lộn và munging - chỉ là chúng tôi không nhấn mạnh khía cạnh thuật toán của nó.
2. Các thuật toán tối ưu cho định lượng tham số, bao gồm Stochastic Gradient Descent, phương pháp của Newton, và Least squares. Chúng tôi đề cập đến các loại thuật toán trong suốt cuốn sách, và chúng làm cơ sở cho nhiều chức năng của ngôn ngữ lập trình R.
3. Các thuật toán máy học là một phần lớn của cuốn sách này, và chúng tôi thảo luận về những kế tiếp hơn.
2. CÁC THUẬT TOÁN HỌC MÁY (Machine Learning Algorithms)
Các thuật toán máy học chủ yếu được sử dụng để dự đoán, phân lớp, hoặc phân cụm.
Trở lại những chương trước, chúng tôi đã nói rằng: Mô hình có thể được sử dụng để dự đoán hoặc phân loại hay không? Mô hình thống kê (Statistical modeling) bước ra khỏi ngành thống kê, và các thuật toán máy học ra khỏi ngành khoa học máy tính. Bạn sẽ tìm thấy một số phương pháp trong cuốn sách này, chẳng hạn như hồi quy tuyến tính (linear regression), được giới thiệu trong các sách máy học cũng như các sách thống kê. Chúng không nhất thiết hữu ích để tranh luận về việc ai là chủ sở hữu hợp của những phương pháp này, nhưng đó là giá trị được chỉ ra ở đây là nó có thể có được một chút mơ hồ hoặc không rõ ràng về những gì khác biệt thực sự.
Nói chung, các thuật toán học máy là cơ sở của trí tuệ nhân tạo (artificial intelligence - AI) như các hệ thống nhận dạng hình ảnh, nhận dạng giọng nói, hệ thống giới thiệu, xếp hạng và cá nhân hóa nội dung, thường xuyên cơ sở dữ liệu sản phẩm không phải là thường là một phần của một chương trình thống kê cốt lõi hoặc bộ phận. Chúng thường không được thiết kế tổng quát để suy ra các quá trình phát sinh cơ bản, mà đúng hơn là dự đoán hoặc phân loại với tính chính xác nhất.
Những khác biệt trong phương pháp phản ánh sự khác biệt trong văn hóa ở cách tiếp cận của người học và thống kê học máy mà Rachel quan sát thấy ở Google và tại các hội nghị ngành công nghiệp. Tất nhiên, các nhà khoa học dữ liệu có thể và nên sử dụng cả hai cách tiếp cận này.
Có một số khái quát tổng quát để xem xét:
Thông số phiên dịch (Interpreting parameters)
Các nhà thống kê suy nghĩ của các thông số trong mô hình hồi quy tuyến tính của họ là có giải thích thế giới thực, và thường muốn để có thể tìm ra ý nghĩa trong hành vi hoặc mô tả các hiện tượng thực tế tương ứng với các tham số. Trong khi đó, một kỹ sư phần mềm hay nhà khoa học máy tính mong muốn để xây dựng thuật toán hồi quy tuyến tính của họ vào mức mã nguồn của sản phẩm (production-level code) và các mô hình dự đoán là những gì được biết đến như là một thuật toán hộp đen (black box algorithm), chúng thường không tập trung vào việc biên dịch các thông số. Vấn đề họ mong muốn với mục tiêu điều chỉnh thủ công để tối ưu hóa sức mạnh tiên đoán (predictive power).
Khoảng tin cậy (Confidence intervals)
Các nhà thống kê cung cấp khoảng tin cậy và phân bổ sau cho các thông số và ước lượng, và quan tâm trong việc nắm bắt sự thay đổi hoặc không chắc chắn của các thông số. Nhiều thuật toán máy học, chẳng hạn như k-means hoặc k-nearest neighbors (mà chúng tôi trình bày một phần sau của chương này), không có một khái niệm về khoảng tin cậy hoặc không chắc chắn.
Vai trò của các giả định rõ ràng (The role of explicit assumptions)
Mô hình thống kê đưa ra giả định rõ ràng về quá trình dữ liệu tạo ra và phân bổ và bạn sử dụng các dữ liệu để ước lượng các tham số. Các giải pháp phi tham số, như chúng ta sẽ thấy phần sau trong chương này, không thực hiện bất kỳ giả định về phân bố xác suất, hoặc chúng đang tiềm ẩn.
Các nhà thống kê luôn điều tra sự không chắc chắn, và họ sẽ không bao giờ tự tin 100% về bất cứ điều gì. Trong khi, các kỹ sư phần mềm thích xây dựng mọi thứ. Họ muốn xây dựng mô hình dự báo tốt nhất mà họ có thể, nhưng không có những lo ngại về sự không chắc chắn, chỉ cần xây dựng nó! Tại các công ty như Facebook hay Google, triết lý là của họ là xây dựng và thường lặp đi lặp lại. Nếu một cái gì đó phá vỡ, nó có thể được cố định. Một nhà khoa học dữ liệu họ sẽ tìm một sự cân bằng giữa các phương pháp tiếp cận khoa học thống kê và máy tính và để tìm thấy giá trị trong cả hai cách của chính minh để có thể phát triển mạnh chúng. Có thể nói, các nhà khoa học dữ liệu là sự lai ghép giữa nhà khoa học máy tính và nhà thống kê đa văn hóa; vì thế chúng ta không gắn với bất kỳ một cách suy nghĩ khác; cả hai đều có giá trị. Chúng tôi muốn trích lời dẫn về sự nhận định của mình mà Josh Wills (Chương 13) đã viết:
Data scientist (noun): Person who is better at statistics than any software engineer and better at software engineering than any statistician.
— Josh Wills
3. BA THUẬT TOÁN CƠ BẢN
Nhiều vấn đề khó khăn hoặc các vấn đề thế giới thực có thể được giải quyết với dữ liệu có thể được xem như là các vấn đề phân lớp (classification) và dự đoán (prediction) khi chúng ta biểu diễn chúng bằng toán học. Rất là hạnh phúc, khi hầu hết các mô hình và thuật toán có thể được sử dụng với việc phân lớp và dự đoán.
Đối với các nhà khoa học dữ liệu, sự hiểu biết của họ phụ thuộc vào bối cảnh của vấn đề và các giả định cơ bản. Điều này một phần đi kèm vào kinh nghiệm mà họ có thể hiểu đầy đủ các vấn đề, từ đó họ bắt đầu suy nghĩ : “ Ah, đây là một vấn đề phân lớp với một kết quả nhị phân" hay “ Đây là một vấn đề phân lớp, nhưng kỳ lạ là tôi không thấy sự gán nhãn ở đây “. Trong vấn đề đầu tiên, họ có thể sử dụng hồi quy hoặc Naive Bayes để giải quyết, còn trong vấn đề thứ hai, họ có thể bắt đầu với k- means; chỉ trong thời gian ngắn.
Đối với các sinh viên, ban đầu khi nghe nói đến những phương pháp này là cô lập, họ phải mất một thời gian nỗ lực, họ phải suy nghĩ "Trong thế giới thực, làm thế nào để tôi biết rằng thuật toán này là giải pháp cho vấn đề tôi đang cố gắng để giải quyết? ".
Đó là một sai lầm thực sự, giống như là người đi bộ xung quanh với một cái búa tìm kiếm một đinh để đóng. Cũng giống như việc "Tôi biết hồi quy tuyến tính, vì vậy tôi sẽ cố gắng giải quyết mọi vấn đề mà tôi gặp phải với nó". Đừng làm điều đó. Thay vào đó, hãy cố gắng hiểu được bối cảnh của vấn đề, và các thuộc tính nó có như là một vấn đề. Hãy nghĩ về những thuật ngữ toán học và sau đó suy nghĩ về các thuật toán mà bạn biết và cách chúng ánh xạ vào loại vấn đề nêu trên.
Nếu bạn không chắc chắn nó là tốt để trao đổi kỹ với một người nào.
Việc duy trì một thái độ mà nó không rõ ràng cái gì để làm và đó là cái gì làm nó trở thành một vấn đề, điều này sẽ giúp bạn tiếp cận nó một cách thận trọng và có phương pháp. Bạn đừng trở nên biết tất cả và nói rằng: "Tốt, rõ ràng là chúng ta nên sử dụng hồi quy tuyến tính với một chức năng cho đúng quy trình", ngay cả khi điều đó dường như bạn tiếp cận đúng.
Mục đích của phần này không nhằm cung cấp một cái nhìn toàn diện về các thuật toán máy học, mà nhằm giới thiệu 3 thuật toán cơ bản hiện nay: hồi quy tuyến tính, k- láng giềng gần (k-NN) và k – means.
(còn tiếp)
» Tin mới nhất:
» Các tin khác: