Báo cáo về môn học Nhập môn học máy Tìm hiểu chi tiết sâu về môn học máy giúp người dùng hiểu hơn về môn học công nghệ thông tin Hướng dẫn chi tiết cách sử dụng và có kèm code python trong báo cáo, giúp người dùng hiểu hơn và dễ áp dụng
Trang 1PHIẾU CHẤM ĐIỂM
ST
T
Họ và tên sinh
viên
ký
1
Nhóm trưởng Code , chạy chương trình
Giảng viên chấm 1:
Giảng viên chấm 2:
MỤC LỤC
Trang 2CHƯƠNG I: GIỚI THIỆU VỀ HỌC MÁY VÀ HỒI QUY TUYẾN TÍNH 4
1 5 4 Nghiệm cho bài toán Linear Regression 12
Trang 3DANH MỤC HÌNH ẢNH
Hình 1 4 3 Đường hồi quy tuyến tính……… 10
Hình 2 2 2 1 Bảng mô tả dữ liệu……… 16
Hình 2 3.6 1 Code Python……… 19
Hình 2 4 1 Đánh giá kết quả……… 20
LỜI MỞ ĐẦU
Công nghệ thông tin (CNTT) ngày càng có vai trò quan trọng trong cuộc sống hằng ngày của chúng ta Việc ứng dụng CNTT vào các lĩnh vực trong đời sống giúp công việc được tiến hành nhanh chóng và hiệu quả hơn Có rất nhiều công việc mới phát triển song song với sự phát triển của CNTT, một trong những số
đó là phân tích chẩn đoán dữ liệu – big data, hướng đi mang lại hiệu quả rất lớn
Nhóm chúng em chọn đề tài “ Ứng dụng thuật toán Linear Regression dự đoán giá giá bất động sản ” sử dụng thuật toán hồi quy tuyến tính nhằm tìm hiểu sâu hơn về dữ liệu cách khai thác và sử dụng hiệu quả, từ đó viết một ứng dụng cụ thể thử nghiệm làm cơ sở củng cố kiến thức và định hướng, kế hoạch xây dựng các ứng dụng trong tương lai
Trang 4CHƯƠNG I: GIỚI THIỆU VỀ HỌC MÁY VÀ
HỒI QUY TUYẾN TÍNH
1 1 Khái niệm học máy
Học máy (Machine Learning) là một ngành khoa học nghiên cứu các thuật toán cho phép máy tính có thể học được các khái niệm (concept)
Phân loại : có hai loại phương pháp học máy chính
- Phương pháp suy diễn : Máy học phân biệt các khái niệm dựa vào các luật Phương pháp này cho phép tận dụng được các kiến thức chuyên ngành để
hỗ trợ cho máy tính
- Phương pháp quy nạp : Máy học phân biệt các khái niệm dựa trên các dữ liệu đã thu thập được trước đó Phương pháp này cho phép chúng ta tận dụng được nguồn dữ liệu khổng lồ và sẵn có
Trong xã hội hiện nay, các thuật toán đều cố gắng tận dụng được ưu nhược điểm của hai phương pháp này
Các ngành khoa học liên quan:
- Lý thuyết thống kê: các kết quả trong xác suất thống kê là tiền đề cho rất nhiều các phương pháp học máy Đặc biệt, lý thuyết thống kê cho phép ước lượng sai số của các phương pháp học máy
- Các phương pháp tính: các thuật toán học máy thường sử dụng các tính toán số thực/nguyên tố trên dữ liệu rất lớn Trong đó các bài toán như: tối ưu có/không ràng buộc, giải phương trình tuyến tính,… được sử dụng rất phổ biến
- Khoa học máy tính: là cơ sở để thiết kế các thuật toán, đồng thời đánh giá thời gian chạy, bộ nhớ của các thuật toán học máy
Trang 5Các nhóm giải thuật học máy:
- Học tăng cường: Máy tính đưa ra quyết định hành động (action) và nhận kết quả phản hồi (response/reward) từ môi trường (environment) Sau đó máy tính tìm cách chỉnh sửa cách ra quyết định hành động của mình
- Học có giám sát: Máy tính được xem một số mẫu gồm đầu vào (input) và đầu ra ( output ) tương ứng trước Sau khi học xong các mẫu này, máy tính sẽ quan sát một đầu vào mới và đưa ra kết quả
- Học không giám sát: Máy tính chỉ được xem các mẫu không có đầu ra, sau đó máy tính phải tự tìm cách phân loại các mẫu này và các mẫu mới nửa giám sát: Là một dạng lai giữa hai giải thuật trên
1 2 Ứng dụng học máy
Ứng dụng: Học máy có ứng dụng rộng khắp trong các ngành khoa học, sản xuất, đặc biệt những ngành cần phân tích khối lượng lớn dữ liệu khổng lồ Một số ứng dụng chúng ta thường thấy như:
- Xử lý ngôn ngữ tự nhiên ( Natural Language Processing ): xử lý văn bản, giao tiếp người và máy,…
- Nhận dạng ( Pattern Recognition ): nhận dạng tiếng nói, chữ viết tay, vân tay, thị giác máy ( Computer Vision)…
- Tìm kiếm ( Search Engine )
- Chẩn đoán trong y tế: phân tích ảnh X-quang, các hệ chuyên gia chuẩn đoán tự động,…
- Tin sinh học: phân loại chuỗi gene, quá trình hình thành gene/protein
- Vật lý: phân tích ảnh thiên văn, tác động giữa các hạt,…
Trang 6- Phát hiện gian lận tài chính ( financial fraud ): gian lận thẻ tín dụng
- Phân tích thị trường chứng khoán ( stock market analysis )
- Chơi trò chơi : tự động chơi cờ, hành động của các nhân vật ảo,…
Robot: là tổng hợp của rất nhiều ngành khoa học, trong đó học máy tạo nên hệ thần kinh/bộ não của người máy
1 3 Định nghĩa về hồi quy tuyến tính
Mục tiêu của giải thuật hồi quy tuyến tính là dự đoán giá trị của một hoặc
nhiều biến mục tiêu liên tục (continuous target variable) y dựa trên một vectơ
đầu vào x
Ví dụ: dự đoán giá nhà ở Hà Nội dựa vào thông tin về diện tích, vị trí,
năm xây dựng của ngôi nhà thì t ở đây sẽ là giá nhà và X=(x1,x2,x3), x1 là diện
tích, x2 là vị trí và x3 là năm xây dựng
Nếu bạn còn nhớ thì đây chính là phương pháp phân tích hồi quy của xác suất thống kê Mọi lý thuyết cơ bản của phương pháp này vẫn được giữa nguyên nhưng khi áp dụng cho máy tính thì về mặt cài đặt có thay đổi đôi chút
Về cơ bản thì ta sẽ có một tập huấn luyện chứa các cặp (x(i), y(i)) tương
ứng và nhiệm vụ của ta là phải tìm giá trị y Hay nói cách trừu tượng hơn là ta cần vẽ được một đường quan hệ thể hiện mối quan hệ trong tập dữ liệu
1 4 Giải quyết thuật toán
1 4 1 Chuẩn bị
Để bắt đầu với Hồi quy tuyến tính, chúng ta hãy đi lướt qua một số khái niệm toán học về thống kê
- Tương quan (r) - Giải thích mối quan hệ giữa hai biến, giá trị có thể chạy
từ -1 đến +1
- Phương sai (σ2) - Đánh giá độ phân tán trong dữ liệu của bạn
Trang 7- Độ lệch chuẩn (σ) - Đánh giá độ phân tán trong dữ liệu của bạn (căn bậc hai của phương sai)
- Phân phối chuẩn
- Sai số (lỗi) - {giá trị thực tế - giá trị dự đoán}
1 4 2 Giả định
Không một kích thước nào phù hợp cho tất cả, điều này cũng đúng đối với Hồi quy tuyến tính Để thoả mãn hồi quy tuyến tính, dữ liệu nên thỏa mãn một vài giả định quan trọng Nếu dữ liệu của bạn không làm theo các giả định, kết quả của bạn có thể sai cũng như gây hiểu nhầm
1 Tuyến tính & Thêm vào : Nên có một mối quan hệ tuyến tính giữa biến độc lập và biến không độc lập và ảnh hưởng của sự thay đổi trong giá trị của các biến độc lập nên ảnh hưởng thêm vào tới các biến phụ thuộc
2 Tính bình thường của phân bổ các lỗi : Sự phân bổ sai khác giữa các giá trị thực và giá trị dự đoán (sai số) nên được phân bổ một cách bình thường
3 Sự tương đồng: Phương sai của các lỗi nên là một giá trị không đổi so với
- Giá trị của các biến độc lập
4 Sự độc lập về thống kê của các lỗi: Các sai số (dư) không nên có bất kỳ mối tương quan nào giữa chúng
Ví dụ: Trong trường hợp dữ liệu theo chuỗi thời gian, không nên có sự
Trang 8tương quan giữa các sai số liên tiếp nhau
1 4 3 Đường hồi quy tuyến tính
Trong khi sử dụng hồi quy tuyến tính, mục tiêu của chúng ta là để làm sao một đường thẳng có thể tạo được sự phân bố gần nhất với hầu hết các điểm
Do đó làm giảm khoảng cách (sai số) của các điểm dữ liệu cho đến đường đó
Hình 1.4.3 Minh Họa
Ví dụ, ở các điểm ở hình trên (trái) biểu diễn các điểm dữ liệu khác nhau
và đường thẳng (bên phải) đại diện cho một đường gần đúng có thể giải thích mối quan hệ giữa các trục x & y Thông qua, hồi quy tuyến tính chúng ta cố gắng tìm ra một đường như vậy Ví dụ, nếu chúng ta có một biến phụ thuộc Y
và một biến độc lập X - mối quan hệ giữa X và Y có thể được biểu diễn dưới dạng phương trình sau:
Y = Β0 + Β1*XX
Trang 9Ở đây,
Y = Biến phụ thuộc
X = biến độc lập
Β0 = Hằng số
Β1 = Hệ số mối quan hệ giữa X và Y
1 5 Phân tích toán học
1 5 1 Dạng của Linear Regression
Hồi quy tuyến tính có phương trình đạng :
F(x) = w1x1 + w2x2 + w3x3 + w0 (1)
Trong đó, w1, w2, w3, w0, là các hằng số, w0 còn được gọi là bias Mối quan
hệ giữa y f(x) bên trên là một mối quan hệ tuyến tính (linear) Bài toán chúng
ta đang làm là một bài toán thuộc loại regression Bài toán đi tìm các hệ số tối
ưu { w1, w2, w3, w0 } chính vì vậy được gọi là bài toán Linear Regression
Trong phương trình (1) nếu chúng ta đặt w = [w1, w2, w3, w0]T là một vectơ (cột) hệ số cần phải tối ưu và = [1, x1, x2, x3] (đọc là x bar trong tiếng Anh) là vector (hàng) dữ liệu đầu vào mở rộng Số 1 ở đầu được thêm vào để 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 dạng:
1 5 2 Sai số dự đoán
Chúng ta mong muốn rằng sự sai khác giữa giá trị thực và giá trị dự đoán ŷ (đọc là y hat trong tiếng Anh) là nhỏ nhất Nói cách khác, chúng ta
Trang 10muốn giá trị sau đây càng nhỏ càng tốt:
Trong đó hệ số (lại) là thuận tiện cho việc tính toán khi tính đạo hàm thì
số sẽ bị triệt tiêu Chúng ta cần vì có thể là một số âm, việc nói nhỏ nhất sẽ không đúng vì khi là rất nhỏ nhưng sự sai lệch là rất lớn
1 5 3 Hàm mất mát
Máy học từ giá trị trung bình của một hàm mất mát Đây là một phương pháp đánh giá độ hiệu quả của một thuật toán nào đó trên bộ dữ liệu cho trước Nếu kết quả dự đoán chênh lệch quá nhiều so với kết quả thực tế, hàm mất mát
sẽ là một số rất lớn Điều tương tự xảy ra với tất cả các cặp (input, outcome)
(xi, yi), i = 1, 2, 3, …, N với N là số lượng dữ liệu quan sát được Để hàm
mất mát nhỏ nhất khi đó tổng sai số là nhỏ nhất tương đương với việc tìm w để
hàm số sau đạt giá trị nhỏ nhất:
Hàm số F(w) được gọi là hàm mất mát (loss function) của bài toán Linear Regression Chúng ta luôn mong muốn rằng sự mất mát (sai số) là nhỏ nhất,
điều đó đồng nghĩa với việc tìm vectơ 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 mất mát đạt giá trị nhỏ nhất
được gọi là điểm tối ưu (optimal point), ký hiệu:
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 là một vector cột chứa tất cả các output của training data; = là ma trận dữ liệu đầu vào (mở rộng) mà mỗi hàng của nó là một điểm
Trang 11dữ liệu Khi đó hàm số mất mát F(w) được viết dưới dạng ma trận đơn giản hơn:
Với ||z||2 là Euclidean norm (chuẩn Euclid, hay khoảng cách Euclid), nói
cách khác là tổng của bình phương mỗi phần tử của vector z Tới đây, ta đã có
một dạng đơn giản của hàm mất mát được viết như phương trình (3)
1 5 4 Nghiệm cho bài toán Linear Regression
Để tìm nghiệm cho một bài toán tối ưu chúng ta thường 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 là khả thi
Đạo hàm theo w của hàm mất mát là:
CHƯƠNG II: ÁP DỤNG THUẬT TOÁN
2 1 Mô tả bài toán
Đề tài Dự đoán giá bất động sản của chúng em áp dụng thuật toán hồi quy tuyến tính được dựa vào các dự liệu chúng em đã tham khảo trên trang
ngoài mô tả về giá nhà, giá bất động sản tại nơi đó dựa vào vị trí địa lý của mảnh đất hoặc khu nhà đó
Trang 122 2 Mô tả tập dữ liệu
2 2 1 Thông tin thuộc tính:
Các đầu vào như sau
X1 = tuổi nhà (đơn vị: năm)
X2 = khoảng cách đến trạm tàu điện ngầm gần nhất (đơn vị: mét ) X3 = số lượng cửa hàng tiện lợi trong vòng 1km (số nguyên)
X4 = tọa độ địa lý, vĩ độ (đơn vị: độ)
X5 = tọa độ địa lý, kinh độ (đơn vị: độ)
X6 = Ping đơn vị tính bên Đài Loan ( 1 mét vuông Ping = 3,3 mét vuông)
Sản lượng như sau
Y = giá nhà của đơn vị diện tích (10000 Đô la Đài Loan mới / Ping, trong đó Ping là đơn vị địa phương, 1 mét vuông Ping = 3,3 mét)
Trang 132 2 2 Dữ liệu
2.2.2.1 Bảng mô tả dữ liệu
2 3 Áp dụng thuật toán cho bài toán
2.3.1 Import thư viện
from future import division, print_function, unicode_literals
import numpy as np
import pandas as pd
Trang 14import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
2.3.2 Lấy dữ liệu
df=pd.read_csv('Real-estate-valuation-data-set-_2 2.csv')
a=df.values[:,0]
a1=df.values[:,1]
a2=df.values[:,2]
a3=df.values[:,3]
b=df.values[:,4]
2.3.3 Chuyển vị dữ liệu
X=np.array([a]).T
X1=np.array([a1]).T
X2=np.array([a2]).T
X3=np.array([a3]).T
y=np.array([b]).T
2.3.4 Xây dựng tập huấn luyện
# Building Xbar
one = np.ones((X.shape[0], 1))# array voi tat cac thong so la 1
Xbar = np.concatenate((one,X,X1,X2,X3),1)# Noi one voi X
Xbar_train, Xbar_test, y_train, y_test =
train_test_split(Xbar,y,test_size=0.33,random_state=42)
print(Xbar_test)
2.3.5 Ước lượng tham số
# Calculating weights of the fitting line
A = np.dot(Xbar_train.T, Xbar_train)# Nhan ma tran chuyen vi X voi X
b = np.dot(Xbar_train.T, y_train)#nhan ma tran chuyen vi cua X voi y
w = np.dot(np.linalg.pinv(A), b)# lay ma tran nghich dao cua A nhan b
print('w = ', w)
def per(x1,x2,x3,w):
return (w[0]+x1*Xw[1]+x2*Xw[2]+x3*Xw[3])
Trang 15plt.scatter(Y_pre,y_test,color='red')
plt.xlabel("Giá trị dự đoán của Y")
plt.ylabel("Giá trị thực của Y")
plt.show()
2.3.6 Code Python
Trang 16Hình 2.3.6.1 Code Python
2 4 Đánh giá kết quả
Trang 172.4.1 Đánh giá kết quả
Theo như hình trên, giá trị dự đoán của Y và giá trị thực của Y có sự sai lệch nhất định do mô hình được lựa chọn chưa chính xác 100%
Vậy nên thuật toán hồi quy tuyến tính còn mang nhiều hạn chế khác như :
- Chưa biểu diễn được những mô hình phức tạp hơn
- Còn nhiều thiếu sót trong khâu phân tích
- Thi thoảng gây nhiễu
CHƯƠNG III : KẾT LUẬN
Lý thuyết Hồi quy tuyến tính dựa trên những ý tưởng hết sức cơ bản,
nó đưa ra cách thức lựa chọn một phương án có tính tối ưu nhất, không phải
Trang 18tất cả các dự đoán dựa trên Hồi quy đều chính xác nhưng nó sẽ lựa chọn ra phương án tốt nhất Trong bài tiếp theo, chúng ta sẽ áp dụng các lý thuyết này trong viết code Python để thực hiện vẽ ra đường thẳng thể hiện mối quan hệ giữa ngân sách và doanh thu
Thuật toán hồi quy tuyến tính đưa chúng ta đến bài toán dự đoán giá nhà đất một cách hoàn chỉnh cùng với những số liệu thực tế Mặc dù công thức chuẩn có thể tính được tham số nhưng với tập dữ liệu mà lớn thì khả năng sẽ không khít được với bộ nhớ của máy tính, nên trong thực tế người ta thường sử dụng phương pháp đạo hàm để tối ưu
Thuật toán mang lại cho người sử dụng nhiều dự đoán hơn trong ứng dụng cuộc sống không chỉ mỗi dự đoán về giá nhà đất mà có thể về thời tiết , giá vàng, … giúp ích rất nhiều cho người sử dụng nó
Chúng em chân thành xin gửi lời cảm ơn đặc biệt đến thầy giáo, người đã tận tình hướng dẫn môn Nhập Môn Học Máy cho chúng em trong
từng buổi học Thầy đã giúp trang bị cho chúng em kiến thức môn học và hơn cả là động lực để tiếp tục trên con đường chinh phục công nghệ
TÀI LIỆU THAM KHẢO
1 [ML] Hồi quy tuyến tính : https://dominhhai github
io/vi/2017/12/ml-linear-regression/
2 Machine Learning cơ bản: https://machinelearningcoban
com/2016/12/28/linearregression/
3 Phân tích hồi quy tuyến tính đa biến : https://bit ly/30xi3Vb
Trang 194 Trang dữ liệu : https://archive ics uci edu/