Ứng dụng học máy xây dựng module giải bài toán dự đoán giá bất động sản
lượt xem 3
download
Bài báo "Ứng dụng học máy xây dựng module giải bài toán dự đoán giá bất động sản" đưa ra phương pháp tiếp cận bài toán dự đoán giá bất động sản, thông qua học máy, xây dựng mô đun tính toán, cực tiểu hàm lỗi. Mời các bạn cùng tham khảo chi tiết nội dung bài viết!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Ứng dụng học máy xây dựng module giải bài toán dự đoán giá bất động sản
- ỨNG DỤNG HỌC MÁY XÂY DỰNG MODULE GIẢI BÀI TOÁN DỰ ĐOÁN GIÁ BẤT ĐỘNG SẢN Đỗ Thùy Dương Trường Đại học Hà Nội Tóm tắt – Bài báo cáo này đưa ra phương pháp tiếp cận bài toán dự đoán giá bất động sản, thông qua học máy, xây dựng mô đun tính toán, cực tiểu hàm lỗi. Từ khóa – Học máy, Học có giám sát, giá bất động sản, scikit-learn, python 1. Định nghĩa Học Máy: Những năm gần đây, AI - Artificial Intelligence (Trí Tuệ Nhân Tạo), và cụ thể hơn là Machine Learning (Học Máy hoặc Máy Học) nổi lên như một bằng chứng của cuộc cách mạng công nghiệp lần thứ tư (1 - động cơ hơi nước, 2 - năng lượng điện, 3 - công nghệ thông tin). Trí Tuệ Nhân Tạo đang len lỏi vào mọi lĩnh vực trong đời sống mà có thể chúng ta không nhận ra. Xe tự hành của Google và Tesla, hệ thống tự tag khuôn mặt trong ảnh của Facebook, trợ lý ảo Siri của Apple, hệ thống gợi ý sản phẩm của Amazon, hệ thống gợi ý phim của Netflix, máy chơi cờ vây AlphaGo của Google DeepMind, …, chỉ là một vài trong vô vàn những ứng dụng của AI/Machine Learning. Machine Learning là một lĩnh vực nhỏ của Khoa Học Máy Tính, nó có khả năng tự học hỏi dựa trên dữ liệu đưa vào mà không cần phải được lập trình cụ thể. Hình dưới minh họa sự khác nhau giữa Lập trình truyền thống và Học máy. 2. Phân loại Học máy: Có hai cách phân loại. Cách một là dựa trên phương thức học, cách hai dựa trên chức năng. Trong bài viết này sẽ tập trung cách phân loại thứ nhất. Với cách phân loại này, Học máy được chia làm ba nhóm chính: Học có giám sát, học không giám sát và học bán giám sát. 28
- 2.1. Học có giám sát (Supervised Learning): là thuật toán dự đoán đầu ra của một dữ liệu mới dựa trên các cặp (input, outcome) đã biết từ trước. Cặp dữ liệu này còn được gọi là (data, label), tức (dữ liệu, nhãn). Supervised learning là nhóm phổ biến nhất trong các thuật toán Machine Learning. Một cách toán học, Supervised learning là khi chúng ra có một tập hợp biến đầu vào X={x1,x2,…,xN} và một tập hợp nhãn tương ứng Y={y1,y2,…,yN}, trong đó xi,yi là các vector. Các cặp dữ liệu biết trước (xi,yi)∈X×Y được gọi là tập training data (dữ liệu huấn luyện). Từ tập traing data này, chúng ta cần tạo ra một hàm số ánh xạ mỗi phần tử từ tập X sang một phần tử (xấp xỉ) tương ứng của tập Y: Yi ≈ f(xi), ∀i=1,2,…,N Mục đích là xấp xỉ hàm số f thật tốt để khi có một dữ liệu x mới, chúng ta có thể tính được nhãn tương ứng của nó y=f(x). Thuật toán supervised learning còn được tiếp tục chia nhỏ ra thành hai loại chính: Classification (Phân loại) Một bài toán được gọi là classification nếu các label của input data được chia thành một số hữu hạn nhóm. Ví dụ: Gmail xác định xem một email có phải là spam hay không; các hãng tín dụng xác định xem một khách hàng có khả năng thanh toán nợ hay không. Ba ví dụ phía trên được chia vào loại này. Regression (Hồi quy) Nếu label không được chia thành các nhóm mà là một giá trị thực cụ thể. Ví dụ: một căn nhà rộng x m2, có y phòng ngủ và cách trung tâm thành phố z km sẽ có giá là bao nhiêu? 2.2. Unsupervised Learning (Học không giám sát) Trong thuật toán này, chúng ta không biết được outcome hay nhãn mà chỉ có dữ liệu đầu vào. Thuật toán unsupervised learning sẽ dựa vào cấu trúc của dữ liệu để thực hiện một công việc nào đó, ví dụ như phân nhóm (clustering) hoặc giảm số chiều của dữ liệu (dimension reduction) để thuận tiện trong việc lưu trữ và tính toán. Một cách toán học, Unsupervised learning là khi chúng ta chỉ có dữ liệu vào X mà không biết nhãn Y tương ứng. Những thuật toán loại này được gọi là Unsupervised learning vì không giống như Supervised learning, chúng ta không biết câu trả lời chính xác cho mỗi dữ liệu đầu vào. 29
- Cụm không giám sát được đặt tên theo nghĩa này. Các bài toán Unsupervised learning được tiếp tục chia nhỏ thành hai loại: 2.3. Reinforcement Learning (Học Củng Cố) Reinforcement learning là các bài toán giúp cho một hệ thống tự động xác định hành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất (maximizing the performance). Hiện tại, Reinforcement learning chủ yếu được áp dụng vào Lý Thuyết Trò Chơi (Game Theory), các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất. 3. Xây dựng module giải quyết bài toán dự đoán giá bất động sản. 3.1. Hướng giải quyết: Bài toán này là bài toán học có giám sát. Tôi chọn model hồi quy tuyến tính để tính toán giá nhà đất. Bản chất của hồi quy chính là tìm ra mối quan hệ nào đó giữa biến phụ thuộc y (dependence) (giá nhà đất) và một hay nhiều biến độc lập x (independence) (các thuộc tính của ngôi nhà). y = θ3*x3 + θ2*x2+θ1*x1+θ0. y là giá trị căn hộ x1, x2, x3 là các biến tương ứng với số phòng ngủ, diện tích, khoảng cách tới trung tâm. θ0, θ1, θ2, θ3 là các trọng số (cần được tùy chỉnh để tìm ra giá trị y khớp nhất với dữ liệu huấn luyện). 3.2. Yêu cầu hệ thống: Hệ thống cần được cài đặt các gói sau: - Python (phiên bản hiện tại 3.8.2) - Scikit learn: (viết tắt là sklearn) là một thư viện mã nguồn mở dành cho Machine Learning và cũng được sử dụng trong Data Science. Đây là công cụ rất mạnh mẽ và thông dụng với cộng đồng Python, được thiết kế trên nền NumPy và SciPy. Scikit-learn chứa hầu hết các thuật toán Machine Learning hiện đại nhất, đi kèm với documentations, luôn được cập nhật. Công cụ này cung cấp việc sử dụng API và tìm kiếm ngẫu nhiên dễ dàng. Nhưng lợi thế chính trong việc sử dụng Scikit-Learn, là tốc độ trong khi thực hiện các đánh giá khác nhau trong bộ dataset. 30
- - Các gói hỗ trợ: pip, wheel, pandas 3.3. Các bước thực hiện: 3.3.1. Đọc dữ liệu đầu vào: Dữ liệu được lưu trong file home_data.cvs, trong đó lưu rất nhiều thuộc tính của nhà đất và giá của chúng, một số thuộc tính đặc trưng như: Num_bed: số phòng ngủ Year_built: năm xây dựng Longtitude, latitude: Kinh độ, vĩ độ của nhà đất 31
- Num_room: số phòng Num_bath: số phòng tắm Living_area: diện tích nhà đất import os import pandas as pd def getData(): # Get home data from CSV file dataFile = None if os.path.exists('C:/Python382/AddedByMe/regression/home_data.csv'): print("-- home_data.csv found locally") dataFile = pd.read_csv('C:/Python382/AddedByMe/regression/home_data.csv', skipfooter=1) return dataFile Hàm trên sử dụng thư viện Pandas để load dữ liệu từ file CSV vào dưới dạng DataFrame 3.3.2. Lựa chọn thuộc tính và phân chia tập dữ liệu mẫu Tư tưởng của chúng ta là sẽ phân chia tập dữ liệu mẫu thành hai tập con là tập dữ liệu huấn luyện và tập dữ liệu kiểm tra. Việc này sử dụng tư tưởng của kiểm tra chéo (cross validation). Ngoài ra, trong tập dữ liệu mẫu có rất nhiều thuộc tính có ý nghĩa và có thể khai thác thêm, ví dụ như từ kinh độ và vĩ độ chúng ta có thể tìm thêm các thuộc tính như khoảng cách trung tâm thành phố, số bệnh viện lân cận... Tuy nhiên để cho đơn giản, chúng ta lựa chọn một cách chủ quan một số thuộc tính mà mình cho rằng có thể có ảnh hưởng đến giá của bất động sản như số phòng ngủ, số phòng tắm, năm xây dựng và diện tích... if __name__ == "__main__": data = getData() if data is not None: # Selection few attributes 32
- attributes = list( [ 'num_bed', 'year_built', 'num_room', 'num_bath', 'living_area', ] ) # Vector price of house Y = data['askprice'] # print np.array(Y) # Vector attributes of house X = data[attributes] # Split data to training test and testing test X_train, X_test, Y_train, Y_test = train_test_split(np.array(X), np.array(Y), test_size=0.2) Đoạn code bên trên phân chia tập dữ liệu thành 80% cho training và 20% cho testing. Việc cần làm tiếp theo là viết một hàm chạy Phương pháp hồi quy tuyến tính. 3.3.3. Áp dụng mô hình hồi quy tuyến tính Về cơ bản, việc huấn luyện theo mô hình tuyến tính bản chất là đi tìm các giá trị m và b sao cho cực tiểu hóa hàm lỗi sau: Chúng ta sử dụng gói thư viện Scikit-learn của Python để làm việc này như sau: def linearRegressionModel(X_train, Y_train, X_test, Y_test): linear = linear_model.LinearRegression() # Training process linear.fit(X_train, Y_train) # Evaluating the model score_trained = linear.score(X_test, Y_test) return score_trained Hàm trên chạy mô hình hồi quy tuyến tính trên tập dữ liệu huấn luyện gồm X_train đại diện cho tập các thuộc tính của bất động sản và Y_train đại diện cho giá của nhà. Hàm trả về một giá trị đánh giá điểm của mô hình khi chạy trên tập kiểm tra. Có nghĩa là điểm càng tiến gần đến 1 thì mô hình của chúng ta càng tốt. 3.3.4. Áp dụng mô hình hồi quy LASSO dạng chuẩn L1 Các dạng chuẩn (Regularization) thường được đưa vào các mô hình để nhằm giảm thiểu hiện tượng over-fitting. Over-fitting xảy ra khi một mô hình của chúng ta lựa chọn 33
- đang cố gắng giảm thiểu tối đa lỗi trên tập dữ liệu huấn luyện nhưng nó lại làm cho lỗi trên tập dữ liệu kiểm tra tăng lên. Và LASSO ra đời để hạn chế điều đó. Nó bổ sung thêm vào hàm lỗi của mô hình tuyến tính một đại lượng phạt lỗi lamda. Chúng ta viết một hàm tính toán điểm của phương pháp LASSO như sau: def lassoRegressionModel(X_train, Y_train, X_test, Y_test): lasso_linear = linear_model.Lasso(alpha=1.0) # Training process lasso_linear.fit(X_train, Y_train) # Evaluating the model score_trained = lasso_linear.score(X_test, Y_test) return score_trained 3.3.5. Đánh giá hai mô hình hồi quy vừa áp dụng Trong hàm main chúng ta chạy và so sánh hai hàm như sau: # Linear Regression Model linearScore = linearRegressionModel(X_train, Y_train, X_test, Y_test) print ('Linear Score = ' , linearScore) # LASSO Regression Model lassoScore = lassoRegressionModel(X_train, Y_train, X_test, Y_test) print ('Lasso Score = ', lassoScore) Kết quả chạy như sau: 4. Kết luận: Hồi quy là một phương pháp khá đơn giản để áp dụng. Song kết quả trên (~ 0.6) cần được cải thiện hơn nữa bằng cách kết hợp với các kĩ thuật khác. Trong các bài nghiên cứu tiếp theo, các kĩ thuật nâng cao sẽ được nghiên cứu tính toán để cải thiện thuật toán. TÀI LIỆU THAM KHẢO [1] Vũ Hữu Tiệp, Machine Learning cơ bản, 02/2018. [2] NguyenDuong, Linear Regression – Hồi quy tuyến tính trong Machine Learning, 34
- [3] Jason Brownlee, Metrics to evaluate machine learning algoriths in Python, [Online], https://machinelearningmastery.com/metrics-evaluate-machine- learningalgorithms-python/, 05/2016 [4] Phạm Văn Toàn, Mô hình hồi quy ứng dụng trong bài toán dự đoán giá bất động sản - Machine Learning (phần 2), [Online] https://viblo.asia/p/mo-hinh-hoi-quy- ung-dung-trong-bai-toan-du-doan-gia-bat-dong-san-machine-learning-phan-2- xQMkJLrzGam [5] Alvira Swalin, Choosing the right metric for evaluation Machine Learning Models – Part 1, [Online], https://medium.com/usf-msds/choosing-the-right-metric- formachine-learning-models-part-1-a99d7d7414e4, 07/2018. [6] Nguyễn Phúc Lương, Machine Learning – Linear Regression with one variable, [Online] https://viblo.asia/p/machine-learning-linear-regression-with-one- variable-yMnKMqdgK7P, 05/2017 [7] Nguyễn Thành Nam, Giới thiệu về kỹ thuật xuống dốc, [Online], https://www.vithon.org/2018/04/may-hoc-pho-thong-2.html, 04/2018. [8] Christian Pascual, Understanding regression error metrics, [Online], https://www.dataquest.io/blog/understanding-regression-error-metrics, 09/2018. 35
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Tài liệu hướng dẫn thực hành môn trắc địa đại cương
24 p | 209 | 32
-
150 Bài Toán Tin Đại học Sư Phạm Hà Nội 2004 – 2006 phần 2
15 p | 110 | 10
-
Xây dựng hệ thống tái sinh vitro cây ngô Zea mays L. và bước đầu ứng dụng trong chuyển nạp Gen gạo protein giàu sắt nhờ vi khuẩn Agrobacterium tumefaciens
7 p | 125 | 9
-
Ứng dụng WebGIS xây dựng hệ thống thông tin quản lý đa dạng sinh học trực tuyến (thử nghiệm) trên địa bàn thành phố Đà Nẵng
7 p | 59 | 6
-
Ứng dụng một số thuật toán máy học và ảnh Landsat 8 ước tính trữ lượng carbon trên mặt đất rừng tự nhiên lá rộng thường xanh tại tỉnh Bình Phước
16 p | 10 | 4
-
Nghiên cứu ứng dụng trí tuệ nhân tạo trong giám sát và điều khiển hệ thống thủy lợi
3 p | 18 | 4
-
Phương pháp xác định hiệu quả tổ chức bộ máy và ứng dụng của nó
3 p | 53 | 4
-
Nghiên cứu ứng dụng kỹ thuật học máy kết hợp hệ thống thông tin địa lý để xây dựng bản đồ nhạy cảm sạt lở đất
12 p | 21 | 3
-
Ứng dụng GPS động và máy toàn đạc điện tử xây dựng lưới khống chế phục vụ lập bản đồ trích đo địa chính tại viện nghiên cứu và phát triển, trường Đại học Nông Lâm, Đại học Huế
10 p | 49 | 3
-
Ứng dụng phương pháp Random Forest dự báo vị trí có nguy cơ xảy ra lũ quét cho khu vực tỉnh Lào Cai
13 p | 60 | 3
-
Phát triển hệ thống trắc nghiệm thích ứng trên máy tính: Nghiên cứu thử nghiệm đánh giá năng lực toán học của học sinh lớp 10
15 p | 75 | 3
-
Ứng dụng giải thuật xếp hạng theo trọng số trong việc cân bằng dây chuyền may công nghiệp
17 p | 142 | 3
-
Xây dựng phần mềm giản đồ nhiệt động học và ứng dụng trong giảng dạy
5 p | 43 | 2
-
Nghiên cứu hoạt hóa bùn thải từ nhà máy xử lý nước thải sinh hoạt ứng dụng làm vật liệu hấp phụ Ion kim loại nặng Cr6+ , ZN2+ , CU2+ nước thải dệt nhuộm
8 p | 33 | 2
-
Nghiên cứu ứng dụng kỹ thuật máy học trong xác định khả năng xảy ra rò rỉ nước trên mạng lưới cấp nước Nhà Bè, thành phố Hồ Chí Minh
3 p | 9 | 2
-
Xây dựng đồ thị đáp ứng liều hấp thụ đối với bức xạ Gamma và tia X ứng dụng trong định liều sinh học
11 p | 39 | 0
-
Xây dựng chương trình ứng dụng cho hệ thống cảnh báo nguy cơ ngập lụt các vùng ven biển: Nghiên cứu thí điểm tại tỉnh Quảng Nam
9 p | 3 | 0
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn