The dirtiest job in 21 century

Kien Vu
6 min readApr 21, 2020

Phần đa những tưởng tượng về ngành data science đều không đúng với thực tế.
Data scientist có thể viết câu lệnh để ra lệnh với máy tính, thuật toán của họ có thể giải quyết được mọi vấn đề của doanh nghiệp, giúp doanh nghiệp kiếm được hàng triệu USD; Họ có kĩ năng giao tiếp và trình bày tốt, họ hiểu vấn đề mà công ty gặp phải; Họ thấu hiểu, đồng cảm, tốt bụng… bla bla…

Không, mọi chuyện không phải như vậy. Hoặc, trong trường hợp lạc quan nhất, nó không lý tưởng như thế.

“Almost ALL We do is dirty work” — Andrew Ng.

Nuts and Bolts of Applying Deep Learning

Phần đa công việc là làm sạch dữ liệu

Source: Forbes

Đa phần dữ liệu bạn có sẽ không sạch — không sẵn sàng để đưa vào phân tích.

Việc này có thể do một số nguyên nhân như nhập liệu không chuẩn, không có có quy chuẩn dữ liệu, dữ liệu không có cấu trúc…

Dù nguyên nhân là gì, bạn cũng sẽ phải dành rất nhiều thời gian và công sức để làm sạch dữ liệu trước khi đưa vào phân tích. Những việc bạn phải làm không đơn thuần chỉ là viết câu lệnh để biến đổi dữ liệu về cho đúng chuẩn, nó đôi khi còn là:

  • Lọc và sửa đổi thủ công các bản ghi nhập liệu không chuẩn.
  • Liên lạc lại với các nhân sự đã nghỉ việc về ý nghĩa của giá trị trong một trường thông tin. Bởi vì IT team chẳng có document nào về nó cả.
  • Viết regex để lọc thông tin cần thiết trong một đoạn free text.
  • Bổ túc dữ liệu thiếu từ các nguồn bên ngoài hoặc từ các bảng dữ liệu đã archive…
  • Xử lý các trường hợp dữ liệu không hợp lý. Ví dụ như thông tin nơi ở của khách hàng là tại Hà Nội nhưng quốc gia lại là US.
  • Xử lý các trường hợp ngoại vi ví dụ khách hàng 200 tuổi…

Bạn phải học nhiều ngôn ngữ

Ý tôi không hẳn đây là một điều tệ. Tuy nhiên yêu cầu thành thạo nhiều ngôn ngữ ở mức độ nhất định trong một khoảng thời gian ngắn là khá khó với nhiều người.

Hãy cũng xem các ngôn ngữ mà một data scientist cần biết để hoàn thành công việc của mình.

  • VBA, Power Query, DAX. Bộ 3 ngôn ngữ nếu bạn muốn làm việc hiệu quả với bộ công cụ BI của microsoft.
  • SQL, Scala. 2 ngôn ngữ để tiến hành truy vấn dữ liệu.
  • Python hoặc/và R hoặc/và Julia. Các ngôn ngữ để phân tích dữ liệu chuyên sâu.
  • English :P.

Chờ đợi và sửa lỗi

Data scientist cũng thường xuyên mất thời gian chờ đợi câu lệnh của mình thực hiện xong hoặc ngồi debug câu lệnh của mình.

Data scientist hiếm khi viết lệnh mượt mà như hacker trên các bộ phim của hollywood. Đôi khi một thư viện không hoạt động như mong muốn, hoặc kiểu dữ liệu của biến không phù hợp, hoặc xảy ra lỗi cú pháp, lỗi logic… Lúc đó data scientist sẽ phải debug để tìm và sửa lỗi — công việc tốn khá nhiều thời gian.

Kể cả khi câu lệnh đã chạy đúng, thời gian để nó thực hiện cũng là một vấn đề.
Có lần, tôi tốn nhiều tiếng đồng hồ để có thể lấy được trạng thái trước đây của các hợp đồng trước khi nó chuyển sang trạng thái hiện tại bởi cách lưu dữ liệu khiến tôi buộc phải join 1 bảng với 1 bảng khác hàng trăm triệu dòng.
Một công việc tốn thời gian khác đó là training mô hình, mặc dù đã có sự trợ giúp của GPU thì việc training lượng dữ liệu rât lớn vẫn đòi hỏi rất nhiều thời gian chờ đợi.

Khó để giải thích với người khác thứ bạn đã làm

Trong lĩnh vực dữ liệu có kha khá thứ khó để giải thích với những người khác. Hoặc một số vấn đề về thống kê đòi hỏi một kiểu tư duy khác so với thông thường. Thậm chí một số công đoạn trong machine learning còn không giải thích được.

