Trong vài năm nay “Big Data” (dữ liệu lớn) và “Data Mining” (Khai thác dữ liệu) đã trở thành những từ ngữ thường được dùng trong nền công nghiệp kĩ thuật. Nó giải thích được tại sao Facebook biết được nên quảng cáo điều gì với bạn, iPhones biết điều chỉnh cách đánh chữ của bạn và rõ ràng hơn nữa là NSA (National Security Agency) biết được bạn có phải một kẻ khủng bố hay không. Vậy thì, những từ ấy có ý nghĩa thật sự như thế nào? Máy tính hoạt động như thế nào khi chúng “học” và “khai thác dữ liệu”? Về những câu hỏi này, các chuyên gia khi được hỏi đã trả lời phóng đại rằng “nó là một lĩnh vực rất phức tạp không dễ gì hiểu được” nhưng họ đã nói dối. Những nguyên tắc đó khá đơn giản để có thể nắm bắt dễ dàng và bạn cũng không cần phải là một chuyên gia thì mới có thể thấy được tiềm năng của lĩnh vực này hay nghĩ về việc ứng dụng nó cho chính bản thân mình.
Bài viết này bắt đầu đơn giản và dần dần sẽ đi sâu hơn, nhưng tôi sẽ cố gắng để mọi thứ đều có thể dễ hiểu với những ai có một chút ít kiến thức về toán. Nếu bạn chỉ cần một cái nhìn tổng quan, bạn chỉ cần đọc phần đầu tiên.
Tất cả là sự phân lớp dữ liệu (Classification)
Trước hết, có nhiều thuật ngữ nói về sự phân chia dữ liệu nhưng những thuật ngữ này đều chỉ về cùng một quá trình gọi là: Phân lớp. Vậy thì phân lớp là gì?Hãy nhìn vào hình vẽ dưới đây:
Ở phía trên, bên trái của bức hình có những vòng tròn đỏ và phía dưới, bên phải có những hình vuông màu xanh. Bây giờ, ai đó chỉ vào vị trí nào đó trong bức hình và hỏi bạn ở đó là vòng tròn hay hình vuông?
Câu trả lời của bạn là ở ví trí dấu “x” màu vàng nên là vòng tròn và ví trí dấu “x” màu đen nên là hình vuông phải không? Vậy thì bạn vừa mới làm công việc phân lớp dữ liệu! Nhìn nhận về phân lớp theo cách đó là: quyết định xem phần nào của bức hình thuộc về vòng tròn và phần nào thuộc về hình vuông.
Nếu bạn chỉ được cho trước một hình vuông và một hình tròn, sẽ là khá khó khăn để quyết định phần nào của bức tranh thuộc về hình tròn, phần nào thuộc về hình vuông, nhưng nếu bạn có môt triệu hình tròn và một triệu hình vuông nó sẽ trở lên thật sự dễ dàng. Những hình tròn và hình vuông đã được phân lớp xong chính là dữ liệu đã được phân lớp. Bây giờ chúng ta sẽ làm tất cả thành một quy tắc.
Càng nhiều dữ liệu đã được phân lớp, càng dễ dàng hơn để quyết định dữ liệu mới sẽ ở lớp nào hình tròn hay hình vuông
Vậy thì làm thế nào quyết định dữ liệu mới vào phân lớp nào?
Giả sử tôi là một một giáo viên và tôi nghĩ có thể ước lượng được ai đó có thu nhập trên 40.000$ một năm hay không từ chỉ số IQ và điểm kiểm tra của họ. Tôi lấy chỉ số IQ, điểm kiểm tra và thu nhập tất cả những sinh viên trước đây của tôi. Sau đó tôi phân lớp thu nhập của họ theo hai kiểu, trên 40.000$ và dưới 40.000$ một năm. Và tôi có thể vẽ một đồ thị giống như bên dưới (trên 40.000$ = hình tròn đỏ, dưới 40.000$ = hình vuông xanh).
Bây giờ tôi muốn dự đoán liệu anh chàng, Jimmy sẽ kiếm hơn 40.000$ một năm trong tương lai không, tôi có thể đặt một dấu “x” trên đồ thị tại điểm xác định bởi chỉ số IQ và điểm kiểm tra của anh ta, sau đó ta dùng dữ liệu đã được phân lớp để xác đinh ở đó là hình tròn đỏ, hay hình vuông xanh hay nói cách khác là Jimmy có thu nhập trên hay dưới 40.000$ (hình trên chỉ là một ví dụ mang tính minh họa).
Có hai điều quan trọng (và có liên quan) để hiểu rõ về ví dụ này
- Điều duy nhất giúp tôi có thể phân lớp cho dữ liệu mới là từ những dữ liệu đã được phân lớp. Không có bất cứ công thức trừu tượng hay thuận toán phức tạp nào ở đây cả, điều giúp chúng ta xác định vị trí nào đó trên đồ thị là hình tròn hay hình vuông chính là những hình tròn và hình vuông đã có sẵn trên đồ thị (hay chính là dữ liệu về những sinh viên cũ).
- Tôi chỉ cần làm một chút viêc đó là “giả sử rằng x và y ảnh hưởng lên sự phân lớp của z” và vẽ chúng ra. Nếu có sự phân biệt rõ rệt đâu là khu vực của hình tròn, đâu là khu vực của hình vuông thì x và y có khả năng lớn là ảnh hưởng tới z, nếu hình tròn và hình vuông ở khắp nơi và không có phân biệt rõ rệt thì có vẻ x và y không ảnh hưởng tới z.
Hãy để tôi giải thích rõ hơn một chút về quan điểm thứ hai. Nhìn vào bức tranh thứ hai và suy nghĩ tại sao bạn có thể dễ dàng phân lớp cho các dấu “x” như vậy. Lý do bởi vì có một mẫu hình (patterm) trong dữ liệu, có một khu vực rõ ràng của hình tròn và khu vực rõ ràng của hình vuông. Mẫu hình chỉ xuất hiện nếu các biến có liên quan với nhau. Do vậy ta có một mẫu hình tốt giữa thu nhập, IQ và điểm kiểm tra bởi vì chúng có liên quan với nhau. Nếu chúng ta vẽ đồ thị của thu nhập, màu mắt và độ cao chúng sẽ không là một mẫu hình bởi vì những yếu tố này không liên hệ gì với nhau. Sẽ khó khăn hơn để xác định tại một điểm là trong khu vực hình tròn hay trong khu vực hình vuông. Mọi thứ trong sẽ có vẻ như hình dưới đây:
Vậy phân lớp chính là cách vẽ ra những mẫu hình dựa trên dữ liệu.
Máy tính phân lớp dữ liệu như thế nào ?
Khi chúng ta phân lớp cho dấu “x” vàng hay dấu “x” đen mọi chuyên khá đơn giản. Một cách trực giác ta có thể kết luận cái nào là hình vuông cái nào là hình tròn. Nhưng máy tính của bạn cần được cài đặt một số nguyên tắc giúp chúng có thể xác định được, chứ không thể là bằng trực giác như chúng ta. Có hai phương pháp phân loai dữ liệu bằng máy tính đó là nearest neighbor classifier và SVM classifier.
Nearest Neighbor (Phương pháp phân lớp bằng cách tìm những dữ liệu đã được phân lớp gần nhất với nó).
Tên gọi Nearest Neighbor Classifier đã thể hiện khá rõ cách thức của phương pháp này. Khi máy tính xác định xem tại một điểm nào đó là hình tròn hay hình vuông nó sẽ tìm những dữ liệu gần nhất với điểm đó xem chúng thuộc phân lớp gì, rồi quyết định điểm dữ liệu cần xác định sẽ thuộc cùng phân lớp đó.
Ta có thể quan sát ở hình dưới, máy tính phát hiện ra ba dữ liệu gần nhất cho các điểm được đánh dấu bởi những dấu “x”.
Máy tính nhận thấy rằng tất cả những dữ liệu xung quanh dấu “x” vàng đều là hình tròn do vậy nó tất nhiên là một hình tròn và thuộc vào phân lớp hình tròn. Điều tương tự với dấu “x” màu đen.
SVM (support vector machine)
Phương pháp SVM vẽ một đường thẳng nằm giữa các hình tròn và các hình vuông giống như hình bên dưới:
Sau đó ta có thể kết luận bất cứ điểm nào ở trên đường thẳng màu xanh lá cây thì là hình tròn, bất cứ điểm nào phía dưới thì là hình vuông. Do vậy tại vị trí dấu “x” màu vàng là ở trên đường thẳng màu xanh lá cây phải là hình tròn.
Cả hai phương pháp này đều áp dụng cho máy tính để phân lớp dữ liệu rất hữu hiệu Để quyết định xem dùng phương pháp nào tùy thuộc vào tính chất của từng vấn đề, nhưng nó quá phức tạp để nói ở bài viết này.
Tại sao chúng ta cần sử dụng máy tính trong việc phân lớp dữ liệu?
Trong ví dụ về ước lượng thu nhập, khá là dễ dàng cho chúng ta có thể nhìn đồ thị và xác định, thu nhập của Jimmy trong tương lai, vậy chúng ta cần gì phải dùng đến máy tính? Câu trả lời là khi chúng ta làm việc với dữ liệu nhiều chiều chúng ta sẽ cần máy tính.
Một lần nữa nhìn lại ví dụ về giáo viên dự đoán khi nào sinh viên sẽ có thu nhập hơn 40.000$. Nếu ta muốn nhìn thấy mối quan hệ giữa chỉ số IQ và thu nhập tương lai, nó chỉ là bài toán một chiều (1-D) vì chỉ có duy nhất một dữ liệu cần đo đạc đó là chỉ số IQ. Cho bài toán 1-D chúng ta có thể vẽ nó lên trên một đường thẳng và nhớ rằng (hình tròn đỏ = trên 40K, hình vuông xanh = dưới 40K):
Nếu bạn muốn nhìn thấy mối quan hệ giữa chỉ số IQ, điểm kiểm tra và thu nhập trong tương lai thì vấn để lại liên quan đến dữ liệu hai chiều (2-D). Bởi vì bây giờ có hai thứ phải đo đạc và xác định phân lớp của chúng. Một bài toán 2-D cần được vẽ lên không gian hai chiều, hay chính là một mặt phẳng (có thể nghĩ nó đơn giản là một miếng giấy). Có chiều cao, chiều ngang, nhưng không có bề dày. Do vậy khi vẽ lên ta sẽ được hình dưới đây:
Tiếp tục phát triển bài toán với sự bổ sung dữ liệu về chiều cao của sinh viên để xem có mẫu hình nào được tìm thấy không. Bây giờ chúng ta cần vẽ chỉ số IQ, điểm kiểm tra và chiều cao. Vậy là có ba thứ cần đo đạc nên ta có bài toán 3 chiều (3-D). Do đó đồ thị phải vẽ trên không gian ba chiều. Không gian 3-D là không gian giống như chúng ta đang sống (có chiều cao, chiều ngang và chiều sâu), nó sẽ trông giống như hình dưới đây:
Chuyện gì sẽ xảy ra nếu ta muốn bổ sung thêm màu mắt để tìm mẫu hình? Bạn có thể đoán được ta có một bài toán 4 chiều (4-D). Và tất nhiên đồ thị được vẽ lên không gian bốn chiều, không gian mà chúng ta không thể mường tượng ra được. Cho 1-D, 2-D vấn đề khá dễ dàng những khi bài toán từ 3-D trở lên chúng ta không thể phân lớp dữ liệu bằng mắt thường được. Đó là lúc máy tính vào cuộc. Máy tính có thể giải quyết dữ liệu nhiều chiều hơn thế một cách dễ dàng và thậm trí bài toán 1000 chiều cũng không quá khó để máy tính giải quyết (nghe có vẻ như phóng đại, nhưng đó là sự thật).
Và những vấn đề 1000 chiều thì khá là phổ biến. Do vậy máy tính lấy một số lượng khổng lồ các loại dữ liệu (màu mắt, chiều cao, chỉ số IQ, lượng đường trong máu, tên, tuổi) và tìm ra mẫu hình từ dữ liệu đó, cụ thể là phân lớp hình tròn hay hình vuông. Đó là những mẫu hình mà chúng ta không thể hình dung bằng giác quan được. Nhớ rằng điều duy nhất giúp máy tính phân lớp dữ liệu mới là dữ liệu đã được đưa vào trong máy trước đó và đã được phân lớp.
Việc phân lớp này thực sự được sử dụng trong thực tế như thế nào?
Đến đây những gì đã trình bày có một chút trừu tượng, nhưng hy vọng các bạn có thể hiểu để có thể thấy được một vài ứng dụng thực tế của phân lớp dữ liệu. Tôi sẽ nhanh chóng giới thiệu hai ứng dụng nổi bật nhất. Một là phương pháp của IBM để dự đoán tội phạm và thứ hai là ứng dụng trong nhận diện khuôn mặt.
Dự đoán tội phạm
Một trong những ứng dụng yêu thích của tôi về phân lớp dữ liệu phải kể đến dự đoán tội phạm của IBM. Sự phân lớp của họ dựa trên một lượng lớn các biến về thành phố New York mỗi ngày (thời tiết, sự kiện thể thao chính, thời gian trong ngày, thời gian trong năm, vv…) và sau đó xác định ở đâu trong thành phố sẽ có tội phạm. Mọi chuyện dường như là xác định xem liệu có tội phạm trong một khu vực xác định nào đó không. Ví dụ (có tội phạm ở Lower Manhattan = có/ không = hình tròn/ hình vuông). Sau khi thu thập dữ liệu của vài năm họ phân lớp và bắt đầu sử dụng để dự đoán khu vực nào sẽ có vụ phạm tội trong ngày hôm nay. Vì vậy ở đầu ngày hôm đó họ sẽ cho các dữ liệu vào máy tính ví dụ (ngày hôm nay nắng, Thứ Hai, có một sự kiện của người dân New York tại đâu đó, vv…) và máy tính sẽ tìm các ngày trong quá khứ có dữ liệu gần tương tự, và xác định xem đâu là những điểm nóng về tội phạm của ngày hôm đó. Xe cứu thướng và xe cảnh sát sẽ tuần tra khu vức đó và đợi tội phạm xuất hiện. Có vẻ phương pháp này thật sự giúp giảm số lần ứng phó khẩn cấp ở New York. Thật kì diệu!
Nhận diện khuôn mặt
Một ứng dụng phổ biến của phân lớp dữ liệu là nhận dạng khuôn măt. Máy tính lấy hàng trăm hình ảnh của mọi người và chỉ ra đâu là vị trí khuôn mặt trong bức hình (nó được thực hiện bằng cách vẽ một hộp quanh mỗi khuôn mặt, trong mỗi bức hình). Máy tính nhận dữ liệu là vị trí và màu của các pixel và mối quan hệ giữa chúng với nhau, và sau đó phân thành lớp có khuôn mặt và không có khuôn mặt trong hình. Máy tính phải được huấn luyện bằng cách cho biết khuôn mặt sẽ hiển thị như thế nào trong bức hình hàng ngàn lần. Từ đó nó có thể nhận diện được có khuôn mặt trong hình hay không, và nó ở đâu (có mặt /không có mặt = hình tròn và hình vuông). Công nghệ này hiệu quả và chi phí tính toán thấp đủ để dùng trong máy ảnh kỹ thuật số.
Kết luận
Big data, Machine Learning (Máy học) và Data Mining đều nói đến quá trình phân lớp dữ liệu. “Big Data” muốn nói đến việc càng nhiều dữ liệu bạn sử dụng, sự phân lớp càng hiệu quả hơn (đó cũng là nguyên tắc đã nhắc đến phía trên), Data Mining nói tới thực tế có thể tìm ra mẫu hình từ những dữ liệu với số chiều lớn giúp chúng ta có thể khai thác được nhiều thông tin và “‘Machine Learning’ đề cập tới việc học phương pháp để phân lớp dữ liệu bởi vì chúng dùng kết quả đã có để đưa ra kết luận tương lai.
Rất dễ dàng để đưa ra dự đoán về khả năng tương lai của Big Data, giống mọi người, tôi đoán nó sẽ rất hữu ích. Nó có thể hữu ích khi ta nhìn vào dữ liệu quá khứ để đưa hiện tượng vào hoàn cảnh đó. Gia đình Victorian rất yêu thích phân lớp. Họ đã đi khắp thế giới thu thập tất cả các loại côn trùng, động vật, chi tiết của các nền văn minh cổ đại vv…. Nó được thúc đẩy bởi niềm tin rằng nếu bạn có thể phân lớp mọi thứ con người sẽ hiểu biết nhiều hơn về thế giới và gần gũi hơn với sự thật khách quan. Big Data được dựa trên niềm tin rằng chúng ta có thể tìm thấy các mẫu hình trong tự nhiên bằng cách phân lớp và đo đạc càng nhiều càng tốt.
Source: http://www.vnquants.com/ly-thuyet/big-data-data-mining-va-machine-learning-ben-trong-nhung-dieu-an-giau
Klik untuk melihat kode: :) =( :s :D :-D ^:D ^o^ 7:( :Q :p T_T @@, :-a :W *fck* x@