Làm sao để trở thành nhà khoa học dữ liệu?
Một số chú ý
- Đây chỉ là chia sẻ mang tính cá nhân của người viết
- Để tránh hiểu nhầm, một số từ tiếng Anh trong bài đã được Việt hóa. Ví dụ:
- Data scientist: nhà khoa học dữ liệu, nói một cách vắn tắt, đó là người có kỹ năng về toán thống kê hơn kỹ sư phần mềm, và là người có kỹ năng lập trình tốt hơn một nhà thống kê.
- Data science: khoa học dữ liệu, chỉ quá trình sử dụng các kỹ thuật và mô hình để có thể lấy được những kết quả quan trọng trong dữ liệu, giúp tạo thành các sản phẩm dữ liệu (data product). (1)
- Machine Learning: học máy.
- Visualization: biểu diễn trực quan, biểu diễn.
Nội dung chính
Trong kỷ nguyên Dữ liệu lớn như hiện nay, việc tìm hiểu và áp dụng các công nghệ liên quan nhằm mang lại hiệu quả kinh tế cao hơn đang là đòi hỏi bức thiết của nhiều doanh nghiệp.
Nhu cầu nhân sự trong lĩnh vực này đang ngày một gia tăng. Theo dự báo (2) của học viện toàn cầu McKinsey: vào năm 2018, riêng nước Mỹ có thể đối mặt với tình trạng thiếu hụt từ 140 000 tới 190 000 chuyên gia phân tích dữ liệu, thiếu 1.5 triệu nhà quản lý biết sử dụng các công cụ của Dữ liệu lớn để thực hiện việc ra quyết định hiệu quả hơn. Những người có kỹ năng về khoa học dữ liệu (Data Science) trong hồ sơ LinkedIn đang được chào đón hơn bao giờ hết.
Vậy làm sao để có thể trở thành nhà khoa học dữ liệu? Bài viết này cung cấp cho các bạn một số bước cơ bản cần thực hiện.
1. Học thêm toán học, thống kê và học máy
Đây là điều bắt buộc. Nếu các bạn học để áp dụng, thì có thể yêu cầu không cần cao, có thể chỉ cần dừng ở bước hiểu các khái niệm, các mô hình và thuật toán liên quan.
Thêm vào đó, bạn nên đọc tài liệu Xác suất thống kê bằng tiếng Anh vì hai lý do:
- Tài liệu tiếng Việt thường không kèm theo thuật ngữ tiếng Anh tương ứng. Nên khi đọc tài liệu nước ngoài, đôi khi ta gặp khó khăn trong việc hiểu và nắm bắt bản chất của vấn đề.
- Sách về Khoa học dữ liệu tiếng Việt đang tương đối thiếu. Tài liệu tiếng Anh thì phong phú hơn nhiều.
Một số khóa học, tài liệu online mà các bạn có thể tham khảo:
- Giới thiệu về tư duy Toán học, ĐH Standford
- Đại số tuyến tính, MIT Open Course Ware.
- Giới thiệu về Thống kê, Udacity (khóa này hoàn toàn miễn phí).
- Học máy, khóa học kinh điển do giáo sư Andrew Ng (ĐH Standford) dạy trên Coursera.
- Học máy trong thực tế, do phó Giáo sư Jeff Leek, ĐH Johns Hopkins, phụ trách. Khóa học này thiên nhiều tính ứng dụng.
Và tất nhiên, một số ebook:
- Head First Statistics, 2008, by Dawn Griffiths.
- The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition, 2011, by Trevor Hastie, Robert Tibshirani, Jerome Friedman.
- Mining Massive Datasets, 2014, by Jure Leskovec, Anand Rajaraman, Jeffrey David Ullman
2. Học lập trình
Việc trang bị cho mình tư duy về lập trình, bước đầu tìm hiểu kiến trúc hệ thống máy tính, mạng Internet… Ngôn ngữ lập trình có thể sử dụng là Java, Python, Scala, R, Javascript… “Ngôn ngữ là lớp vỏ của trí tuệ”, các bạn cần nắm được đặc điểm riêng có của mỗi loại ngôn ngữ, các cấu trúc điều khiển, các kỹ thuật liên quan… trước khi triển khai ý tưởng của mình trong tình huống cụ thể. Ví dụ:
- Python là ngôn ngữ rất dễ học cho người bắt đầu lập trình, có nhiều thư viện liên quan tới xử lý ngôn ngữ tự nhiên (NLP hay Natural Language Processing), học máy để sử dụng như: scikit-learn, nltk… Python là ngôn ngữ được sử dụng nhiều trong tính toán khoa học.
- Java là ngôn ngữ lập trình hướng đối tượng, được thiết kế để biên dịch thành bytecode, giúp Java chạy được trên nhiều nền tảng khác nhau mà máy ảo Java hỗ trợ. Cú pháp Java được vay mượn nhiều từ C & C++ nhưng có cú pháp hướng đối tượng đơn giản hơn và ít tính năng xử lý cấp thấp hơn… Java là ngôn ngữ chính để lập trình trên nền tảng Android, và nhiều hệ thống hạ tầng Dữ liệu lớn đều được xây dựng dựa trên công nghệ Java. Vì vậy, việc đầu tư vào học lập trình Java là một lựa chọn sáng suốt.
- …
Một số tài liệu mà các bạn có thể tham khảo như:
- Giải thuật và Lập trình, 2002, thầy Lê Minh Hoàng, ĐHSP Hà Nội.
- Lý thuyết Otomat hữu hạn, Thư Viện Học Liệu Mở Việt Nam.
- Thinking in Java, 4th edition, 2006, by Bruce Eckel.
- Effective Java (2nd Edition), 2008, by Joshua Bloch.
- Natural Language Processing with Python, 2009, by Steven Bird, Ewan Klein, Edward Loper
- Python Việt Nam (Facebook group)
3. Hiểu về cơ sở dữ liệu
Khi bắt đầu tìm hiểu, ta thường làm việc với file văn bản (text file). Tuy nhiên, khi áp dụng vào trong thực tế, cơ sở dữ liệu thường là cách hay sử dụng để lưu trữ và xử lý dữ liệu.
Từng giờ, từng giây trên thế giới có hàng chục triệu người đang sử dụng dịch vụ của các hãng công nghệ lớn trên thế giới như Google, Yahoo, Microsoft, Facebook…. Chỉ tính riêng công việc trả về kết quả tìm kiếm mỗi khi người dùng gõ từ khóa vào ô tìm kiếm, Google dã phải vận hành hàng loạt server đặt khắp thế giới, với cường độ hoạt động 24/7, 365 ngày/ năm không có lấy một giây ngơi nghỉ, riêng việc phục vụ nhu cầu tìm kiếm đã đòi hỏi các hệ thống của Google xử lý xấp xỉ 20 petabyte dữ liệu mỗi ngày, một con số mà người bình thường khó có thể tưởng tượng ra nổi.Ở tầm vóc này, mọi sai lầm dù là nhỏ nhất, dù là trong khâu thiết kế hay triển khai cũng có tiềm năng gây hậu quả lâu dài. Mọi công việc từ bổ sung dung lượng lưu trữ đến thay đổi đôi chút kết cấu cơ sở dữ liệu đều sẽ cần được được cân nhắc kỹ lưỡng.
Cơ sở dữ liệu bao gồm nhiều loại như: SQL, NoSQL, Graph Database, In-Memory Database… Mỗi loại lại có những đặc điểm riêng có, phù hợp cho những bài toán xác định. Một số hệ cơ sở dữ liệu thông dụng như: MySQL, PostgreSQL, MongoDB, Redis, HBase, Neo4j,…
Cơ sở dữ liệu
Tài liệu tham khảo:
- Tổng quan về Cơ sở dữ liệu, FPT Polytechnic.
- Tổng quan MongoDb
- MongoDb University
- Tổng quan về Graph Database
- Tổng quan về HBase
- The Little Redis Book by Karl Seguin
- CAP theorem, Wikipedia
- High Performance MySQL: Optimization, Backups, and Replication, 2012, by Baron Schwartz, Peter Zaitsev, Vadim Tkachenko.
4. Nghiên cứu về Khoa học dữ liệu
Khoa học dữ liệu là nơi hợp nhất của nhiều lĩnh vực liên quan như khoa học máy tính, toán, thống kê, lý thuyết xác suất, học máy, kỹ nghệ phần mềm, tính toán phân tán, biểu diễn trực quan dữ liệu. Tất cả những lính vực trên đều đã bắt đầu từ cách đây vài thập kỷ, nhưng chỉ được kết dính lại với nhau trong kỷ nguyên Dữ liệu lớn. Khoa học dữ liệu phát triển rất nhanh để đáp ứng lại nhu cầu của thực tế khi xử lý:
- Khối lượng lớn dữ liệu (Volume of Data): Theo tài liệu của Intel vào tháng 9/2013, hiện nay thế giới đang tạo ra 1 petabyte dữ liệu trong mỗi 11 giây và nó tương đương với một đoạn video HD dài 13 năm. Bản thân các công ty, doanh nghiệp cũng đang sở hữu Big Data của riêng mình, chẳng hạn như trang bán hàng trực tuyến eBay thì sử dụng hai trung tâm dữ liệu với dung lượng lên đến 40 petabyte để chứa những truy vấn, tìm kiếm, đề xuất cho khách hàng cũng như thông tin về hàng hóa của mình. (3)
- Tốc độ thu thập dữ liệu (Velocity of collected Data): Dữ liệu đến từ nhiều nguồn khác nhau, nhất là các dữ liệu từ các cảm biến, được cập nhật từng giờ, từng phút.
- Sự đa dạng của dữ liệu (Variety of Data): thông tin được cập nhật trên các trang web mạng xã hội, những bức ảnh và video kỹ thuật số được đưa lên mạng, dữ liệu giao dịch của các hoạt động mua sắm trên mạng… dưới mọi hình thức khác nhau (có cấu trúc, phi cấu trúc, bán cấu trúc)
Đây là những thành phần cơ bản, tạo nên khái niệm 3V của Dữ liệu lớn.
Quá trình xử lý trong Khoa học dữ liệu có thể được chia thành các bước như sau:
trong đó:
trong đó:
- 1. Xác định vấn đề: Tại bước này, ta đặt các câu hỏi liên quan như: mục đích của ta là gì? Ta có thể làm những gì khi có đầy đủ dữ liệu? Ta có thể phán đoán (predict) hay ước lượng (estimate) được gì từ dữ liệu?
Ví dụ: Làm thế nào để xây dựng hệ thống phát hiện thư rác? Với nội dung một bức thư cho trước, liệu ta có thể phán đoán xem: liệu nội dung đó có nên được gán nhãn là thư rác? - 2. Thu thập dữ liệu: Tìm cách lấy các dữ liệu cần thiết. Ở bước này cần chú ý tới mức độ liên quan của dữ liệu tới vấn đề cần giải quyết. Một số khía cạnh khác liên quan tới tính riêng tư (privacy) cũng nên được xem xét thỏa đáng.
Ví dụ: Cho bài toán phát hiện thư rác, ta có thể sử dụng thư của những người tham gia dự án. Cho bài toán điều tra phản ứng của khách hàng khi ra mắt sản phẩm mới, ta có thể sử dụng dữ liệu từ mạng xã hội - 3. Tiền xử lý dữ liệu: Dữ liệu mà ta thu được có thể không đầy đủ hoặc thậm chí bị sai lệch, chứa những giá trị bất thường. Nhiều tập dữ liệu (Data Corpus) có số đặc trưng (feature) lớn, không phù hợp với năng lực tính toán hiện tại. Ta cần có những biện pháp để khắc phục những vấn đề đó như: phát triển các thuật toán phát hiện giá trị bất thường & làm giảm ảnh hưởng của nó, giảm chiều, chuyển sang nghiên cứu ở không gian khác…
Ta thường xuyên dùng các công cụ như: weka, rstudio, ggvis, d3js, vega…
Kết quả biểu diễn với dữ liệu từ các đời tổng thống Mỹ
- 4. Xây dựng mô hình: Ở mức độ sơ lược, ta tìm hiểu mô hình dữ liệu, từ đó áp dụng các thuật toán phù hợp để xác định tính đúng đắn của mô hình và đem áp dụng vào thực tế. Số lượng thuật toán rất nhiều, có thể khiến bạn bị ngợp. Hình sau mô tả họ các thuật toán trong scikit-learn
Tuy nhiên, vẫn có một số phương pháp thật sự nổi trội mà ta cần tập trung vào. Chẳng hạn, đối với phương pháp phân loại (classification method), các phương pháp tốt nhất là: SVM, boosting ensemble, neural network.
Kết quả là tại bước này ta sẽ có những báo cáo với biểu diễn trực quan về những phát hiện chính trong dữ liệu đầu vào. - 5. Đánh giá: Bước này sẽ trả lời câu hỏi là: Ta đã biết thêm được điều gì? Kết quả tìm được liệu có thể lý giải được? Ta sẽ quay lại bước 1 với những hiểu biết mới.
Tài liệu tham khảo:
- Process Mining: Data science in Action, Eindhoven University of Technology, Coursera
- Getting and Cleaning Data, Johns Hopkins University, Coursera.
- Interactive Data Visualization for the Web, 2013, by Scott Murray
- Data Smart, 2013, by John W. Foreman
- Data Science for Business: What you need to know about data mining and data-analytic thinking, 2013, by Foster Provost and Tom Fawcett
- Hỏi & Đáp: Hệ thống gợi ý là gì?
5. Làm quen với công nghệ Dữ liệu lớn
Khi dữ liệu thay đổi về lượng, sẽ dẫn đến việc thay đổi về chất. Để nắm bắt được ‘chất’, khi tiến hành xử lý dữ liệu trên quy mô lớn, ta cần những công cụ mới, công nghệ mới. Gần đây, ta nghe nhiều đến hàng tá công nghệ như: Apache Hadoop, YARN, MapReduce, Apache Spark, Apache Samza, Apache Storm, Apache Kafka… (Danh sách các dự án Apache nguồn mở liên quan, các bạn có thể xem ở đây). Chính tính phong phú đa dạng này và bản thân tính phức tạp của các vấn đề mà mỗi dự án giải quyết, làm cho những người mới bắt đầu luôn tự hỏi là nên nghiên cứu cái gì, làm cái gì trước? Đặc biệt nhất là trong bối cảnh lĩnh vực Dữ liệu lớn đang chứng kiến nhiều biến chuyển đáng kinh ngạc khi Hadoop trình làng phiên bản mới.
Mô hình Hadoop 1.0 và 2.0
Phiên bản mới mang tính linh động cao trong kiến trúc hệ thống. Bên cạnh mô hình tính toán (Computational model) MapReduce, YARN cho phép ta có thêm các mô hình tính toán khác cùng hoạt động như các mô hình của Apache Spark (cho dữ liệu tĩnh, hay Data at Rest) hay như Apache Storm (cho dữ liệu động, Data in Motion)… Điều này giúp cho Hadoop 2.0 trở thành hệ điều hành dữ liệu (Data Operating System) đúng nghĩa hơn, giúp hệ sinh thái bao quanh sinh động hơn rất nhiều so với Hadoop 1.0.
Hệ điều hành dữ liệu với Hadoop 2.0
Thiết nghĩ việc tìm hiểu và áp dụng công nghệ dữ liệu lớn, nên bắt đầu bằng việc tìm hiểu các thành phần tronghệ hiều hành này, từ mức thấp lên mức cao. Bên cạnh đó, công nghệ Dữ liệu lớn sẽ còn thay đổi nhiều trong thời gian tới. Việc chạy theo công nghệ cũng nên được cân nhắc kỹ trong mối liên quan với vấn đề mà doanh nghiệp & tổ chức cần giải quyết.
Tài liệu tham khảo:
- Xử lý dữ liệu phân tán bằng Hadoop, 2011, IBM
- Big Data Now, 2014, O’Reilly.
- Professional Hadoop Solutions, 2013, by Boris Lublinsky.
- Elastic Search Server, 2nd edition, 2014, by Rafal Kuc and Marek Rogoziński
6. Thêm các trải nghiệm
Bạn có thể:
- Tham gia các cuộc thi do Kaggle tổ chức: Có rất nhiều cuộc thi được tổ chức trên Kaggle (4), với nhiều mức độ từ dễ đến khó, thậm chí có những cuộc thi có giải thưởng lớn. Sau mỗi cuộc thi đều có phần nêu lời giải từ các đội, góp phần chia sẻ nhiều kiến thức hơn liên quan tới Học máy.
Trang Web của Kaggle luôn có nhiều cuộc thi - Tham gia các cộng đồng trên mạng, theo dõi các chuyên gia trong lĩnh vực này: Các bạn có thể theo dõi Quora, Data Science 101, BigSonata,DataTau… Cộng đồng Việt Nam trên facebook về lĩnh vực này cũng khá sôi động như: BigData Startup, Vietnam Data Scientists, IT Leader Club…
- Thử nghiệm với các ý tưởng, dự án nhỏ: Tìm hiểu thực tế sinh động để phát hiện ra nhu cầu, các bạn hoàn toàn có thểtìm hiểu & phát triển các dịch vụ & sản phẩm hữu ích áp dụng công nghệ Dữ liệu lớn từ đơn giản cho tới phức tạp. Số lượng các công ty startup trong lĩnh vực này đang ngày một nhiều hơn, đó cũng là cơ hội cho chính bạn theo dòng chảy của thế giới.
7. Tìm nghề nghiệp hoặc các chương trình thực tập liên quan
Đây là cách tốt nhất để bạn có điều kiện nghiên cứu, tiếp xúc và áp dụng công nghệ Dữ liệu lớn vào trong cuộc sống. Một số công ty như FPT, VCCorp, Vingroup… đều có nhu cầu tuyển dụng nhân sự trong mảng này.
Đặc biệt, công ty Adatao (5) do 2 co-founder người Việt Nam thành lập, vừa gọi vốn thành công 13 triệu Đôla Mỹ (series A), đang thành lập chi nhánh tại Sài Gòn cũng đang dáo diết tìm kiếm tài năng trong lĩnh vực này tại Việt Nam. Các bạn quan tâm, có thể liên hệ trực tiếp với anh Thong Do để tìm kiếm cơ hội cho mình.
8. Kết luận
Trên đây là những nhận định chủ quan của người viết. Mình rất cảm ơn nếu các bạn có những góp ý, bổ sung để hoàn thiện bài viết.
Khi học trò sẵn sàng, thầy giáo sẽ suất hiện
(Châm ngôn Phật giáo)
Chúc các bạn thành công trên con đường đã chọn!
9. Tham khảo
- Data Science, Wikipedia
- Why Data Science Jobs Are in High Demand, Havard Extension Hub, 2014.
- Big Data là gì và người ta khai thác, ứng dụng nó vào cuộc sống như thế nào?, TinhTe.vn
- Kaggle Competitions
- Adatao Emerges With $13M In Funding And Visions Of Changing Big Data, 2014, TechCrunch.com
from : http://bigsonata.com/
No comments: