Bạn Giang Phương Hoa từng học Đại học Ngoại Thương Hà Nội, học Thạc sỹ tại Imperial College London, hiện đang làm việc tại Microsoft AI Research London chia sẻ về con đường trở thành Data Scientist của mình.
Chào cả nhà,
Cảm ơn anh Tiệp đã tạo cơ hội cho mình viết bài này để chia sẻ. Follow Forum Machine Learning cơ bản đã lâu mà chưa đóng góp được gì nhiều.
Dạo gần đây mình có gặp nhiều bạn trẻ muốn theo nghề Data Science và PM mình hỏi về con đường mình đến với Data Science và bắt đầu học Machine Learning như thế nào. Vì thế mình đã xin phép anh Tiệp để viết bài ở đây, chia sẻ cùng mọi người và hy vọng sẽ giúp ích cho các bạn đang tự học Data Science, hoặc có background trái ngành trái nghề và muốn làm Data Science một cách nghiêm túc. Bài viết sẽ rất vớ vẩn với các chuyên gia 😊.
Đây là con đường không hề dễ dàng nếu bạn không học Khoa học máy tính hay Toán từ bậc ĐH nhưng cũng không có nghĩa là không thể. Everything is impossible until you do it.
Học Ngoại Thương HN
Con đường mình đến với Data Science không hề bằng phẳng và mình tin nhiều bạn ở đây cũng vậy. Mình học Ngoại Thương chuyên ngành Tài chính. Cũng tự coi là có chút background về Toán Cao Cấp và Xác suất thống kê nhưng sẽ chỉ là muối bỏ bể so với các bạn học bài bản về Toán Lý Thuyết hay Xác suất thống kê. Rất may là trong quá trình học Ngoại Thương thì mình nhận ra môn học mà mình yêu thích nhất là môn Phân tích dữ liệu tài chính. Cảm giác nhìn những con số rồi tìm tòi ra một ý tưởng gì đó mới rồi trình bày bảng biểu vô cùng hấp dẫn (mãi sau này mình mới biết khái niệm đó gọi là insights 😊). Vì thế mình có tham gia một số cuộc thi sinh viên về phân tích dữ liệu.
Nielsen Case Competition
Hồi đó hình như chỉ có Nielsen Case Competition–cuộc thi dành cho sinh viên của Nielsen, một công ty data consulting khá lớn tại Mỹ. Mình cũng may mắn cùng với các bạn trong nhóm giành giải của cuộc thi đó và bắt đầu đầu quân cho Nielsen để làm Chuyên viên phân tích dữ liệu 😊–Insight Analyst. Thời gian làm việc cho Nielsen là thời gian mình luôn cảm thấy là thời gian tạo một nền tảng vững chắc cho bản thân trong nghề làm Analyst. Nếu bạn google Nielsen thì Nielsen là một công ty nghiên cứu thị trường truyền thống, dữ liệu cung cấp chủ yếu bằng survey và phỏng vấn người tiêu dùng. Thời đó khái niệm Dữ liệu lớn hay là Khoa học máy tính vẫn còn xa vời với mình. Nhưng chính từ thời gian làm việc giống như một nhân viên tư vấn dữ liệu đã giúp mình hiểu được ứng dụng thực sự của dữ liệu là gì? Làm sao để dữ liệu có ích cho doanh nghiệp? Mình cũng học được cách từ một câu hỏi lớn và mơ hồ, làm sao để chia nhỏ câu hỏi đó thành những câu hỏi nhỏ hơn mà bạn có thể translate (phiên dịch) thành một câu hỏi có thể trả lời bằng dữ liệu sẵn có? Mình cũng hiểu khái niệm connecting the dots (xâu chuỗi) dữ liệu là gì? Vì vậy, đừng tự nghĩ rằng công việc mình đang làm không có gì hấp dẫn, không có gì liên quan đến Machine Learning hay Dữ liệu lớn mà nản lòng. Nhiều lúc bạn sẽ ngạc nhiên về những gì bạn học được từ các dirty jobs trong cuộc sống.
Bắt đầu con đường học Khoa học dữ liệu
Sau một thời gian làm việc ở Nielsen thì mình nhận thấy hạn chế của các phương pháp nghiên cứu truyền thống (limited samples, biased trong cách đặt câu hỏi và trả lời). Vì thế mình bắt đầu tìm hiểu phương pháp mới để có thể thực sự phân tích user behavior mà không cần phải “hỏi” họ. Và thế là mình khám phá ra một thế giới mới là Khoa học dữ liệu (Data Science-DS). Thời điểm mình bắt đầu tìm hiểu về DS và học về DS thì mọi thứ còn khá mới mẻ (2013) cũng chưa có nhiều các khóa học open source như bây giờ. Mình hoàn toàn tự học mọi thứ từ xác suất thống kê (may mà trong công việc cũng có dùng), toán, lập trình, hệ thống dữ liệu. Mình hiểu là với các bạn không có nền tảng về Khoa học máy tính như mình, việc các bạn làm một cách bản năng là cố gắng lấp đầy lỗ hổng về lĩnh vực này càng nhiều càng tốt. Vì thế, các bạn sẽ cố gắng học Python, học R hay học các ngôn ngữ lập trình. Điều này dẫn đến một hệ quả là các bạn bị tool-driven. Học Python không khó, bỏ ra 6 tháng học một cách tập trung, các bạn sẽ viết được những dòng codes như mẫu. Nhưng điều mình hay gặp đó là các bạn học Python hay R như Kinh Thánh vậy. Nhiều bạn nghĩ rằng chỉ cần biết Python hay R là có thể làm được phân tích dữ liệu rồi. Thực ra thì không phải. Mình rất may mắn là trong thời kỳ đầu bắt đầu học, cảm thấy hoang mang quá thì một lần đi gặp khách hàng, gặp một bạn đã làm quantitative analyst ở Wall Street nhiều năm. Bạn ấy thấy mình ôm một quyển Python Fundamentals dầy cộp thì mới bảo “Mày nên học cách nghĩ, đừng học cách làm vội”. Chỉ một câu nói nhỏ mà mình nghĩ là có thể trao thưởng huy chương cho bạn ấy vì đã cứu rỗi cuộc đời mình. 😊. Và quyển sách đã thay đổi cuộc đời mình là How to think like a Computer Scientist. Mình đã có dịp gặp tác giả của cuốn sách này và nói với anh ấy là “You saved my life. 😊”.
Thực sự thì đối với người học trái ngành, trái nghề, vấn đề lớn nhất là thay đổi cách suy nghĩ và sự tự ti. Bạn có xuất phát điểm không giống người khác và thế là tìm mọi cách để làm được NHƯ người ta mà quên mất mục đích ban đầu của mình là gì. Sau khi đọc cuốn sách trên thì mình hiểu ra vấn đề vì sao mình học Python đến hai tháng mà vẫn rất thụ động, chỉ có thể viết những gì code mẫu mà gặp vấn đề mới thì chịu. Đó là vì mình không suy nghĩ theo cách máy tính có thể suy nghĩ. Vì không think the language nên mình cũng không thể speak the language. Điều này cũng giống như lúc bạn học Tiếng Anh hay ngoại ngữ vậy, không hiểu cách tư duy của ngôn ngữ thì bạn sẽ thành học vẹt. Vì thế mình dành hẳn ba tháng chỉ để học computational thinking và computer logic, về những thứ như directory, class, variables, binary operations, algorithmic thinking, big O notation, v.v.. Điểm này sẽ không thể nào so sánh được với các bạn học Khoa học máy tính trong 3-4 năm nhưng cũng đủ để mình học lập trình một cách đúng hướng (programming in the right way). Mình đã nói chuyện với nhiều bạn tự học programming và nhiều bạn bị cuốn theo cách học Google knowledge–có vấn đề gì thì google–stackoverflows có câu trả lời sẵn. Cuối cùng thì chương trình cũng vẫn chạy, các bạn vẫn thấy hạnh phúc, nhưng lần sau gặp vấn đề khác các bạn không tự trả lời được. Cũng giống như hồi nhỏ ở trường học “How are you?” và trả lời “I’m fine, thank you”. Đến lúc người ta hỏi “How do you feel today?” thì không biết trả lời thế nào.
Lập trình cũng chỉ là công cụ. Cái cốt lõi của Data Science và Machine Learning (ML) vẫn là Toán và Xác suất thống kê. Về điểm này thì forum và cuốn sách của anh Tiệp sẽ rất hữu ích. Nền tảng Toán của mình không tệ vì cũng từng học chuyên Toán. Tuy nhiên, cũng giống như câu chuyện lập trình thì mình cảm thấy cũng cần học ML bằng cách think in ML ways. Các thuật toán quan trọng trong ML hầu như đều đã được viết và tạo thành thư viện nên vài bạn có thể lười chỉ cần from sckitlearn import *
và thế là ung dung chạy một cái chương trình ML. Nhưng để thực sự làm DS/ML thì nhiều khi nên bắt đầu ôn lại khái niệm đạo hàm, ma trận và toán cơ bản.
Học Thạc sỹ tại Imperial College London
Một điểm nữa mà nhiều bạn rất hay quên hoặc bỏ qua khi học DS vì nghĩ nó nhàm chán đó là database structure và data manipulation. Mình cũng vấp phải vấn đề tương tự khi mình bắt đầu học Thạc sỹ về Data Science ở Imperial College London. Ngay Kỳ 1 thì trong chương trình có một môn học mà rất nhiều bạn bỏ lớp (mình cũng cúp cua mấy lần) đó là Database Admin. Môn này phải nói là cực kỳ chán vì nó sẽ không có kết quả ngay cho bạn như khi bạn chạy môt chương trình máy tính hay vẽ biểu đồ, đem lại cảm giác cực kỳ cool vì I did something. Tuy nhiên khi bắt đầu thực sự làm dự án nghiên cứu ở Data Science Institute in Imperial College (mình làm cộng tác viên) thì mình có thể thực sự hiểu được tầm quan trọng kinh khủng của môn này. Bạn không thể thi triển được thuật toán hay tối ưu hóa thuật toán nếu không hiểu cấu trúc dữ liệu hay database relation, handle missing values, organizing the table in long/wide format, normalization of the database, etc.** Những việc nhỏ nhặt, *dirty jobs, tốn thời gian vậy thực ra là vô cùng quan trọng. Khi bạn hiểu cấu trúc dữ liệu thì bạn mới quay lại bước 1 được: Từ câu hỏi lớn làm sao để thi triển ra nhiều câu hỏi nhỏ và trả lời? Rốt cuộc thì DS chính là công cụ để trả lời câu hỏi mà thôi. Đừng quên mục đích ban đầu!
Microsoft AI Research
Sau rất nhiều chông gai thì bây giờ mình được gọi là data scientist tại Microsoft AI Research. Chặng đường học thì vẫn còn rất dài, bây giờ mình vẫn phải đọc forum Machine Learning thường xuyên để hiểu thêm. Dưới đây là một ít bài học mình đã đúc kết sau 4 năm ròng rã mất nhiều máu (ngã cầu thang mấy lần vì mải nghĩ) và nước mắt (khó quá làm thế nào), hy vọng sẽ giúp ích cho nhiều bạn có nền tảng giống mình.
-
Đừng chạy theo buzzwords, cuộc sống nhiều cám dỗ, hãy bắt đầu từ những thứ căn bản nhất. Thinking và mindset là những thứ quan trọng nhất. Python hay R hay Java cũng chỉ là công cụ.
-
Machine Learning là học máy, trước khi làm ML nếu bạn không có nền tảng về Computer Science thì hãy thử tìm hiểu về Computational thinking và computer logic.
-
Data science rất rộng lớn. Hãy thử nghĩ về một mảng nhỏ mà bạn muốn theo đuổi: nhiều người có thể theo đuổi Optimization, mình thì chọn cho mình con đường đã đưa mình đến với DS ngay từ đầu: User Behavior Analytics. Điều này sẽ giúp các bạn định hình và tập trung vào những mảng lý thuyết liên quan mật thiết đến mảng này. Nghe có vẻ thực dụng nhưng mình chủ yếu tìm hiểu về các mô hình/thuật toán liên quan đến time series, sequential pattern mining, pattern recognition, clustering/classification, association mining, etc. vì đây sẽ là những thứ giúp bạn tìm hiểu về User Behavior. Các thuật toán simulation như Monte Carlo hay các thuật toán tối ưu khác mình không biết quá sâu.
Chúc mọi người học Machine Learning vui. 😊