Ôn Thi Đại Họcby ToanKhonTech
Kiến thức trọng tâmLớp 12

Học máy, khoa học dữ liệu và mô phỏng (định hướng CS)

Học máy có giám sát và không giám sát, k láng giềng gần nhất, quy trình khoa học dữ liệu, làm sạch dữ liệu, mô phỏng và thiết kế mạng cho định hướng CS.

Đây là phần kiến thức lớp 12 của định hướng CS. Phần II thường có một câu đúng/sai về một bài toán học máy (dữ liệu có nhãn hay không, chia tập huấn luyện – kiểm tra, tính độ chính xác, k láng giềng gần nhất) hoặc một tình huống khoa học dữ liệu, mô phỏng kèm đoạn chương trình ngắn. Nắm vững khái niệm và biết tính tay là đủ điểm.

Kiến thức trọng tâm

Học máy là gì?

Học máy là một lĩnh vực của trí tuệ nhân tạo, giúp máy tính tự rút ra quy luật từ dữ liệu để thực hiện nhiệm vụ (phân loại, dự đoán…) mà không cần lập trình sẵn từng quy tắc.

Học có giám sát Học không giám sát
Dữ liệu huấn luyện Có nhãn (đáp án đúng đi kèm) Không có nhãn
Mục tiêu Dự đoán nhãn/giá trị cho dữ liệu mới Tự tìm cấu trúc, nhóm dữ liệu giống nhau
Bài toán tiêu biểu Phân loại (thư rác/không), dự đoán giá trị (giá nhà) Phân cụm khách hàng, phát hiện điểm bất thường
Ví dụ Nhận dạng chữ viết tay từ ảnh đã gắn chữ Chia học sinh thành nhóm theo thói quen học tập

Quy trình xây dựng mô hình: thu thập dữ liệu → làm sạch, tiền xử lí → chia tập huấn luyện và tập kiểm tra → huấn luyện → đánh giá → sử dụng, cải tiến. Đánh giá phải dùng dữ liệu chưa dùng để huấn luyện: độ chính xác bằng số mẫu đoán đúng chia cho tổng số mẫu của tập kiểm tra.

Mô hình "học thuộc" dữ liệu huấn luyện (đúng gần hết trên tập huấn luyện nhưng sai nhiều trên dữ liệu mới) là mô hình chưa tốt.

Thuật toán k láng giềng gần nhất

Để phân loại một mẫu mới Q: tính khoảng cách từ Q tới mọi mẫu đã có nhãn, chọn k mẫu gần nhất, gán cho Q nhãn chiếm đa số.

Dữ liệu (số liệu minh họa) về chiều dài, chiều rộng (cm) của lá hai loại cây A, B; cần phân loại lá Q có chiều dài 5, chiều rộng 5:

Mẫu Dài Rộng Loại
M1 5 4 A
M2 2 3 A
M3 3 2 A
M4 7 6 B
M5 6 7 B
M6 8 8 B
dai = [5, 2, 3, 7, 6, 8]
rong = [4, 3, 2, 6, 7, 8]
loai = ["A", "A", "A", "B", "B", "B"]

def phan_loai(x, y, k):
    ds = []
    for i in range(len(dai)):
        d2 = (dai[i] - x) ** 2 + (rong[i] - y) ** 2
        ds.append([d2, loai[i]])
    ds.sort()
    dem_a = 0
    for i in range(k):
        if ds[i][1] == "A":
            dem_a = dem_a + 1
    if dem_a > k - dem_a:
        return "A"
    return "B"

for k in [1, 3, 5]:
    print(k, phan_loai(5, 5, k))
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int dai[] = {5, 2, 3, 7, 6, 8};
int rong[] = {4, 3, 2, 6, 7, 8};
char loai[] = {'A', 'A', 'A', 'B', 'B', 'B'};
char phan_loai(int x, int y, int k) {
    vector<pair<int, char>> ds;
    for (int i = 0; i < 6; i++) {
        int d2 = (dai[i] - x) * (dai[i] - x) + (rong[i] - y) * (rong[i] - y);
        ds.push_back({d2, loai[i]});
    }
    sort(ds.begin(), ds.end());
    int dem_a = 0;
    for (int i = 0; i < k; i++)
        if (ds[i].second == 'A')
            dem_a = dem_a + 1;
    if (dem_a > k - dem_a)
        return 'A';
    return 'B';
}
int main() {
    int ks[] = {1, 3, 5};
    for (int k : ks)
        cout << k << " " << phan_loai(5, 5, k) << endl;
    return 0;
}