Hãy thử xem qua một số đoạn hội thoại giữa bạn Q — đại diện cho người thuộc các phòng ban của công ty và D-Data scientist mới vào nghề của chúng ta.

Trong một buổi họp về marketing.

Q: Trung bình số lần click vào thông điệp A cao hơn thông điệp B. Vậy chúng ta chọn thông điệp A nhé!
D: Sự khác biệt giữa A và B không có ý nghĩa thống kê. Ý tôi là chúng ta chưa có đủ cơ sở để bác bỏ giả thuyết vô hiệu.
Q: Là sao?
D:
Tôi nghĩ chúng ta nên thu thập thêm dữ liệu hoặc thử A/B test loại thông điệp khác.
Q: Chẳng phải rõ ràng là số lần click trung bình của thông điệp A cao hơn sao?
D: Giá trị khác biệt này có thể là do ngẫu nhiên. Ờm, ý tôi là, nó không hẳn là khác biệt thực tế. Có thể ngẫu nhiên nó như thế chứ không phải do thông điệp A thực sự tốt hơn.
Q: Anh không thể nói thứ gì đó chắc chắn được sao?
D: Tôi không có cơ sở để nói điều đó.
Q: /chán nản/. Chốt lại chọn thông điệp A nhé, kết thúc cuộc họp.

Cũng trong cuộc họp về marketing.

D: Dựa vào các tính chất và hành vi của khách hàng, tôi đã chia thành 10 nhóm khác nhau để có các chính sách và chiến dịch marketing khác nhau.
Q: Anh dựa vào điều gì vậy để phân loại khách hàng vậy? Tôi thấy 2 khách hàng này cùng 1 nhóm nhưng khác giới tính này?
D: Nhưng còn các yếu tố khác thì 2 người này lại khá giống nhau. Tưởng tượng mỗi khách hàng là một điểm trong không gian n chiều, thì 2 điểm này nằm khá gần nhau. Ờm, bạn tưởng tượng được không nhỉ?
Q: Không gian chỉ có 3 chiều thôi mà?
D: À ý tôi là chiều dữ liệu, các tính chất của khách hàng.
Q: Anh vẫn chưa trả lời anh dựa vào logic nào để phân loại khách hàng.
D: Khi coi mỗi khách hàng là một điểm dữ liệu, mỗi tính chất được đại diện bởi con số. Tôi sẽ tính được khoảng cách giữa các khách hàng. Các khách hàng ở gần nhau sẽ chung một nhóm.
Q: Khoảng cách? Có một ông ở HN, một ông ở HCM mà vẫn chung nhóm này.
D: Ý tôi là khoảng cách trong không gian n chiều được tạo bởi các điểm dữ liệu.
Q: Nhưng không gian chỉ có 3 chiều thôi mà? Ủa, hình như tôi có hỏi câu này rồi nhỉ?
D: Đây là không gian tưởng tượng thôi.
Q: Tôi nghĩ chúng ta nên thực tế.
D:

Bạn được kỳ vọng quá nhiều

Nhiều công ty tuyển data scientist về và mong muốn mọi vấn đề của công ty sẽ được giải quyết.

Nhiều công ty có đội ngũ thực thi chưa đủ tốt nhưng luôn yêu cầu doanh thu phải tăng trưởng nhanh hơn khi data scientist được tuyển về.

Sự thực thì dữ liệu không mang lại nhiều giá trị như những bài báo lá cải nói. Những thông tin ngoài dữ liệu vẫn rất quan trọng. Một mình data scientist cũng sẽ không làm được gì nếu không có những người ở các phòng ban khác.

Nếu dữ liệu của công ty không tốt, thì sẽ mất rất nhiều thời gian để làm sạch nó. Vì vậy thời gian đưa ra kết quả phân tích cũng sẽ chậm hơn.

Thực ra thì việc được kỳ vọng cao không quá tệ. Điều tệ là sau đó.

Đó là ngày khi CEO nhận ra bạn chẳng giải quyết được nhiều vấn đề như họ đã tưởng. Là khi dữ liệu chẳng đưa ra được câu trả lời cho những câu hỏi của tổ chức. Là khi những đoạn mã bạn viết hay những đồ thị đều chẳng đưa ra được câu trả lời. Là ngày bạn thuyết phục CEO rằng hãy coi mình là mắt xích bình thường trong tổ chức chứ không phải ông bụt có thể hô thần chú để giải quyết mọi vấn đề.

Và dù ngày đó có đến sớm hay muộn, đó cũng là một ngày rất tệ.

--

--