Dạo gần đây có nhiều hội, nhóm, diễn đàn và các anh ăn trên, ngồi tróc (CxO) bàn về Big Data nên mình cũng đú theo một bài hy vọng chia sẻ góc nhìn của mình về cái gọi là Big Data này.
Họ nói về Big Data mọi nơi
Nếu bạn đã từng đi tham gia các buổi hội thảo (miễn phí và cả thu phí), bạn sẽ nghe được một kịch bản thế này:
– Big data là một xu thế, …blah blah…
– Big data bao gồm 3V, 4V, 5V, blah blah…
– Big data đã được ứng dụng bởi Google, Facebook, Amazon, …blah blah…
– Big data đang được mọi người quan tâm, …blah blah…
– Big data là Hadoop…blah blah…
– Big data tui chia sẻ vậy thôi chứ tui chưa có làm vì…blah blah…
– Big data là các phần mềm và tụi tui đang dùng của IBM, Oracle, SAP…blah blah..
What, Who, Where, When, Why, How?
Không có ý mạo phạm các cao thủ Big data nhưng thực sự cái mọi người thu nhận được hầu hết từ các buổi chia sẻ này là:
– What: Big data là cái cục gì?
– Who: Big data đang được đại ca giang hồ nào triển khai?
– Where: Big data đang được áp dụng ở nơi mô trong các dự án?
– When: Big data được áp dụng khi nào và từ lúc nào?
Tuy nhiên, có 2 cái thực sự cần chia sẻ từ cái Big data thì không ai nói (hoặc có thể không biết nói gì ^^!):
– Why: Tại sao họ lại làm Big data, tại sao chỗ đó phải như vậy, lý do nào, dẫn chứng nào?
– How: Họ đã/đang làm big data như thế nào. Đâu là các chiến thuật, chiến lược, kỹ thuật, hạ tầng, công nghệ, thuật toán, triển khai của họ?
Do thiếu 2 cái này, nên hầu hết cái mọi người nghe được và đọc được nhan nhản ở khắp mọi nơi về Big data là y chang nhau và cũng chả đem lại lợi ích gì cho doanh nghiệp hay vận hành của bạn. Họ chỉ nói và thuần túy chữ BIG trong thuật ngữ Big Data.
BIG nghĩa là gì?
Big là to, bự đơn giản chỉ các kỹ thuật xử lý cái gì to, bự và khía cạnh này cũng chỉ được chia sẻ ở tầng rất là Amatơ. Mọi người nói về Hadoop như là một vị anh hùng trong mãng này, nhưng thực sự có mấy ai đã cài trọn vẹn bộ đồ chơi của framework Hadoop (Database, File System, MapReduce..) hoặc nhiều khi còn xài windows mà ngồi nói chuyện Hadoop.
Cài là một chuyện, thế ứng dụng được gì rồi? hay chỉ là chạy thử mấy cái ví dụ về dùng Map Reduce đếm số từ trong một file bự và nằm trên HFS hoặc dùng Map Reduce để đọc Log file. Đây không phải là làm big data.
Hadoop bản thân nó không phải là ứng dụng con mẹ gì hết, nó cũng chỉ là một framework cung cấp các công cụ giúp bạn làm việc, thao tác được với các dữ liệu với số lượng lớn và cần một cách thức khác để xử lý cũng như xử lý phân tán đống dữ liệu này (Map reduce). Nó là một tay chơi BIG đúng nghĩa trong chữ Big data.
Tôi làm Big Data
Không phải tất cả, nhưng hầu hết khi hỏi họ đang “làm” Big Data như thế nào thì sẽ là đang xài bộ phần mềm, giải pháp ABC của IBM, XYZ của Oracle, JQK của SAP…họ cho gì xài đó chứ cũng có biết nó làm gì ở trỏng đâu. Muốn biết thì anh bỏ tiền mua thử của tụi nó về xài đi rồi áp dụng cho doanh nghiệp của anh, nó chừng vài tỷ thôi à, công ty tôi giàu nên tôi làm Big data vậy đó…Ôi đệch!!
Deep Data
Đến đây, bạn cũng đã nắm khá nhiều thông tin về các buổi chia sẻ về Big data, và hầu hết sẽ như thế đó. Do đó, tui không quan tâm đến mấy ông “nói” big data vì kiếm đại cái slide, một bài báo là biết. Dù bạn có nhiều dữ liệu mà cái bạn khai thác không được 1% thì chúc mừng bạn, bạn có một cuộc sống lập trình an nhàn. Nếu bạn có đủ nhiều dữ liệu (không hoành tráng đến mức BIG, đến Terabyte, Petabyte..) nhưng bạn khai thác hầu hết 90% thì giá trị mang lại nó thực là đáng kính nể. Do đó, BIG không phải là vấn đề, mà là DEEP, deep data.
Deep data là từ mình mới nghĩ ra vì thấy Big không phản ánh đúng giá trị mà phải là deep, ám chỉ bạn khai thác sâu đến mức nào. Và tùy vào khả năng của bạn (và team) cũng như tình hình tài chính, chính sách đầu tư R&D để tập trung biến Deep Data thành mũi nhọn chiến lược.
Deep data cũng chỉ là một thuật ngữ để đối trọng với Big data (Buzzword), chứ thực ra làm deep data cũng là làm data mining (khai khoáng dữ liệu), tìm ra những góc tối tăm, thâm sâu và ý nghĩa của dữ liệu nhằm tăng giá trị cạnh tranh của doanh nghiệp ứng dụng nó.
Làm Deep Data cần những gì?
Nãy giờ nói dài dòng, vậy công ty tui muốn làm Deep data thì tui cần chuẩn bị gì để tham gia cuộc chơi trí tuệ này. Là một startup nghèo, việc dùng hoặc tư vấn khách hàng mua các giải pháp Big Data của các doanh nghiệp nổi tiếng trên thị trường là không khả thi, do đó buộc phải xây dựng một đội hình (gần lý tưởng) để có thể phục vụ mục tiêu khai khoáng dữ liệu.
Về hạ tầng kỹ thuât, tùy theo nhu cầu của công ty mà cần đầu tư server xịn hay không vì chủ yếu cầu xử lý nhiều (CPU & Memory). Về phía ngôn ngữ, dựa theo chiến lược triển khai thì có thể chọn Java (Hadoop dùng Java), C, C++, hoặc PHP như công ty tui.
Về con người, thực sự bạn cần những người Business Analysis (BA) có kinh nghiệm và trình độ để nghĩ ra các ý tưởng, các đề xuất khai thác. Hiện nay, có nhiều bạn cũng mang chữ BA nhưng nhiều khi không biết tác dụng của phương sai, độ lệch chuẩn, hàm phân phối xác suất, quá trình kiểm nghiệm giả thuyết…BA đúng nghĩa là một tay có hiểu biết về xác suất thống kê, đồng thời phải theo sát doanh nghiệp để hiểu được các nhu cầu, khó khăn mà doanh nghiệp đang đối mặt.
Bạn cần có người am hiểu về các ngôn ngữ lập trình để viết trên các framework có sẵn như Hadoop, Mahout..hoặc tự viết trên nền framework made-in-tự-tui của công ty bạn. Bạn cũng cần system admin để chạy theo các cài đặt, cấu hình server cho đội code dùng.
Những bước để bắt đầu làm Deep data cho doanh nghiệp
Sau khi có chiến lược rõ ràng về hạ tầng, nhân sự, thời gian thì bạn tiến hành một số bước sau để phân tích. Hầu hết các nội dung đều do BA yêu cầu và đội ngũ IT chỉ là thực hiện theo để đáp ứng các như cầu của doanh nghiệp. Cho nên, BA là linh hồn của các hệ thống này.
Bước 1: Thu thập dữ liệu (Collecting)
Có nhiều kỹ thuật thu thập dữ liệu hiện giờ, từ web, pos data, sale data…Điều cốt lõi ở bước này là bạn chuẩn bị các hệ thống sẵn sàng cho việc thu thập một lượng dữ liệu đủ lớn nhưng không ảnh hưởng nhiều đến quá trình hoạt động của hệ thống. VD: Bạn có một website bán hàng, bạn có thể thiết lập hệ thống thu thập dữ liệu nhưng không được ảnh hưởng đến người dùng đang xem website.
Tiếp theo, bạn phải xác định xem là mình sẽ thu thập thông tin gì, gọi là Metric. Đối với web, có hàng ngàn metric mà bạn có thể thu thập từ số lần đăng nhập thành công, thất bại, thêm vào giỏ hàng, không mua hàng…
Bước 2: Báo cáo (Reporting)
Sau khi thu thập các thông tin cần thiết, việc tiếp theo là thiết kế các hệ thống báo cáo “hoành tráng”, thể hiện đúng các yêu cầu cần coi số liệu của một bộ phận nhân sự nào đó. Do số liệu có thể nhiều, nên việc kiến trúc một hệ thống report có thời gian phản hồi nhanh sẽ là bài toán khó nhất ở bước này.
Không chỉ dừng lại ở các báo cáo thông thường, bạn cũng có thể xây dựng các báo cáo thể hiện sự tương quan giữa các số liệu của những metric khác nhau, nhằm giúp doanh nghiệp có những chiều kích dữ liệu mới hơn để dễ dàng đưa ra quyết định.
Hầu hết các hệ thống dừng ở bước Reporting là khá lớn và cũng đáp ứng khá nhiều thông tin cần thiết của một doanh nghiệp. Tuy nhiên, nếu dừng lại ở đây thì hệ thống chỉ có thể coi là một hệ thống report và tham chiếu số liệu chứ chưa thực sự đi sâu vào deep data.
Bước 3: Đào bới (Digging)
Ở bước đào bới dữ liệu này, tức là đi sâu vào cái đống dữ liệu hiện có để tìm ra những thông tin sáng giá và có thể ứng dụng vào doanh nghiệp. Tới bước này, đòi hỏi một người BA có kiến thức rộng về data mining hoặc phải có một người có hiểu biết về khoa học dữ liệu (data science). Một số nhu cầu thường được đề cập ở bước này là Đề xuất (Recommendation), Dự đoán (Prediction) và Phân nhóm (Grouping).
– Đề xuất: là một mảng khá thông dụng, đặc biệt là những lĩnh vực có nhiều dữ liệu người dùng như đề xuất mua hàng, đề xuất xem, đề xuất nhập kho, đề xuất đuổi nhân viên ^^!, đề xuất quy trình mang lại lợi nhuận cao nhất..Mình cũng có một số bài giới thiệu về xây dựng Recommender System tại slideshare.
– Dự đoán: cho tới hiện tại, hầu hết các dự đoán đều xuất phát từ cảm nhận, giác quan của CxO, tuy nhiên, với sự giúp đỡ của các hệ thống dự đoán thì sẽ giúp các phán đoán và quyết định được tin tưởng và thuyết phục hơn. Ngoài ra, dự đoán cũng được dùng nhiều để tìm ra các mô hình dự đoán doanh thu, lợi nhuận, giá bán, đối thủ, thị trường…
– Phân nhóm: đây là một nhánh tính toán giúp hình thành các nhóm thông tin dựa trên các thông tin sẵn có, được áp dụng nhiều cho các chiến lược marketing, phân loại khách hàng, phân loại sản phẩm để có các hướng đề xuất phù hợp cho từng nhóm sau khi đã được phân loại. Ứng dụng của loại này cũng được dùng để phân loại các thông tin dựa theo một mô hình xử lý nào đó, ví dụ phân loại đơn hàng rác, khách hàng vãng lai…
Lời kết
Trên đây là những chia sẻ của mình về Big data và cách tiếp cận “Deep” của mình. Hy vọng sẽ giúp ngành Data Science ở Việt Nam có nhiều ngôi sao sáng và có nhiều Data Scientist hơn để mình noi theo học tập, ứng dụng cho các sản phẩm của mình.
—–
Dưới đây là một slide của mình nói về ứng dụng BI trong E-commerce, cũng có đề cập một số vấn đề trong phân tích dữ liệu, hy vọng nó sẽ giúp ích mọi người.
Chào bạn mình hiện đang phát triển một ứng dụng giống excel về thao tác và tốc độ làm việc. Mình đang hướng tới việc phát triển ứng dụng theo phân tích bigdata, bạn có project nào liên quan đến việc này cho mình tham khảo được không?
ý tưởng lạ, tuy nhiên thay vì bạn nghĩ Deep, thì hãy nghĩ tới Big data analytics. bên trong đó có machine learning sẽ làm nhiệm vụ phần Deep mà bạn nói, thậm chí còn thông minh hơn.
thân.