You are on page 1of 24

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC CÔNG THƯƠNG TP.HỒ CHÍ MINH

KHOA CÔNG NGHỆ THÔNG TIN

-----o0o----

BÀI THUYẾT TRÌNH HỌC PHẦN:

TRÍ TUỆ NHÂN TẠO

TÊN ĐỀ TÀI:

THUẬT TOÁN K-Nearest Neighbors(K-NN)

GVHD: Trần Đình Toàn


Thành viên:
1. Lê Gia Huy
2. Lê Quốc Huy
3. Hồ Văn Khánh

Thành phố Hồ Chí Minh, tháng 10 năm 2023


MỤC LỤC
Phần I. MỞ ĐẦU......................................................................................................1
Phần II. NỘI DUNG................................................................................................2
I. Tổng quan về bài thuyết trình..........................................................................2
1. Lý do chọn chọn đề tài...................................................................................2
2. Mục đích nghiên cứu.....................................................................................2
II. Thuật toán K-NN.............................................................................................4
1. Giới thiệu về thuật toán.................................................................................4
1.1. Khái niệm thuật toán................................................................................4
1.2. Ưu nhược điểm của thuật toán................................................................4
2. Ứng dụng........................................................................................................5
3. So sánh thuật toán K-NN và Thuật toán khác............................................6
4. Nội dung thuật toán.......................................................................................6
4.1. Ý tưởng của thuật toán.............................................................................6
4.2. Các bước thực hiện..................................................................................7
4.3. 1 số phép đo khoảng các..........................................................................8
4.3.1. Khoảnh cách Euclid (đường chim bay)...............................................8
4.3.2. Khoảnh cách Manhattan.....................................................................9
5. Ví dụ minh họa...............................................................................................9
5.1. Ví dụ 1.......................................................................................................9
5.2. Ví dụ về K-NN nhiễu..............................................................................10
5.3. Ví dụ........................................................................................................11
III. Demo code.....................................................................................................13
Phần III. KẾT LUẬN............................................................................................19
PAGE \* MERGEFORMAT i
Phần IV. TÀI LIỆU THAM KHẢO.....................................................................20

PAGE \* MERGEFORMAT i
BẢNG PHÂN CÔNG CÔNG VIỆC

MSSV HỌ TÊN MỨC ĐỘ HOÀN THÀNH


2001215814 LÊ GIA HUY 100%
2001210421 LÊ QUỐC HUY 100%
2001210728 HỒ VĂN KHÁNH 100%
Phần I. MỞ ĐẦU

Trong thời đại hiện nay, không thể phủ nhận sự thăng hoa của trí tuệ nhân
tạo (AI) đã chuyển đổi toàn diện cả cuộc sống cá nhân và thế giới kinh doanh. Sự
phát triển vượt bậc của AI đã mang lại tiềm năng vô tận cho ứng dụng của nó trong
đời sống hàng ngày và đa dạng các lĩnh vực công nghiệp. Để hiểu sâu hơn về cách
AI vận hành và khả năng đưa ra các quyết định logic có ảnh hưởng sâu rộng, không
thể không xem xét một khía cạnh quan trọng – thuật toán K-Nearest Neighbors(K-
NN). Đây không chỉ là một công cụ, mà là một trụ cột trong lĩnh vực học máy và
logic trong AI, giúp máy tính tư duy và suy luận như con người.

Trong bài báo cáo này, chúng ta sẽ tìm hiểu sâu hơn về vị trí quan trọng của
thuật toán K-NN trong ngành AI, khám phá cách nó hoạt động và tác động của nó
trên cuộc cách mạng trí tuệ nhân tạo đang diễn ra trên khắp thế giới.

PAGE \* MERGEFORMAT 20
Phần II. NỘI DUNG
I. Tổng quan về bài thuyết trình
1. Lý do chọn chọn đề tài

- Thuật toán K-nn (K-nearest neighbors) là một lựa chọn tốt cho đề tài môn
Trí tuệ Nhân tạo vì nó đơn giản nhưng mạnh mẽ. Dưới đây là một số lý do chọn đề
tài này:

+ Hiểu rõ về cơ bản của Machine Learning: K-nn là một thuật toán cơ


