Chúng ta không thể nào xây dựng một cỗ máy thông minh để học dữ liệu từ cổ chí kim tới hiện tại.. • Xử lý ảnh Bài toán xử lý ảnh Image Processing giải quyết các vấn đề phân tích thông t
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÀ RỊA - VŨNG TÀU
KHOA K THU T - CÔNG NGH Ỹ Ậ Ệ
BÁO CÁO MÔN HỌ
Tên đề tài:
Giảng viên hướng dẫn : TS Bùi Thị Thu Trang
Sinh viên thực hiện : Nguyễn Văn Sơn - 20030016
Vũng Tàu, tháng 08 năm 2023
Trang 2MỤC LỤC
PHẦN 1 MÁY H C VÀ NG D NG 5Ọ Ứ Ụ1.1 Định nghĩa về máy h c 5ọ1.2 Một số ứng d ng cụ ủa máy h c 5ọPHẦN 2 THU T TOÁN PHÂN LO I VÀ PHÂN TÍCH D LI U 8Ậ Ạ Ữ Ệ2.1 Thu t toán phân lo i 8ậ ạ2.1.1 Thuật toán Logistic Regression 82.1.2 Thuật toán KNN (K-Nearest Neighbors) 82.1.3 Thu t toán Decision Tree 8ậ2.1.4 Thu t toán SVM 8ậ2.2 ng d ng phân lo i 9Ứ ụ ạ2.2.1 Tổng quan d li u 9ữ ệ2.2.2 Phân tích d li u 10ữ ệ2.2.3 Kết lu n 28ậTÀI LI U THAM KH O 29Ệ Ả
Trang 33
DANH M C HÌNH NH Ụ Ả
Hình 1: Dữ li u 9ệ
Hình 2: Kết qu ả sau khi đọc file 11
Hình 3: Thông tin dataset 12
Hình 4: Số lượng giá tr r ng 13ị ỗ Hình 5: Biểu đồ tổng quan dữ liệu 14
Hình 6: Biểu đồ tổng quan dữ liệu 14
Hình 7: Biểu đồ tổng quan dữ liệu 15
Hình 8: Biểu đồ tổng quan dữ liệu 15
Hình 9: Giá trị c a các c t có ki u object 16ủ ộ ể Hình 10:Biểu đồ histogram 18
Hình 11: Biểu đồ histogram 18
Hình 12: Biểu đồ cột 19
Hình 13: Biểu đồ cột nghề nghiệp 20
Hình 14: Cột distance 21
Hình 15: Thông tin các cột sau khi đã xử lý 22
Hình 16: distance 22 Hình 17: Tham s t t nh t cho m i mô hình 27ố ố ấ ỗ Hình 18: Độ chính xác của mỗi mô hình trên tập huấn luy n và kiểm tra 27ệ
Trang 4LỜI M Ở ĐẦU
Công ngh máy hệ ọc đã phát triển một cách đáng kể trong th i gian g n ờ ầđây, mở ra những cánh cửa mới cho các ứng dụng đa dạng và tiềm năng Máy học không ch là mỉ ột lĩnh vực nghiên c u quan tr ng, mà còn tr thành m t công ứ ọ ở ộ
cụ quan tr ng trong vi c x lý và phân tích d li u ọ ệ ử ữ ệ
Máy học được áp d ng r ng rãi trong nhiụ ộ ều lĩnh vực khác nhau, t khoa ừhọc, y tế, tài chính, marketing cho đến xe t lái và robot hự ọc Điều này m r ng ở ộkhả năng của con người trong việc hiểu và xử lý những tập dữ liệu phức tạp và khổng l mồ ột cách nhanh chóng và chính xác hơn
Mục tiêu chính c a bài báo cáo này là gi i thi u v máy h c, các ủ ớ ệ ề ọ ứng d ng ụcủa máy h c và áp d ng các thu t toán máy h c vào viọ ụ ậ ọ ệc x lý và phân lo i d ử ạ ữliệu
Em xin cảm ơn cô Bùi Thị Thu Trang đã giúp đỡ em hoàn thành bài báo cáo này Mặc dù đã cố ắ g ng h t sế ức nhưng không thể tránh kh i nh ng sai sót, ỏ ữ
em r t mong nhấ ận được nh ng ý kiữ ến đóng góp từ cô và các bạn để bài báo cáo hoàn thiện hơn
Em xin chân thành cảm ơn!
Trang 5“Máy học là một lĩnh vực chung liên quan đến việc phát triển các kỹ thuật cho phép máy tính có th t h c t dể ự ọ ừ ữ ệ li u.”
Tiếp t c, cu n sách này gi i thích r ng trong máy h c, vi c hụ ố ả ằ ọ ệ ọc có nghĩa
là tìm hi u và ng d ng các quy lu t ho c mô hình t d li u mà không c n ể ứ ụ ậ ặ ừ ữ ệ ầđược lập trình cụ th Mể ục tiêu c a máy h c là xây d ng các mô hình ho t ủ ọ ự ạđộng tốt trên d li u mữ ệ ới, không được s d ng trong quá trình hu n luy n ban ử ụ ấ ệđầu
1.2 M t s ng d ng c a máy h c ộ ố ứ ụ ủ ọ
Mỗi chúng ta có thể tương tác các ứng dụng của học máy mà không nhận
ra Chúng ta không thể nào xây dựng một cỗ máy thông minh để học dữ liệu
từ cổ chí kim tới hiện tại Tuy nhiên, đã có những ứng dụng thực tế mà machine learning làm rất tốt [2]
• Xử lý ảnh
Bài toán xử lý ảnh (Image Processing) giải quyết các vấn đề phân tích thông tin từ hình ảnh hay thực hiện một số phép biến đổi Một số ví dụ là:
- Gắn thẻ hình ảnh (Image Tagging), giống như Facebook, một thuật toán
tự động phát hiện khuôn mặt của bạn và bạn bè trên những bức ảnh Về cơ bản, thuật toán này học từ những bức ảnh mà bạn tự gắn thẻ cho mình trước
đó
- Nhận dạng ký tự (Optical Character Recognition), là một thuật toán chuyển dữ liệu trên giấy tờ, văn bản thành dữ liệu số hóa Thuật toán phải học cách nhận biết ảnh chụp của một ký tự là ký tự nào
- Ô tô tự lái (Self-driving cars), một phần cơ chế sử dụng ở đây là xử lý ảnh Một thuật toán machine learning giúp phát hiện các mép đường, biển báo hay các chướng ngại vật bằng cách xem xét từng khung hình video từ camera
Trang 6• Phân tích văn bản
Phân tích văn bản (Text analysis) là công việc trích xuất hoặc phân lọi thông tin từ văn bản Các văn bản ở đây có thể là các facebook posts, emails, các đoạn chats, tài liệu, … Một số ví dụ phổ biến là:
- Lọc spam (Spam filtering), là một trong những ứng dụng phân loại văn bản được biết và sử dụng nhiều nhất Ở đây, phân loại văn bản là xác định chủ
đề cho một văn bản Bộ lọc spam sẽ học cách phân loại một email có phải spam không dựa trên nội dung và tiêu đề của email
- Phân tích ngữ nghĩa (Sentiment Analysis), học cách phân loại một ý
kiến là tích cực, trung tính hay tiêu cực dựa trên nội dung văn bản của người viết
- Khai thác thông tin (Information Extraction), từ một văn bản, học cách
để trích xuất các thông tin hữu ích Chẳng hạn như trích xuất địa chỉ, tên người,
từ khóa, …
• Khai phá dữ liệu
Khai phá dữ liệu (Data mining) là quá trình khám phá ra các thông tin có giá trị hoặc đưa ra các dự đoán từ dữ liệu Định nghĩa này có vẻ bao quát, nhưng bạn hãy nghĩ về việc tìm kiếm thông tin hữu ích từ một bảng dữ liệu rất lớn Mỗi bản ghi sẽ là một đối tượng cần phải học, và mỗi cột là một đặc trưng Chúng ta có thể dự đoán giá trị của một cột của bản ghi mới dựa trên các bản ghi đã học Hoặc là phân nhóm các bản ghi của bản Sau đây là những ứng dụng của khai phá dữ liệu:
- Phát hiện bất thường (Anomaly detection), phát hiện các ngoại lệ, ví dụ
như phát hiện gian lận thẻ tín dụng Bạn có thể phát hiện một giao dịch là khả nghi dựa trên các giao dịch thông thường của người dùng đó
- Phát hiện các quy luật (Association rules), ví dụ, trong một siêu thị hay
một trang thương mại điện tử Bạn có thể khám phá ra khách hàng thường mua các món hàng nào cùng nhau Dễ hiểu hơn, khách hàng của bạn khi mua món hàng A thường mua kèm món hàng nào? Các thông tin này rất hữu ích cho việc tiếp thị sản phẩm
- Gom nhóm (Grouping), ví dụ, trong các nền tảng SaaS, người dùng được
phân nhóm theo hành vi hoặc thông tin hồ sơ của họ
Trang 77
- Dự đoán (Predictions), các cột giá trị (của một bản ghi mới trong
database) Ví dụ, bạn có thể dự đoán giá của căn hộ dựa trên các dữ liệu về giá các căn hộ bạn đã có
• Trò chơi điện tử & Robot
Trò chơi điện tử (Video games) và robot (Robotics) là lĩnh vực lớn có sự góp mặt của machine learning Nếu ta có một nhân vật cần di chuyển và tránh các chướng ngại vật trong game Machine learning có thể học và giải quyết công việc này thay bạn Một kỹ thuật phổ biến được áp dụng trong trường hợp này là Học tăng cường (Reinforcement learning) Ở đó, máy sẽ học tăng cường với mục tiêu là giải quyết nhiệm vụ trên Học tăng cường là tiêu cực nếu nó
va phải chướng ngại vật, là tích cực nếu nó chạm tới đích
Một thành tựu gần đây nhất là cỗ máy Alpha Go của Google DeepMind đã đánh bại kỳ thủ cờ vậy số 1 thế giới Trong khi cờ vây là một trò chơi có không gian trạng thái cực kỳ lớn
Thomas H Davenport – học giả nổi tiếng người Mỹ đã viết trên tờ Wall Street: "Con người thường chỉ có thể tạo ra một hoặc hai mô hình tốt mỗi tuần; Machine Learning có thể tạo ra hàng ngàn mô hình mỗi tuần” Câu nói này cho thấy sự quan trọng và phát triển mạnh mẽ của Máy học
Trang 8PHẦN 2 THU T TOÁN PHÂN LO I VÀ PHÂN TÍCH D LI U Ậ Ạ Ữ Ệ
2.1 Thu t toán phân lo i ậ ạ
2.1.1 Thuật toán Logistic Regression
Logistic Regression là 1 thu t toán phân loậ ại được dùng để gán các đối tượng cho 1 t p h p giá tr r i rậ ợ ị ờ ạc (như 0, 1, 2, ) [3] M t ví ộ
dụ điển hình là phân lo i Email, gạ ồm có email công vi c, email gia ệđình, email spam, Giao dịch tr c tuy n có là an toàn hay không an ự ếtoàn, kh i u lành tính hay ác tính Thu t toán Logistic Regression ố ậdùng hàm sigmoid logistic để đưa ra đánh giá theo xác suất Ví dụ: Khối u này 80% là lành tính, giao d ch này 90% là gian l n, ị ậ2.1.2 Thuật toán KNN (K-Nearest Neighbors)
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 [4]ọ Ý 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 ớ ủ ầ ấ
2.1.3 Thu t toán Decision Treeậ
Decision tree là m t mô hình supervised learning, có th ộ ể được
áp d ng vào c hai bài toán classification và regression [5] Mụ ả ỗi m t ộnút trong (internal node) tương ứng với m t biộ ến; đường nối gi a nó ữvới nút con c a nó th hi n m t giá tr c th cho biủ ể ệ ộ ị ụ ể ến đó Mỗi nút lá
đại diện cho giá trị d đoán củự a biến mục tiêu, cho trước các giá tr ịcủa các biến được bi u di n bể ễ ởi đường đi từ nút g c tố ới nút lá đó Kỹ thuật h c máy dùng trong cây quyọ ết định được gọi là h c bọ ằng cây quyết định, hay ch g i v i cái tên ng n g n là cây quyỉ ọ ớ ắ ọ ết định 2.1.4 Thu t toán SVM ậ
SVM là phương pháp phân loại nhị phân [6] Cho m t t p các ộ ậđiểm thu c 2 loộ ại trong môi trường N chi u, SVM c g ng tìm ra N-ề ố ắ
1 m t phặ ẳng để phân tách các điểm đó thành 2 nhóm Ví dụ, cho m t ộtập các điểm thuộc 2 loại như hình bên dưới, SVM sẽ tìm ra m t ộđường thẳng nhằm phân cách các điểm đó thành 2 nhóm sao cho khoảng cách giữa đường thẳng và các điểm xa nhất có th ể
Trang 99
2.2 ng d ng phân lo i Ứ ụ ạ
2.2.1 T ng quan d li u ổ ữ ệ
In Vehicle Coupon Recommendation
Dữ liệu này được thu th p thông qua m t cu c kh o sát trên Amazon ậ ộ ộ ảMechanical Turk Cu c kh o sát mô t các tình hu ng lái xe khác nhau bao g m ộ ả ả ố ồđiểm đến, thời gian hiện tại, thời tiết, hành khách, v.v., sau đó hỏi người đó liệu anh ta có ch p nh n phi u gi m giá n u anh ta là tài x hay không ấ ậ ế ả ế ế
maritalStatus Tình tr ng hôn nhân ạ
has_Children Tình tr ng con cái ạ
Bar Tần suất đến quán bar m i tháng ỗ
CoffeeHouse Tần suất đến quán café m i tháng ỗ
CarryAway Tần su t nhấ ận đồ ăn mang đi mỗi tháng
RestaurantLessThan20 Đến nhà hàng bao nhiêu l n v i chi phí trung bình ầ ớ
cho mỗi người dưới 20 đô la mỗi tháng Restaurant20To50 Đến nhà hàng bao nhiêu l n v i chi phí trung bình cho mỗi người là $20 - $50 m i tháng ầ ớỗ
Trang 10Tên thu c tính ộ Ý nghĩa
temperature Nhiệt độ
toCoupon_GEQ5min khoảng cách lái xe đến nhà hàng/quán bar để sử dụng
phiếu gi m giá lả ớn hơn 5 phút hay không toCoupon_GEQ15min khoảng cách lái xe đến nhà hàng/quán bar để sử dụng phiếu gi m giá lả ớn hơn 15 phút hay không toCoupon_GEQ25min khoảng cách lái xe đến nhà hàng/quán bar để sử dụng phiếu gi m giá lả ớn hơn 25 phút hay không direction_same nhà hàng/quán bar có cùng hướng với điểm đến hi n ệ
tại c a bủ ạn không direction_opp nhà hàng/quán bar có cùng hướng với điểm đến hi n ệ
Import thư viện
from sklearn.model_selection import train_test_split #Dùng để chia dữ liệu thành 2 phần train và test
from sklearn.compose import ColumnTransformer #Dùng để xử lý dữ liệu from sklearn.pipeline import Pipeline #Dùng để xử lý dữ liệu
from sklearn.impute import SimpleImputer #Dùng để xử lý dữ liệu from sklearn.preprocessing import StandardScaler, OneHotEncoder #Dùng
để xử lý dữ liệu
from sklearn.linear_model import LogisticRegression,
LogisticRegressionCV #Dùng để xây dựng mô hình Logistic Regression from sklearn.tree import DecisionTreeClassifier #Dùng để xây dựng mô hình Decision Tree
from sklearn.neighbors import KNeighborsClassifier #Dùng để xây dựng mô hình KNN
from sklearn.svm import LinearSVC, SVC #Dùng để xây dựng mô hình SVM from sklearn.utils.fixes import loguniform #Dùng để xây dựng mô hình from sklearn.model_selection import RandomizedSearchCV #Dùng để xây dựng mô hình
from sklearn import metrics #Dùng để đánh giá mô hình
from sklearn.metrics import accuracy_score #Dùng để đánh giá mô hình
Trang 12Xem thông tin dataset
df.info()
Hình 3: Thông tin dataset
Xử lý d li u r ng và các thu c tính không c n thi t ữ ệ ỗ ộ ầ ế
Như thông tin ở trên, cột car ch có 108 ô có giá tr , chiỉ ị ếm chưa đến 1% dữ liệu,
vì v y chúng ta không th dùng thuậ ể ộc tính này để phân tích nên s ti n hành ẽ ếxóa
df.drop(columns=[ 'car' ], inplace= True )
Tiếp theo, chúng ta dùng hai l nh sau ệ
df.select_dtypes( 'int64' ).nunique()
print(df[ 'toCoupon_GEQ5min' ].unique())
và th y cấ ột toCoupon_GEQ5min chỉ có duy nh t mấ ột giá tr là 1, tị ức là t t c các ấ ảchuyến đi đều có khoảng cách lớn hơn 5 phút, vì vậy chúng ta tiến hành bỏ cột này Đồng th i ph n 2.2.1, chúng ta th y có 2 c t direction_same và ờ ở ầ ấ ộdirection_opp đều có cùng m t thông tin Vì v y chúng ta s b b t m t c t ộ ậ ẽ ỏ ớ ộ ộ
Trang 1313
df.drop(columns=[ 'toCoupon_GEQ5min' ], inplace= True )
df.drop(columns=[ 'direction_opp' ], inplace= True )
Kiểm tra s ố lượng giá tr r ng mị ỗ ở ỗi c t ộ
for ax, col in zip(axes, clean_df.select_dtypes( 'object' ).columns):
sns.countplot(y=col, data=clean_df, ax=ax,
order=clean_df[col].value_counts().index)
for p in ax.patches:
Trang 14ax.annotate(format(p.get_width(), '.0f' ), (p.get_width(), p.get_y() + p.get_height() / ), ha = 2 'center' , va = 'center' , xytext = ( 10 , ), 0
textcoords = 'offset points' )
plt.tight_layout()
plt.show()
Hình 5: Bi ểu đồ ổ t ng quan d li u ữ ệ
Hình 6: Bi ểu đồ ổ t ng quan d li u ữ ệ
Trang 1515
Hình 7: Bi ểu đồ ổ t ng quan d li u ữ ệ
Hình 8: Bi ểu đồ ổ t ng quan d li u ữ ệ
Trang 16Kiểm tra các c t có giá trộ ị không ph i s ả ố
for i in df.select_dtypes( 'object' ).columns:
print(i, df[i].unique())
Hình 9: Giá tr c a các c t có ki u object ị ủ ộ ể
Ở đây chúng ta thấy có một số cột có giá trị khá đặc biệt như income, CoffeHouse…Đây được gọi là các Ordinal Features Ordinal features (đặc trưng thứtự) là m t loộ ại đặc trưng trong xử lý d liữ ệu, nơi các giá trị có th t ứ ự và tương quan đối với nhau T c là, các giá tr cứ ị ủa đặc trưng này có thể đượ ắc s p x p theo mế ột th t c ứ ự ụthể, nhưng không có thông tin về khoảng cách hoặc mức độ khác biệt giữa chúng Chúng ta c n chuy n chúng sang d ng sầ ể ạ ố để ử lý, còn các đặc trưng còn lạ x i chúng ta sẽ x lý sau ử
Trang 17Danh sách các Ordinal Features
frequency_cols = [ 'Restaurant20To50' , 'RestaurantLessThan20' ,
'CarryAway' , 'CoffeeHouse' , 'Bar' ]
Tiến hành ánh x giá trạ ị của các đặc trưng trong danh sách trên sang các giá trị
tương ứng trong các dictionaries
for col in frequency_cols:
clean_df[col] = clean_df[col].map(frequency_map)
clean_df.age = clean_df.age.map(age_map)
clean_df.income = clean_df.income.map(income_map)
Trang 18Vẽ biểu đồ histogram xác nh n các giá tr ậ ị tương ứng đã được ánh x ạ
Trang 1919
Vẽ biểu đồ th hi n m i quan h gi a m t s ể ệ ố ệ ữ ộ ố đặc trưng với vi c có s d ng ệ ử ụ
coupon hay không
fig, axes = plt.subplots( , , figsize=( 3 3 20 , 15 ))
axes = axes.flatten()
for ax, col in zip(axes, [ 'destination' , 'passanger' , 'weather' , 'time' , 'coupon' , 'expiration' , 'gender' , 'maritalStatus' , 'education' ]):
sns.countplot(y=col, hue= 'Y' , data=clean_df, ax=ax)
for p in ax.patches:
ax.annotate(format(p.get_width(), '.0f' ), (p.get_width(), p.get_y() + p.get_height() / ), ha = 2 'center' , va = 'center' , xytext = ( 10 , 0 ), textcoords = 'offset points' )
plt.tight_layout()
plt.show()
Hình 12: Bi ểu đồ ộ c t