12/09/2019, 14:12

Rèn giũa mindset của một Data Scientist

Tác giả: Ông Xuân Hồng Trong bài viết này, tôi xin chia sẻ một vài kinh nghiệm của mình trong quá trình làm việc với Data Science (DS). Về cơ bản, tôi nghĩ các bạn cũng đã hiểu khái quát thế nào là DS, những phương pháp và ứng dụng thực tiễn của ngành này. Nên ở đây, tôi sẽ đề cập ...

Tác giả: Ông Xuân Hồng

Trong bài viết này, tôi xin chia sẻ một vài kinh nghiệm của mình trong quá trình làm việc với Data Science (DS). Về cơ bản, tôi nghĩ các bạn cũng đã hiểu khái quát thế nào là DS, những phương pháp và ứng dụng thực tiễn của ngành này. Nên ở đây, tôi sẽ đề cập đến mindset nhiều hơn. Lý do, mindset khi làm DS sẽ khác Software engineer rất nhiều.

Ở đây, tôi sẽ tổng hợp những sai lầm mà những bạn junior hay các bạn chuyển ngành thường mắc phải. Tôi may mắn hơn mọi người là được các anh chị đi trước nhẫn nại hướng dẫn tận tình để chỉ ra những điểm chưa tốt, cho tôi nhiều cơ hội để tôi ngày càng tiến bộ hơn trên con đường mà mình đã chọn. Tôi cũng từng là một junior trong lĩnh vực này, cũng từng mắc sai lầm nên tôi muốn đúc kết lại một vài kinh nghiệm để các bạn đi sau hạn chế mắc phải.

Hiểu đúng về Data Science

Như các bạn đã biết thì DS là một ngành khá mới mẻ, được giật tít là công việc hot trong tương lai, có thể mang lại nhiều cạnh tranh cho doanh nghiệp hiện nay. Những lời đồn thổi về “cách mạng công nghiệp 4.0” ứng dụng AI/Machine Learning vào dây truyền sản xuất tự động đã tạo nhiều động lực cho các bạn từ nhiều ngành khác nhau muốn học tập, áp dụng và lựa chọn cho mình career path liên quan đến DS. Nhưng có mấy ai thật sự hiểu tại sao ta lại cần sử dụng DS? Liệu có lãng phí thì giờ không khi mà các công cụ phân tích thống kê lâu nay đều có thể giải quyết vấn đề? Và thật sự một DS công việc hằng ngày của họ ra sao? Tố chất cần thiết là gì?

Nếu phân tích DS thành 2 từ “Data” và “Science” thì ta có thể thấy, lý do mà mọi người đặt tên ngành này là Data Science là vì hơn 80% dữ liệu trên thế giới nằm ở dạng phi cấu trúc (unstructure-data) nghĩa là không có schema như các hệ thống cơ sở dữ liệu (CSDL) truyền thống. Trái ngược với các hệ CSDL có thể sử dụng ngôn ngữ SQL để truy vấn, tổng hợp và phân tích dữ liệu thì unstructure-data gồm video, hình ảnh, âm thanh, văn bản đòi hỏi một ngành khoa học “Science” nghiên cứu tương ứng.

data vs science

Nhìn vào bảng liên hệ giữa “Data” và “Science”, theo quan điểm của tôi thì DS không phải là một ngành mới mà đã được nghiên cứu từ rất lâu (30-40 năm trước) với cơ sở lý thuyết vững chắc và nhiều ứng dụng thực tiễn. DS gồm 3 thành phần chính đó là dữ liệu (đặc biệt là Big Data), quá trình phân tích dữ liệu và model Machine Learning ứng dụng vào khai thác dữ liệu.

Data Science = Big Data + Statistics + Computer Science

Hiểu đúng như vậy để ta tập trung nguồn lực, kiến thức và kĩ năng cần thiết để trở thành chuyên gia trong lĩnh vực của mình. Cũng tương tự như việc theo đuổi học vị Tiến sĩ (PhD), việc đầu tiên bạn cần lựa chọn là bài toán/dữ liệu mà mình quan tâm và hứng thú, tiếp đến mới là ngành nghiên cứu của mình. Vì theo đuổi một đề tài trong thời gian dài dễ khiến bạn nản chí, chỉ có sự hứng thú mới là động lực thôi thúc bạn mỗi ngày lên phòng làm việc mà thôi.

Mỗi hướng nghiên cứu sẽ có các cách tiếp cận riêng, đòi hỏi quá trình trao dồi kiến thức và kinh nghiệm lâu năm mới có thể thuần thục được. Do đó, một PhD về Xử lý ngôn ngữ tự nhiên chắc chắn sẽ có nhiều kinh nghiệm xử lý văn bản và có ít kinh nghiệm xử lý ảnh và video số hơn một PhD về Thị giác máy tính. Đứng núi này trong núi nọ sẽ không dẫn bạn tiến đến mục tiêu của mình, nên hãy bao quát thật nhiều ngành nghiên cứu để mở mang kiến thức nhưng đừng quên bám sát vào chuyên ngành sở trường của mình.

Sai lầm đầu tiên: chỉ quan tâm đến Machine Learning

data_engineering_pipeline

Nhìn vào sơ đồ các bước cơ bản để thực hiện DS, ta thấy quy trình thực hiện khá tinh gọn gồm: thu thập dữ liệu, phân tích dữ liệu, áp dụng model Machine Learning (ML), đánh gía lựa chọn model và deploy lên server. Sẽ không có vấn đề gì nếu các bạn follow theo đúng trình tự này. Tuy nhiên, là một beginner, ta sẽ quan tâm đến các thuật toán ML nhiều hơn thay vì dữ liệu/bài toán mà ta muốn giải.

Tôi cũng từng là một junior và theo tôi đây là sai lầm lớn nhất mà tôi từng gặp phải. Lý do, dù bạn có áp dụng ML mạnh mẽ, tối tân (state-of-the-art) nhất hiện nay là Deep Learning mà dữ liệu đầu vào của các bạn rất hỗn độn và hoàn toàn không có manh mối nào về bài toán mà mình muốn giải thì đầu ra của các bạn sẽ là vô giá trị. Với tư duy chỉ muốn áp dụng ML ngay sẽ dẫn đến các biến dư thừa và hỗn loạn khiến cho model build được không cho kết quả cao. Trong khi đó, bạn hoàn toàn có thể sử dụng một phương pháp đơn giản tiết kiệm thời gian hơn để giải quyết.

Hơn nữa, trong quá trình lựa chọn model ML, ta sẽ khó lòng tinh chỉnh để tăng độ chính xác. Lý do là vì mỗi model đều có các hướng tiếp cận riêng cũng như cần input data phù hợp cho chính model đó. Ta cần hiểu rằng model học được là từ dữ liệu, nếu dữ liệu rác đưa vào ta chỉ nhận được model rác mà thôi. Nên việc chuẩn bị thật kỹ input data sẽ giúp bạn rút ngắn thời gian training model cũng như kết quả mang lại sẽ khả quan hơn.

basic_classification

Trong thực tế, các bạn cần giành nhiều thì giờ cho quá trình thu thập và phân tích dữ liệu. Mặc dù, công việc này ban đầu sẽ khiến cho các bạn cảm thấy nhàm chán. Tôi nghĩ một phần nguyên nhân là do các khoá học về DS được thiết kế chủ yếu tập trung vào thuật toán ML để truyền cảm hứng cho người học về những ứng dụng thực tế nên họ đã lược bỏ 2 quá trình quan trọng này và chỉ giao lại cho các bạn tập dữ liệu tinh gọn nhất để bắt đầu. Nhưng đây là những kĩ năng cần thiết nếu bạn muốn theo đuổi sự nghiệp của một DS chuyên nghiệp.

Có thể bạn muốn xem:

  Top các khóa học Computer Science, Programming, Data Science MIỄN PHÍ cần học ngay!
  Top những thuật toán machine learning mà bất cứ Data Scientist nào cũng cần phải biết (Phần 1)

Sai lầm tiếp theo: chưa có mindset đúng

Background của tôi là fullstack web developer nên mindset của tôi là một Software engineer. Một Software engineer sau khi xác định được vấn đề của mình sẽ tìm kiếm công cụ tương ứng (thường là Google, Stackoverflow) để giải quyết vấn đề hiệu quả và hợp lý nhất. Mindset này đã giúp tôi thành công trong thời gian vừa qua với vai trò của một Engineer. Tiếc rằng khi bê nguyên xi mindset này vào DS đã khiến tôi thất bại thảm hại.

Tôi tập trung nhiều vào tool-box mà bỏ qua việc đặt câu hỏi nghiên cứu và planning nên đã dẫn đến thất bại trong phân tích. Ví dụ, tôi cố gắng brute-force tất cả các basic analysis đã biết mà không thật sự rõ mình muốn gì. Điều này đã dẫn đến kết quả phân tích tràn ngập các con số và biểu đồ sơ sài. Hơn nữa việc thiếu định hướng trong phân tích đã không thôi thúc tôi tìm hiểu sâu hơn dữ liệu đang tìm ẩn những gì thú vị ở đó. Bạn ơi, nếu bạn không biết mình đi đâu, thì đi tới đâu cũng không thành vấn đề vì kết quả đạt được sẽ không khớp với nhu cầu của bản thân. Nếu bạn không rõ bạn muốn gì thì bạn không thể tìm tòi khám phá được những điều mới mẻ.

Cũng tương tự như các lĩnh vực khác nếu không có mindset đúng sẽ dẫn đến thất bại. Muốn làm giàu thì cần có mindset của người giàu. Muốn trở thành Senior thì cần có mindset của một Senior, hay tương tự ở những vị trí khác như manager, sales, etc.

Điểm khác biệt của DS đó là họ sẽ đặt câu hỏi và tìm hiểu thật kĩ bài toán mà mình muốn giải. Sau khi biết mình đang đối mặt với điều gì, họ mới tiến hành thu thập và phân tích dữ liệu. Họ không lao vào các thuật toán ML tối tân vì họ biết điều này chỉ làm tốn thời gian vô ích khi mà dữ liệu chưa sẵn sàng và tương lai độ chính xác cũng rất khó tune lại.

Nếu bạn biết đặt câu hỏi và sử dụng dữ liệu để trả lời thì bạn là một Data Scientist.

Bất kỳ một người nghiên cứu nào cũng đều bắt đầu với câu hỏi nghiên cứu của mình. Tại sao mình lại muốn thực hiện điều này, tại sao cần thu thập dữ liệu này mà không phải dữ liệu kia? Tại sao nên giữ lại thuộc tính này và loại bỏ thuộc tính kia để tiến hành build model, etc. Là một beginner, bạn khó có thể tự đặt ra bài toán cho mình. Thông thường, bạn cần sự hướng dẫn và giúp đỡ của các anh chị Senior. Hoặc trong nghiên cứu, bạn cần sự hướng dẫn của thầy/cô của mình.

Sai lầm cần rèn giũa thêm: chưa biết cách phân tích dữ liệu sâu sắc

Một trong những tố chất cần có của DS đó là “data intuition” hay còn gọi là cảm nhận tốt về dữ liệu. Với Big Data thì kĩ năng này hoàn toàn cần thiết. Do không gian dữ liệu rất lớn và phức tạp, đòi hỏi bạn phải có khả năng sắp xếp, tìm kiếm, phán đoán xem dữ liệu hiện tại trông như thế nào để mong tìm ra được pattern gì đó hay ho từ dữ liệu. Intuition giúp bạn explore được những feature mới, cùng với programming skills bạn sẽ hiện thực hoá ý tưởng của mình. Do đó, một Engineer đã có nền tảng lập trình tốt sẽ có lợi thế trong việc hiện thực hoá ý tưởng của mình, việc họ cần trau dồi thêm đó là mindset phân tích dữ liệu sâu sắc hơn.