bản trong machine learning, giúp bạn hiểu rõ về cách mà các thuật toán này hoạt
động. Nó làm rõ khái niệm về việc dự đoán dựa trên dữ liệu huấn luyện gần nhất.

+ Dễ Hiểu và Triển Khai: Thuật toán này rất dễ hiểu, đặc biệt là cho những
người mới bắt đầu trong lĩnh vực trí tuệ nhân tạo. Bạn có thể dễ dàng thấy cách nó
hoạt động và áp dụng nó trong các bài toán cụ thể.

+ Ứng Dụng Rộng Rãi: K-nn được sử dụng trong nhiều lĩnh vực như nhận
dạng hình ảnh, phân loại văn bản, và nhiều bài toán khác. Bạn có thể tìm hiểu cách
nó áp dụng vào các vấn đề thực tế.

+ Khám Phá và Nghiên Cứu Cải Tiến: Bạn có thể nghiên cứu về các phương
pháp cải tiến của K-nn, ví dụ như việc sử dụng các phương pháp tối ưu hóa để cải
thiện hiệu suất hoặc kết hợp nó với các phương pháp khác.

+ Tích Hợp với Big Data: K-nn có thể được áp dụng vào xử lý big data, đặc
biệt là khi bạn muốn thực hiện các phân loại dựa trên sự tương đồng giữa các điểm
dữ liệu.

2. Mục đích nghiên cứu

PAGE \* MERGEFORMAT 20
-Hiểu Rõ Hơn về Quá Trình Quyết Định: Nghiên cứu về thuật toán K-nn có
thể giúp hiểu rõ hơn về cách quá trình quyết định diễn ra trong mô hình. Điều này
bao gồm cách nó đo lường sự tương đồng giữa các điểm dữ liệu và quyết định dựa
trên các điểm gần nhất.

- Hiệu Suất và Tối Ưu Hóa: Một mục đích quan trọng là nghiên cứu cách cải
thiện hiệu suất của thuật toán K-nn. Có thể xem xét các kỹ thuật tối ưu hóa, giảm
thiểu độ phức tạp tính toán, hoặc xử lý hiệu quả với dữ liệu lớn.

-Ứng Dụng trong Lĩnh Vực Cụ Thể: Mục tiêu có thể tập trung vào cách K-nn
có thể được áp dụng trong các lĩnh vực cụ thể như y tế, tài chính, hình ảnh, hay
ngôn ngữ tự nhiên. Các ứng dụng cụ thể sẽ giúp nâng cao hiểu biết và áp dụng thực
tế của thuật toán.

-Khả Năng Áp Dụng Đa Nhiệm: Nghiên cứu có thể tập trung vào khả năng
của K-nn trong các nhiệm vụ đa nhiệm, tức là làm thế nào nó có thể được sử dụng
để giải quyết nhiều vấn đề cùng một lúc hoặc làm thế nào nó tương tác với các mô
hình khác.

-Tích Hợp với Các Công Nghệ Mới: Mục tiêu nghiên cứu cũng có thể liên
quan đến việc tích hợp thuật toán K-nn với các công nghệ mới như học máy tăng
cường, học máy dựa trên biểu diễn, hoặc các kỹ thuật khác đang phát triển.

-Đối Mặt với Thách Thức Dữ Liệu: Một mục đích khác có thể là nghiên cứu
làm thế nào thuật toán K-nn đối mặt với thách thức từ dữ liệu không đồng đều,
nhiễu, hoặc thiếu sót.

=>> Nói chung, mục đích nghiên cứu của thuật toán K-nn trong trí tuệ nhân
tạo là cải thiện hiểu biết, hiệu suất và ứng dụng thực tế của nó trong các lĩnh vực
khác nhau.

PAGE \* MERGEFORMAT 20
II. Thuật toán K-NN
1. Giới thiệu về thuật toán
1.1. Khái niệm thuật toán

-KNN (K-Nearest Neighbors) là một trong những thuật toán học có giám sát
đơn giản nhất được sử dụng nhiều trong khai phá dữ liệu và học máy. Ý tưởng của
thuật toán này là nó không học một điều gì từ tập dữ liệu học (nên KNN được xếp
vào loại lazy learning), mọi tính toán được thực hiện khi nó cần dự đoán nhãn của
dữ liệu mới.

-Lớp (nhãn) của một đối tượng dữ liệu mới có thể dự đoán từ các lớp (nhãn)
của k hàng xóm gần nó nhất.

Có một vài khái niệm tương ứng người-máy như sau:

in Machine
Ngôn ngữ người Ngôn ngữ Máy Học
Learning
Câu hỏi Điểm dữ liệu Data point
Đáp án Đầu ra, nhãn Output, Label
Ôn thi Huấn luyện Training
Tập tài liệu mang vào phòng thi Tập dữ liệu tập huấn Training set
Đề thi Tập dữ liểu kiểm thử Test set
Câu hỏi trong dề thi Dữ liệu kiểm thử Test data point
Câu hỏi có đáp án sai Nhiễu Noise, Outlier
Câu hỏi gần giống Điểm dữ liệu gần nhất Nearest Neighbor
1.2. Ưu nhược điểm của thuật toán
Ưu điểm Nhược điểm
Đơn giản và dễ triển khai: Thuật toán Yếu tố tính toán: Một trong
KNN đơn giản và dễ hiểu, không yêu những hạn chế của KNN là yếu tố
cầu quá nhiều trọng số hay tham số phức tính toán. Với mỗi điểm dữ liệu
PAGE \* MERGEFORMAT 20
tạp. Điều này làm cho việc triển khai mới cần phân loại, thuật toán phải
thuật toán trở nên dễ dàng và nhanh tính toán khoảng cách đến tất cả
chóng. các điểm dữ liệu huấn luyện đã
biết. Điều này đòi hỏi một lượng
tính toán đáng kể, đặc biệt là với
tập dữ liệu lớn.
Linh hoạt trong việc xử lý dữ liệu: Nhạy cảm với dữ liệu nhiễu:
KNN có khả năng phân loại dữ liệu với KNN có thể nhạy cảm với dữ liệu
nhiều đặc trưng và nhãn khác nhau. Nó nhiễu và các điểm dữ liệu outlier.
không giới hạn bởi các giả định về phân Điều này có thể ảnh hưởng đến độ
phối của dữ liệu và có thể áp dụng cho chính xác của thuật toán, vì nó có
nhiều loại bài toán khác nhau. thể gây ra các dự đoán sai lệch.
Không cần quá trình huấn luyện phức Lựa chọn K và phương pháp
tạp: KNN không yêu cầu quá trình huấn tính khoảng cách: Độ chính xác
luyện phức tạp như các thuật toán học của thuật toán KNN phụ thuộc vào
máy khác. Thay vào đó, nó sử dụng các giá trị của K (số lượng điểm gần
điểm dữ liệu huấn luyện đã biết để phân nhất) và phương pháp tính khoảng
loại điểm dữ liệu mới. cách giữa các điểm dữ liệu. Lựa
chọn K và phương pháp tính
khoảng cách phù hợp là quan trọng
để đạt được kết quả tốt.
Dễ dàng mở rộng: KNN có thể được
mở rộng để xử lý dữ liệu lớn và đa chiều
bằng cách sử dụng các cấu trúc dữ liệu
như cây KD-Tree hoặc cấu trúc dữ liệu
băm. Điều này giúp cải thiện hiệu suất
tính toán của thuật toán.

2. Ứng dụng

KNN là một mô hình đơn giản và trực quan nhưng vẫn có hiệu quả cao vì nó
không tham số; mô hình không đưa ra giả định nào về việc phân phối dữ liệu. Hơn
nữa, nó có thể được sử dụng trực tiếp để phân loại đa lớp.

PAGE \* MERGEFORMAT 20
Thuật toán KNN có nhiều ứng dụng trong ngành đầu tư, bao gồm dự đoán
phá sản, dự đoán giá cổ phiếu, phân bổ xếp hạng tín dụng trái phiếu doanh nghiệp,
tạo ra chỉ số vốn và trái phiếu tùy chỉnh.

3. So sánh thuật toán K-NN và Thuật toán khác

-K-nn vs. Học máy tăng cường (Reinforcement Learning):

+K-nn: Dùng cho bài toán phân loại và dự đoán dựa trên sự tương đồng với
các điểm dữ liệu lân cận.

+Reinforcement Learning: Chủ yếu dùng trong bài toán quyết định chuỗi
hành động để tối ưu hóa một hàm thưởng.

-K-nn vs. Mạng Nơ-ron (Neural Networks):

+K-nn: Dễ hiểu, không yêu cầu nhiều tham số, thích hợp cho dữ liệu có cấu
trúc đơn giản.

+Neural Networks: Mạnh mẽ với khả năng học đặc trưng phức tạp, phù hợp
cho nhiều loại dữ liệu, đặc biệt là hình ảnh, văn bản.

-K-nn vs. Xử lý Ngôn Ngữ Tự Nhiên (Natural Language Processing - NLP):

+K-nn: Có thể sử dụng cho phân loại văn bản đơn giản dựa trên sự tương
đồng.

+NLP: Sử dụng các mô hình như Transformer để hiểu và tạo ra ngôn ngữ tự
nhiên, phức tạp hơn so với việc so sánh dựa trên sự tương đồng.

4. Nội dung thuật toán

PAGE \* MERGEFORMAT 20
4.1. Ý tưởng của thuật toán

Thuật toán KNN cho rằng những dữ liệu tương tự nhau sẽ tồn tại gần
nhau trong một không gian, từ đó công việc của chúng ta là sẽ tìm k điểm gần với
dữ liệu cần kiểm tra nhất. Việc tìm khoảng cách giữa 2 điểm củng có nhiều công
thức có thể sử dụng, tùy trường hợp mà chúng ta lựa chọn cho phù hợp

4.2. Các bước thực hiện

Phương pháp K-Nearest Neighbors (K-NN) là một thuật toán học máy không
parametric, tức là nó không giả định bất kỳ mô hình hay phân phối cụ thể nào về dữ
liệu. Thay vào đó, nó dựa vào việc so sánh và lựa chọn các điểm dữ liệu gần nhất
để thực hiện phân loại hoặc dự đoán.

Dưới đây là các bước cơ bản để triển khai thuật toán K-NN:

Chuẩn bị dữ liệu huấn luyện: Thuật toán K-NN yêu cầu một tập dữ liệu huấn
luyện có nhãn, trong đó mỗi điểm dữ liệu đã được gán nhãn. Nếu bạn đang làm
việc trên bài toán phân loại, nhãn sẽ là các nhãn lớp (class labels). Nếu bạn đang
làm việc trên bài toán dự đoán, nhãn có thể là các giá trị số (ví dụ: dự đoán giá trị
của một thuộc tính).

Xác định số hàng xóm (K): K là một số nguyên dương được xác định trước,
thường là một số lẻ. Giá trị của K quyết định số lượng hàng xóm sẽ được lựa chọn
để thực hiện phân loại hoặc dự đoán cho một điểm dữ liệu mới.

Đo độ tương đồng: Để xác định các điểm dữ liệu gần nhất, chúng ta cần đo
độ tương đồng (hoặc khoảng cách) giữa các điểm dữ liệu trong tập huấn luyện và
điểm dữ liệu mới. Khoảng cách Euclide là một phương pháp phổ biến để tính toán

PAGE \* MERGEFORMAT 20
độ tương đồng, nhưng có thể sử dụng các phương pháp đo khác như khoảng cách
Manhattan, khoảng cách Cosine, hoặc hàm kernel.

Lựa chọn hàng xóm: Dựa trên độ tương đồng tính toán, chúng ta chọn K
điểm dữ liệu gần nhất với điểm dữ liệu mới. Các điểm dữ liệu này được xem là
"hàng xóm" trong thuật ngữ K-NN.

Phân loại hoặc dự đoán: Cuối cùng, chúng ta sử dụng nhãn của các hàng
xóm để phân loại hoặc dự đoán cho điểm dữ liệu mới. Đối với bài toán phân loại,
chúng ta thực hiện đa số phiếu bầu (voting) để xác định nhãn cuối cùng dựa trên
nhãn của K hàng xóm. Đối với bài toán dự đoán, chúng ta có thể tính trung bình giá
trị của các hàng xóm hoặc sử dụng các phương pháp khác tùy thuộc vào bài toán cụ
thể.

Điều quan trọng khi triển khai thuật toán K-NN là lựa chọn đúng giá trị K và
phương pháp đo độ tương đồng phù hợp với bài toán. Ngoài ra, việc chuẩn bị và
tiền xử lý dữ liệu cũng có thể ảnh hưởng đáng kể đến kết quả của thuật toán.

Bước 1: Xác định tham số K= số láng giềng gần nhất.


