Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 12

BÀI TẬP NHÓM 2

Thành viên nhóm:


1: Lê Thị Hưng NT
2: Nguyễn Thị Dịu
3: Nguyễn Như Thái
4: Giang Văn Dũng
5: Trần Văn Dũng
Bài 1:Giang Văn Dũng Cho tập dữ liệu gồm 6 vector trong không gian 2 chiều
A(1,1), B(1.5, 1.5), C(5,5), D(3,4), E(4,4), F(3, 3.5). Cho độ đo không tương tự giữa
các vector là khoảng cách Ơclit, đại diện điểm của cụm là vector trung bình.
Hãy sử dụng thuật toán K-mean đê phân lớp tập dữ liệu trên với k=2.

Bước 1: Khởi tạo hai centroid (hai điểm trung tâm) ban đầu. Ta có thể chọn bất kỳ hai
điểm từ tập dữ liệu làm centroid ban đầu. Chọn A(1,1) và C(5,5) làm các centroid ban
đầu.
Chọn A(1,1) làm trung tâm cho cụm 1 và C(5,5) làm trung tâm cho cụm 2.

Bước 2: Gán từng điểm dữ liệu vào nhóm (cluster) gần nhất dựa trên khoảng cách
Euclidean tới các centroid. Tính khoảng cách giữa mỗi điểm dữ liệu và hai centroid
(Tính toán khoảng cách từ mỗi vector đến các điểm trung tâm và gán chúng vào cụm
tương ứng gần nhất.).
Để tính khoảng cách giữa hai vector, ta có thể sử dụng công thức khoảng cách
Euclidean (Ơclit):
- Độ đo khoảng cách giữa điểm A và centroid 1 (A(1,1)) là 0.
- Độ đo khoảng cách giữa điểm B và centroid 1 (A(1,1)) là sqrt((1.5 - 1)^2 + (1.5 -
1)^2) ≈ 0.71.
- Độ đo khoảng cách giữa điểm C và centroid 1 (A(1,1)) là sqrt((5 - 1)^2 + (5 - 1)^2) ≈
5.66.
- Độ đo khoảng cách giữa điểm D và centroid 1 (A(1,1)) là sqrt((3 - 1)^2 + (4 - 1)^2) ≈
3.16.
- Độ đo khoảng cách giữa điểm E và centroid 1 (A(1,1)) là sqrt((4 - 1)^2 + (4 - 1)^2) ≈
3.16.
- Độ đo khoảng cách giữa điểm F và centroid 1 (A(1,1)) là sqrt((3 - 1)^2 + (3.5 - 1)^2)
≈ 2.50.
Như vậy, các điểm A, B, và F gần centroid 1 hơn. Các điểm C, D, và E gần centroid 2
hơn.
Tương tự, tổng kết lại ta sẽ có:
- Khoảng cách từ A đến A là 0.
- Khoảng cách từ A đến C là 5.
- Khoảng cách từ B đến A là 0.5.
- Khoảng cách từ B đến C là 3.54.
- Khoảng cách từ D đến A là 2.83.
- Khoảng cách từ D đến C là 2.24.
- Khoảng cách từ E đến A là 3.16.
- Khoảng cách từ E đến C là 1.12.
- Khoảng cách từ F đến A là 2.5.
- Khoảng cách từ F đến C là 1.12.

Bước 3: Cập nhật lại các centroid cho mỗi nhóm bằng cách tính trung bình của tất cả
các điểm dữ liệu trong cùng một nhóm. Trong trường hợp này, centroid mới cho nhóm
1 là trung bình của A, B, và F, và centroid mới cho nhóm 2 là trung bình của C, D, và
E. Phân lớp tập dữ liệu dựa trên khoảng cách gần nhất.
- Vector A gần hơn với A hơn là C, nên vector A thuộc cụm A.
- Vector B gần hơn với A hơn là C, nên vector B thuộc cụm A.
- Vector D gần hơn với C hơn là A, nên vector D thuộc cụm C.
- Vector E gần hơn với C hơn là A, nên vector E thuộc cụm C.
- Vector F gần hơn với C hơn là A, nên vector F thuộc cụm C.

Bước 4: Tính lại vector trung bình cho mỗi cụm.


- Vector trung bình của cụm A là (1.25, 1.25).
- Vector trung bình của cụm C là (3.666, 4.166).

Bước 5: Lặp lại Bước 2 và Bước 3 cho đến khi các centroid không thay đổi hoặc đạt
đủ số lần lặp cố định hay hiểu cách khác là “Lặp lại bước 2 và bước 3 cho đến khi
không có sự thay đổi trong việc gán vector vào các cụm hoặc khi đạt đến một số lần
lặp tối đa”.

Ứng dụng thuật toán K-means với các bước trên, ta có thể phân lớp tập dữ liệu trên
thành hai cụm dựa trên độ tương tự giữa các vector (khoảng cách Ơclit) và đại diện
điểm của mỗi cụm là vector trung bình.
Đó sẽ là kết quả cuối cùng sẽ là hai nhóm (cluster) dựa trên độ đo khoảng cách
Euclidean và các centroid tương ứng của từng nhóm. Kết quả cuối cùng là:
- Cụm A gồm vector A và B.
- Cụm C gồm vector D, E và F.

Bài 2:Nguyễn Thị Dịu Xây dựng tập luật, sử dụng thuật toán ILA.
Bước 1: Chia tập mẫu ban đầu thành hai bảng con (2 lớp) bởi 2 loại quyết định “Yes” và
“No” như sau:

Stt Size Color Shape Decision


1 Medium Blue Brick Yes
3 Small Red Sphere Yes
5 Large Green Pillar Yes
7 Large Green Sphere Yes

Stt Size Color Shape Decision


2 Small Red Wedge No
4 Large Red Wedge No
6 Large Red Pillar No

Bước 2: Áp dụng lần lượt các bước từ 2 đến 8 với bảng con thứ nhất
Với j = 1. Có 3 tổ hợp, mỗi tổ hợp gồm một thuộc tính là {Size}, {Color}, {Shape}
 Với tổ hợp {Size} thuộc tính “Medium” xuất hiện 1 lần trong bảng 1 và không xuất
hiện trong bảng 2; thuộc tính “Small” và “Large” xuất hiện trên cả hai bảng
T(Sizemedium) = 1; T(Sizesmall) = 0; T(Sizelarge) = 0

 Với tổ hợp {Color} thuộc tính “Green” xuất hiện 2 lần trong bảng 1 và không xuất
hiện trong bảng 2; thuộc tính “Blue” xuất hiện 1 lần trong bảng 1 và không xuất
hiện trong bảng 2; thuộc tính “Large” xuất hiện trên cả hai bảng
T(Colorgreen) = 2; T(Colorblue) = 1; T(Colorred) = 0

 Với tổ hợp {Shape} thuộc tính “Brick” xuất hiện 1 lần trong bảng 1 và không xuất
hiện trong bảng 2; thuộc tính “Sphere” xuất hiện 2 lần trong bảng 1 và không xuất
hiện trong bảng 2; thuộc tính “Pillar” xuất hiện trên cả hai bảng
T(Shapebrick) = 1; T(Shapesphere) = 2; T(Shapepillar) = 0

Như vậy, ta có T(Colorgreen) và T(Shapesphere) lớn nhất và đều bằng 2. Ta mặc định chọn
T(Colorgreen) và ta sẽ có luật:
IF Color = Green THEN Decision = Yes (a)
Kế tiếp, loại bỏ hai dòng ứng với Color = Green ra khỏi bảng ta được:

Stt Size Color Shape Decision


1 Medium Blue Brick Yes
3 Small Red Sphere Yes
Lập lại việc tính toán các giá trị T cho dữ liệu còn lại ta được:
T(Sizemedium) = 1; T(Colorblue) = 1; T(Shapesphere) = 1

Ta chọn trường hợp T(Sizemedium) để xây dựng luật, ta được:


IF Size = Medium THEN Decision = Yes (b)

Kế tiếp, loại bỏ dòng ứng với Size = Medium ra khỏi bảng ta được

Stt Size Color Shape Decision


3 Small Red Sphere Yes
Tính giá trị T cho dữ liệu còn lại ta được:
T(Shapesphere) = 1
Ta có luật:
IF Shape = Sphere THEN Decision = Yes (c)

Như vậy tất cả các dòng trong bảng 1 bị loại bỏ ta chuyển sang bảng 2
 Với j = 1, có 3 tổ hợp mỗi tổ hợp gồm 1 thuộc tính là {Size}, {Color}, {Shape}. Ta
tính được:
T(Shapewedge) = 2 là lớn nhất. Do đó ta có luật:
IF Shape = Wedge THEN Decision = No (d)

Dữ liệu còn lại:

Stt Size Color Shape Decision


6 Large Red Pillar No
Với các dòng còn lại, mọi giá trị của thuộc tính đều xuất hiện trong cả hai bảng (mọi giá
trị T đều bằng 0) nên ta sẽ tăng j lên 1 và thực hiện lại bước 2
 Với j = 2, có 3 tổ hợp mỗi tổ hợp gồm 3 thuộc tính là {Size, Color}, {Size, Shape},
{Color, Shape}
Ta có: T(Sizelagre, Colorred) = 1
T(Colorred, Shapepillar) = 1

Chọn trường hợp đầu tiên để xây dựng luật ta có luật sau:
IF (Size = Large) AND (Color = Red) THEN Decision = No (e)

 Thuật toán kết thúc vì tất cả các bảng đã được xét đến và tất cả các dòng trong
các bảng đã được loại bỏ.
Bài 3: Nguyễn Như Thái Vẽ cây quyết định và tìm tập luật suy diễn ra Profit sử dụng
thuật toán ID3

# Tạo tập dữ liệu


