Tải bản đầy đủ (.pdf) (21 trang)

báo cáo bài tập lớn nhập môn học máy và khai phá dữ liệu đề tài dự đoán giá cầu thủ bóng đá

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.4 MB, 21 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ÐẠI HỌNỘI</b>

<b>BÁO CÁO BÀI TẬP LỚN</b>

<b>NHẬP MÔN HỌC MÁY VÀ KHAI PHÁ DỮ LIỆU</b>

<b>Đề tài: Dự đốn giá cầu thủ bóng đá</b>

Nhóm sinh viên thực hiện: Nguyễn Hoàng Hải –Nguyễn Cao Bảo Hiếu –Nguyễn Đức Anh –Nguyễn Gia Khánh –

<i><b>Hà nội, tháng </b></i>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

MỤC LỤC

<b><small> MÔ TẢ ĐỀ TÀI</small></b>

<b><small> CHI TIẾT PHƯƠNG PHÁP HỌC MÁY ĐƯỢC SỬ DỤNG</small></b>

<i><small>Thuật toán Random Forest</small></i>

<i><small>Các bước hoạt động của mơ hình Random Forest phân lớp dự đốn giá cầu thủ bóng đá:</small></i>

<i><b>Mơ hình mạng Neuron nhân tạo</b></i>

<i><small>Định nghĩa mạng nơron nhân tạoCấu trúc hoạt động của 1 nơMơ hình mạng nơron của project</small></i>

<b><small> TIỀN XỬ LÝ DỮ LIỆU</small></b>

<b><small> ĐÁNH GIÁ HIỆU NĂNG TỪNG MƠ HÌNH</small></b>

<small> Biểu đồ phân phối lỗi dự đốn và biểu đồ phân tán lỗi dự đoán So sánh tập dữ liệu test và tập giá trị dự đốn</small>

<i><b>mạng Neuron nhân tạo</b></i>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>MƠ TẢ ĐỀ TÀI</b>

Hiện nay, machine learning là một lĩnh vực của trí tuệ nhân tạo được xem là một trong những xu hướng công nghệ đang phát triển rất nhanh trong thời gian gần đây. Nó liên quan đến việc sử dụng các thuật tốn và mơ hình để cho máy tính "học" từ dữ liệu và cải thiện hiệu suất của chúng theo thời gian. Với sự phát triển của internet, cơng nghệ điện tốn đám mây và các thiết bị thông minh, machine learning đã trở thành một công cụ quan trọng cho nhiều lĩnh vực, từ kinh doanh đến y tế và khoa học. Có thể trong tương lai gần, chúng ta có thể chứng kiến những mơ hình ngày càng tiên tiến, phức tạp hơn, có thể giúp đỡ con người nhiều khía cạnh trong cuộc sống.

Đề tài báo cáo của chúng em sẽ liên quan đến bóng đá, một mơn thể thao nổi tiếng, là một món ăn tinh thần đặc sắc không chỉ của người Việt mà còn của cả thế giới. Chúng em muốn áp dụng kiến thức và cơng sức của mình để giúp môn thể thao vua phát triển hơn. Ở đây chúng em sẽ dựa trên chỉ số từng hạng mục của cầu thủ, từ đó sẽ ước lượng giá trị chính xác của cầu thủ trên thị trường chuyển nhượng. Nó có thể

úp các tuyển trạch viên định giá cũng như đưa ra quyết định chính xác cho từng vụ chuyển nhượng.

<b>CHI TIẾT PHƯƠNG PHÁP HỌC MÁY ĐƯỢC SỬ DỤNG</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

Random Forest là một quần thể của nhiều cây quyết định giúp giảm thiểu vấn đề đào tạo lại và cải thiện độ chính xác so với cây đơn. Dự báo thu được bằng cách tổng hợp phản hồi của nhiều cây. Đào tạo cây xảy ra độc lập với nhau (trên các tập hợp con khác nhau) không chỉ giải quyết vấn đề xây dựng những cây giống hệt nhau trên cùng một tập dữ liệu mà còn rất thuận tiện cho việc sử dụng hệ thống máy tính phân tán. Random Forest là mở rộng của Bagging và Features ngẫu nhiên để tạo ra một rừng cây quyết định không tương quan với nhau. Thuậ rest, trong trường hợp tập dữ liệu bao gồm 13701 cầu thủ, được minh họa như sau:

𝐷 = {𝐷<small>𝑖</small>} <i>tập dữ liệu huấn luyện, i chạy từ 1 đến 13701, N: nút.Output: rừng ngẫu nhiên.</i>

<i>Lấy ngẫu nhiên mẫu dữ liệu </i>𝐷<small>𝑖</small><i>với lặp lại từ tập dữ liệu D;Tạo nút </i>𝑁<small>𝑖</small><i>, chứa trong</i> 𝐷<small>𝑖</small>

<i>Khởi tạo cây BuildTree (</i>𝑁<small>𝑖</small>

<i>if N chứa các trường hợp của chỉ một lớp then return elseChọn ngẫu nhiên a% của đặc trưng có thể phân tách trên NChọn đặc trưng F với lượng thông tin thu được cao nhất để táchTạo f nút con của N,</i>𝑁<small>1</small><i>,…𝑁</i><small>𝑓</small><i>, trong đó F có f giá trị có thể nhận </i>𝐹<small>1</small><i>,…,𝐹</i><sub>𝑓</sub>

<i>Đặt nội dung </i>𝑁<small>𝑖</small><i>đến </i>𝐷<small>𝑖</small><i>, ở đó </i>𝑁<small>𝑖</small> <i>là tất cả các trường hợp trong N phù hợp với </i>𝐹<small>𝑖</small>

<i>Gọi BuildTree (</i>𝑁<small>𝑖</small>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

Bootstrap là một phương pháp thống kê được giới thiệu bởi Bradley Efron vào năm 1979. Phương pháp Bootstrap dùng để ước lượng lỗi chuẩn (standard errors), độ lệch (bias) và tính tốn khoảng tin cậy (confidence interval) cho các tham số.

Một mẫu bootstrap là một mẫu ngẫu nhiên được tạo ra với sự thay thế. Các bướctạo mẫu bootstrap:

Chọn ngẫu nhiên một quan sát từ tập dữ liệu ban đầu.Biểu diễn nó ra.

Đặt nó trở lại (tức là bất kì quan sát nào cũng có thể đã chọn nhiều hơn 1 lần).Lặp lại bước 1 3 N lần; N là số quan sát trong mẫu ban đầu. Kết quả cho một mẫu bootstrap với N quan sát.

Năm 1996, Leo Breiman đã giới thiệu thuật toán Bagging với ba bước cơ bản:Bootstrapping: bagging sử dụng kỹ thuật lấy mẫu bootstrapping để tạo ra các mẫu đa dạng, phương pháp lấy mẫu này tạo ra các tập con khác nhau của tập dữ liệu huấn luyện bằng cách chọn ngẫu nhiên các điểm dữ liệu và có lặp lại.

Parallel training: các mẫu bootstrap sau khi tạo ra được đào tạo độc lập và song song với nhau.

đối với bài tốn phân loại , lớp có đa số phiếu cao nhất được chấp nhận hay biểu quyết theo đa số.

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

Học theo phương pháp Ensemble learning (học cùng nhau) là tổng hợp kết quả dự đoán của nhiều mơ hình thành mơ hình cuối cùng giúp nâng cao tính tổng qt của mơ hình máy học. Mơ hình học cùng nhau hiệu quả nhờ sự đa dạng và tính ngẫu nhiên. Mỗi mơ hình trong mơ hình học cùng nhau có khả năng dự đốn khác nhau nên việc kết hợp lại một cách hợp lý sẽ hiệu quả hơn một mơ hình độc lập. Các mơ hình trong mhọc cùng nhau càng độc lập thì độ chính xác của mơ hình tổng càng tốt.

<i><b>ủ bóng đá:</b></i>

Chọn ngẫu nhiên từ D, một dữ liệu (sample) từ tập dữ liệu huấn luyện với kĩ thuật và tiếp tục tạo mẫu dữ liệu sample để tạo ra đủ dữ liệu tương ứng với 13701 cầu thủ. Như vậy, ta có thể tóm tắt theo 4 bước sau đây:

Bước 1: Chọn các mẫu ngẫu nhiên từ tập dữ liệ

Bước 2: Thiết lập cây quyết định cho từng mẫu và nhận kết quả dự đoán từ mỗi cây quyết định.

Bước 3: Bỏ phiếu theo số đông cho mỗi kết quả dự đoán.Bước 4: Chọn kết quả dự đoán nhiều nhất là dự đốn cuối cùng.

<i><b>. Mơ hình Random forest dự báo bằng ngôn ngữ Python</b></i>

# 1. Thư viện

<small>import numpy as np import pandas aspd</small>

<small>from tensorflow.keras import layers from tensorflow.keras.models import Sequential from tensorflow.keras.regularizers import l2from tensorflow.keras.optimizers import Adam from tensorflow.keras.metrics import MeanSquaredError, RootMeanSquaredError, MeanAbsoluteError, MeanAbsolutePercentageError </small>

<small>from tensorflow.keras.callbacks import EarlyStopping </small>

<small>from sklearn.preprocessing import StandardScaler from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import train_test_split </small>

<small>from sklearn.metrics import mean_squared_error, mean_absolute_error, </small>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<small>import matplotlib.pyplot plt asfrom matplotlib.gridspec import GridSpec </small>

# 2. load dữ liệu

<small>file_id = '1lTE1tgaG6U7LPQVP7KP6zMsBlXKhan7z' url_file = f' player_data = pd.read_csv(url_file) </small>

. Khởi tạo chỉ số các cầu thủ:

<small>player_stat = player_data.iloc[:, 2:].astype(float) </small>

. Khởi tạo mơ hình Random

<small>rf = RandomForestRegressor(n_estimators=200) rf.fit(x_train_scaled, y_train_scaled) </small>

<b>Khó khăn gặp phải với Random Forest:</b>

<i><b>Dữ liệu thiếu: Random Forest Regression có thể khơng hoạt động tốt khi dữ liệu </b></i>

đầu vào thiếu hoặc có các giá trị bị khuyết. Điều này có thể dẫn đến việc dự đốn khơng chính xác vì mơ hình khơng có đủ thơng tin để đưa ra dự đốn chính xác. Nhóm em đã bố sung các dữ liệu thiếu để mơ hình hoạt động.

<i><b>Điều chỉnh tham số: Random Forest Regression có nhiều tham số cần được đị</b></i>

cấu hình để đạt được kết quả tốt nhất. Việc điều chỉnh các tham số này có thể làm cho q trình huấn luyện trở nên phức tạp, vậy nên nhóm đã dành nhiều thời gian để sửa, bổ sung để mơ hình tối ưu nhất có thể.

<i><b>Định nghĩa ạng nơron nhân tạ</b></i>

Mạng nơron nhân tạo, Artificial Neural Network (ANN) gọi tắt là mạng nơron, neural network, là một mơ hình xử lý thơng tin phỏng theo cách thức xử lý thông tin của các hệ nơron sinh học. Nó được tạo lên từ một số lượng lớn các phần tử (gọi là phần tử xử lý hay nơron) kết nối với nhau thông qua các liên kết (gọi là trọng số liên kết) làm

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

việc như một thể thống nhất để giải quyết một vấn đề cụ thể nào đó.

Một mạng nơron nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu, n loại dữ liệu, …) thơng qua một q trình học từ tập các mẫu huấn luyện. Về bản chất học chính là q trình hiệu chỉnh trọng số liên kết giữa các nơron

• Các tín hiệu đầu vào (input signals) của nơ Mỗi tín hiệu đầu gắn với một trọng số wi

• Trọng số điều chỉnh (bias) w (với x

• Đầu vào tổng thể (Net input) là một hàm tích hợp của các tín hiệu đầu vào –• Hàm tác động/truyền (Activation/transfer function) tính giá trị đầu ra của nơ

• Giá trị đầu ra (Output) của nơron: Out=f(Net(w,x))

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<i>Hàm tác độ</i> 𝑂𝑢𝑡 (𝑛𝑒𝑡) = 𝑚𝑎𝑥(0, 𝑛𝑒𝑡)

• Được sử dụng nhiều nhất hiện nay• Giá trị đầu ra ln khơng âm • Ưu điểm

o Liên tục

o Khơng có đạo hàm tại điểm 0 duy nhất o Dễ tính tốn

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Một giá trị nhỏ có thể làm cho q trình học kéo dài rất lâu

Thường được chọn theo thực nghiệm (experimentally) đối với mỗi bài tốn. Ở bài tốn này, nhóm đã tham khảo và chạy thử với một số giá trị và lựa chọn giá trị 3e –

<i>Thư viện và các hàm đượử ụ</i>

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Để tránh overfitting, chúng ta sử dụng hàm EarlyStopping để dừng quá trình huấn luyện mơ hình khi giá trị hàm mất mát trên tập validation không cải thiện trong 5 epoch liên tiếp.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Đoạn code trên dùng để train mơ hình neural network với dữ liệu đầu vào là x_train_scaled và dữ liệu đầu ra là y_train_scaled. Mơ hình được train với 200 epochs và batch size là 32. Validation split được set là 0.25 để chia dữ liệu thành 2 phần, một phần để train và một phần để validation. Callbacks được sử dụng để early stop training nếu khơng có sự cải thiện trong q trình training. Nếu khơng có sự cải thiện trong q trình training thì mơ hình sẽ dừng lại sớm hơn để tránh overfitting.

<b>Ưu điểm: </b>

• Bản chất (về cấu trúc) hỗ trợ tính tốn song song ở mức cao

• Đạt độ chính xác cao trong nhiều bài tốn (ảnh, video, âm thanh, văn bản)• Rất linh động trong kiến trúc mạng

• Rất khó (khơng thể) đưa ra giải thích cho người dùng

• Lý thuyết nền tảng cịn ít, để giúp giải thích được những thành công trong thực tế

<small>np.log(player_stat['International Reputation']) </small>

<small>player_stat['Release Clause'] = np.log(player_stat['Release Clause']) </small>

<small>player_stat['Likes'] = np.log1p(player_stat['Likes']) player_stat['Dislikes'] = np.log1p(player_stat['Dislikes']) </small>

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Chia tập train và tập test:

<small>player_value = player_stat['Value'] </small>

<small>player_features = player_stat.drop(['Value'], axis= ) 1</small>

<small>x_train, x_test, y_train, y_test = train_test_split(player_features, player_value, test_size = 0.3, shuffle = True) </small>

Quy đổi dữ liệu về chuẩn sử dụng hàm StandardScaler:

<small>scaler_x = StandardScaler() scaler_x.fit(x_train) </small>

<small>x_train_scaled = scaler_x.transform(x_train) x_test_scaled = scaler_x.transform(x_test) y_train_scaled = zscore(y_train) </small>

Chuyển đổi ngược lại số liệu ban đầu:

<small>defreverse_standardization(y_scaled): mean = y_train.mean() </small>

<small> std = y_train.std() y_log = y_scaled * std + mean y_org = np.exp(y_log) return y_org </small>

<b>ĐÁNH GIÁ HIỆU NĂNG TỪNG MƠ HÌNH</b>

Mean Absolute Error (MAE) đo độ lớn trung bình của các lỗi trong một tập hợp các dự đốn mà khơng cần xem xét hướng của chúng. Đó là giá trị trung bình trên mẫu thử nghiệm về sự khác biệt tuyệt đối giữa dự đoán và quan sát thực tế, trong đó tất cả các khác biệt riêng lẻ có trọng số bằng nhau.

trong đó n là số điểm dữ liệu, xᵢ là giá trị thực và yᵢ là giá trị dự đoán.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

Có thể diễn đạt MAE là tổng hịa của hai thành phần: Bất đồng về số lượng và Bất đồng về phân bổ.

MAE được biết đến là mạnh mẽ hơn đối với các yếu tố ngoại lai so với MSE. Lý do chính là trong MSE bằng cách bình phương các sai số, các giá trị ngoại lai (thường có sai số cao hơn các mẫu khác) được chú ý nhiều hơn và chiếm ưu thế trong sai số cuối cùng và tác động đến các tham số của mô hình.

Mean Squared Error (MSE) đại diện cho trung bình của bình phương sai khác giữa các giá trị dự đốn và giá trị gốc trong tập dữ liệu. Nó đo lường phương sai của các giá trị dư thừa

Root Mean Square Error (RMSE) hoặc Root Mean Square Deviation (RMSD) là căn bậc hai của mức trung bình của các sai số bình phương. RMSE là độ lệch chuẩn của các phần dư (sai số dự đoán).

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

) là một phép đo lường sai số phổ biến được sử dụng trong dự báo và dự đốn. Nó được tính bằng cách lấy trung bình tỷ lệ phần trăm của giá trị tuyệt đối của sai số (khác biệt giữa giá trị thực tế và giá trị dự đoán) trên giá trị thực tế.

SST là tổng bình phương phương sai

𝑆𝑆𝑇 = ∑(𝑦

<sub>𝑖</sub>

− 𝑦 )

<sup>2</sup>𝑛

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Biểu đồ phân phối lỗi dự đoán và biểu đồ phân tán lỗi dự đoán- Với tập dữ liệu test chưa chuẩn hóa

- Với tập dữ liệu test đã được chuẩn hóa

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

So sánh tập dữ liệu test và tập giá trị dự đoán - Kiểm thử trên tập dữ liệu test chưa chuẩn hóa

- Kiểm thử trên tập dữ liệu test đã được chuẩn

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>mạng Neuron nhân tạo</b>

Tập training, validation với dữ liệu chưa chuẩn hóa

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

Tập training, validation với dữ liệu đã được chuẩn hóa

Kiểm thử

Kiểm thử trên tập dữ liệu test chưa chuẩn hóa

Kiểm thử trên tập dữ liệu test đã được chuẩn hóa

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

<b>Kết luận</b>

Độ tin cậy của mơ hình Random Forest Regressor trên cả tập dữ liệu chưa được chuẩn hoá và đã được chuẩn hoá khá tương đồng. Tuy nhiên trường hợp tương tự khơng xảy ra với mơ hình neural network, ta thấy độ tin cậy của tập dữ liệu được chuẩn hố có sự khác biệt rõ ràng so với tập dữ liệu chưa được chuẩn hoá.

Như vậy đối với những tập dữ liệu chưa được xử lý cẩn thận, mơ hình Random Forest Regressor sẽ có màn thể hiện tốt hơn. Còn đối với những tập dữ liệu đã được chuẩn hố phù hợp, mơ hình Neural Network sẽ là một lựa chọn tốt hơn so với các mô

<b>ĐỀ CỬ PHÁT TRIỂN TRONG TƯƠNG LAI</b>

Sử dụng các mơ hình khác nhau để tìm ra được mơ hình có thể xử lý dữ liệu tốt nhấtCó thể thử với tập dữ liệu có nhiều lỗi, đa dạng hơn để xem độ chính xác của mơ hình

<b>HƯỚNG DẪN CÀI ĐẶT CHƯƠNG TRÌNH</b>

File colab của chươn-

Tập dữ liệu gốc của chương trình:-

Tập dữ liệu đã qua xử lý:-

<b>TÀI LIỆU THAM KHẢO</b>

Sarah Guido (2016), ‘Introduction to Machine Learning with Python’, O’Reilly Media, USA.

Asadi and Sakir Tasdemir, ‘Predict the Value of Football Players Using FIFA Video Game Data and Machine Learning Techniques’, IEEE Access 2022

. Cotta, ‘Using fifa soccer video game data for soccer analytics’ in Proc. –

Wes McKinney (2017), ‘Python for Data Analysis’, O’Reilly Media, USA.Hiểu sâu về các thuật toán tối ưu ( GD,SGD,Adam,..), Trần Trung Thực, [6] Đánh giá model trong Machine Learing, Nguyen Toan Thinh, Viblo Asia.

[7] Slide bài giảng Nhập môn Học máy và Khai phá dữ liệu, Thân Quang Khoát.

</div>

×