So sánh bình phương khoảng cách d2 là đủ (khoảng cách càng nhỏ thì bình phương càng nhỏ):

Thứ tự Mẫu d2 Loại
1 M1 02+12=10^2 + 1^2 = 1 A
2 M4 22+12=52^2 + 1^2 = 5 B
3 M5 12+22=51^2 + 2^2 = 5 B
4 M2 32+22=133^2 + 2^2 = 13 A
5 M3 22+32=132^2 + 3^2 = 13 A
6 M6 32+32=183^2 + 3^2 = 18 B

Chương trình in 1 A, 3 B, 5 A: với k = 1 chỉ xét M1 (A); k = 3 xét M1, M4, M5 → 2 phiếu B; k = 5 thêm M2, M3 → 3 phiếu A. Kết quả phụ thuộc k, nên k được chọn bằng cách thử trên tập kiểm tra.

Khoa học dữ liệu

Khoa học dữ liệu kết hợp toán – thống kê, tin học và hiểu biết chuyên ngành để rút ra tri thức từ dữ liệu, hỗ trợ ra quyết định.

Bước Việc làm
1. Xác định vấn đề Cần trả lời câu hỏi gì
2. Thu thập dữ liệu Khảo sát, cảm biến, cơ sở dữ liệu, Internet
3. Làm sạch, tiền xử lí Bỏ giá trị lỗi, thiếu, trùng; chuẩn hóa đơn vị
4. Phân tích, khám phá Thống kê, tìm xu hướng, mối liên hệ
5. Mô hình hóa Dùng học máy để dự đoán, phân loại
6. Trực quan hóa, báo cáo Biểu đồ, bảng, kết luận

Dữ liệu lớn có khối lượng rất lớn, sinh ra với tốc độ cao, đa dạng về dạng thức (văn bản, ảnh, video, số liệu cảm biến). Máy tính hỗ trợ bằng khả năng lưu trữ lớn, tính toán song song, điện toán đám mây và thuật toán học máy.

Mục đích trực quan hóa Biểu đồ phù hợp
Xu hướng theo thời gian Đường
So sánh giữa các nhóm Cột
Cơ cấu, tỉ lệ các phần trong tổng thể Tròn
Quan hệ giữa hai đại lượng Phân tán (điểm)

Ví dụ làm sạch dữ liệu: kết quả khảo sát số giờ dùng điện thoại mỗi ngày có hai giá trị nhập sai (30 giờ và −1 giờ).

gio = [3, 5, 30, 2, -1, 6, 4, 8, 7]
sach = []
for x in gio:
    if 0 <= x <= 24:
        sach.append(x)
print(len(sach), sum(sach) / len(sach))
print(round(sum(gio) / len(gio), 2))

Chương trình in 7 5.0 rồi 7.11: sau khi bỏ giá trị vô lí, trung bình là 5 giờ; nếu không làm sạch sẽ ra khoảng 7,11 giờ — sai lệch đáng kể.

Mô phỏng

Mô phỏng là dùng mô hình trên máy tính để bắt chước hoạt động của một hệ thống thật, nhằm nghiên cứu, dự đoán, huấn luyện khi thí nghiệm thật quá tốn kém, nguy hiểm, lâu hoặc không thể làm. Ví dụ: dự báo thời tiết, mô phỏng giao thông, lan truyền dịch bệnh, buồng lái tập lái máy bay, phòng thí nghiệm ảo. Mô phỏng an toàn, rẻ, lặp lại được, nhưng chỉ gần đúng — độ tin cậy phụ thuộc mô hình và dữ liệu đầu vào.

ca = 200
thang = 0
while ca <= 1000:
    ca = ca + ca // 2 - 60
    thang = thang + 1
    print(thang, ca)
#include <iostream>
using namespace std;
int main() {
    int ca = 200, thang = 0;
    while (ca <= 1000) {
        ca = ca + ca / 2 - 60;
        thang = thang + 1;
        cout << thang << " " << ca << endl;
    }
    return 0;
}

Mô hình: mỗi tháng số cá tăng thêm một nửa (phần nguyên), sau đó người nuôi bắt 60 con. Số cá qua các tháng: 240, 300, 390, 525, 727, 1030 → sau 6 tháng vượt 1000 con.

Sơ bộ thiết kế mạng (CS)

Quy trình: khảo sát nhu cầu (số máy, vị trí, dịch vụ cần dùng) → thiết kế sơ đồ, chọn thiết bị và đường truyền có dây/không dây → lắp đặt, cấu hình → kiểm thử, vận hành, bảo trì. Thiết bị và giao thức xem bài Mạng máy tính và Internet.

Dạng bài thường gặp trong đề thi

Dạng 1: Phân biệt học có giám sát và không giám sát

Xem lời giải

Chỉ phương án C có dữ liệu không nhãn và yêu cầu máy tự phân cụm → học không giám sát. A, B, D đều học từ dữ liệu đã có đáp án (giá, chữ số, loại thư) → học có giám sát.

Dạng 2: Tính độ chính xác của mô hình

Xem lời giải
460500=0,92=92%\dfrac{460}{500} = 0{,}92 = 92\%

Phải tính trên tập kiểm tra (dữ liệu mô hình chưa thấy), không dùng 2000 ảnh huấn luyện.

Dạng 3: Câu đúng/sai về mô phỏng có chương trình

Xem lời giải
  • a) Đúng. Số cá: 240, 300, 390, 525, 727, 1030; sau dòng 6 1030 điều kiện ca <= 1000 sai nên dừng.
  • b) Sai. Với 200 con: 200+100−100=200200 + 100 - 100 = 200 — số cá giữ nguyên 200 mỗi tháng, vòng lặp không bao giờ dừng.
  • c) Đúng. Đó là lợi ích chính của mô phỏng: thử nhiều phương án nhanh, rẻ, không rủi ro.
  • d) Sai. Mô hình bỏ qua nhiều yếu tố (dịch bệnh, thời tiết, thức ăn…), kết quả chỉ gần đúng.

Lỗi thường gặp

Mẹo làm bài

Tự kiểm tra nhanh

  1. Với dữ liệu lá cây ở trên, lá mới có chiều dài 3, chiều rộng 3 được phân loại thế nào khi k = 3?
Xem đáp án

Bình phương khoảng cách: M2 = 1, M3 = 1, M1 = 5, M4 = 25, M5 = 25, M6 = 50. Ba mẫu gần nhất M2, M3, M1 đều loại A → A.

  1. Một hệ thống chỉ có ảnh động vật không gắn nhãn và cần gom các ảnh giống nhau thành nhóm. Đây là loại học máy nào?
Xem đáp án

Học không giám sát (bài toán phân cụm).

  1. Trong chương trình làm sạch dữ liệu, nếu đổi điều kiện thành 0 < x <= 24 thì kết quả có thay đổi không?
Xem đáp án

Không. Danh sách không có giá trị 0 nên tập dữ liệu sạch vẫn là 7 giá trị, trung bình 5.0.

  1. Nêu hai lí do nên dùng mô phỏng thay cho thí nghiệm thật.
Xem đáp án

Thí nghiệm thật tốn kém, nguy hiểm, mất nhiều thời gian hoặc không thể thực hiện (ví dụ mô phỏng động đất, lan truyền dịch bệnh); mô phỏng cho phép thử nhiều phương án, lặp lại nhiều lần.

  1. Muốn so sánh số học sinh đăng kí 5 câu lạc bộ của trường, nên dùng loại biểu đồ nào?
Xem đáp án

Biểu đồ cột — dùng để so sánh giá trị giữa các nhóm.

Kiểm tra lại kiến thức vừa ôn

Làm 10 câu luyện tập về học máy, khoa học dữ liệu và mô phỏng (định hướng cs) và xem lời giải ngay sau mỗi câu.

Luyện tập ngay

Đề có câu hỏi về chủ đề này