1. Trang chủ
  2. » Giáo Dục - Đào Tạo

XÂY DỰNG mô HÌNH PHÂN lớp với THUẬT TOÁN NAIVE BAYES

26 22 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 604,71 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trí tuệ nhân tạo là một lĩnh vựccủa khoa học và công nghệ nhằm làm cho máy có những khả năng của trí tuệ và tríthông minh của con người, tiêu biểu như biết suy nghĩ và lập luận để giải q

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CUỐI KÌ

XÂY DỰNG MÔ HÌNH PHÂN LỚP VỚI THUẬT

TOÁN NAIVE BAYES

Giảng viên hướng dẫn: Ths BÙI TIẾN ĐỨC Sinh viên thực hiện: TRẦN CAO MINH

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO CUỐI KÌ

XÂY DỰNG MÔ HÌNH PHÂN LỚP VỚI THUẬT

TOÁN NAIVE BAYES

Giảng viên hướng dẫn: Ths BÙI TIẾN ĐỨC Sinh viên thực hiện: TRẦN CAO MINH

Tp.HCM, tháng 09 năm 2022

Trang 4

Trong thời gian thực hiện đồ án cuối kì của môn học để có được một kết quả nộp thầy sẽkhông tránh được những thiếu sót, em mong thầy xem xét và đưa ra những nhận xét,góp ý chân thành để đồ án được hoàn thiện hơn.

Kính chúc thầy nhiều sức khoẻ, thành công trên con đường truyền đạt tri thức của mình

Em cảm ơn thầy!

Trang 5

Lời mở đầu

Trước hết xin nói về chữ 'trí tuệ nhân tạo', vốn được dùng rộng rãi trong cộng đồngCông nghệ thông tin Trí tuệ nhân tạo, tiếng Anh là Artificial Intelligence hay chữ viếttắt được dùng phổ biến là AI, còn có thể hiểu bình dân hơn là 'thông minh nhân tạo', tức

là sự thông minh của máy móc do con người tạo ra, đặc biệt tạo ra cho máy tính, robot,hay các máy móc có các thành phần tính toán điện tử Trí tuệ nhân tạo là một lĩnh vựccủa khoa học và công nghệ nhằm làm cho máy có những khả năng của trí tuệ và tríthông minh của con người, tiêu biểu như biết suy nghĩ và lập luận để giải quyết vấn đề,biết giao tiếp do hiểu ngôn ngữ và tiếng nói, biết học và tự thích nghi, dựa trên các môhình máy học (Machine Learning) và khai phá dữ liệu (Data Mining)

Tập dữ liệu (Dataset) cung cấp 'nhiên liệu' cho các mô hình AI cũng giống như xănghoặc điện cho ô tô Cho dù nhiệm vụ của chúng là tạo văn bản, nhận dạng đối tượng hay

dự đoán giá cổ phiếu của công ty, hệ thống AI đều 'học' bằng cách chọn lọc qua vô số ví

dụ để phân biệt các mẫu trong dữ liệu Ví dụ, một hệ thống thị giác máy tính (computervision) có thể được đào tạo để nhận ra một số vật thể đã được 'học' trước đó,

Dữ liệu chính là một kho tàng tài nguyên khổng lồ của doanh nghiệp Bởi vì có quánhiều dữ liệu nếu như không được sắp xếp phân nhóm sẽ dễ bị mất, tốn kém nhiều thờigian cho việc tìm kiếm hay thực hiện mã hóa Encryption và việc sử dụng sau này

Bên cạnh đó, việc thực hiện phân loại dữ liệu giúp doanh nghiệp dễ dàng quản lý dữ liệutránh việc thất thoát Từ đó tiết kiệm chi phí cho các giải pháp Data Loss Preventiontrong tương lai

Sau đây là những lợi ích của việc phân loại dữ liệu đem lại:

- Xác định được các loại data có giá trị trong tổ chức, doanh nghiệp

- Việc phân loại rõ ràng và cụ thể các dữ liệu sẽ giúp cho việc lựa chọn các giải

Trang 6

- Dữ liệu được phân loại rõ ràng sẽ giúp doanh nghiệp, tổ chức dựa vào đĩ đểthiết lập hệ thống phân quyền truy cập cho các cá nhân, từ đĩ sẽ tạo ra được hiểu quả trongviệc sử dụng dữ liệu.

- Việc tiến hành phân loại thể hiện được sự chuyên nghiệp của các tổ chức.Doanh nghiệp trong việc bảo vệ tài nguyên dữ liệu cĩ giá trị của khách hàng và chính doanhnghiệp

Ta sẽ áp dụng Định lý Bayes cho phép tính xác suất xảy ra của một sự kiện ngẫu nhiên

A khi biết sự kiện liên quan B đã xảy ra Xác suất này được ký hiệu là P(A|B), và đọc là

“xác suất của A nếu cĩ B” Đại lượng này được gọi xác suất cĩ điều kiện hay xác suất hậu nghiệm vì nĩ được rút ra từ giá trị được cho của B hoặc phụ thuộc vào giá trị đĩ

- Dựa trên định lý của Bayes

Giả định: độc lập cĩ điều kiện lớp (class conditional independence)

- Phương pháp phân loại dựa trên xác suất Nạve Bayes tính xác suất cho các yếu tố, sau

đĩ chọn kết quả với xác suất cao nhất

Tuy nhiên, ta cần lưu ý giả định của thuật tốn Naive Bayes là các yếu tố đầu vào

được cho là độc lập với nhau

Trang 7

PHẦN NHẬN XÉT + CHẤM ĐIỂM CỦA GIẢNG VIÊN

Điểm giáo viên hướng dẫn:

Điểm giảng viên chấm vòng 2:

TPHCM, Ngày …… tháng …… năm

Giáo viên chấm vòng 2 Giáo viên hướng dẫn

MỤC LỤC

Trang 8

Lời cảm ơn i

Lời mở đầu ii

PHẦN NHẬN XÉT + CHẤM ĐIỂM CỦA GIẢNG VIÊN iv

MỤC LỤC v

DANH MỤC HÌNH vii

Chương 1 Giới thiệu đề tài 1

1.1 Lý do chọn đề tài 1

1.2 Mơ tả và hướng xây dựng của đề tài 1

1.3 Mơi trường cài đặt 1

Chương 2 Lý thuyết 3

2.1 Định lý Bayes là gì 3

2.1.1 Giải thích các kí hiệu trong cơng thức Bayes 3

2.2 Phân lớp Nạve Bayes 4

2.2.1 Cách để xây dựng mơ hình phân lớp Nạve Bayes 4

2.2.2 Tập dữ liệu mẫu 4

2.2.3 Tính phân lớp của mẫu A 5

Chương 3 Xây dựng thuật tốn phân lớp 7

3.1 Quy trình khai phá tri thức 7

3.1.1 Phân tích mơ hình 7

3.1.2 Giải thích mơ hình 8

Chương 4 Dựa Trên Nạve Bayes Xây Dựng Mơ Hình Machine Learning Bằng Ngơn Ngữ Python 10

4.1 Các thư viện cần thiết 10

4.1.1 Thư viện Pandas 10

4.1.2 Thư viện Scikit-learn 10

4.2 Tiến hành viết lệnh 10

4.3 Các bước để chạy mơ hình Machine Learning trên Google Colaboratory 13

Kết luận 16

Hướng phát triển trong tương lai 16

Tài liệu kham khảo 17

DANH MỤC HÌNH Hình 1 Bảng dữ liệu giả lập 5

Trang 9

Hình 2 Quy trình khai phá tri thức 7

Hình 3 Trực quan bảng dữ liệu sau khi chuyển thành số nguyên 11

Hình 4 Kết quả mà máy học được dựa trên bảng dữ liệu giả lập mà ta đã áp vào 13

Hình 5 Khởi chạy bước 1 13

