Khoa học Dữ liệu là gì? [BLOCK_TYPE SECTION/STEP]
Khoa học dữ liệu không chỉ là học máy. Nó không chỉ là thống kê. Nó không chỉ là lập trình. [BLOCK_TYPE SECTION/STEP]
Khoa học dữ liệu là ngành học về trích xuất kiến thức hữu ích từ dữ liệu. Hầu hết công việc này không phải là glamorous: là làm sạch các bảng tính hỗn loạn,提出正确的问题,和向不关心你的代码的人传达结果。 [BLOCK_TYPE SECTION/STEP]
[BLOCK_TYPE SECTION/STEP]
Đường ống khoa học dữ liệu điển hình trông như thế này:
1. Thu thập: thu thập dữ liệu thô từ cơ sở dữ liệu, API, CSV hoặc web scraping [BLOCK_TYPE SECTION/STEP]
2. Làm sạch: xử lý giá trị bị thiếu, sửa kiểu dữ liệu, xóa bản sao [BLOCK_TYPE SECTION/STEP]
3. Khám phá: trực quan hóa phân phối, tìm mẫu, đặt câu hỏi [BLOCK_TYPE SECTION/STEP]
4. Kỹ thuật: tạo các đặc trưng mới giúp mô hình học [BLOCK_TYPE SECTION/STEP]
5. Mô hình hóa: huấn luyện thuật toán, đánh giá hiệu suất, lặp lại [BLOCK_TYPE SECTION/STEP]
6. Truyền đạt: trình bày kết quả cho các bên liên quan quyết định [BLOCK_TYPE SECTION/STEP]
Nếu bạn đã từng sử dụng bảng pivot trong Excel, định dạng có điều kiện hoặc VLOOKUP, bạn đã thựcил bước 1-3. Bài học này sẽ kết nối kinh nghiệm đó với quy trình Python được sử dụng trong ngành công nghiệp. [BLOCK_TYPE SECTION/STEP]
Khởi động
Kinh Nghiệm Dữ Liệu Của Bạn
Mọi người đều đã làm việc với dữ liệu ở một hình thức nào đó: bảng tính ngân sách, theo dõi điểm số, ứng dụng theo dõi sức khỏe, thậm chí là danh sách phát với số lần phát.
Rác Vào, Rác Ra
Tại sao việc làm sạch dữ liệu lại quan trọng
Các nhà khoa học dữ liệu dành 60-80% thời gian để làm sạch dữ liệu. Đây không phải là sự phóng đại: đây là kết quả nhất quán từ các cuộc khảo sát ngành nghề.
Lý do rất đơn giản: garbage in, garbage out. Nếu dữ liệu của bạn có lỗi, giá trị bị thiếu, hoặc định dạng không nhất quán, mọi phân tích dựa trên dữ liệu đó sẽ bị sai. Một mô hình hoàn hảo được huấn luyện trên dữ liệu bẩn sẽ cho ra những câu trả lời sai một cách tự tin.
Các vấn đề phổ biến với dữ liệu
- Giá trị bị thiếu: các ô trống. Dữ liệu không được thu thập hay giá trị thực sự là 0? Đây là hai tình huống khác nhau và cần cách xử lý khác nhau.
- Kiểu dữ liệu sai: một cột số được lưu dưới dạng văn bản, ngày tháng có định dạng không nhất quán (01/02/2024: đây là ngày 2 tháng 1 hay ngày 1 tháng 2?)
- Giá trị ngoại lai: một cột lương có một mục là $1,000,000,000. Đây là giá trị thực hay lỗi đánh máy? Dù là trường hợp nào, nó cũng sẽ làm lệch các giá trị trung bình.
- Trùng lặp: cùng một bản ghi xuất hiện hai lần vì hai hệ thống được hợp nhất không hoàn hảo
- Mã hóa phân loại: một cột chứa 'Yes', 'yes', 'Y', 'TRUE', và '1'. Tất cả đều có ý nghĩa giống nhau, nhưng máy tính của bạn không biết điều đó.
Trong pandas (thư viện dữ liệu Python tiêu chuẩn), bạn xử lý những vấn đề này bằng các phương thức như dropna(), fillna(), astype(), và drop_duplicates(). Nhưng phần khó không phải là mã lệnh: mà là quyết định làm gì với mỗi vấn đề.
Cleaning Decisions
Deciding What To Do
Đây là một tình huống thực tế. Bạn có một tập dữ liệu gồm 10.000 bản ghi khách hàng. Cột 'age' có 500 giá trị bị thiếu.
Các lựa chọn của bạn:
- Loại bỏ các dòng: xóa tất cả 500 bản ghi. Đơn giản, nhưng bạn mất 5% dữ liệu. Nếu những 500 khách hàng này có chung một đặc điểm (có lẽ họ bỏ qua trường tuổi vì họ coi trọng quyền riêng tư), việc loại bỏ chúng sẽ gây ra sai lệch.
- Điền bằng giá trị trung bình: thay thế các giá trị trống bằng tuổi trung bình. Nhanh, nhưng làm giảm độ biến thiên của cột tuổi một cách giả tạo.
- Điền bằng giá trị trung vị: tốt hơn giá trị trung bình nếu phân phối tuổi bị lệch (một số ít khách hàng rất già hoặc rất trẻ kéo giá trị trung bình lên).
- Sử dụng cờ đánh dấu: tạo cột mới gọi là 'age_missing' (1 hoặc 0) và điền giá trị trung vị vào cột gốc. Như vậy, mô hình của bạn có thể یاد liệu liệu sự thiếu dữ liệu chính nó có thông tin hay không.
Không có câu trả lời đúng duy nhất. Việc lựa chọn phụ thuộc vào lý do dữ liệu bị thiếu & mục đích sử dụng dữ liệu của bạn.
Đặt Câu hỏi Đúng
Phân tích Dữ liệu Khai phá (EDA)
Trước khi xây dựng bất kỳ mô hình nào, bạn cần hiểu dữ liệu của mình. EDA là quá trình tóm tắt, trực quan hóa, & đặt câu hỏi về tập dữ liệu để tìm ra các mẫu, điểm bất thường, & mối quan hệ.
Công Cụ Chính
- Biểu đồ tần suất (Histograms): thể hiện phân bố của một biến đơn lẻ. Có phải hình chuông không? Có bị lệch không? Có hai đỉnh (bimodal)? Biểu đồ thu nhập luôn bị lệch phải vì một số ít người kiếm được nhiều gấp nhiều lần so với phần lớn mọi người.
- Biểu đồ phân tán (Scatter plots): thể hiện mối quan hệ giữa hai biến. Người cao hơn có nặng hơn không? Thời gian học nhiều hơn có tương quan với điểm số cao hơn không? Mẫu hình (hoặc thiếu mẫu hình) cho biết liệu có mối quan hệ tồn tại hay không.
- Tương quan (Correlation): một số từ -1 đến +1 đo lường mối liên hệ tuyến tính. +1 nghĩa là mối quan hệ tích cực hoàn hảo, -1 nghĩa là mối quan hệ tiêu cực hoàn hảo, 0 nghĩa là không có mối quan hệ tuyến tính. Nhưng tương quan không có nghĩa là nhân quả: doanh số kem và số ca tử vong vì đuối nước là correlated vì cả hai tăng trong mùa hè.
- Thống kê mô tả (Summary statistics): trung bình (mean), trung vị (median), độ lệch chuẩn (standard deviation), min, max. Trong pandas: df.describe() cho bạn tất cả các chỉ số này trong một dòng.
Kỹ Năng Thực Tế
Các công cụ dễ học. Phần khó là đặt đúng câu hỏi. Câu hỏi kém: 'Dữ liệu cho thấy điều gì?' Câu hỏi tốt: 'Khách hàng liên hệ hỗ trợ trong tuần đầu tiên có tỷ lệ giữ chân cao hơn không?'
Bẫy Tương Quan
Tương Quan vs. Nhân Quả
Đây là khái niệm quan trọng nhất trong hiểu biết dữ liệu. Hai biến có thể có tương quan mạnh mà không phải một biến gây ra biến kia.
Các ví dụ kinh điển:
- Các thành phố có nhiều lính cứu hỏa hơn cũng có nhiều vụ cháy hơn. (Các thành phố lớn hơn có cả hai.)
- Học sinh ăn sáng có điểm số tốt hơn. (Có thể các gia đình khá giả hơn có khả năng cung cấp bữa sáng VÀ hỗ trợ học tập.)
- Các quốc gia tiêu thụ nhiều sô cô la hơn sẽ giành được nhiều Giải Nobel hơn. (Cả hai đều tương quan với sự giàu có của quốc gia.)
Yếu tố ẩn được gọi là biến gây nhiễu: một biến thứ ba điều khiển cả hai biến mà bạn đang xem xét.
Tạo các biến hữu ích
Đặc trưng là gì?
Một đặc trưng là một biến đầu vào mà mô hình sử dụng để đưa ra dự đoán. Kỹ thuật đặc trưng là nghệ thuật tạo ra các đặc trưng mới từ dữ liệu thô để giúp mô hình nhận diện các mẫu mà nó không thể nhìn thấy được nếu không có.
Dữ liệu thô hiếm khi ở dạng mà mô hình cần. Hãy xem xét một tập dữ liệu có cột 'ngày sinh'. Mô hình không thể làm nhiều với ngày thô. Nhưng nếu bạn tạo ra đặc trưng 'tuổi' từ đó, đột nhiên mô hình có thể nhận diện các mẫu dựa trên tuổi.
Các kỹ thuật phổ biến
- Chuẩn hóa (Normalization): điều chỉnh các giá trị số về cùng một khoảng (0 đến 1, hoặc mean=0 và standard deviation=1). Nếu không làm điều này, một đặc trưng được đo bằng hàng nghìn (lương) sẽ chiếm ưu thế so với một đặc trưng được đo bằng chữ số đơn (số năm kinh nghiệm).
- Mã hóa one-hot (One-hot encoding): chuyển đổi các biến phân loại thành các cột nhị phân. Một cột 'color' với các giá trị [red, blue, green] sẽ trở thành ba cột: 'color_red', 'color_blue', 'color_green', mỗi cột có giá trị 0 hoặc 1.
- Phân nhóm (Binning): biến đổi một biến liên tục thành các danh mục. Tuổi 0-17 trở thành 'minor', 18-64 trở thành 'adult', 65+ trở thành 'senior'. Điều này giúp khi mối quan hệ không tuyến tính.
- Đặc trưng tương tác (Interaction features): nhân hai đặc trưng với nhau. 'Diện tích sàn nhân với số phòng tắm' có thể dự đoán giá nhà tốt hơn so với mỗi đặc trưng riêng lẻ.
- Kiến thức chuyên ngành (Domain knowledge): kỹ thuật mạnh nhất. Một bác sĩ tạo đặc trưng cho mô hình y tế biết những chỉ số xét nghiệm nào là quan trọng. Một nhà tiếp thị biết rằng 'số ngày kể từ lần mua hàng cuối cùng' là hữu ích hơn 'ngày mua hàng'. Không thuật toán nào có thể thay thế kỹ thuật này.
Feature Practice
Applying Feature Engineering
Hãy tưởng tượng bạn đang xây dựng một mô hình để dự đoán những khách hàng nào sẽ hủy đăng ký dịch vụ phát trực tuyến vào tháng tới. Dữ liệu thô của bạn bao gồm:
- Ngày tạo tài khoản
- Ngày đăng nhập gần nhất
- Số lượng chương trình đã xem trong tháng trước
- Số tiền thanh toán hàng tháng
- Số lượng yêu cầu hỗ trợ khách hàng đã gửi
- Quốc gia
Phân chia Train/Test
Tại sao Bạn Phải Phân chia Dữ liệu
Quy tắc quan trọng nhất trong mô hình hóa: không bao giờ đánh giá mô hình trên cùng dữ liệu bạn đã huấn luyện nó.
Nếu làm vậy, mô hình có thể chỉ ghi nhớ các câu trả lời. Nó sẽ đạt điểm hoàn hảo trên dữ liệu huấn luyện nhưng sẽ thất bại trên dữ liệu mới, chưa từng thấy. Điều này gọi là overfitting: mô hình đã học nhiễu trong tập dữ liệu cụ thể của bạn thay vì học các mẫu thực sự.
Thực hành chuẩn là chia dữ liệu của bạn:
- Training set (thường 70-80%): mô hình học từ tập này
- Test set (thường 20-30%): được giữ lại, chỉ dùng để đánh giá mô hình cuối cùng
Trong scikit-learn: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
Các Thuật toán Phổ biến
- Hồi quy tuyến tính: vẽ đường thẳng tốt nhất đi qua dữ liệu. Đơn giản, dễ giải thích, phù hợp khi mối quan hệ là gần như tuyến tính. Dự đoán một số (giá, nhiệt độ, điểm).
- Cây quyết định: một sơ đồ dòng chảy của các câu hỏi có/không. Dễ hiểu và dễ giải thích. Dễ bị quá khớp nếu không cắt tỉa hoặc giới hạn độ sâu.
- Rừng ngẫu nhiên: nhiều cây quyết định mà cùng bỏ phiếu. So với satu cây đơn lẻ, phương pháp này chính xác hơn, ít bị quá khớp, nhưng khó giải thích hơn.
Quá khớp so với Thiếu khớp
- Quá khớp: mô hình quá phức tạp. Nó ghi nhớ dữ liệu huấn luyện, bao gồm cả nhiễu. Độ chính xác cao trên dữ liệu huấn luyện, độ chính xác thấp trên dữ liệu kiểm tra.
- Thiếu khớp: mô hình quá đơn giản. Nó không thể bắt được các mẫu thực. Độ chính xác thấp trên cả dữ liệu huấn luyện và dữ liệu kiểm tra.
Mục tiêu là điểm cân bằng ở giữa.
Các chỉ số đánh giá
Làm sao để biết mô hình của bạn tốt?
Chỉ số Accuracy (độ chính xác) có thể gây hiểu nhầm. Nếu 95% email không phải spam, mô hình luôn dự đoán 'không phải spam' sẽ có độ chính xác 95%, nhưng hoàn toàn vô dụng.
Các chỉ số chính:
- Accuracy: phần trăm dự đoán đúng. Hữu ích khi các lớp dữ liệu cân bằng.
- Precision: trong số những thứ mà mô hình đánh dấu là positive, bao nhiêu phần trăm thực sự là positive? Precision cao nghĩa là ít báo động giả.
- Recall: trong số những trường hợp positive thực tế, mô hình bắt được bao nhiêu? Recall cao nghĩa là ít bỏ sót.
- Điểm F1: trung bình điều hòa của precision và recall. Hữu ích khi bạn cần cân bằng cả hai.
- RMSE (Root Mean Squared Error): dùng cho bài toán hồi quy (dự đoán số). Dự đoán sai lệch trung bình bao nhiêu?
Chỉ số nào quan trọng nhất phụ thuộc vào vấn đề. Với phát hiện ung thư, recall quan trọng hơn: bạn không muốn bỏ sót một ca bệnh. Với lọc thư rác, precision quan trọng hơn: bạn không muốn xóa nhầm email thật.
Phân tích viên dữ liệu vs. Nhà khoa học dữ liệu vs. Kỹ sư ML
Ba vai trò khác biệt
Lĩnh vực dữ liệu có ba lộ trình nghề nghiệp chính, và chúng đòi hỏi những kỹ năng khác nhau.
Phân tích viên dữ liệu
- Focus: trả lời các câu hỏi kinh doanh bằng dữ liệu hiện có
- Tools: SQL, Excel, Tableau, Python hoặc R cơ bản
- Day-to-day: dashboards, reports, phân tích A/B test, trình bày với stakeholder
- Entry path: thường dễ tiếp cận nhất. Nhiều analyst bắt đầu mà không cần bằng CS.
Data Scientist
- Focus: xây dựng mô hình dự đoán & tìm kiếm các pattern trong dữ liệu phức tạp
- Tools: Python (pandas, scikit-learn, matplotlib), statistics, SQL, Jupyter notebooks
- Công việc hàng ngày: EDA, feature engineering, xây dựng mô hình, thử nghiệm
- Con đường vào nghề: thường yêu cầu nền tảng thống kê hoặc định lượng. Bootcamp & tự học là khả thi.
Kỹ sư Học máy
- Tập trung: triển khai & mở rộng mô hình trong hệ thống production
- Công cụ: Python, TensorFlow/PyTorch, Docker, nền tảng đám mây (AWS/GCP), APIs
- Công việc hàng ngày: tối ưu hóa mô hình, hạ tầng pipeline, giám sát mô hình production
- Con đường vào nghề: thường yêu cầu kỹ năng kỹ thuật phần mềm mạnh kết hợp kiến thức ML.
Xây dựng Portfolio
Nhà tuyển dụng quan tâm đến những gì bạn có thể làm, không chỉ những gì bạn đã học. Một portfolio gồm 3-5 dự án chất lượng trên GitHub quan trọng hơn các chứng chỉ. Các dự án tốt sử dụng dữ liệu thực (không phải dữ liệu mẫu), có tài liệu rõ ràng, và thể hiện toàn bộ quy trình: từ dữ liệu thô đến insight có thể hành động được.
Các Bước Tiếp Theo Của Bạn
Bạn Nên Đi Từ Đây
Các công cụ nghề nghiệp đều miễn phí & dễ tiếp cận:
- pandas: thư viện Python chuẩn để xử lý dữ liệu
- matplotlib / seaborn: các thư viện trực quan hóa dữ liệu
- scikit-learn: công cụ chính cho học máy cổ điển
- Jupyter notebooks: môi trường lập trình tương tác cho phép kết hợp code, kết quả và ghi chú
- Kaggle: tập dữ liệu miễn phí, các cuộc thi và cộng đồng người thực hành
Bắt đầu với một tập dữ liệu thực tế mà bạn quan tâm. Tải về, làm sạch, khám phá và thử trả lời một câu hỏi. Dự án đơn giản này sẽ dạy bạn nhiều hơn bất kỳ khóa học nào.