data = [
["Old", "No", "Software", "Down"],
["Midle", "Yes", "Software", "Down"],
["Midle", "No", "Hardware", "Up"],
["Old", "No", "Hardware", "Down"],
["New", "No", "Hardware", "Up"],
["Ne", "No", "Software", "Up"],
["Midle", "No", "Software", "Up"] ]
# Tạo tên cột
columns = ["Age", "Competition", "Type", "Profit"]
# Chuyển dữ liệu sang dạng số (cần mã hóa)
for i in range(len(data)):
data[i][0] = 0 if data[i][0] == "Old"
else 1 if data[i][0] == "Midle"
else 2 data[i][1] = 0 if data[i][1] == "No"
else 1 data[i][2] = 0 if data[i][2] == "Software"
else 1
# Tách dữ liệu thành features và target (Profit)
X = [row[:-1] for row in data]
y = [row[-1] for row in data]
# Tạo mô hình cây quyết định
clf = DecisionTreeClassifier(criterion="entropy",
random_state=42) clf.fit(X, y)
# Vẽ cây quyết định
tree_rules = export_text(clf,
feature_names=columns[:-1])
print("Cây quyết định:")
print(tree_rules)
# Tìm tập luật suy diễn ra "Profit" từ cây quyết định
def extract_rules(tree, feature_names, target_name):
rules = []
for feature, threshold, op, _, children in tree.tree_:
if feature_names[feature] == target_name:
continue
if children[0] == children[1]:
rules.append((op, feature_names[feature], threshold))
else:
subtree = tree.__class__(tree.tree_, feature_names=feature_names)
subtree.tree_ = tree.tree_.children_left[feature],
tree.tree_.children_right[feature]
rules.extend(extract_rules(subtree, feature_names, target_name))
return rules
target_name = "Profit" rules = extract_rules(clf, columns[:-1], target_name)
# In tập luật
print("\nTập luật suy diễn ra 'Profit':") for rule in rules:
op, feature, threshold = rule print(f"If {feature} {op} {threshold}, then {target_name} is
predicted.")

Bài 4: Lê Thị HưngCho cơ sở dữ liệu gồm các giao dịch như bảng sau:
TID Items Bought
100 a; q; c; d; m;p
200 q; b; c; a; l; m; k
300 b; a;
400 b; c; k; p
500 q; a; c; e; l; p; m; n

Cho ngưỡng hỗ trợ min support = 4.


1. Hãy sử dụng thuật toán Apriori để tìm các tập mục thường xuyên.
2. Từ các tập mục thường xuyên ở trên, hãy tìm các luật kết hợp thỏa độ tin cậy
tối thiểu là 75%
Bảng thống kê về tần suất xuất hiện của từng mục (item) đơn lẻ:
Mục (Item) Tần suất xuất hiện
a 5
b 4
c 4
d 1
e 1
k 2
l 2
m 3
n 1
p 3
q 3
Các tập mục thường xuyên (frequent itemsets):
Sử dụng kết quả từ bước 1, ta sẽ xây dựng các tập mục kết hợp (itemsets) có kích
thước lớn hơn 1 và kiểm tra xem chúng có đủ hỗ trợ hay không. Bắt đầu từ tập mục
kích thước 2 và tăng dần.

Tập mục kích thước 2:


Tập Mục Support
{a, b} 2
{a, c} 3
{a, d} 1
{a, e} 1
{a, k} 1
{a, l} 1
{a, m} 3
{a, n} 1
{a, p} 3
{a, q} 2
{b, c} 4
{b, d} 1
{b, e} 1
{b, k} 2
{b, l} 1
{b, m} 2
{b, p} 1
{b, q} 1
{c, d} 1
{c, e} 1
{c, k} 2
{c, l} 1
{c, m} 2
{c, p} 2
{c, q} 2
{d, e} 0
{d, k} 0
{d, l} 0
{d, m} 1
Tập Mục Support
{d, n} 0
{d, p} 1
{d, q} 1
{e, k} 0
{e, l} 0
{e, m} 1
{e, n} 0
{e, p} 1
{e, q} 1
{k, l} 0
{k, m} 1
{k, n} 0
{k, p} 1
{k, q} 0
{l, m} 1
{l, n} 0
{l, p} 1
{l, q} 0
{m, n} 0
{m, p} 2
{m, q} 2
{n, p} 1
{n, q} 0
{p, q} 2
Tập mục kích thước 3:
Tập Mục Support
{a, b, c} 2
{a, b, m} 1
{a, c, m} 2
{b, c, m} 1
{c, m, p} 1
{c, m, q} 1
Tập mục kích thước 4:
Tập Mục Support
{a, b, c, m} 1
Sử dụng các tập mục thường xuyên ở trên, ta sẽ tạo các luật kết hợp và tính độ tin cậy
của từng luật. Chúng ta chỉ quan tâm đến các luật có độ tin cậy tối thiểu là 75%.
Các luật có độ tin cậy tối thiểu là 75%:
Luật Kết Hợp Độ Tin Cậy
{a} -> {c} 100%
{a} -> {m} 100%
{a} -> {p} 100%
{b} -> {c} 100%
{c} -> {b} 100%
{c} -> {m} 100%
{a} -> {c, m} 100%
{a, c} -> {m} 100%
{a, m} -> {c} 33.33%
{c, m} -> {a} 50%
{a} -> {c, p} 100%
{a, c} -> {p} 66.67%
{a, p} -> {c} 100%
{c} -> {a, p} 50%
{p} -> {a, c} 66.67%
{p} -> {a} 100%
{p} -> {c} 66.67%
{p} -> {m} 66.67%
{q} -> {a} 66.67%
{q} -> {c} 66.67%
{q} -> {m} 66.67%
Đây là danh sách các luật kết hợp có độ tin cậy tối thiểu là 75% dựa trên cơ sở dữ liệu
giao dịch và ngưỡng min support đã cho.

Bài 5:Trần Văn Dũng Cho cơ sở dữ liệu gồm các giao dịch như bảng sau:
TID Items Bought
100 a; d; c; q; m;p
200 d; b; c; a; h; m; k
300 b; a; g
400 b; c; k; p
500 d; a; c; e; h; p; m; g
Cho ngưỡng hỗ trợ min support = 4.
1. Hãy vẽ FP – tree
2. Từ FP – tree trên, hãy khai phá các tập mục thường xuyên.
**Bước 1:** Tạo danh sách các mục và đếm tần suất xuất hiện của mỗi mục trong cơ
sở dữ liệu.

- Mục: a, b, c, d, e, g, h, k, m, p, q
- Tần suất xuất hiện: a(4), b(3), c(4), d(3), e(1), g(2), h(2), k(2), m(3), p(3), q(1)

**Bước 2:** Loại bỏ các mục không đạt đủ ngưỡng hỗ trợ (min support). Các mục
thường xuyên sẽ là: a, b, c, d, h, k, m, p.

**Bước 3:** Tạo FP-Tree từ các giao dịch sau khi loại bỏ các mục không đủ ngưỡng
hỗ trợ.

- Tạo nút gốc (Root).


- Duyệt qua từng giao dịch, thêm các mục thường xuyên vào FP-Tree dưới dạng các
nhánh từ nút gốc. Đồng thời, duyệt và tạo các liên kết giữa các nút để biểu diễn mối
quan hệ giữa các mục.

FP-Tree sẽ có dạng như sau:

```
Root
|
a(4)
|\
b(3) c(4) d(3) h(2) m(3) p(3)
| | | | | | | |
k(2) c(1) p(2) q(1) b(2) a(3) k(1)
| | | | |
d(2) k(1) h(1) m(1) h(1)
| | | | |
h(1) h(1) m(1) p(1) e(1)
```

**Bước 4:** Từ FP-Tree trên, bạn có thể khai phá các tập mục thường xuyên bằng
cách duyệt ngược từ các mục lá (leaf) lên đến gốc cây và tạo các tập mục thường
xuyên từ các đường dẫn ngược.

Các tập mục thường xuyên sẽ bao gồm:

- {a} (Độ hỗ trợ = 4)


- {b} (Độ hỗ trợ = 3)
- {c} (Độ hỗ trợ = 4)
- {d} (Độ hỗ trợ = 3)
- {h} (Độ hỗ trợ = 2)
- {k} (Độ hỗ trợ = 2)
- {m} (Độ hỗ trợ = 3)
- {p} (Độ hỗ trợ = 3)
- {a, b} (Độ hỗ trợ = 2)
- {a, c} (Độ hỗ trợ = 3)
- {a, d} (Độ hỗ trợ = 2)
- {a, h} (Độ hỗ trợ = 1)
- {a, m} (Độ hỗ trợ = 2)
- {a, p} (Độ hỗ trợ = 2)
- {b, c} (Độ hỗ trợ = 2)
- {b, d} (Độ hỗ trợ = 1)
- {b, h} (Độ hỗ trợ = 1)
- {b, k} (Độ hỗ trợ = 1)
- {b, m} (Độ hỗ trợ = 1)
- {b, p} (Độ hỗ trợ = 2)
- {c, d} (Độ hỗ trợ = 2)
- {c, h} (Độ hỗ trợ = 1)
- {c, k} (Độ hỗ trợ = 1)
- {c, m} (Độ hỗ trợ = 1)
- {c, p} (Độ hỗ trợ = 2)
- {d, h} (Độ hỗ trợ = 1)
- {d, k} (Độ hỗ trợ = 1)
- {d, m} (Độ hỗ trợ = 1)
- {d, p} (Độ hỗ trợ = 2)
- {h, k} (Độ hỗ trợ = 1)
- {h, m} (Độ hỗ trợ = 1)
- {h, p} (Độ hỗ trợ = 1)
- {k, m} (Độ hỗ trợ = 1)
- {k, p} (Độ hỗ trợ = 1)
- {m, p} (Độ hỗ trợ = 1)

You might also like