Uncategorized

Phân tích dữ liệu việc làm ngành Data ở Việt Nam (07/2023)

Tổng quan

Số lượng công việc thuộc nhóm ngành Data Engineer và Data Analyst chiếm ưu thế trong tập dữ liệu.

Top các kỹ năng chuyên ngành thường xuất hiện: python, SQL, machine learning, AI, data engineering, big data, java, ETL, spark, C, Hardoop, R, Scala.

Top các kỹ năng mềm thường được yêu cầu: Creativity, Teamwork, Empathy, Ethical Judgment, Resilience, Collaboration, Emotional Intelligence, Networking, Innovation, Communication, Conflict Management, Time Management, Problem-Solving.

Mức lương bình quân của toàn ngành: $2400, với mức dao động rất lớn giữa Junior và Senior

Giới thiệu về tập dữ liệu

Dataset này được trích xuất dựa trên một file tổng hợp trên internet, chứa đựng thông tin được crawl từ các nguồn đăng tin tuyển dụng cũng như mạng xã hội tại Việt Nam

Link gốc: https://docs.google.com/spreadsheets/d/1xWtdPaEmi6Voaum_3Ruv-Ise0SKaxVSrs5G2a0V8PLA/edit#gid=0

Mô tả công việc được dịch tự động bởi Google kết hợp làm sạch dữ liệu bằng Excel. Dữ liệu được trích xuất từ nguồn trên được giới hạn bởi lượng dữ liệu cập nhật tới ngày 17/7/2023

Data Exploration & Preprocess

  • Trong dữ liệu gốc, có 10 cột dữ liệu, nhưng để phục vụ phân tích, chỉ một số các dữ liệu liên quan được trích xuất như số năm kinh nghiệm, mô tả công việc [1]
  • Trong quá trình thao tác dữ liệu, các cột này đã được tổng hợp thành 23 cột dữ liệu, trong đó đáng lưu ý có một one-hot encoding [2] mô tả thể loại công việc được trích xuất thủ công.
  • Các dòng dữ liệu bị thiếu job description đã bị xóa; số năm kinh nghiệm được giới hạn bởi 10; loại bỏ outlier là các job lương >$10,000/tháng
  • Đối với các job không có số năm kinh nghiệm, số được điền vào là mean của loại job đó, dựa vào one-hot encoding
  • Data type sau đó được chuyển về thể loại phù hợp tùy vào mô hình machine learning được ứng dụng

Phân tích dữ liệu

Một số nội dung phân tích chính:

Phân tích số liệu tổng quan

Về cơ cấu việc làm ngành data: đa số công việc được đăng tuyển thuộc nhóm Data Engineer hoặc Data Analyst. Tuy nhiên, ở một số công ty (khoảng 12%), nhân viên được kỳ vọng làm nhiều hơn một vị trí, ví dụ như Data Scientist kiêm Data Engineer, hoặc Business Analyst kiêm Data Anlyst.

Job category count

Về cơ cấu lương tính theo thâm niên

Về phân bố vị trí địa lý của công việc, không ngạc nhiên khi đại đa số công việc ở Tp. Hồ Chí Minh hoặc Hà Nội. Lượng công việc Remote chiếm khoảng 6%.

Do sự phân bố rất lệch về vị trí địa lý, biểu đồ này được vẽ theo tỉ lệ thang logarith

working location

Kỹ năng thường được tìm kiếm bởi nhà tuyển dụng

Phân tích kỹ năng được chia làm 2 phần, kỹ năng chung của toàn ngành, và kỹ năng cụ thể của một nhóm ngành

all skills word cloud

Đối với ngành Data Analyst, đây là một số kỹ năng thường được tìm kiếm bởi nhà tuyển dụng

Data analyst skills cloud

Còn đây là dữ liệu từ ngành Data Enineer

Data engineer skill cloud

Dưới đây là tổng hợp cả kỹ năng kỹ thuật và kỹ năng mềm của ngành Data Scientist

data scientist skill cloud

Mô hình máy học 1: dự đoán nhóm ngành

Như đã nêu trên, nhiều vị trí công việc ở Việt Nam không được tách biệt rõ ràng giữa data scientist và data engineer.

Một số mô hình ML đơn giản đã được tạo ra, trong đó mô hình MultiLabelBinarizer() có khả năng khả năng dự đoán chính xác 55% vị trí công việc thực sự, nếu chỉ dựa vào vào mô tả công việc

Model accuracy: 0.5517241379310345
Classification Report:
                        precision    recall  f1-score   support

        Data_Engineer       0.87      0.69      0.77       224
         Data_Analyst       0.77      0.57      0.65       221
       Data_Scientist       0.79      0.52      0.63       101
     Business_Analyst       0.58      0.14      0.23        50
Business_Intelligence       0.80      0.40      0.53        30

            micro avg       0.81      0.56      0.66       626
            macro avg       0.76      0.46      0.56       626
         weighted avg       0.79      0.56      0.65       626
          samples avg       0.51      0.48      0.49       626

Có thể thấy, đối với nhóm công việc DE và DA, mô hình có thể dự doán chính xác khoảng 60% cho kết quả true positive và trên 80% cho false positive. Mức độ chính xác giảm đáng với các nhóm ngành còn lại, khi tỉ trọng các ngành này trong training dataset là tương đối thấp

Thử nghiệm với mô hình text convolutional neural network, với 10 training epochs, kết quả được đưa ra có phần tốt hơn MultiLabelBinarizer. Khi nâng cao số training epoch, mô hình không được cải thiện độ chính xác mà còn có xu hướng overfitting

Epoch 1/10
80/80 [==============================] - 9s 87ms/step - loss: 0.4351 - accuracy: 0.4472 - val_loss: 0.3869 - val_accuracy: 0.6270
Epoch 2/10
80/80 [==============================] - 8s 105ms/step - loss: 0.3396 - accuracy: 0.6320 - val_loss: 0.3494 - val_accuracy: 0.6426
Epoch 3/10
80/80 [==============================] - 6s 80ms/step - loss: 0.2861 - accuracy: 0.6720 - val_loss: 0.3342 - val_accuracy: 0.6473
Epoch 4/10
80/80 [==============================] - 8s 104ms/step - loss: 0.2347 - accuracy: 0.6948 - val_loss: 0.3335 - val_accuracy: 0.6489
Epoch 5/10
80/80 [==============================] - 4s 55ms/step - loss: 0.1943 - accuracy: 0.7175 - val_loss: 0.3671 - val_accuracy: 0.6270
Epoch 6/10
80/80 [==============================] - 7s 84ms/step - loss: 0.1615 - accuracy: 0.7379 - val_loss: 0.3916 - val_accuracy: 0.6646
Epoch 7/10
80/80 [==============================] - 9s 117ms/step - loss: 0.1383 - accuracy: 0.7634 - val_loss: 0.4419 - val_accuracy: 0.6489
Epoch 8/10
80/80 [==============================] - 5s 59ms/step - loss: 0.1207 - accuracy: 0.7630 - val_loss: 0.4688 - val_accuracy: 0.6254
Epoch 9/10
80/80 [==============================] - 5s 57ms/step - loss: 0.1011 - accuracy: 0.7717 - val_loss: 0.5078 - val_accuracy: 0.6379
Epoch 10/10
80/80 [==============================] - 6s 71ms/step - loss: 0.0920 - accuracy: 0.7756 - val_loss: 0.5778 - val_accuracy: 0.6442
20/20 [==============================] - 0s 17ms/step - loss: 0.5778 - accuracy: 0.6442
Test loss: 0.5777640342712402
Test accuracy: 0.6442006230354309

Mô hình máy học 2: dự đoán mức lương

Một số kỹ thuật đã được vận dụng để dự đoán mức lương, bao gồm Polynomial regression, XGBoost, Random Forest Ensemble, cho thấy mô hình có thể dự đoán với độ lệch trung bình (Mean Aboslute Error) khoảng trên dưới $600. So với mức lương trung bình của toàn ngành là $2400, mức độ lệch này vào khoảng 25%. Mô hình có thể dự đoán khá tốt các công việc có mức thâm niên 2-3 năm

salary prediction

Dưới đây là mức độ tương quan giữa các feature được đưa vào mô hình, so với mức độ chính xác khi dự đoán lương. Có thể thấy, cấp bậc công việc (Junior, Senior, Leader) có ảnh hưởng lớn nhất tới mức lương. Địa điểm (Location) và số năm kinh nghiệm tối thiểu (Min_YOE) cũng có tác động lớn

skill and salary

Kết luận

Trong phân tích này, mình đã triển khai một số cách để trích xuất các kỹ năng từ mô tả công việc, sử dụng các kỹ thuật NLP đơn giản. Độ chính xác của kết quả bị hạn chế do phụ thuộc rất nhiều vào thông tin mẫu đầu vào một cách thủ công đối với các kỹ năng kỹ thuật và kỹ năng mềm.

Vấn đề này có thể được giảm thiểu bằng cách sử dụng kỹ thuật NER hoặc sử dụng LLM để trích xuất các kỹ năng. Tuy nhiên, nó sẽ đòi hỏi sức mạnh tính toán nhiều hơn.

Đối với phân tích kỹ năng theo chức danh công việc, có thể thấy không có mô hình nào có thể đưa ra kết quả chính xác đáng tin cậy. Nó chứng tỏ rằng chất lượng dữ liệu khá thấp và trên thực tế, chỉ cần nỗ lực tối thiểu để làm sạch nó, không có gì đáng ngạc nhiên khi độ chính xác của mô hình đào tạo là kém.

Với việc làm sạch dữ liệu hơn nữa, đặc biệt là loại bỏ các dữ liệu trùng lặp khỏi dữ liệu gốc và với việc sử dụng kỹ thuật trích xuất kỹ năng tốt hơn, mô hình có thể chạy tốt hơn rất nhiều.

Hai phương pháp phân tích ví dụ cho thấy tầm quan trọng của việc sử dụng đúng kỹ thuật phân tích, cũng như chất lượng dữ liệu để đạt được kết quả tốt từ machine learning

Disclaimer

Dataset này chỉ được process rất cơ bản để nhằm mục đích minh họa cho các công cụ/thuật toán sử dụng, nên mức độ chính xác là không cao. Thông tin trích xuất được chỉ mang tính tham khảo.

Ghi chú

[1] Company, JD Title, JD Level, JD YOE Min, JD Location, JD Gross Salary Max, Working Hour, JD Note

[2] job_categories = [‘Data_Engineer’, ‘Data_Analyst’, ‘Data_Scientist’, ‘Business_Analyst’, ‘Business_Intelligence’,’Others’]

Tốt nghiệp ThS loại xuất sắc từ ĐH Auckland University of Technology, học bổng TS toàn phần từ Victoria University of Wellington. Chuyên gia pháp lý về công nghệ số

Leave a Reply

Your email address will not be published. Required fields are marked *