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.
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:
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ó.
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
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.
Một trong những phương pháp thống kê phổ biến nhất là hồi quy tuyến tính. Về cơ bản, nó được sử dụng khi bạn muốn mô tả mối quan hệ toán học giữa hai biến hoặc các thuộc tính. Khi bạn sử dụng nó, bạn đang làm cho các giả định rằng có một mối quan hệ tuyến tính giữa một biến kết quả (đôi khi còn được gọi là biến phản ứng, biến phụ thuộc, hoặc nhãn) và một yếu tố dự báo (đôi khi còn được gọi là một biến độc lập, biến giải thích, hoặc tính năng); hoặc giữa một biến và một số yếu tố khác, trong trường hợp bạn đang mô hình hóa các mối quan hệ là có một cấu trúc tuyến tính.
Thuật toán hoặc mô hình?
Trong khi chúng tôi đã cố gắng để làm cho một sự khác biệt giữa hai trước đó, chúng ta thừa nhận việc sử dụng ngôn ngữ giao tiếp hằng ngày, các từ "mô hình" và "thuật toán" gây nhầm lẫn, vì hai chữ dường như được sử dụng thay thế cho nhau khi định nghĩa thực tế của họ không phải là những điều tương tự ở tất cả. Trong ý nghĩa thuần túy, một thuật toán là một tập hợp các quy tắc hoặc các bước để làm theo để thực hiện một số nhiệm vụ, và một mô hình là một nỗ lực để mô tả hoặc “chụp” lại thế giới. Rõ ràng 2 khái niệm này là khác nhau, vì vậy có vẻ như sự phân biệt nên cần được rõ ràng. Thật không may, nó không hẳn như vậy. Ví dụ, hồi quy có thể được mô tả như là một mô hình thống kê cũng như một thuật toán học máy.
Trong một số cách, chẳng hạn như thống kê số liệu lịch sử các nhà khoa học máy tính đang phát triển phương pháp và kỹ thuật song song và sử dụng những từ khác nhau cho cùng một phương pháp. Hậu quả của việc này là sự phân biệt giữa học máy và mô hình thống kê là mập mờ. Một số phương pháp (ví dụ k-means), chúng tôi có thể gọi là một thuật toán bởi vì đó là một loạt các bước tính toán sử dụng phân cụm hoặc phân loại đối tượng. Mặt khác, k-means có thể được giải thích lại là một trường hợp đặc biệt của một mô hình hỗn hợp Gaussian.
Giả sử rằng có một mối quan hệ tuyến tính giữa một biến kết quả và một yếu tố dự báo là một giả định lớn, nhưng nó cũng là một trong những cách đơn giản nhất bạn có thể thực hiện. Trong một số trường hợp, nó có ý nghĩa rằng những thay đổi trong một biến tương quan tuyến tính với những thay đổi trong một biến khác. Ví dụ, nó có ý nghĩa rằng, càng có nhiều ô dù bạn bán ra, tiền bạn thu được nhiều hơn. Trong những trường hợp này, bạn có thể cảm thấy tốt về giả thiết tuyến tính. Nhưng trong những lần khác, nó khó hơn để biện minh cho giả thiết tuyến tính cục bộ: trong tính toán về mặt tinh thần, tất cả mọi thứ có thể được xấp xỉ bằng các đoạn thẳng như các chức năng được liên tục.
Tại sao bạn thậm chí muốn xây dựng một mô hình tuyến tính ở vị trí đầu tiên? Bạn có thể muốn sử dụng mối quan hệ này để dự đoán kết quả trong tương lai, hoặc bạn có thể muốn hiểu hoặc mô tả các mối quan hệ để có được một nắm về tình hình. Hãy nói rằng bạn đang nghiên cứu các mối quan hệ giữa doanh thu của công ty và bao nhiêu mà công ty dành cho quảng cáo, hoặc số lượng bạn bè ai đó có trên một trang web mạng xã hội và thời gian mà người bỏ ra trên trang web đó hàng ngày. Đây là tất cả các kết quả tính toán, có nghĩa là hồi quy tuyến tính sẽ là một lựa chọn khôn ngoan, ít nhất là cho một kết quả đầu tiên đi qua ở vấn đề của bạn.
Một điểm mấu chốt cho suy nghĩ về hồi quy tuyến tính là để suy nghĩ về dòng xác định đầu tiên. Chúng tôi đã học trở lại trường lớp mà chúng ta có thể mô tả một đường có độ dốc và bị chặn, y = f(x) = . Nhưng các thiết lập luôn luôn có tính quyết định.
Ngay cả đối với vấn đề toán học phức tạp nhất, nếu bạn đã không thực hiện nó trước, đó là một cách nghĩ mới để bắt đầu nghĩ về hàm xác định. Chúng tôi vẫn còn có các thành phần: Các điểm được liệt kê ra một cách rõ ràng trong một bảng (hoặc khác là bộ), và chức năng đại diện ở dạng phương trình hoặc vẽ trên một đồ thị. Vì vậy, chúng ta hãy dựng lên hồi quy tuyến tính bắt đầu từ một chức năng xác định.
Ví dụ 1. Hãy bắt đầu bằng một ví dụ đơn giản. Giả sử bạn chạy một site mạng xã hội mà chi phí thuê bao hàng tháng là $25, và rằng đây là nguồn duy nhất của bạn về doanh thu. Mỗi tháng bạn thu thập dữ liệu và đếm số lượng các người dùng và tổng doanh thu. Bạn đã làm điều này hàng ngày trong suốt hai năm, ghi tất cả trong một bảng tính. Bạn có thể thể hiện dữ liệu này như một loạt các điểm. Dưới đây là bốn điểm đầu tiên: S = {(x,y)=(1,25), (10,250), (100,2500), (200,5000)}
Nếu bạn chỉ ra điều này cho người khác, người mà thậm chí không biết bạn bị tính phí hoặc bất cứ điều gì về mô hình kinh doanh của bạn, họ có thể nhận thấy rằng có một mối quan hệ rõ ràng bởi tất cả những điểm này, cụ thể là y = 25x. Họ có khả năng thực hiện điều này trong đầu của họ, trong trường hợp họ đã tìm ra rằng:
|
Hình 3.1. Một mô hình tuyến tính rõ ràng
• Có một mô hình tuyến tính.
• Hệ số liên quan x và y là 25.
• Nó dường như xác định.
Bạn thậm chí có thể vẽ nó như trong hình 3.1 để xác minh chúng ta đã đúng (ngay cả khi bạn biết chúng vì bạn đã thực hiện các mô hình kinh doanh tại địa điểm đầu tiên). Đó là một đường thẳng!
Ví dụ 2. Nhìn vào dữ liệu ở cấp độ người dùng
Giả sử bạn có một tập dữ liệu khóa của người dùng (có nghĩa là mỗi hàng chứa dữ liệu cho một người sử dụng duy nhất) và các cột đại diện cho hành vi người dùng trên một trang web mạng xã hội trong khoảng thời gian một tuần. Hãy nói rằng bạn cảm thấy thoải mái mà các dữ liệu được làm sạch ở giai đoạn này và rằng bạn có thứ tự của hàng trăm ngàn người sử dụng. Các tên của các cột là total_new_friends_this_week, num_visits, time_spent, number_apps_downloaded, number_ads_shown, gender, age. Trong quá trình phân tích dữ liệu thăm dò của bạn, để đơn giản bạn có lấy mẫu ngẫu nhiên 100 người sử dụng, và bạn cặp đôi của các biến, ví dụ, x = total_new_friends và y = time_spent (tính bằng giây). Bối cảnh kinh doanh có thể là, cuối cùng bạn muốn để có thể hứa với các nhà quảng cáo, người trả giá thầu cho không gian trên trang web của bạn trước một số lượng nhất định của người sử dụng, do đó bạn muốn để có thể dự báo số lượng người dùng vài ngày hoặc vài tuần trước. Nhưng hiện nay, bạn chỉ đơn giản là cố gắng xây dựng trực giác và hiểu biết tập dữ liệu của bạn.
Bạn có thể thầy một vài dòng đầu tiên như sau:
7 276
3 43
4 82
6 136
10 417
9 269
Rõ ràng, trí óc bạn không thể tìm ra những gì đang xảy ra, bởi chỉ cần nhìn vào chúng trí óc của bạn của sẽ không giữ nó lâu. Có rất nhiều trong số chúng đang ở trong tình trạng không có thứ tự rõ ràng. Vì vậy, bạn hãy cố gắng để biểu diễn nó như trong hình 3.2.
Hình 3.2 Trông giống loại tuyến tính
Ở đây, trông giống như có một loại quan hệ tuyến tính, nó làm chúng ta có cảm nghĩ. có nhiều người bạn mới mà bạn có, nhiều thời gian bạn trãi qua vào các trang web. Nhưng làm thế nào bạn có thể hiểu, làm thế nào để mô tả mối quan hệ đó? Chúng ta hãy cũng chỉ ra rằng không có mối quan hệ hoàn toàn xác định giữa số người bạn mới và thời gian dành cho các trang web, nhưng chúng làm cho chúng ta cảm giác rằng có một mối liên hệ giữa hai biến.
Bắt đầu bằng cách viết một cái gì xuống
Có hai điều bạn muốn nắm bắt trong mô hình mô hình trên. Đầu tiên là xu hướng (trend) và thứ hai là các biến (variation). Chúng ta sẽ bắt đầu trước hết với xu hướng.
Đầu tiên, chúng ta hãy bắt đầu bằng cách, giả sử có thực sự là một mối quan hệ và đó là quan hệ tuyến tính. Điều giả sử này là tốt nhất, bạn có thể làm vào thời điểm này.
Có rất nhiều đường mà nhìn trông giống nhiều hơn hoặc ít hơn như chúng có thể thực hiện, như thể hiện trong hình 3.3.
|
Hình 3.3. Đường nào là phù hợp nhất?
Vì vậy, làm thế nào để bạn chọn đường nào là phù hợp nhất?
Bởi vì bạn đang giả định một mối quan hệ tuyến tính, mô hình của bạn bắt đầu bằng cách giả định từ hàm:
y = β0 + β1x
Bây giờ công việc của bạn là tìm ra những sự lựa chọn tốt nhất cho β0 và β1, sử dụng các dữ liệu quan sát để ước tính: ), ), ),…, ), …
Ký hiệu ma trận này: y = x · β
Điều bạn làm: Bạn viết ra mô hình của bạn. Bây giờ còn lại là xác định mô hình phù hợp.
» Tin mới nhất:
» Các tin khác: