Phân loại dữ liệu là gì - Giải thích đơn giản và ví dụ thực tế.pdf

aicandy 12 views 20 slides Dec 03, 2024
Slide 1
Slide 1 of 20
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20

About This Presentation

Phân loại dữ liệu là một kỹ thuật quan trọng trong học máy (machine learning) và trí tuệ nhân tạo, giúp chia các đối tượng hoặc mẫu dữ liệu vào các nhóm hoặc nhãn cụ thể. Phân loại được sử dụng rộng rãi trong nhiều ứng dụng th�...


Slide Content

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
1

Phân loại dữ liệu là gì? Giải thích đơn
giản và ví dụ thực tế
Nội dung
 1. Giới thiệu
 2. Phân loại nhị phân (Binary Classification)
o 2.1. Giới thiệu
o 2.2. Mô hình toán học
o 2.3. Ứng dụng với pytorch
 3. Phân loại đa lớp (Multiclass Classification)
o 3.1. Giới thiệu
o 3.2. Mô hình toán học
o 3.3. Ứng dụng với PyTorch
 4. Phân loại nhiều nhãn (Multi-label Classification)
o 4.1. Giới thiệu
o 4.2. Mô hình toán học
o 4.3. Ứng dụng với PyTorch
 5. Phân loại thứ tự (Ordinal Classification)
o 5.1. Giới thiệu
o 5.2. Mô hình toán học
o 5.3. Ứng dụng với PyTorch
 6. Phân loại chuỗi thời gian (Time Series Classification)
o 6.1. Giới thiệu
o 6.2. Phương pháp phân loại
o 6.3. Ứng dụng với Pytorch
 7. Phân loại Đồ thị (Graph Classification)
o 7.1. Giới thiệu
o 7.2. Phương pháp phân loại
o 7.3. Ứng dụng với Pytorch
 8. Kết luận
1. Giới thiệu
Phân loại dữ liệu là một kỹ thuật quan trọng trong học máy (machine
learning) và trí tuệ nhân tạo, giúp chia các đối tượng hoặc mẫu dữ liệu vào
các nhóm hoặc nhãn cụ thể. Phân loại được sử dụng rộng rãi trong nhiều
ứng dụng thực tế, chẳng hạn như phân loại email (spam và không spam),
nhận diện khuôn mặt, chẩn đoán y khoa và nhiều hơn nữa.
Quá trình phân loại bao gồm việc xây dựng một mô hình dựa trên tập dữ
liệu huấn luyện, sau đó sử dụng mô hình này để dự đoán nhãn cho các dữ
liệu mới. Các mô hình phân loại phổ biến như phân loại nhị phân, phân loại

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
2

đa lớp, phân loại nhiều nhãn, phân loại thứ tự, phân loại chuỗi thời gian,
phân loại đồ thị.
2. Phân loại nhị phân (Binary Classification)
2.1. Giới thiệu
Phân loại nhị phân là trường hợp đơn giản nhất của phân loại, nơi dữ liệu
được phân thành hai nhóm. Ví dụ, trong một hệ thống phát hiện email spam,
mỗi email sẽ được phân loại vào một trong hai nhóm: “spam” hoặc “không
spam”.

2.2. Mô hình toán học
Mô hình phân loại nhị phân có thể được biểu diễn bằng hàm tuyến tính như
sau:
y=σ(w⊤x+b)
Trong đó:
 x là vector đặc trưng của mẫu dữ liệu.
 w là vector trọng số của mô hình.
 b là hằng số điều chỉnh (bias).
 σ(z)=11+e−z là hàm sigmoid, dùng để chuẩn hóa đầu ra thành xác suất
từ 0 đến 1.

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
3

2.3. Ứng dụng với pytorch
Dưới đây là một ví dụ đơn giản về cách xây dựng mô hình phân loại nhị
phân bằng PyTorch cho bài toán XOR, một ví dụ điển hình trong học máy:
import torch
import torch.nn as nn
import torch.optim as optim

# Tạo dữ liệu XOR
data = torch.tensor([[0.0, 0.0], [0.0, 1.0], [1.0, 0.0], [1.0,
1.0]])
labels = torch.tensor([[0], [1], [1], [0]]) # Nhãn cho dữ liệu XOR

# Định nghĩa mô hình phân loại nhị phân
class BinaryClassifier(nn.Module):
def __init__(self):
super(BinaryClassifier, self).__init__()
self.layer = nn.Linear(2, 1) # Lớp đầu vào có 2 đặc trưng,
đầu ra có 1 nhãn

def forward(self, x):
return torch.sigmoid(self.layer(x))

model = BinaryClassifier()

# Định nghĩa tiêu chí tổn thất và trình tối ưu hóa
criterion = nn.BCELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)

# Huấn luyện mô hình
for epoch in range(1000):

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
4

optimizer.zero_grad() # Xóa các gradient trước đó
outputs = model(data)
loss = criterion(outputs, labels.float())
loss.backward() # Tính gradient
optimizer.step() # Cập nhật trọng số

# Kiểm tra kết quả
with torch.no_grad():
outputs = model(data)
predicted = (outputs > 0.5).float()
accuracy = (predicted == labels).float().mean()
print(f'Accuracy: {accuracy.item() * 100}%')
Trong ví dụ này, chúng ta xây dựng một mô hình đơn giản để phân loại dữ
liệu XOR thành hai lớp. Dữ liệu XOR là một ví dụ kinh điển, nơi mô hình
tuyến tính đơn giản không thể phân loại chính xác. Tuy nhiên, với lớp kết
nối đầy đủ và hàm kích hoạt sigmoid, mô hình có thể học cách phân loại
đúng sau khi được huấn luyện.
3. Phân loại đa lớp (Multiclass Classification)
3.1. Giới thiệu
Phân loại đa lớp là một mở rộng của phân loại nhị phân, nơi dữ liệu có thể
được phân loại vào nhiều nhóm hoặc nhãn khác nhau. Ví dụ, trong bài toán
phân loại hình ảnh, chúng ta có thể cần phân loại các bức ảnh thành nhiều
loại khác nhau, chẳng hạn như “mèo”, “chó”, “chim”.

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
5


3.2. Mô hình toán học
Hàm mất mát được sử dụng phổ biến nhất trong phân loại đa lớp là Cross-
Entropy Loss, được định nghĩa như sau:
L=–∑i=1Cyilog⁡(y^i)
Trong đó:
 C là số lượng các lớp (classes).
 yi là nhãn thực tế (dạng one-hot).
 y^i là xác suất dự đoán cho lớp i.
3.3. Ứng dụng với PyTorch
Dưới đây là ví dụ về cách xây dựng mô hình phân loại đa lớp bằng PyTorch:
import torch
import torch.nn as nn
import torch.optim as optim

# Tạo dữ liệu giả
data = torch.tensor([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]],
dtype=torch.float)
labels = torch.tensor([0, 1, 2, 0, 1]) # Các lớp (classes) là 0, 1,
2

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
6


# Định nghĩa mô hình phân loại đa lớp
class MulticlassClassifier(nn.Module):
def __init__(self):
super(MulticlassClassifier, self).__init__()
self.layer = nn.Linear(2, 3) # Lớp đầu ra có 3 lớp

def forward(self, x):
return torch.softmax(self.layer(x), dim=1)

model = MulticlassClassifier()

# Định nghĩa tiêu chí tổn thất và trình tối ưu hóa
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)

# Huấn luyện mô hình
for epoch in range(1000):
optimizer.zero_grad()
outputs = model(data)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()

# Kiểm tra kết quả
with torch.no_grad():
outputs = model(data)
_, predicted = torch.max(outputs, 1)
accuracy = (predicted == labels).float().mean()
print(f'Accuracy: {accuracy.item() * 100}%')

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
7

Trong ví dụ này, mô hình phân loại đa lớp dự đoán lớp của các mẫu dữ liệu
giả định. Dữ liệu được gán vào ba lớp khác nhau, và mô hình được huấn
luyện để tối ưu hóa hàm mất mát Cross-Entropy. Sau khi huấn luyện, chúng
ta có thể kiểm tra độ chính xác của mô hình bằng cách so sánh dự đoán với
nhãn thực tế.
4. Phân loại nhiều nhãn (Multi-label Classification)
4.1. Giới thiệu
Phân loại nhiều nhãn là trường hợp mà mỗi mẫu dữ liệu có thể được gán
vào nhiều nhãn cùng một lúc. Điều này khác với phân loại đa lớp, nơi mỗi
mẫu chỉ được gán vào một lớp. Ví dụ, một bài báo có thể được gán nhiều
nhãn như “thể thao”, “bóng đá”, và “quốc tế”.
4.2. Mô hình toán học
Mô hình phổ biến cho phân loại nhiều nhãn là huấn luyện một bộ phân loại
nhị phân cho từng nhãn một cách độc lập. Cho từng nhãn l, ta xây dựng một
hàm ph ân lo ại nh ị phân
fl:Rd→{0,1}
với:
 fl(x)=1 nếu mẫu x thuộc về lớp l.
 fl(x)=0 nếu mẫu x không thuộc về lớp l.
Do đó, mô hình phân loại nhiều nhãn có thể được biểu diễn dưới dạng:
Y^=f(x)={l∈{1,2,…,L}∣fl(x)=1}
4.3. Ứng dụng với PyTorch
Dưới đây là ví dụ về cách xây dựng mô hình phân loại nhiều nhãn bằng
PyTorch:
import torch
import torch.nn as nn
import torch.optim as optim

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
8


# Tạo dữ liệu giả
data = torch.tensor([[0.5, 1.5], [2.5, 3.5], [3.5, 4.5], [4.5, 5.5],
[5.5, 6.5]])
labels = torch.tensor([[1, 0, 1], [0, 1, 1], [1, 1, 0], [0, 0, 1],
[1, 1, 1]]) # Mỗi mẫu có thể thuộc nhiều nhãn

# Định nghĩa mô hình phân loại nhiều nhãn
class MultiLabelClassifier(nn.Module):
def __init__(self):
super(MultiLabelClassifier, self).__init__()
self.layer = nn.Linear(2, 3) # 3 nhãn đầu ra

def forward(self, x):
return torch.sigmoid(self.layer(x)) # Sử dụng sigmoid cho
phân loại nhiều nhãn

model = MultiLabelClassifier()

# Định nghĩa tiêu chí tổn thất và trình tối ưu hóa
criterion = nn.BCELoss()
optimizer = optim.SGD(model.parameters(), lr=0.1)

# Huấn luyện mô hình
for epoch in range(1000):
optimizer.zero_grad()
outputs = model(data)
loss = criterion(outputs, labels.float())
loss.backward()
optimizer.step()

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
9

# Kiểm tra kết quả
with torch.no_grad():
outputs = model(data)
predicted = (outputs > 0.5).float()
accuracy = (predicted == labels).float().mean()
print(f'Accuracy: {accuracy.item() * 100}%')
Trong ví dụ này, mô hình phân loại nhiều nhãn có khả năng dự đoán nhiều
nhãn cho mỗi mẫu dữ liệu. Chúng ta sử dụng hàm sigmoid để chuẩn hóa
đầu ra thành xác suất cho mỗi nhãn, và hàm BCELoss được sử dụng để tối
ưu hóa mô hình.
5. Phân loại thứ tự (Ordinal Classification)
5.1. Giới thiệu
Trong lĩnh vực học máy và trí tuệ nhân tạo, phân loại thứ tự (Ordinal
Classification) là một phương pháp phân loại đặc biệt, nơi các nhãn (labels)
không chỉ đơn thuần là các lớp riêng biệt mà còn có một thứ tự rõ ràng giữa
chúng. Khác với phân loại đa lớp (multiclass classification), nơi các lớp
không có thứ tự cố định, phân loại thứ tự đòi hỏi phải tôn trọng mối quan hệ
thứ tự giữa các lớp. Điều này có nghĩa là các lớp có mối liên hệ về mặt định
lượng, chẳng hạn như “thấp”, “trung bình”, và “cao”.
5.2. Mô hình toán học
Giả sử chúng ta có các lớp thứ tự {1,2,…,L}, nơi lớp 1 là thấp nhất và lớp L là
cao nhất. Để mô hình hóa bài toán phân loại thứ tự, ta thường sử dụng các
mô hình hồi quy hoặc mô hình phân loại với một số điều chỉnh để phản ánh
thứ tự của các lớp.
Hàm mất mát (Loss Function)
Hàm mất mát cho phân loại thứ tự có thể được định nghĩa để phản ánh thứ
tự giữa các lớp. Một ví dụ là hàm mất mát độ chính xác trung bình (mean
absolute error) giữa dự đoán và thực tế:
L(θ)=1N∑i=1N|y^i–yi|

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
10

Trong đó:
 y^i là dự đoán của mô hình cho mẫu i.
 yi là lớp thực tế của mẫu i, và nó được ánh xạ thành giá trị số để phản
ánh thứ tự.
Hàm kích hoạt (Activation Function)
Các mô hình phân loại thứ tự có thể sử dụng hàm kích hoạt (activation
function) như hàm softmax để dự đoán xác suất của từng lớp, sau đó áp
dụng các điều chỉnh để phản ánh thứ tự. Hàm softmax cho xác suất của từng
lớp được tính như sau:
p^l=ezl∑k=1Lezk
Trong đó:
 zl là đầu ra của mô hình cho lớp l.
 p^l là xác suất dự đoán của lớp l.
Sử dụng mô hình hồi quy
Mô hình hồi quy thứ tự có thể được sử dụng để dự đoán điểm số hoặc giá trị
liên tục cho mỗi mẫu, sau đó phân loại điểm số đó thành các lớp thứ tự. Ví
dụ, một mô hình hồi quy có thể dự đoán một giá trị liên tục y, và sau đó giá
trị này được ánh xạ vào lớp thứ tự bằng cách sử dụng các ngưỡng:
ếếếClass(y)={1nếu y≤θ12nếu θ1<y≤θ2⋮Lnếu y>θL−1
Trong đó:
θ1,θ2,…,θL−1 là các ngưỡng phân chia các lớp.
5.3. Ứng dụng với PyTorch
import torch
import torch.nn as nn
import torch.optim as optim

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
11

# Tạo dữ liệu giả định
data = torch.tensor([[1.0], [2.0], [3.0], [4.0], [5.0]])
labels = torch.tensor([0, 1, 2, 3, 4]) # Các nhãn theo thứ tự

# Định nghĩa mô hình phân loại thứ tự
class OrdinalClassifier(nn.Module):
def __init__(self):
super(OrdinalClassifier, self).__init__()
self.layer = nn.Linear(1, 1) # Đầu vào có 1 đặc trưng, đầu
ra là giá trị thứ tự

def forward(self, x):
return self.layer(x)

model = OrdinalClassifier()

# Định nghĩa tiêu chí tổn thất và trình tối ưu hóa
criterion = nn.MSELoss() # Mean Squared Error phù hợp với bài toán
này
optimizer = optim.SGD(model.parameters(), lr=0.01)

# Huấn luyện mô hình
for epoch in range(1000):
optimizer.zero_grad()
outputs = model(data)
loss = criterion(outputs.squeeze(), labels.float())
loss.backward()
optimizer.step()

# Kiểm tra kết quả
with torch.no_grad():

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
12

outputs = model(data)
predicted = torch.round(outputs).squeeze()
accuracy = (predicted == labels.float()).float().mean()
print(f'Accuracy: {accuracy.item() * 100}%')
Trong ví dụ này, chúng ta xây dựng một mô hình phân loại thứ tự đơn giản
bằng cách sử dụng PyTorch. Dữ liệu đầu vào là các giá trị số thực, và các
nhãn được biểu diễn bằng các giá trị thứ tự từ 0 đến 4. Chúng ta sử dụng
hàm mất mát Mean Squared Error (MSE) để huấn luyện mô hình. Sau khi
huấn luyện, mô hình có thể dự đoán giá trị thứ tự cho các mẫu dữ liệu mới.
6. Phân loại chuỗi thời gian (Time Series Classification)
6.1. Giới thiệu
Phân loại chuỗi thời gian (Time Series Classification) là một phương pháp
phân loại trong lĩnh vực học máy, nơi dữ liệu đầu vào là các chuỗi thời gian,
tức là một tập hợp các điểm dữ liệu được sắp xếp theo thứ tự thời gian. Các
chuỗi thời gian có thể đại diện cho bất kỳ hiện tượng nào thay đổi theo thời
gian, chẳng hạn như giá cổ phiếu, tín hiệu điện tâm đồ (ECG), hoặc dữ liệu
cảm biến.

6.2. Phương pháp phân loại
Phân loại chuỗi thời gian có thể được thực hiện bằng nhiều phương pháp
khác nhau, bao gồm:

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
13

Phương pháp dựa trên đặc trưng
Trích xuất các đặc trưng từ chuỗi thời gian, chẳng hạn như giá trị trung bình,
độ lệch chuẩn, hoặc các chỉ số phức tạp hơn như các đặc trưng tần số, sau đó
sử dụng các mô hình phân loại truyền thống như SVM hoặc Random Forest.
Phương pháp dựa trên mô hình
Sử dụng các mô hình như HMM (Hidden Markov Model) hoặc ARIMA
(Autoregressive Integrated Moving Average) để phân tích và phân loại
chuỗi thời gian.
Mạng nơ-ron hồi quy (Recurrent Neural Networks – RNNs)
RNNs, đặc biệt là LSTM (Long Short-Term Memory), là một trong những
phương pháp hiện đại và hiệu quả nhất để phân loại chuỗi thời gian. Những
mô hình này có khả năng học từ các chuỗi dữ liệu có độ dài biến đổi và ghi
nhớ các thông tin quan trọng qua thời gian dài.
6.3. Ứng dụng với Pytorch
Một ví dụ thực tế về phân loại chuỗi thời gian là phân loại các tín hiệu điện
tâm đồ (ECG) để chẩn đoán các bệnh tim mạch. Trong ví dụ dưới đây, chúng
ta sẽ sử dụng PyTorch để xây dựng một mô hình RNN đơn giản nhằm phân
loại các chuỗi thời gian thành các lớp khác nhau dựa trên các mẫu tín hiệu.
import torch
import torch.nn as nn
import torch.optim as optim

# Định nghĩa mô hình RNN cho phân loại chuỗi thời gian
class RNNClassifier(nn.Module):
def __init__(self, input_size, hidden_size, num_layers,
num_classes):
super(RNNClassifier, self).__init__()
self.hidden_size = hidden_size

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
14

self.num_layers = num_layers
self.rnn = nn.RNN(input_size, hidden_size, num_layers,
batch_first=True)
self.fc = nn.Linear(hidden_size, num_classes)

def forward(self, x):
h0 = torch.zeros(self.num_layers, x.size(0),
self.hidden_size).to(x.device)
out, _ = self.rnn(x, h0)
out = self.fc(out[:, -1, :])
return out

# Các thông số mô hình
input_size = 1
hidden_size = 64
num_layers = 2
num_classes = 3

# Khởi tạo mô hình
model = RNNClassifier(input_size, hidden_size, num_layers,
num_classes)

# Định nghĩa tiêu chí tổn thất và trình tối ưu hóa
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

# Dữ liệu giả lập
data = torch.rand(100, 10, input_size) # 100 chuỗi, mỗi chuỗi có 10
điểm, 1 đặc trưng
labels = torch.randint(0, num_classes, (100,)) # 100 nhãn từ 0 đến
2

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
15

# Huấn luyện mô hình
for epoch in range(500):
optimizer.zero_grad()
outputs = model(data)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()

# Kiểm tra kết quả
with torch.no_grad():
outputs = model(data)
_, predicted = torch.max(outputs.data, 1)
accuracy = (predicted == labels).float().mean()
print(f'Accuracy: {accuracy.item() * 100}%')
Trong ví dụ này, chúng ta xây dựng một mô hình RNN đơn giản bằng cách
sử dụng PyTorch để phân loại chuỗi thời gian. Mô hình RNN được sử dụng
để học các mẫu trong chuỗi thời gian, với đầu vào là các chuỗi dữ liệu và
đầu ra là lớp dự đoán. Sau khi huấn luyện, mô hình có thể được sử dụng để
phân loại các chuỗi thời gian mới.
7. Phân loại Đồ thị (Graph Classification)
7.1. Giới thiệu
Phân loại đồ thị (Graph Classification) là một phương pháp trong học máy
liên quan đến việc gán nhãn cho toàn bộ đồ thị. Đây là một bài toán quan
trọng trong nhiều lĩnh vực, từ hóa học, sinh học đến khoa học xã hội, nơi các
đối tượng nghiên cứu có thể được mô hình hóa dưới dạng đồ thị. Ví dụ, một
phân tử có thể được biểu diễn dưới dạng đồ thị với các nguyên tử là các đỉnh
(nodes) và các liên kết hóa học là các cạnh (edges).
7.2. Phương pháp phân loại
Có nhiều phương pháp để phân loại đồ thị, bao gồm:

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
16

Phương pháp dựa trên đặc trưng
Trích xuất các đặc trưng của đồ thị như số đỉnh, số cạnh, hoặc các chỉ số khác
như độ tập trung (clustering coefficient), sau đó sử dụng các thuật toán học
máy truyền thống như SVM hoặc Random Forest để phân loại.
Mạng nơ-ron đồ thị (Graph Neural Networks – GNNs)
GNNs là phương pháp hiện đại và mạnh mẽ để xử lý và phân loại đồ thị.
Chúng học cách biểu diễn các đồ thị dưới dạng vector số (embedding) và sử
dụng các vector này để thực hiện phân loại.
7.3. Ứng dụng với Pytorch
Một ví dụ thực tế về phân loại đồ thị là dự đoán tính chất hóa học của các
phân tử trong hóa học. Mỗi phân tử có thể được biểu diễn dưới dạng một đồ
thị, với các nguyên tử là các đỉnh và các liên kết hóa học là các cạnh. Mục
tiêu là xây dựng một mô hình học máy có thể dự đoán các tính chất của phân
tử dựa trên cấu trúc đồ thị của nó.
Dưới đây là một ví dụ sử dụng PyTorch Geometric, một thư viện mở rộng
của PyTorch dành riêng cho việc xử lý đồ thị:
import torch
import torch.nn.functional as F
from torch_geometric.data import DataLoader
from torch_geometric.datasets import TUDataset
from torch_geometric.nn import GCNConv, global_mean_pool

# Định nghĩa mô hình GCN cho phân loại đồ thị
class GCN(torch.nn.Module):
def __init__(self, num_node_features, num_classes):
super(GCN, self).__init__()
self.conv1 = GCNConv(num_node_features, 64)
self.conv2 = GCNConv(64, 64)

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
17

self.fc = torch.nn.Linear(64, num_classes)

def forward(self, x, edge_index, batch):
x = self.conv1(x, edge_index)
x = F.relu(x)
x = self.conv2(x, edge_index)
x = global_mean_pool(x, batch) # Áp dụng pooling để giảm số
lượng các node thành 1 vector
x = self.fc(x)
return F.log_softmax(x, dim=1)

# Tải bộ dữ liệu MUTAG từ TUDataset
dataset = TUDataset(root='/tmp/MUTAG', name='MUTAG')

# Chia bộ dữ liệu thành các tập huấn luyện và kiểm tra
train_loader = DataLoader(dataset[:150], batch_size=32,
shuffle=True)
test_loader = DataLoader(dataset[150:], batch_size=32,
shuffle=False)

# Khởi tạo mô hình, tiêu chí tổn thất và trình tối ưu hóa
model = GCN(num_node_features=dataset.num_node_features,
num_classes=dataset.num_classes)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)

# Huấn luyện mô hình
model.train()
for epoch in range(100):
for data in train_loader:
optimizer.zero_grad()
out = model(data.x, data.edge_index, data.batch)
loss = F.nll_loss(out, data.y)

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
18

loss.backward()
optimizer.step()

# Kiểm tra mô hình
model.eval()
correct = 0
for data in test_loader:
out = model(data.x, data.edge_index, data.batch)
pred = out.argmax(dim=1)
correct += (pred == data.y).sum().item()

accuracy = correct / len(test_loader.dataset)
print(f'Accuracy: {accuracy * 100:.2f}%')
Trong ví dụ này, chúng ta sử dụng PyTorch Geometric để xây dựng một mô
hình GCN (Graph Convolutional Network) nhằm phân loại các đồ thị trong
bộ dữ liệu MUTAG, một bộ dữ liệu phổ biến trong phân loại đồ thị. Mô hình
GCN học cách biểu diễn các đồ thị dưới dạng các vector số và sử dụng các
vector này để dự đoán lớp của đồ thị.
8. Kết luận
Phân loại dữ liệu là một trong những nhiệm vụ cốt lõi trong học máy, với
ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau. Dựa trên tính chất và cấu
trúc của dữ liệu, có nhiều loại phân loại khác nhau, mỗi loại đều có những
đặc điểm và ứng dụng riêng:
Phân loại nhị phân
Đây là loại phân loại đơn giản nhất, nơi dữ liệu được chia thành hai lớp khác
nhau. Nó thường được sử dụng trong các bài toán như phát hiện spam, phân
loại email hoặc dự đoán bệnh tật.

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
19

Phân loại đa lớp
Khi có nhiều hơn hai lớp, bài toán trở thành phân loại đa lớp. Nó được ứng
dụng rộng rãi trong nhận diện hình ảnh, phân loại văn bản, và nhiều bài toán
khác trong thực tế.
Phân loại nhiều nhãn
Đây là khi một mẫu dữ liệu có thể thuộc về nhiều lớp cùng lúc. Ví dụ điển
hình là trong phân loại ảnh, một bức ảnh có thể chứa nhiều đối tượng khác
nhau như người, xe, động vật, và mỗi đối tượng đều là một nhãn.
Phân loại thứ tự
Phân loại thứ tự (Ordinal Classification) là khi các lớp có một thứ tự nhất
định, ví dụ như mức độ hài lòng từ “Rất không hài lòng” đến “Rất hài lòng”.
Điều này thường xuất hiện trong các bài toán khảo sát và phân tích dữ liệu
khách hàng.
Phân loại chuỗi thời gian
Đối với dữ liệu mà các mẫu được sắp xếp theo thời gian, phân loại chuỗi thời
gian giúp phát hiện các mẫu và xu hướng trong dữ liệu thay đổi theo thời
gian, với ứng dụng trong y tế, tài chính, và IoT.
Phân loại đồ thị
Khi dữ liệu được biểu diễn dưới dạng đồ thị, phân loại đồ thị cho phép
chúng ta phân tích các đối tượng có cấu trúc phức tạp như phân tử hóa học,
mạng xã hội, hoặc hệ thống kết nối mạng.
Mỗi loại phân loại đều có những ưu và nhược điểm riêng, cũng như các
phương pháp và kỹ thuật phù hợp. Việc chọn lựa loại phân loại và phương
pháp phù hợp phụ thuộc vào bản chất của dữ liệu và mục tiêu của bài toán.
Sự phát triển của các phương pháp học máy, đặc biệt là các mạng nơ-ron
sâu, đã mở ra nhiều cơ hội mới trong việc xử lý và phân loại dữ liệu phức
tạp, giúp cải thiện hiệu suất và khả năng dự đoán trong các ứng dụng thực
tế.

https://aicandy.vn/phan-loai-du-lieu-la-gi-giai-thich-don-gian-va-vi-du-thuc-te/
Bản quyền thuộc về: https://aicandy.vn


Học tập toàn diện: Kết nối lý thuyết, thực hành và dữ liệu thực tế
https://aicandy.vn
20


Bài trước
Danh mục
Bài sau
Chúc bạn thành công trong hành trình khám phá và ứng dụng trí tuệ nhân tạo
vào học tập và công việc. Đừng quên truy cập thường xuyên để cập nhật thêm
kiến thức mới tại AIcandy