Hình 6 Khởi chạy bước 2 14

Hình 7 Khởi chạy bước 3 14

Hình 8 Khởi chạy bước 4 14

Hình 9 Khởi chạy bước 5 15

Hình 10 Xem kết quả và đánh giá độ chính xác của model máy học 15

Trang 10

Chương 1 Giới thiệu đề tài

1.1 Lý do chọn đề tài

Nạve Bayes Classification (NBC) là một thuật tốn dựa trên định lý Bayes về lý thuyếtxác suất để đưa ra các dự đốn cũng như phân loại dữ liệu dựa trên các dữ liệu được quan sát và thống kê Nạve Bayes Classification là một trong những thuật tốn được ứng dụng rất nhiều trong các lĩnh vực Machine learning dùng để đưa các dự đốn dựa trên một tập dữ liệu đã được thu thập, độ phúc tạp của thuật tốn thấp, thời gian huấn luyện mơ hình nhỏ, phù hợp với các mơ hình dữ liệu vừa phải Nĩ thuộc vào nhĩm Supervised Machine Learning Algorithms (học cĩ giám sát) vì thế nĩ khá dễ hiểu và độchính xác tương đối cao

1.2 Mơ tả và hướng xây dựng của đề tài

Sử dụng định lý Nạve Bayes để phân lớp và gán nhãn cho dữ liệu từ bộ dữ liệu đã cho trước, bỏ qua các vấn đề về tiền xử lý dữ liệu

- Ta sẽ tách các dịng từ bảng dữ liệu thành hai phần:

+ Test: Dùng để kiểm tra lại kết quả máy học

- Tức là máy sẽ học từ các ví dụ từ và các mẫu dữ liệu đã cĩ sau đĩ sẽ đánh giá lại sai

Trang 11

- Địa chỉ mã nguồn:

https://colab.research.google.com/drive/1h-96ocsY1AYT6B4ynhqMba79ULPen9qS?authuser=3

- Địa chỉ file dữ liệu : dulieu-tieuduong/ main/DataTest.csv

Trang 12

https://raw.githubusercontent.com/CaoMinhh/file-Chương 2 Lý thuyết

2.1 Định lý Bayes là gì

Định lý Bayes cho phép tính xác suất xảy ra của một sự kiện ngẫu nhiên A khi biết sự kiện liên quan B đã xảy ra Xác suất này được ký hiệu là P(A|B), và đọc là "xác suất của A nếu có B" Đại lượng này được gọi là xác suất có điều kiện hay xác suất hậu

nghiệm vì nó được rút ra từ giá trị được cho của B hoặc phụ thuộc vào giá trị đó.

- Theo định lý Bayes, xác suất xảy ra A khi biết B sẽ phụ thuộc vào 3 yếu tố:

+ Xác suất xảy ra A của riêng nó, không quan tâm đến B Ký hiệu là P(A) và đọc là xác suất của A Đây được gọi là xác suất biên duyên hay xác suất tiên nghiệm, nó là

"tiên nghiệm" theo nghĩa rằng nó không quan tâm đến bất kỳ thông tin nào về B

+ Xác suất xảy ra B của riêng nó, không quan tâm đến A Ký hiệu là P(B) và đọc

là "xác suất của B" Đại lượng này còn gọi là hằng số chuẩn hóa (normalising constant), vì

nó luôn giống nhau, không phụ thuộc vào sự kiện A đang muốn biết

+ Xác suất xảy ra B khi biết A xảy ra Ký hiệu là P(B|A) và đọc là "xác suất của

B nếu có A" Đại lượng này gọi là khả năng (likelihood) xảy ra B khi biết A đã xảy ra Chú ýkhông nhầm lẫn giữa khả năng xảy ra B khi biết A và xác suất xảy ra A khi biết B

Khi biết ba đại lượng này, xác suất của A khi biết B cho bởi công thức:

P( A∨B)= P(B∨A)∗P( A)

P(B)

2.1.1 Giải thích các kí hiệu trong công thức Bayes

Từ công thức Bayes trên ta có :

A: Một mẫu (đối tượng), thuộc về một phân lớp B

B: Phân lớp (ví dụ phân lớp là Yes - No, Có – Không, 0 – 1,…)

P(A): Xác suất của giả thuyết C đúng (khi chưa có chứng cứ)

P(B): Xác suất quan sát được chứng cứ B

Trang 13

P(A | B) : Xác suất của giả thuyết A đúng khi cĩ chứng cứ B

P(B | A): Xác suất nhìn thấy chứng cứ B khi biết giả thuyết A đúng

2.2 Phân lớp Nạve Bayes

Dựa trên Định lý Bayes, nhưng đưa ra giả thiết “ngây thơ” rằng mọi thuộc tính độc lập với nhau

Với giả thuyết trên các thuộc tính sẽ hồn tồn độc lập với nhau, nhưng trong thực

tế những thuộc tính sẽ khơng độc lập với nhau

Ví dụ: Trời nắng sẽ ảnh hưởng tới nhiệt độ Tuổi cao sẽ ảnh hưởng đến khả năngghi nhớ bài học,…

2.2.1 Cách để xây dựng mơ hình phân lớp Nạve Bayes

Mẫu số P(B) khơng phụ thuộc vào dữ liệu đầu vào và lớp

A → Khơng nhất thiết phải tính để phân lớp.

Với P(A | B), P(A) và P(B) được tính từ tập dữ liệu

→ Phân lớp của mẫu B sao cho P(A | B) là lớn nhất.

2.2.2 Tập dữ liệu mẫu

- Cho tập dữ liệu mẫu cĩ 4 cột

+ Cột ‘CongTy’ mơ tả về cơng ty làm việc: nhận 4 giá trị

+ Cột ‘CongViec’ mơ tả về vị trí làm việc ở cơng ty đĩ: nhận 3 giá trị

+ Cột ‘BangCap’ mơ tả về bằng cấp khi làm việc ở cơng ty đĩ: nhận 2 giá trị+ Cột ‘LuongTren_20Trieu’ mơ tả về mức khi ở cơng ty đĩ: nhận 2 giá trị

Trang 14

Hình 1 Bảng dữ liệu giả lập

2.2.3 Tính phân lớp của mẫu A

Cho phân lớp giả lập mẫu A=(CongTy = FPT_sof, CongViec = Banhang,

Trang 15

P(Luong20Trieu = Khong) * P( A | Luong20Trieu = Khong) = P(Luong20Trieu =

Khong) * P(CongTy = FPT_sof | Luong20Trieu = Khong) * P(CongViec = Banhang

| Luong20Trieu = Khong) * P(BangCap=Thacsi | LuongT20Trieu = Khong)

- Sau khi quan sát bảng dữ liệu giả lập trên ta thu được trên 23 dịng dữ liệu:

- Tính tốn phân lớp dựa vào định lý Nạve Bayes P(Luong20Trieu = Co) * P(A |

Trang 16

Chương 3 Xây dựng thuật toán phân lớp

3.1 Quy trình khai phá tri thức

- Quá trình xử lý dữ liệu thô/gốc (raw/original data) nhằm cải thiện chất lượng dữ liệu (quality of the data) và do đó cải thiện chất lượng của kết quả khai phá

- Chất lượng dữ liệu (data quality): tính chính xác, tính hiện hành, tính toàn vẹn, tính nhất quán

Hình 2 Quy trình khai phá tri thức

3.1.1 Phân tích mô hình

- Làm sạch dữ liệu (data cleaning/cleansing): loại bỏ nhiễu (Remove noise), hiệu chỉnh những phần dữ liệu không nhất quán (Correct data inconsistencies)

- Tích hợp dữ liệu (Data integration): từ nhiều nguồnkhác nhau vào một kho dữ liệu

- Biến đổi dữ liệu (Data transformation): chuẩn hoá dữ liệu (Data normalization)

- Thu giảm dữ liệu (Data reduction):

Trang 17

+ Thu giảm kích thước dữ liệu (nghĩa là giảm số phần tử) bằng kết hợp dữ liệu (Data Aggregation), gom cụm dữ liệu

+ loại bỏ các đặc điểm dư thừa (redundant features) giảm số chiều/thuộc tính dữliệu

3.1.2 Giải thích mô hình

- Làm sạch dữ liệu:

+ Xử lý dữ liệu bị thiếu (Missing data)

Nguyên nhân: không tồn tại lúc nhập liệu, sự cố,…

Giải pháp: Bỏ qua dòng dữ liệu đó, cập nhật bằng tay, dùng giá trịthay thế (tự động): hằng số toàn cục, trị phổ biến, trung bình (toàncục, cục bộ), trị dự đoán,… Ngăn chặn từ ban đầu: thiết kế tốt CSDL và các thủ tục nhập liệu (các ràng buộc dữ liệu)

+ Nhận diện phần tử biên (Outliers) và giảm thiểu nhiễu (Noisy data)

Nguyên nhân: (công cụ thu thập dữ liệu, lỗi trên đường truyền, giới hạn công nghệ,

Giải pháp: Dựa trên phân bố thống kê, Dựa trên mật độ, Hồi quy, Phân tích cụm,…

+ Xử lý dữ liệu không nhất quán (Inconsistent data)

Nguyên nhân: Không nhất quán trong các qui ước đặt tên hay

mã hóa, Định dạng không nhất quán của các vùng nhập liệu, Thiết bị ghi nhận dữ liệu, …

Giải pháp: Tận dụng siêu dữ liệu, ràng buộc dữ liệu, sự kiểm tracủa nhà phân tích dữ liệu cho việc nhận diện, Điều chỉnh dữ liệu không nhất quán bằng tay,…

- Tích hợp dữ liệu:

Trang 18

+ Vấn đề nhận dạng thực thể (Entity identification problem) Tích hợp lược đồ (Schema integration)

So trùng đối tượng (Object matching)

+ Vấn đề mâu thuẫn giá trị dữ liệu (Data value conflicts)

- Biến đổi dữ liệu

+ Xây dựng thuộc tính/đặc tính (Attribute/Feature construction)

Kết hợp khối dữ liệu (Data cube aggregation)

Chọn một số thuộc tính (Attribute subset selection) Thu giảm chiều (Dimensionality reduction)

Thu giảm lượng (Numerosity reduction) Rời rạc hóa (Discretization)

Tạo phân cấp ý niệm (concept hierarchy generation)

Trang 19

Chương 4 Dựa Trên Nạve Bayes Xây Dựng Mơ Hình

Machine Learning Bằng Ngơn Ngữ Python

- Giả thuyết rằng bộ dữ liệu ta cĩ là dữ liệu chuẩn, khơng cần phải xử lý lại

- Giả sử tên các cột và các giá trị trong bảng dữ liệu là thật và đã được xử lý

4.1 Các thư viện cần thiết

4.1.1 Thư viện Pandas

Là một thư viện Python cung cấp các cấu trúc dữ liệu nhanh, mạnh mẽ, linh hoạt và mang hàm ý Tên thư viện được bắt nguồn từ panel data (bảng dữ liệu) Pandas được thiết kế để làm việc dễ dàng và trực quan với dữ liệu cĩ cấu trúc (dạng bảng, đa chiều, cĩ tiềm năng khơng đồng nhất) và dữ liệu chuỗi thời gian

4.1.2 Thư viện Scikit-learn

Sklearn được thiết kế để xử lý các thư viện số và khoa học của Python như NumPy

và SciPy Các tính năng chính của thư viện Scikit-learning bao gồm thuật tốn phân loại, hồi quy và phân cụm (hỗ trợ máy vectơ, rừng ngẫu nhiên, tăng độ dốc, k-means

và DBSCAN)

4.2 Tiến hành viết lệnh

- Đầu tiên ta gọi thư viện và đọc file csv

# Bước 1: Khởi tạo thư viện và đọc file data CSV

# Gọi thư viện

import pandas as pd

from sklearn.preprocessing import LabelEncoder

# Load file dữ liệu csv

url= 'https://raw.githubusercontent.com/CaoMinhh/file-dulieu-tieuduong/main/

DataTest.csv' df = pd.read_csv ( url )

Trang 20

inputs = df.drop ( 'LuongTren_20Trieu' , axis= 'columns' )

# Lấy cột LuongTren_20Trieu để làm biến phụ thuộc targets = df [ 'LuongTren_20Trieu' ]

- Do dữ liệu từ file csv là kiểu chuỗi nên ta tiến hành dùng hàm LabelEncoder() từ thư viện sklearn để chúng thành số nguyên để máy tính có thể hiểu được

# Bước 2: Conver dữ liệu text sang number

# chuyển các giá trị trong data từ dữ liệu text sang number (do máy tính chỉ xử lý được data có giá trị là số) le_Congty = LabelEncoder ()

le_Congviec = LabelEncoder ()

le_Bangcap = LabelEncoder ()

inputs [ 'Công ty' ] = le_Congty.fit_transform ( inputs [ 'CongTy' ])

inputs [ 'Công việc' ] = le_Congviec.fit_transform ( inputs [ 'CongViec' ])

inputs [ 'Bằng cấp' ] = le_Bangcap.fit_transform ( inputs [ 'BangCap' ])

- Lúc này trong bảng dữ liệu gốc của ta có thêm các cột giá trị vừa chuyển đổi thành số

Hình 3 Trực quan bảng dữ liệu sau khi chuyển thành số nguyên

- Ta tiến hành xoá bỏ cột có các giá trị là kiểu chuỗi bằng drop()

inputs_n = inputs.drop ([ 'CongTy' , 'CongViec' , 'BangCap' ,], axis= 'columns' )

Trang 21

print ( inputs_n )

- Lúc này ta sẽ tách bảng dữ liệu thành 2 phần là train và test

- Ta sẽ lấy ra 70% của bảng dữ liệu để cho máy học và dùng 30% còn lại để kiểm tra độ chính xác

# Bước 3: Tạo model từ cây phân loại là đưa nó vào máy học

# Tạo model và đưa nó vào máy học

from sklearn.model_selection import train_test_split

X_train , X_test , y_train , y_test = train_test_split ( inputs_n , targets , test_size= 0.3 )

from sklearn.naive_bayes import GaussianNB

# Đại diện cho Gaussian Naive Bayes model = GaussianNB ()

# Đưa dữ liệu vào model máy học dựa trên Naive Bayes model.fit ( X_train , y_train )

- Dùng model.core để đánh giá lại mô hình chính xác bao nhiêu phần trăm

# Bước 4: Đánh giá mô hình máy học

# Đánh giá độ chính xác của mô hình doChinhXac = model.score ( X_test , y_test )

# Đếm số dòng dùng để học và kiểm tra sizeHocMay = ( round ( len ( X_train ) / len ( inputs ) , 2 )) sizeKiemTra =

( round ( len ( X_test ) / len ( inputs ) , 2 ))

- Sau đó ta tiến hành in kết quả thu được sau khi chạy model

# Bước 5: Xuất kết quả

print ( 'Từ tập dữ liệu có { len ( inputs )} dòng ta lấy ra { sizeHocMay* 100 } % cho máy học và dùng { sizeKiemT ra* 100 } % để kiểm tra' )

print ( 'Số dòng máy học: { len ( X_train )} \nSố dòng kiểm tra: { len ( X_test )} \n' )

print ( 'Kết quả máy dự đoán ra: \n { y_test [ 0 : 5 ]} \n' )

print ( 'Kết quả thực tế: \n { model.predict ( X_test [ 0 : 5 ])} ' )

print ( 'Độ chính xác của model máy học: { doChinhXac* 100 } % \n' )

Ngày đăng: 04/09/2022, 18:17

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w