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

Đồ án tìm HIỂU về MACHINE LEARNING và ỨNG DỤNG vào THẨM ĐỊNH GIÁ cả

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 (8.89 MB, 157 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

ĐỒ ÁN 1

ĐỀ TÀI: “TÌM HIỂU VỀ MACHINE LEARNING VÀ ỨNG DỤNG
VÀO THẨM ĐỊNH GIÁ CẢ”.

Sinh viên thực hiện:

1. Nguyễn Chí Thành

18520360

2. Tăng Khánh Chương

18520010

Giảng viên hướng dẫn: ThS Trần Anh Dũng

Tp Hồ Chí Minh, ngày 30 tháng 6 năm 2021


Phụ lục
A. Giới thiệu đề tài

1

I. Bối cảnh


1

II. Mục đích

2

III. Ý nghĩa

2

IV. Nhiệm vụ

2

B. Cơ sở lý thuyết
I. Một số thuật toán machine learning:

3
3

1. Các thuật toán Hồi quy

3

1.1. Hồi quy đơn thức:

3

1.1.1. Thuật toán


3

1.1.2. Ứng dụng

11

1.2. Hồi quy đa biến:

17

1.2.1. Thuật toán

17

1.2.2 Ứng dụng

17

1.3. Hồi quy đa thức:

21

1.3.1. Thuật toán

21

1.3.2 Ứng dụng

23


1.4. Support Vector Regression:

25

1.4.1. Thuật toán

25

1.4.2. Ứng dụng

29

2. Các thuật toán Phân loại:

34

2.1. Logistic Regression:

98

2.1.1. Thuật toán

34

2.1.2. Ứng dụng:

45


2.2. K-Nearest Neighbors:


49

2.2.1. Thuật toán:

49

2.3.2. Ứng dụng:

54

2.3. Support Vector Machine:

57

2.3.1.Thuật toán:

57

2.3.2. Ứng dụng:

64

2.4. Decision Tree:

98

2.4.1. Thuật toán:

67


2.4.2. Ứng dụng:

96

2.6. Random Forest:

98

2.6.1. Thuật toán:

98

2.6.2. Ứng dụng:

100

3. Thuật toán phân cụm:

104

3.1. K-Mean Clustering:

104

3.1.1. Thuật toán:

104

3.1.2. Ứng dụng:


113

II. Các thư viện của python hỗ trợ trong machine learning
1. Pandas:

116
124

1.1. Giới thiệu:

116

1.2. Ứng dụng:

120

2. Numpy:

124

2.1. Giới thiệu:

120

2.2. Ứng dụng:

124

3. Sklearn:


124

3.1. Giới thiệu:

124

3.2. Các thuật toán trong thư viện:

125


4. Matplotlib:

127

4.1. Giới thiệu:

127

4.2. Thành phần:

127

C. Ứng dụng:

128

1. Thu thập dữ liệu:


128

2. Tiền xử lý dữ liệu:

131

3. Huấn luyện model:

145

4. Kết quả thử nghiệm:

150

Danh mục tham khảo

152


A. Giới thiệu đề tài
I. Bối cảnh
Số tiền dành cho mua nhà là khơng nhỏ, vì vậy việc người mua quan tâm không chỉ ở việc
lựa chọn được một ngôi nhà ưng ý mà cịn xem giá cả có hợp lý hay không.
Việc đánh giá giá trị của một bất động sản không phải là một việc dễ dàng. Để đánh giá
chính xác giá của một căn nhà, người ta khơng chỉ địi hỏi một sự hiểu biết chun mơn
về thị trường bất động sản (một thị trường rất biến động) mà còn đòi hỏi một sự hiểu biết
thật sự tường tận về bản thân các thuộc tính của bất động sản đó
Những kiến thức này thường chỉ được lưu trữ bởi các đại lý kinh doanh bất động sản. Nếu
chúng ta có thể nắm bắt kiến thức này bằng cách thu thập dữ liệu, sử dụng các dữ liệu mở,
tận dụng sự giúp sức của các thuật toán, chương trình máy tính, các kiến thức này trở nên

dễ tiếp cận hơn với các người dân bình thường, giúp đưa ra quyết định mà khơng cần dựa
vào chun gia vì khơng may vị chun gia đó có thể tư vấn theo chiều hướng có lợi cho
họ.
Ước lượng giá bất động sản là một vấn đề hết sức quan trọng trong quy hoạch các thành
phố lớn tại Việt Nam. Hiện nay, ở Việt nam chúng ta chủ yếu ước lượng giá bất động sản
dựa trên các phương pháp truyền thống như phương pháp so sánh trực tiếp, chiết trừ, thu
nhập, thặng dư, hệ số điều chỉnh. Các phương pháp này chủ yếu nhờ sự phân tích và can
thiệp của nhân viên định giá nên rất khó tránh khỏi sai lầm do chủ quan hoặc khơng minh
bạch.
Ngồi các phương pháp truyền thống, trên thế giới đã và đang nghiên cứu và áp dụng rộng
rãi các phương pháp có sử dụng đến các mơ hình tốn học để xác định giá trị bất động sản.
Với một nền kinh tế giàu tiềm năng và phát triển nhất nước, Tp.HCM được xem như một
trong những thị trường năng động nhất về lĩnh vực bất động sản, thu hút sự chú ý và đầu
tư của rất nhiều doanh nghiệp trong và cả ngoài nước và được đánh giá là cao nhất trong
khu vực. Tiềm năng hơn cả là các quận trung tâm của thành phố, đã trở thành các vị trí
vàng cho đầu tư bất động sản.
Đối với khu vực thành phố, do dân cư đông đúc, việc sống trong căn hộ, chung cư trở nên
không còn xa lạ với chúng ta, trở thành một trong những loại hình đầu tư phổ biến bậc
nhất. Chính vì vậy, đối tượng mà nhóm hướng tới nghiên cứu là một mơ hình học máy

1


nhằm giúp người mua dự đốn tương đối chính xác giá trị của các các bất động sản loại
chung cư căn hộ.

II. Mục đích
Đề tài được thực hiện nhằm hai mục đích:
● Tìm hiểu về Machine Learning và các thuật tốn được sử dụng trong Machine
Learning

● Tìm hiểu về thị trường bất động sản, cách hoạt động của nó cũng như mục đích của
việc thẩm định giá bất động sản.

III. Ý nghĩa
Trước hết, đề tài TÌM HIỂU VỀ MACHINE LEARNING VÀ ỨNG DỤNG VÀO THẨM
ĐỊNH GIÁ CẢ là một đề tài thể hiện việc áp dụng những kiến thức đã được các thầy cô
của trường Đại học Công nghệ Thông tin đã nhiệt tình truyền thụ lại cho chúng em. Và
đặc biệt là sự theo dõi và quan tâm giúp đỡ của thầy Trần Anh Dũng trong suốt thời gian
nhóm chúng em thực hiện đề tài này.
Thứ hai, những kinh nghiệm mà nhóm có được trong q trình thực hiện đề tài sẽ là hành
trang giúp ích rất nhiều cho cơng việc sau này của mỗi thành viên trong nhóm.

IV. Nhiệm vụ
Huấn luyện một module nhằm giúp người dùng có thể dự đoán được một cách tương đối
giá bất động sản dựa trên những thuộc tính của nó.

2


B. Cơ sở lý thuyết
I. Một số thuật toán machine learning
1. Các thuật toán Hồi quy
1.1. Hồi quy đơn thức
1.1.1. Thuật toán
Là một trong những thuật toán đầu của Machine Learning, thuộc nhóm Supervised learning
( Học có giám sát ).
Hồi quy tuyến tính đơn thức là một mơ hình hồi quy gồm hai biến là biến độc lập và biến
phụ thuộc, nó liên quan đến các điểm mẫu trong khơng gian hai chiều sao cho từ một biến
độc lập ta có thể tìm ra một biến phụ thuộc tương ứng nhờ vào một hàm tuyến tính (một
đường thẳng), chính xác nhất có thể, dự đốn các giá trị dựa trên hàm tuyến tính để tìm ra

kết quả. Hàm dự đốn liên quan đến một yếu tố dự đốn duy nhất.
Mơ hình hồi quy mơ tả mối quan hệ giữa các biến bằng cách vẽ một đường thẳng một
đường thẳng để khít với bộ quan sát với bộ dữ liệu quan sát nhất có thể. Các mơ hình hồi
quy tuyến tính sử dụng một đường thẳng, trong khi các mơ hình hồi quy logistic và phi
tuyến tính sử dụng một đường cong. Hồi quy cho phép ước tính cách một biến phụ thuộc
thay đổi khi (các) biến độc lập thay đổi.
Hồi quy đơn thức đã biến nghĩa là ta đi tìm một đường thẳng(công thức) để fit nhất với tập
dữ liệu đã có.
Hồi quy tuyến tính đơn biến được sử dụng để ước tính mối quan hệ giữa hai biến định
lượng. Sử dụng hồi quy tuyến tính đơn biến khi bạn muốn biết:
-Mối quan hệ chặt chẽ như thế nào giữa hai biến số (ví dụ mối quan hệ giữa lượng mưa và
xói mịn đất).
-Giá trị của biến phụ thuộc tại một giá trị nhất định của biến độc lập (ví dụ: lượng đất xói
mịn ở một mức độ mưa nhất định).

3


Ví dụ:
Một nhà nghiên cứu về xã hội quan tâm đến mối quan hệ giữa thu nhập và hạnh phúc(thu
nhập bao nhiêu đó thì độ hạnh phúc của chúng ta như thế nào). Họ khảo sát 500 người có
thu nhập từ 15 nghìn USD/năm đến 75 nghìn USD/năm và yêu cầu họ xếp hạng mức độ
hạnh phúc của họ trên thang điểm từ 1 đến 10.
Biến độc lập (thu nhập) và biến phụ thuộc (hạnh phúc) của bạn đều là định lượng(biến độc
lập thu nhập quy định về biến phụ thuộc hạnh phúc), vì vậy ta có thể thực hiện phân tích
hồi quy để xem mối quan hệ tuyến tính giữa chúng
Nếu có nhiều hơn một biến độc lập, sử dụng hồi quy tuyến tính đa biến để thay thế thay vì
hồi quy tuyến tính đơn biển

Đi tìm mơ hình hồi quy tuyến tính đơn biến là đi tìm mơ hình có dạng theo cơng thức:


Trong đó:
Y là biến phụ thuộc
X1 là biến độc lập
B0 : hằng số
B1 : hệ số

4


Chẳng hạn như lương sẽ phụ thuộc vào số kinh nghiệm. Khi ta làm việc lâu, lương sẽ tăng
lên do kinh nghiệm này một nâng lên.
Chiếu từ số năm kinh nghiệm lên điểm dữ liệu rồi từ điểm dữ liệu chiều qua trục tung ta
thấy được số lương tương ứng

Vậy trong mối quan hệ trong biểu thức đâu là y và đâu là x

5


Trong trường hợp này Salary sẽ là y và Experience là x, số lương sẽ phụ thuộc vào vào số
năm kinh nghiệm. Experience là biến độc lập và Salary là biến phụ thuộc

Thuật tốn sẽ tìm vơ số các đường thẳng và nó tìm đến khi nào khoảng cách giữa các điểm
dữ liệu thật đến đường thẳng(đường thẳng dự đoán) là bé nhất.

6


Hằng số B0 là nơi mà đường thẳng dự đoán cắt trục tung, trục tưng ở đây là số lương.

Trong trường hợp này đường thẳng dự đoán cắt trục tung ở điểm khoanh đỏ ví dụ là
30k/năm.

7


Cịn b1 là hệ số của phương trình, ở đây là độ dốc của đường thẳng. Trong biểu đồ minh họa
bên dưới, thơng qua độ dốc ta có thể thấy rằng trong khoảng thời gian một năm (+1yr), đối
chiếu lên trục tung thơng qua phương trình ta tìm được khoảng tăng của Salary là +10k

Từ các điểm dữ liệu thật vẽ đường thẳng song song với trục tung về phía đường thẳng được
thuật toán tạo ra.

8


Khoảng cách từ điểm dữ liệu đến đường thẳng được gọi là phương sai.

9


Thuật toán sẽ đoản bảo sao cho tổng của (y-y^)2 sao cho là bé nhất.

10


1.1.2. Ứng dụng
Tìm hiểu thuật tốn trên bộ dữ liệu tương ứng.
Tập dữ liệu gồm 30 mẫu, cột đầu là số năm kinh nghiệm (Years Experience) và cột theo
sau là lương (Salary) dựa trên số năm kinh nghiệm tương ứng. Số năm kinh nghiệm là biến

độc lập, còn lương là biến phụ thuộc.

Nhìn vào tập dữ liệu ta nhận xét được là gì, số tăng kinh nghiệm tăng, đồng nghĩa với việc
kéo theo số lương tăng theo, hai giá trị này tăng theo chiều tuyến tính và tương quan với
nhau.

11


Thử trực quan hóa dữ liệu bằng thư viện matplotlib của python:

Dữ liệu tăng dần tuyến tính, theo chiều tăng dần số năm kinh nghiệm, mức lương sẽ tăng
theo.

12


Đầu tiên, cần phải import các thư viện cần sử dụng, ở đây ta cần dùng numpy, matplotlib,
pandas.

Đọc file dữ liệu vào, file dữ liệu ở đây là file “Salary_Data.csv”. Tách ra thành hai trường,
trường dữ liệu X và y, trong đó X là số năm kinh nghiệm và y số lương.

Tách mỗi phần dữ liệu ra làm 2 phần, nghĩa là tách X ra làm 2 và y ra làm 2, tổng cộng ta
sẽ có 4 phần dữ liệu: X_train, X_test, Y_train, Y_test. Trong đó, X_train và Y_train dùng
để huấn luyện dữ liệu còn X_test, Y_test dùng để kiểm tra kết quả đầu ra của dữ liệu.

13



Trực quan hóa dữ liệu bằng thư viện matplotlib của python:

Ở hình trên, thư viện matplotlib đã giúp chúng ta trực quan hóa mối quan hệ của thuộc tính
số năm kinh nghiệm và thuộc tính kết quả là mức lương. Tiếp theo ta sẽ tiến hành huấn
luyện model với dữ liệu trên.
Tiến hành training trên tập dữ liệu đã tách ra.

14


Sau đó dùng thư viện của matplotlib để trực quan hóa dữ liệu và xem tập training dữ liệu

Trực quan hóa tập dữ liệu X_test, Y_test để xem và đối chiếu kết quả

15


Hệ số và hằng số của phương trình

Vậy phương trình từ tập dữ liệu huấn luyện của dataset salary là:
Y = 26816 + 9346*X

Thử dự đoán lương của nhân viên có 13 năm kinh nghiệm:

16


1.2. Hồi quy đa biến:
1.2.1. Thuật tốn
Về cơ bản khơng có sự khác biệt giữa hồi quy tuyến tính 'giản đơn' và 'đa biến'. Cả hai đều

làm việc tuân theo ngun tắc OLS và thuật tốn để có được đường hồi quy tối ưu nhất
cũng tương tự. Trong trường hợp sau, phương trình hồi quy sẽ có một hình dạng như sau:
Y=B0+B1*X1+B2*X2+B3*X3.....
Trong đó:
Bi: Các hệ số khác nhau
Xi: Các biến độc lập khác nhau
1.2.2 Ứng dụng
Chúng ta sẽ thực hiện huấn luyện một model dự đoán giá nhà dựa trên mơ hình multi Linear
Regression.
Tập dữ liệu đầu vận dụng mỗi hàng là một cơng ty, mỗi cơng ty có 5 trường là chi phí
R&D, chi phí của bộ phận admin, marketing, quốc gia và cuối cùng là lợi nhuận sau khi đã
trừ hết chi phí. Bài tốn vận dụng đặt ra là nếu có chi phí R&D, admin, marketing của một
quốc gia và phải dự đoán được lợi nhuận từ quốc gia đó.

17


Đầu tiên chúng ta cần khai báo một số thư viện cần thiết:

Sau đó, ta sẽ import bộ dữ liệu có sẵn vào bằng hàm read_csv() của thư viện pandas

18


In ra xem thử bộ dữ liệu có đúng hay chưa

19


Tiền hành encode dữ liệu và xem thử encode đúng chưa:


Sau đó tách dữ liệu ra làm 2 phần test và train, sau đó tiến hành train, và đây là kết quả:

20


1.3. Hồi quy đa thức:
1.3.1. Thuật toán
Nếu giả sử ta có tập dữ liệu:

Nếu như ta dùng thuật tốn hồi quy đơn thức

Thì đường thẳng hồi quy đơn thức này sẽ khơng fit được hồn tồn tập dữ liệu.

21


×