Bước 2: Tính khoảng cách đối tượng cần phân lớp với tất cả các đối tượng trong
training data.
Bước 3: Sắp xếp khoảng cách theo thứ tự tăng dần và xác định K láng giềng gần
nhất với đối tượng cần phân lớp
Bước 4: Lấy tất cả các lớp của K láng giềng gần nhất.
Bước 5: Dựa vào phần lớn lớp của K để xác định lớp cho đối tượng cần phân lớp.

4.3. 1 số phép đo khoảng các


4.3.1. Khoảnh cách Euclid (đường chim bay)

PAGE \* MERGEFORMAT 20
Khoảng cách Euclid (Euclidean distance) là việc chúng ta tìm khoảng cách
giữa hai điểm trong không gian, ví dụ cho hai điểm P1(x1,y1) và P2(x2,y2) thì
khoảng cách Euclid sẽ được tính theo công thức:

d=√(x 2−x 1 )2 +( y 2− y 1 )2

4.3.2. Khoảnh cách Manhattan

Khoảng cách Manhattan (Manhattan distance) còn được gọi là khoảng cách
L1 hay khoảng cách trong thành phố, là một dạng khoảng cách giữa hai điểm
trong không gian Euclid với hệ tọa độ Descartes. Đại lượng này được tính bằng
tổng chiều dài của hình chiếu của đường thẳng nối hai điểm này trong hệ trục tọa
độ Descartes.

Khoảng cách Manhattan giữa hai điểm: P1 có tọa độ (x1,y1) và P2 có tọa độ


(x2,y2) là :

d=|x 1−x 2|+| y 1− y 2|

5. Ví dụ minh họa
5.1. Ví dụ 1

PAGE \* MERGEFORMAT 20
Giả sử bài toán được đặt ra: mình mới quen một người bạn, tuy nhiên mình
là fan của Us-Uk vậy nên mình cần biết người bạn này có phải là fan của K-Pop
hay không. Qua thời gian tìm hiểu mình đã thu thập được một số dữ liệu và đã biểu
hiện dưới dạng hình vẽ trên.

Ta dễ dàng nhìn thấy có hai loại: hình vuông màu xanh biểu diễn cho những
người là fan của K-pop, tam giác màu đỏ biểu diễn cho những người không là fan
của K-pop, hình tròn màu xanh là người bạn mình muốn biết có phải là fan K-pop
hay không, khoảng cách giữa chấm tròn và các điểm còn lại biểu diễn độ thân thiết
của bạn đó với những người bạn.

Phương pháp đơn giản nhất để kiểm tra xem bạn đó chơi thân với người bạn
nào nhất, tức là tìm xem điểm gần chấm xanh thuộc class nào (hình vuông hay tam
giác). Từ hình trên ta dễ dàng nhận thấy điểm gần chấm xanh nhất là hình tam giác
màu đỏ, do đó nó sẽ được phân vào lớp tam giác màu đỏ.

Có một vấn đề trong phương pháp trên, xung quanh cấm xanh xuất hiện rất
nhiều hình vuông màu xanh nên việc xét điểm gần nhất là chưa khả thi. Vì vậy, ta
sẽ xét k điểm gần nhất. Giả sử, ta lấy K=3, dựa theo hình trên ta dễ dàng nhận ra có
hai
hình tam giác đỏ và một hình vuông xanh có khoảng cách gần chấm xanh nhất, do
đó chấm xanh được phân vào lớp tam giác đỏ. Lấy K=7, ta có năm hình vuông
xanh và hai hình tam giác đỏ, lúc này chấm xanh được xếp vào lớp hình vuông
xanh. Trường hợp lấy K=4, ta nhận thấy sẽ có hai hình vuông xanh và hai hình tam
giác đỏ, đây là trường hợp có điểm bằng nhau, với trường hợp này KNN sẽ xử lý
bằng cách so sánh tổng khoảng cách của các hình gần nhất với điểm ta đang xét.
PAGE \* MERGEFORMAT 20
Do xuất hiện trường hợp có điểm bằng nhau, vì vậy người ta thường chọn k
là số lẻ. Đó cũng là ý tưởng của KNN.

5.2. Ví dụ về K-NN nhiễu

Vidu 1

Hình trên là bài toán phân lớp với ba lớp: đỏ, lam, lục. Mỗi điểm dữ
liệu mới sẽ được gán nhãn theo màu của điểm đó mà nó thuộc về. Trong hình này,
chú ý vùng khoanh tròn màu vàng, ta nhận thấy rằng điểm màu lục nằm giữa hai
vùng lớn với nhiều dữ liệu đỏ và lam, điểm này rất có thể là nhiễu dẫn đến việc dữ
liệu test nếu rơi vào vùng này sẽ có nhiều khả năng cho kết quả sai lệch.

5.3. Ví dụ

PAGE \* MERGEFORMAT 20
Giả sử ta có tậ p dữ liệu D có gắ n nhãn gồ m 15 điểm như trên ả nh.

Bước 1.Điểm cần dự đoán nhãn A(3,9)

Bước 2.Ta tính khoảng cách từ điểm A đến các điểm dữ liệu trong D bằng
công thức Euclidian.

Bước 3.Ta chọn K= 5, và tìm ra 5 điểm có khoảng cách gần với điểm A nhất.

Bước 4.Trong 5 điểm ta thấy có 4 điểm mang nhãn (+) và 1 điểm mang nhãn
(-).

Bước 5.Vậy ta có thể đưa ra kết luận là điểm A cần dự đoán mang nhãn (+).

PAGE \* MERGEFORMAT 20
III. Demo code

Định nghĩa 1 cấu trúc mô tả 1 điểm và tọa độ của điểm đó và khoảng cách từ
cái điểm cần tìm đến điểm đó

Khai báo khởi tạo danh sách các phần tử


PAGE \* MERGEFORMAT 20
PAGE \* MERGEFORMAT 20
PAGE \* MERGEFORMAT 20
Khai báo tọa độ của giá trị cần tìm

PAGE \* MERGEFORMAT 20
Hàm xác định điểm cần tìm thuộc lớp 0 hay lớp 1

Kết quả tính khoảng cách từ điểm cần tìm tới các điểm khác tăng dần

PAGE \* MERGEFORMAT 20
Trong các điểm K gần điểm cần tìm nhất các điểm thuộc lớp nào nhiều hơn
thì điểm cần tìm cũng thuộc lớp đó

Kết quả điểm cần tìm thuộc lớp

PAGE \* MERGEFORMAT 20
Phần III. KẾT LUẬN

Trong bài thuyết trình này, chúng em đã giới thiệu về khái niệm, cú pháp và
ngữ nghĩa của Thuật toán K-NN, một phương pháp suy luận quan trọng trong trí
tuệ nhân tạo. Chúng em cũng đã minh hoạ cách áp dụng thuật toán K-NN để chứng
minh các định lý trong logic mệnh đề và logic vị từ cấp một. Ngoài ra, chúng tôi
cũng đã chỉ ra một số ưu điểm và nhược điểm của thuật toán K-NN so với các
phương pháp suy luận khác.

Thuật toán K-NN là một công cụ mạnh mẽ để biểu diễn và lập luận với các
tri thức logic. Tuy nhiên, thuật toán K-NN cũng gặp một số khó khăn khi xử lý các
tri thức phức tạp, không chắc chắn hoặc mơ hồ. Do đó, các nghiên cứu về cải tiến
và mở rộng thuật toán K-NN vẫn đang được tiếp tục trong lĩnh vực trí tuệ nhân tạo.
Chúng tôi hy vọng bài thuyết trình này sẽ giúp các bạn có cái nhìn tổng quan và sâu
sắc hơn về K-NN và vai trò của nó trong trí tuệ nhân tạo.

PAGE \* MERGEFORMAT 20
Phần IV. TÀI LIỆU THAM KHẢO
[1] https://codelearn.io/sharing/thuat-toan-k-nearest-neighbors-knn

[2] Bạch Hưng Khang, Hoàng Kiếm. Trí tuệ nhân tạo - Các phương pháp và ứng
dụng. NXB Khoa học Kỹ thuật, 1989.
[3]https://www.slideshare.net/trongthuy3/luan-van-nghien-cuu-thuat-toan-knearest-
neighbor-haym-9d
[4]https://github.com/sonnhfit/machine_learning_tutorial/blob/master/KNN/
knn_turorial.cpp

PAGE \* MERGEFORMAT 20

You might also like