Khi một DS phân tích dữ liệu họ sẽ không bao giờ tin tưởng ngay dữ liệu mà họ nhận được. Họ nghi ngờ dữ liệu mà họ đang làm việc. Họ sẽ đặt các câu hỏi đại loại như “liệu dữ liệu có bị lỗi chỗ nào không, model cần build phụ thuộc vào biến dữ liệu có phân bố như thế nào, dữ liệu có bị thiếu chỗ nào không, tại sao bị thiếu, dữ liệu bị trùng lặp thì nên xử lý như thế nào, data này có đáng tin không, có nên bỏ qua không, có điểm nào bất thường không, ta nên xử lý như thế nào?”.

sherlock

Khi nói đến phân tích dữ liệu, đòi hỏi ở người nghiên cứu tinh thần của một thám tử. Ở đây, tôi mượn hình của của Sherlock Holmes, một người luôn tò mò về những chi tiết dù là nhỏ nhất được dùng để phá các vụ án khó.

“…when you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth.”
– Sherlock Holmes

Hãy đội chiếc mũ của Sherlock Holmes, nhiệm vụ của bạn là khám phá ra những điều mà mọi người thường bỏ sót. Hãy:

  • Viết ra những câu hỏi mà bạn muốn trả lời.
  • Viết ra những giả thuyết về dữ liệu đang xét.
  • Viết ra phán đoán về kết quả có được từ giả thuyết.
  • Kiểm chứng phán đoán và ghi lại kết quả để theo dõi.
  • Lặp lại cho đến khi câu hỏi được trả lời.

Nếu công cụ của một thám tử là kính lúp thì DS sử dụng các biểu đồ và con số để quan sát dữ liệu. Khi quan sát như vậy, ta sẽ có cái nhìn bao quát hơn về chân tướng của dữ liệu, ta sẽ có nhiều giả thuyết đặt ra cho dữ liệu hơn.

types_of_charts

Tất cả những giả thuyết này sẽ được ghi chú tỉ mỉ lại để theo dõi. Sau một thời gian làm việc, ta sẽ có một cuốn “nhật ký phân tích” cho riêng mình. Từ đây, ta đã hiểu rõ hơn về data của mình, không còn bị chủ quan trong những giả thuyết nữa, ta biết lựa chọn giữ lại những biểu đồ, các số liệu phân tích nào cần thiết để sử dụng sau này thay vì tràn ngập và bừa bộn như trước đó.

Kết luận

Như vậy, làm một DS không hề đơn giản phải không các bạn, từ bài toán cho đến ứng dụng đều có nhiều rủi ro đòi hỏi ở bản thân sự kiên định, bền bỉ, nhẫn nại và quyết đoán kèm theo trách nhiệm về độ chính xác của mình đã đưa ra. Sai một ly đi một dặm, nếu một model cho ra độ chính xác “ảo” thì khi lãnh đạo hay tổ chức đưa ra quyết định dựa trên kết quả của mình sẽ dẫn đến nhiều tai hại khó lường phải không nào.

Một beginer DS không có nhiều bằng cấp hay kinh nghiệm làm việc cần thích nghi với một mindset mới. Hãy hứng thú hơn trong quá trình khám phá bằng cách đặt câu hỏi và cố gắng tìm ra lời giải thú vị nhất. Hãy hướng tới kết quả đi kèm thái độ không bao giờ bỏ cuộc, và tinh thần sẵn sàng học hỏi cái mới sẽ giúp bạn trở thành một DS thành công. Nếu bạn có kỹ năng mềm, khả năng lập trình cơ bản, và đọc hiểu được các ngôn ngữ toán học, tôi tin rằng bạn sẽ trở thành một DS xuất sắc trong một thời gian không xa.

TopDev via ongxuanhong.wordpress.com

  Tổng hợp Cheat Sheets cho AI, Neural Networks, Machine Learning, Deep Learning và Big Data
  Data scientist vs data analyst: những khác biệt mà bạn cần biết
0