Được sự giới thiệu của các thầy cô Khoa Khoa Học Cơ Bản và sự chấp thuận của là Công ty VNG Vinagame, em đã rất vinh dự được đến thực tập tại VNG - Một môi trường rất tốt và phù hợp với
Trang 1
TRUONG DAI HOC GIAO THONG VAN TAI KHOA KHOA HOC CO BAN
BAO CAO THUC TAP CHUYEN MON
Chuyén nganh: TOAN TIN UNG DUNG Chuyén sau: Tin hoc hoac toán ứng dụng
DE TAI
Machine learning va thuat toan Linear Regression
Sinh viên thực hiện: Trần Văn Định
Trang 3
PHIEU DANH GIA THUC TAP 2
1 Tống quan về cơ sở thực tẬp - cty nga 5 PL ) na 6 3 Tầm nhìn - S653 1E SE EEEEEEEEE SE EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEETETEEEEEErkrkrke 6 “0 a 6
4 Tài liệu tham khảo -22-©2++S2 +tềEEEt 2213222127111 1 reo 16 VY NỘI DUNG TIỀN HÀNH TRONG THỜI GIAN THỰC TẬP 5 -<-5<ceccse 16 VI KIÊN THỨC KHÁC TIẾP CẬN ĐƯỢC KHI THỰC TẬP 2-52 ccscsecse se 17 1 Tim hiểu về thư viện openCV c2 2 c2 tt x2 ngưng 1 reo 17 2 Tài liệu tham khảo -.2:-22-2+tS2 xtềEEEtSE1xEE221E27111 1.221.711.111 18
Zo Tự đánh giá nọ HH HH HH TH HT HH kh HH TH HH ri Hưy 18 2 Hướng phấn đấu rèn luyện c5 tt Tre 19
Trang 4LOI NOI DAU Trong qua trinh dao tao cua cac truong Dai hoc, viéc tổ chức cho các sinh viên được đi thực tập là rất quan trọng Bởi thế mà thực tập chuyên môn là một khâu không thể thiếu trong quá trình đảo tạo, đây là cơ hội cho sinh viên trải nghiệm thực tế và cũng là thời gian đề các sinh viên đem kiến thức được học ở trường áp dụng vào thực hành Được sự giới thiệu của các thầy cô Khoa Khoa Học Cơ Bản và sự chấp thuận của là Công ty VNG (Vinagame), em đã rất vinh dự được đến thực tập tại VNG - Một môi trường rất tốt và phù hợp với chuyên ngành được học của em Trong quá trình thực tập em đã tìm hiểu tình hình xây dựng phát triển và cơ cầu tô chức của Công Ty đặc biệt em đã rút ra được những bài học kinh nghiệm cho bản thân sau khi ra trường để bước vào con đường lập nghiệp
Đề có được sự thành công đó em xin gửi lời cảm ơn chân thành nhất đến với thầy cô trong Khoa Khoa Học Cơ Bản đã tận tình truyền đạt kiến thức cũng như kinh nghiệm quý báu cho em trong suốt quá trình học tập tại trường Đặc biệt là đưới sự hướng dẫn tận tình của thầy giáo Trần Văn Long trong đợt thực tập vừa qua đã giúp em cũng cố, nắm rõ kiến thức hơn đề có thể áp dụng vào thực tế một cách thành thục
Và em cũng xIn cảm ơn tới các anh chị trong quý Công ty VNG, đặc biệt em cũng xin bày tỏ lòng biết ơn sâu sắc đến thầy Uy Quang cùng các anh chị trong team của công ty đã quan tâm hướng dẫn tận tỉnh giúp em làm quen với môi trường làm việc chuyên nghiệp, rèn luyện, củng có kiến thức đã học cũng như trau dỗi kỹ năng giao tiếp, ứng xử
Do còn nhiều bỡ ngỡ khi lần đầu tiên được tiếp xúc với hoạt động thực tế ở Công ty cũng như kiến thức chuyên môn còn hạn chế „nên bài báo cáo không thế tránh khỏi những thiếu sót Vì vậy em mong nhận được sự đóng góp từ đại diện Công ty và các thầy cô Khoa Khoa học cơ bản đề bài báo cáo thực tập chuyên môn của em được hoàn thiện hơn
Một lần nữa em xin chân thành cảm ơn!
Trang 5TONG QUAN VE CONG TY VNG _ Téng quan về cơ sở thực tập
VNG ( viết tắt của chữ Vinagame) là một công ty công nghệ Việt Nam, thành
lập vào năm 2004 với 4 mảng sản phâm chính là Trò chơi trực tuyến, Nền tảng
kết nối, Thanh toán điện tử và Dịch vụ điện toán đám mây Sau l5 năm hoạt động, VNG là doanh nghiệp khởi nghiệp kỳ lân (unicorn start- up) duy nhất tại Việt Nam khi được dinh gia trén 1 ty USD (World Start-up Report)
Năm 2006-2007, công ty phát hành phần mềm C§M, trang thương
mại điện tử 123 mua công thông tin Zing Năm 2008, công ty đôi tên thương hiệu thành VNG Corporation Chữa năm 2009, sản phẩm mạng xã hội Zing Me ra đời với hơn 4 triệu thành viên hoạt động thường xuyên hàng tháng vào cuối năm Năm 2010, trò chơi trực tuyến Thuận Thiên Kiếm ra đời Năm 2011, VNG xuat khau tro choi Un In sang Nhat Ban
Năm 2012 & 2013, VNG đưa ra sản phẩm Zalo — img dung nhan tin và gọi điện miễn phí hoạt động trên nên tảng di động
Năm 2015, VNG được vinh đanh “Doanh nghiệp phát triển nhanh toàn cầu tại khu vực Đông Á” tại Diễn đàn Kinh tế Thế giới 2015
(Manila, Philippines) Cuối năm 2016, VNG ra mắt ZaloPay, ứng dụng thanh toán trên di động
Cuối năm 2016, VNG ra mắt ZaloPay, ứng dụng thanh toán trên di động
Trang 6II
+ Năm 2017, ky Bản ghi nhớ về việc niêm yết trên sàn chứng khoán
Nasdaq (My) + Nam 2018:
"Xác định bỗ sung các mảng kinh doanh chiến lược mới như Tài chính và thanh toán, Dịch vụ Đám mây
“ Nền tảng Zalo cán mốc 100 triệu người dùng, không chỉ ở Việt Nam
Tiếp tục được Google và Temasek công bố là I trong 9 unieorn (kỳ lân) công nghệ của khu vực Đông Nam Á, cùng với Grab, ŒGo-Jek
2 Sứ mệnh “Phát triên Internet đề thay đôi cuộc sống người Việt Nam” 3 Tầm nhìn
VNG luôn khát khao tạo nên một công ty của người Việt Nam, mang thương hiệu Việt Nam, khắng định sức mạnh về trí tuệ của của nòi giống con rồng cháu
Việt trên thê giới.Giá trị cốt lõi
4 Môi trường làm việc Môi trường làm việc chuyên nghiệp, cởi mở cho tất cả thành viên: ®© Được trao nhiều cơ hội đề phát triển bản thân, tạo tiền đề cho việc phát triển
Trang 7III CAC NOI DUNG THUC TAP
Gan nhãn dữ liệu hình ảnh Tìm hiểu thuật toán Linear Regression Tìm hiểu thư viên openCV
ĐÈ TÀI NGHIÊN CỨU VÀ CÁC TÀI LIỆU LIÊN QUAN
Đề tài Machine learning và thuật toán Linear Regression
._ Giới thiệu đề tài
Machine learning gay nén con sét công nghệ trên toàn thế giới trong vài năm nay Trong giới học thuật, mỗi năm có hàng ngàn bài báo khoa học về đề tài này Trong gidi công nehiệp, từ các công ty lớn như Google, Facebook, Microsoft đến các công ty khởi nghiệp đều đầu tư vào machine learning Hàng loạt các ứng dụng sử dụng machine learning ra đời trên mọi linh vực của cuộc sống, từ khoa học máy tính đến những ngành ít liên quan hơn như vật lý, hóa học, y học, chính trị A/phaGo, c6 may đánh cờ vây với khả năng tính toán trong một không gian có số lượng phần tử còn nhiều hơn số lượng hạt trong vũ trụ, tối ưu hơn bắt kì đại kì thủ nào, là một trong rất nhiều ví đụ hùng hồn cho sự vượt trội của machine learning so với các phương pháp cô điển
Linear Regression (Hồi quy tuyến tính) là thuật toán quan trọng và có nhiều ứng dụng trong thực tiễn
Linear Regression thuộc loai Supervised Learning, trong d6 gia tri cua output là một hàm tuyến tính của các biến trong input
2 Phân tích toán học 2.1 Dạng của Linear Regression
ụ ƒ(x) = 9 f(x) = 1# + 1022 + 1033 + tụ (1) Trong phương trình (1) phía trên, nếu chúng ta đặt w= là vector (cột) hệ số cần phải tối ưu và =[I,x1,x2,x3] (doc là x bar trong tiếng Anh) là vector (hàng) đữ liệu đầu vào mmở rộng Số L ở đầu được thêm vào dé phép tính đơn giản hơn và thuận tiện cho việc tính toán Khi đó, phương trình (1) có thể được viết lại dưới đạng:
3 XW = ÿ
Trang 8Chú ý rằng là một vector hàng 2.2 Sai số dự đoán
Chúng ta mong muốn rằng sự sai khác e giữa giá trị thực y và giá trị dự đoán ^y (đọc là y hat trong tiếng Anh) là nhỏ nhất Nói cách khác, chúng ta muốn giá trị sau đây càng nhỏ càng tốt:
N
Hàm số L(w) được gọi là ham mat mat (loss function) cua bai toan Linear Regression Chung ta luén mong muốn rằng sự mat mát (sai số) là nhỏ nhất, điều đó đồng nghĩa với việc tìm vector hệ số w sao cho giá trị của hàm mắt mát này càng nhỏ càng tốt Giá trị của w làm cho hàm mat mat dat giá trị nhỏ nhất được gọi là điểm tối wu (optimal point), ky hiệu:
w" = argmin Ê(w)
w
Trước khi đi tìm lời giải, chúng ta đơn giản hóa phép toán trong phương trình hàm mất mát (2) Đặt y=|y l:y2: ;yN] là một vector cột chứa tất ca cac output cua training data; = 1a ma tran dit ligu dau vao (mé réng) mà mỗi hàng của nó là một điểm dữ liệu Khi đó hàm số mắt mát L(w) được viết dưới dang ma tran đơn giản hơn:
Trang 9(3)
2.4 Nghiệm của bài toán Linear Regression Cách phô biến nhất đề tìm nghiệm cho một bài toán tối ưu (chúng ta đã biết từ khi học cấp 3) là giải phương trình đạo hàm (gradient) bằng 0! Tất nhiên đó là khi việc tính đạo hàm và việc giải phương trình đạo hàm bằng 0 không quá phức tạp Thật may mắn, với các mô hình tuyến tính, hai việc này 1a kha thi
Đạo hàm theo w cua ham mat mat 1a:
OL (w _T — EW) _ &" (Kw —y) 3 Ứng dụng thuật toán Linear Regression vào bài toán dự đoán nhà dat
3.1 Bài toán Dữ liệu liên quan đến những ngôi nhà được tìm thấy trong một quận california nhất định và một số số liệu thống kê tóm tắt về chúng dựa trên
dữ liệu điều tra dan sé nam 1990
Dữ liệu: https://Awww.kaggle.com/datasets/camnugent/california-housing-prices 3.2 Phân (tích dữ liệu dataset
Trước tiên chúng ta import thư viện cần dùng:
import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns
Trang 10sau dé minh load file dataset đã lưu ở google drive, mình kết nỗi google drive vào colab đề truy cập dataset
0 train = pd.read_csv("/content/sanple data/california_housing train csv") train.head()
longitude latitude housing median age total roons total_bedrooms population households median incone median house value
Dữ liệu gồm các trường: longitude latitude housingmedianage total_ rooms total_ bedrooms population households median income
Trang 11© train.info()
<class ‘pandas.core.frame.DataFrame’ >
RangeIndex: 17000 entries, @ to 16999 Data columns (total 9 columns):
housing median_age 1700@ non-null
total_rooms 17000 non-null total_bedrooms 17000 non-null population 17000 non-null households 17000 non-null
median_income 17000 non-null
median_house value 17000 dtypes: float64(9)
memory usage: 1.2 MB ta xem trực quan về đữ liệu phân bố bằng Seaborn:
Trang 12Về tương quan giữa các cột, ta thay Cdt median income co kiéu phân tán theo mô hình tuyến tính, dựa trên thông tin này, ta xây dựng mô hình máy học hồi quy tuyến tính đề đự đoán nó dựa trên giá trị các cột khác Giờ ta xem qua biểu đồ phân phối giá ngôi nhà
oe sns.set_style(”whitegrid”) sns.distplot(train[ 'median_income'], kde = False, rug = “True") (> /usr/local/1ib/python3.7/dist-packages/seaborn/distributions py :2
warnings.warn(msg, FutureWarning) /usr/local/lib/python3.7/dist-packages/seaborn/distributions.py:2
warnings.warn(msg, FutureWarning) <matplotlib.axes._subplots.AxesSubplot at 0x7f7c46906b10>
1400 1200 1000 800 600 400
© pit figure(figsize=(18,5))
sns.heatmap(train.corr(), annotetrue, lw = 1, linecolor="r*,cmap="coolwara”) <matplotlib axes._subplots.AxesSubplot at ðx?f7c422fe416>
longtướe tautude routing mediae_age twral_rooms tal bedrooms population rouserolds megan income median house value
$ § $ i i § Ệ Ệ 3 § ề 3 Ệ š :
PO GUE 5 § Z đi gp i : |
Qua đó, ta phân tích được các cột có giá trị tương quan như như thế nào với nhau Về cơ bản, cột giá (price) có chút tương quan với các cột còn lại nhiều nhất, chứng tỏ các yếu tô đó có tác động ít nhiều lên giá nhà
Trang 13OK! ta đã phân tích sơ qua về bảng đữ liệu của chúng ta, đây là một dataset tương đối đơn giản, các hàng và cột không cá gia tri null nên ta không cần xử lý
3.3 Xây dựng mô hình dự đoán bằng thư viện Scikit— Learn
Bây giờ chúng ta hãy bắt đầu đảo tạo mô hình hồi quy Trước tiên, chúng ta sẽ cần tách đữ liệu của mình thành một mảng X chứa các tính năng cần đào tạo (các biến độc lập) và một mảng y với biến mục tiêu (biến phụ thuộc), trong trường hợp này là cột Giá Chúng ta sẽ loại bỏ
cột Địa chỉ vì nó chỉ có thông tin văn bản mà mô hình hồi quy tuyến tính
không thể sử dụng
[] X= train[['longitude', 'latituda', 'housing median age', 'total rooms', ‘total bedrooms’,
'population', 'households', median_incorte' |] Y = train[ median house value']
Giờ ta đã có hai biến X, Y theo yêu cầu của mô hình, hai biến này đựa trên đữ liệu là dataset ta có được đề dao tao mô hình
Tao model va training Linear Regression Từ thư viện Scikit — Learn , linear model import module LinearRegression
Tiến hành train đữ liệu bằng phương thire fit()
Kêt quả trả về là một hàm LinearRegression(), chứng tỏ mô hình đã train xong
from sklearn.linear_model import LinearRegression Im = LinearRegression()
Im fit(X, Y) LinearRegression()
3.4 Dự đoán và đánh giá mô hình Đầu tiên input dir ligu test
0 test = pd.read_csv("/content/sample data/california housing test.csv") X test = test[[‘longitude’, ‘latitude’, ‘housing median age’, ‘total rooms’, ‘total bedrooms’,
‘population’, ‘households, 'median_income'] ] Y test = test['median house value’ ]
Trang 14Đề dự đoán và kiểm tra mô hình, ta sử dụng dữ liệu test bên trên mà ta đã tách ra Trong đó, X test là các tính năng mà mô hình chưa biết, y_test là kết quả biết trước để ta so sánh với kết quả đự đoán từ X test Lấy kết quả dự đoán từ X test, ta dùng phương thức predict() truyền đối số X test vào
L Sử dụng biểu đồ phân tán (scatter) truyền vào 2 giá trị trên vào đề quan sát
plt.scatter(Y_test,predictions) <matplotlib.collections.PathCollection at 0x7f8a8655afdo>
600000 400000 200000
Trang 15
Nhìn trực quan bên trên ta thấy giữa giá dự đoán (màu cam) và giá ban đầu (màu xanh dương) có I sự chênh lệnh Tùy theo độ chính xác mô hình, nếu độ chính xác mô hình cảng cao thì độ chênh lệch các điểm trên biểu đồ càng ít lại
Chúng ta có ba chỉ số đánh giá hồi quy đề có số liệu chính xác Mean Absolute Error (MAE): MAE là một phương pháp đo lường sự
khác biệt (độ chênh lệch giá trị) giữa hai biến liên tục Giả sử rằng X và Y là hai biến liên tục thê hiện kết quả dự đoán của mô hình và kết quả thực tế, đây là chỉ số đễ hiểu nhất, vi đó là giá trị chênh lệch trung bình
và được xác định bằng công thức:
Mean Squared Error (MSE): là giá trị trung bình của bình phương sai số (Hàm mất mát), là sự khác biệt giữa các giá trị được mô hình đự đoán va gía trị thực MSE cũng được gọi là một hàm rủi ro, tương ứng với giá trị kỳ vọng của sự mất mát sai số bình phương hoặc mất mát bậc hai chỉ số này phổ biến hơn chỉ số MAE bên trên, được xác định bằng công thức:
Root Mean Squared Error (RMSE): la can bac hai cua g14 tri trung bình của các sai số bình phương (MSE) Thông thường, ta thường dùng chỉ số này đề xác định giá trị chênh lệch trung bình giữa giá dự đoán và
giá trị test ban đầu, được xác định bằng công thức: