Lời mở đầuTrong lĩnh vực Phân tích khai phá dữ liệuData ExploratoryAnalysis và Máy họcMachine Learning, mô hình LinearRegressionHồi qui tuyến tính là một công cụ cực kỳ phổ biến vàmạnh m
Giới thiệu
Nhu cầu dự đoán giá nhà ngày càng tăng mạnh do sự phát triển nhanh chóng của thị trường bất động sản, dẫn đến nhu cầu cao về các công cụ hỗ trợ dự đoán chính xác.
Dự đoán giá nhà chính xác là yếu tố quan trọng trong thị trường bất động sản hiện đại, giúp người mua đầu tư thông minh và người bán định giá hiệu quả.
Dự đoán giá nhà chính xác hỗ trợ nhà đầu tư, môi giới đưa ra quyết định mua bán thông minh và giúp người mua nhà đánh giá giá bán hợp lý, góp phần tạo thị trường bất động sản minh bạch, đáng tin cậy.
Công cụ và phương pháp dự đoán giá nhà ngày càng quan trọng, đáp ứng nhu cầu dự đoán chính xác của cá nhân và tổ chức, cung cấp thông tin đáng tin cậy hỗ trợ ra quyết định.
1.1.2 Bài toán dự đoán giá nhà
Hệ thống dự đoán giá nhà sử dụng dữ liệu về diện tích, vị trí, tiện ích, năm xây dựng và các yếu tố khác để phân tích và dự đoán giá trị bất động sản.
1.1.3 Các ứng dụng hiện nay
Dự đoán giá nhà giúp người dân mua bán bất động sản minh bạch, chính xác trong bối cảnh giá cả leo thang Ứng dụng này thu hút nhiều nhà đầu tư và có nhiều ứng dụng thực tiễn.
Hệ thống định giá bất động sản sử dụng hồi quy tuyến tính để dự đoán giá nhà dựa trên diện tích, vị trí, tiện ích và các yếu tố khác, từ đó thể hiện mối quan hệ tuyến tính giữa các biến này.
Hệ thống đầu tư bất động sản giúp ước tính lợi nhuận dự án bằng cách dự đoán giá trị tương lai nhà ở, dựa trên yếu tố kinh tế và thị trường.
Hệ thống tư vấn mua bán nhà dự đoán giá nhà, hỗ trợ khách hàng định giá bất động sản và đưa ra lời khuyên mua bán tối ưu.
Mô hình hồi quy tuyến tính (linear regression) hữu ích trong định giá cho vay nhà bằng cách đánh giá khả năng trả nợ và xác định giá trị tài sản thế chấp Tuy nhiên, phương pháp này có hạn chế khi gặp các mối quan hệ phi tuyến tính phức tạp giữa các biến.
Hệ thống dự đoán xu hướng thị trường bất động sản hỗ trợ hoạch định chính sách hiệu quả, nhưng cần cập nhật thường xuyên để thích ứng với sự biến động phức tạp của thị trường.
1.1.4 Những khó khăn của bài toán
Linear regression hạn chế trong việc biểu diễn mối quan hệ phi tuyến tính giữa biến đầu vào và giá nhà Mô hình này đòi hỏi biến đầu vào độc lập và phân phối chuẩn; sự tương quan giữa các biến hoặc phân phối không chuẩn ảnh hưởng tiêu cực đến hiệu quả dự đoán.
Dữ liệu ngoại lai và nhiễu ảnh hưởng tiêu cực đến độ chính xác của mô hình hồi quy tuyến tính Hồi quy tuyến tính rất nhạy cảm với nhiễu, khiến dữ liệu ngoại lai làm sai lệch kết quả dự đoán.
Hồi quy tuyến tính dễ bị overfitting (mô hình quá phức tạp, hoạt động tốt trên dữ liệu huấn luyện nhưng kém trên dữ liệu mới) hoặc underfitting (mô hình quá đơn giản, không nắm bắt được mẫu dữ liệu) Việc điều chỉnh chính xác mô hình là rất quan trọng để tránh hai vấn đề này.
Mặc dù gặp nhiều thách thức, mô hình này vẫn mang lại hiệu quả và hỗ trợ ra quyết định tốt hơn Dù còn hạn chế, nó đã đóng góp tích cực cho con người và kinh tế Các nghiên cứu tập trung giải quyết bài toán từ trường hợp đơn giản, rồi dần cải tiến thuật toán để đạt độ chính xác cao nhất.
Giới thiệu
Linear Regression là thuật toán học có giám sát trong Machine Learning, ước lượng mối quan hệ tuyến tính giữa biến độc lập và biến phụ thuộc để dự báo giá trị biến output từ biến đầu vào.
Hồi quy tuyến tính (Linear Regression) ra đời từ nhu cầu dự đoán mối quan hệ giữa các biến dựa trên dữ liệu sẵn có, đáp ứng mong muốn lâu dài của con người về việc ước tính và dự báo giá trị.
Các nhà toán học và thống kê đã phát triển mô hình toán học thể hiện mối quan hệ tuyến tính giữa các biến.
Nghiên cứu lý thuyết về phương pháp thống kê và mô hình hóa dữ liệu đã thúc đẩy phát triển hồi quy tuyến tính (Linear Regression) và các phương pháp tương tự.
2 Một số áp dụng trong thực tế:
Dự báo giá cả: dự đoán giá nhà, giá cổ phiếu, giá nhiên liệu dựa trên các yếu tố như vị trí, kích thước, chất lượng, lượng cung cầu, …
Dự báo điểm số: Dự đoán điểm số của học sinh dựa trên thời gian học, sự nổ lực, kỹ năng, và trình độ của giáo viên, …
Dự báo sản phẩm: Dự đoán đầu ra sản xuất dựa trên thời gian, công suất, nguyên vật liệu, lao động, ….
Phân tích chuỗi thời gian: dự đoán xu hướng và chu kỳ của các chuỗi dữ liệu như bất động sản, thời tiết, xu hướng sản xuất, …
Linear Regression liên tục được cải tiến và phát triển nhờ nghiên cứu và ứng dụng thực tiễn, tạo ra các phương pháp và biến thể mới để giải quyết dữ liệu phức tạp hơn.
Mô hình hồi quy tuyến tính (Linear Regression) tìm các hệ số tối ưu w1, w2, w3 và w0 (bias hay hệ số chặn) để mô tả mối quan hệ tuyến tính y ≈ f(x) giữa biến phụ thuộc y và các biến độc lập x1, x2, x3.
Phương trình (1) được viết lại dưới dạng wT x̄ = y, với w là vector cột hệ số cần tối ưu, x̄ = [1, x₁, x₂, x₃] là vector hàng dữ liệu mở rộng (thêm số 1 để đơn giản hóa tính toán), và y là giá trị dự đoán.
Giá trị sai số càng nhỏ càng tốt
Công thức sử dụng hệ số 1/2 nhằm đơn giản hóa tính toán đạo hàm Tuy nhiên, bình phương e (e²) cần thiết để tránh giá trị âm của e = y - ŷ ảnh hưởng đến việc xác định giá trị nhỏ nhất của sai lệch.
Bài viết trình bày 3 hàm mất mát, áp dụng cho tất cả các cặp dữ liệu đầu vào (xi, yi) với i từ 1 đến N (N là số lượng dữ liệu) Mục tiêu là tìm trọng số w tối ưu hóa, giúp hàm mất mát đạt giá trị nhỏ nhất.
làm hàm mất mát đạt giá trị nhỏ nhất gọi là điểm tối ưu.
Để đơn giản hóa phép toán trong phương trình hàm mất mát (2), ta biểu diễn output của dữ liệu huấn luyện bằng vector cột y = [y1; y2; …; y2N] và dữ liệu đầu vào mở rộng bằng ma trận x = [x1; x2; …; xN] Hàm mất mát L(w) được viết lại dưới dạng ma trận gọn hơn.
Hàm mất mát được đơn giản hóa thành phương trình (3), trong đó ||z||² biểu diễn chuẩn Euclid (hay khoảng cách Euclid), là tổng bình phương các phần tử của vector z.
4 Nghiệm cho bài toán Linear Regression Đạo hàm theowcủa hàm mất mát là:
� = � � (� − �) Phương trình đạo hàm bằng 0 tương đương với
�� = � � � ≜ � (4) (Ký hiệu� � � ≜ �nghĩa là đặt� � �bằng )b
Nếu ma trận vuông� ≜ � � � khả nghịch (non-singular hay invertible) thì phương trình(4)có nghiệm duy nhất:w = A b -1
Với khái niệm nghịch đảo, điểm tối ưu của bài toán Linear Regression có dạng:
2.1.3 Ví dụ về bài toán Linear Regression bằng Python
Ta sẽ so sánh nghiệm của bài toán khi giải theo phương trình
(5) và tìm được nghiệm khi dùng thư viện scikit-learn của Python.
Ta sẽ dùng bảng dữ liệu cân nặng của hình 2.1 dưới đây.
Hình 2.1 Bảng dữ liệu về cân nặng và chiều cao
Mô hình hồi quy tuyến tính (Linear Regression) được áp dụng để dự đoán cân nặng dựa trên chiều cao Bộ dữ liệu chiều cao 155cm và 160cm được dùng để kiểm thử mô hình, còn lại dùng để huấn luyện.
Trước tiên ta sẽ dùng hai thư viện numpy và matplotlib cho việc vẽ hình.
Ta cho đầu vào dữ liệu và vẽ đồ thị biểu diễn
Hình 2.3 Thêm dữ liệu đầu vào
Hình 2.4 Đồ thị biểu diễn phân bố dữ liệu
Dữ liệu hình 2.4 được sắp xếp theo gần như một đường thẳng nên mô hình Linear Regression khả năng cao sẽ cho kết quả tốt.
Ta có công thức: Cân nặng = w_1* (chiều cao) + w_0
Dựa vào công thức (5) để tính toán các hệ số w_1 và w_0 để tính bằng numpy.linalg.pinv(A)
Hình 2.5 Tính hệ số bằng numpy.linalg.pinv
Hình 2.6 Phương trình tuyến tính sau khi huấn luyện
Mô hình hồi quy tuyến tính (Linear Regression) thể hiện hiệu quả cao trên tập dữ liệu huấn luyện, với các điểm dữ liệu dự đoán sát với đường hồi quy Mô hình này sẽ được dùng để dự đoán cân nặng của người có chiều cao 155cm và 160cm, những dữ liệu chưa được sử dụng trong quá trình huấn luyện.
Ta sẽ sử dụng thư viện scikit-learn của Python để tìm nghiệm.
Hình 2 7 Thư viện scikit-learn
Chúng ta nhận được hai kết quả hình 2 8 thu được từ hình 2.7 như nhau
Hình 2.8 Kết quả thu được sau khi đưa vào dự đoán
Các bước tiền xử lý dữ liệu
3.1.1 Khám phá cấu trúc dữ liệu
Phân tích khám phá dữ liệu là bước đầu tiên, không thể bỏ qua, để hiểu cấu trúc dữ liệu và đảm bảo mô hình hoạt động hiệu quả Bỏ qua bước này sẽ dẫn đến lỗi mô hình hoặc kết quả không như mong muốn.
Chia việc phân tích khám phá thành ba phần:
Kiểm tra cấu trúc của bộ dữ liệu, các thống kê, các giá trị thiếu, các bản sao, các giá trị duy nhất của các biến phân loại.
Hiểu ý nghĩa và phân phối của các biến.
Nghiên cứu mối quan hệ giữa các biến. Để phân tích cách bộ dữ liệu được tổ chức, có các phương pháp Pandas sau:
- Thể hiện 5 dòng đầu tiên của tập dữ liệu
- Thể hiện cấu trúc dữ liệu của tập dữ liệu
- Thể hiện tổng hợp số lượng cột dòng dữ liệu bị mất mát
- Thể hiện giá các dữ liệu bị trùng lắp
- Thể hiện chi tiết kiểu dữ liệu của từng cột đặc trưng
3.1.2 Xử lí dữ liệu thiếu, mất mát
Bước đầu tiên là kiểm tra dữ liệu thiếu trong mỗi cột Nếu có giá trị thiếu (NaN), ta có thể loại bỏ hàng/cột chứa chúng, nhưng điều này gây mất mát dữ liệu nếu số lượng lớn Vì vậy, các phương pháp xử lý khác sẽ được đề cập tiếp theo.
Xử lý dữ liệu thiếu (null) có thể thực hiện bằng cách loại bỏ các quan sát hoặc biến chứa giá trị null, nhưng phương pháp này tiềm ẩn nguy cơ mất mát thông tin đáng kể.
Xử lý dữ liệu thiếu (null) hiệu quả bằng cách thay thế bằng trung bình, trung vị, mốt hoặc giá trị cố định giúp giữ nguyên bộ dữ liệu và hạn chế mất mát thông tin, đặc biệt hữu ích cho các biến số.
Để xử lý giá trị thiếu trong biến số, phương pháp phổ biến nhất là sử dụng giá trị trung bình hoặc trung vị của cột.
df['column_name'].fillna(df['column_name'].mean())
df['column_name'].fillna(df['column_name'].median()) 3.1.3 Xử lí dữ liệu trùng lắp và ngoại lệ
Tiền xử lý dữ liệu chất lượng cao đòi hỏi xử lý dữ liệu trùng lặp và ngoại lệ hiệu quả Một số phương pháp phổ biến được sử dụng để đạt được điều này sẽ được trình bày.
Xử lí dữ liệu Trùng Lặp:
Xác định dữ liệu trùng lặp: Sử dụng phương pháp như df.duplicated() để xác định các quan sát trùng lặp trong tập dữ liệu.
Hàm `drop_duplicates()` trong Pandas giúp loại bỏ các hàng dữ liệu trùng lặp trong DataFrame, trả về một DataFrame mới không chứa dữ liệu trùng.
Xử lí dữ liệu Ngoại Lệ:
Xác định và đánh dấu ngoại lệ: Sử dụng các phép đo như z- score hoặc IQR để xác định các quan sát ngoại lệ trong dữ liệu.
Loại bỏ ngoại lệ trong dữ liệu giúp làm sạch bộ dữ liệu, loại bỏ nhiễu và đảm bảo phân tích phản ánh xu hướng chính xác Việc này chỉ nên áp dụng khi ngoại lệ là giá trị nhiễu không đại diện cho xu hướng tổng thể.
Xử lý ngoại lệ bằng cách thay thế chúng bằng giá trị cận trên hoặc cận dưới, hoặc cắt bớt ở mức giới hạn nhất định thay vì loại bỏ hoàn toàn Chia dữ liệu để huấn luyện mô hình hiệu quả hơn.
Chia tập dữ liệu thành tập huấn luyện (70%) và tập kiểm định (30%) là bước cốt yếu trong xây dựng mô hình máy học Tỷ lệ này có thể điều chỉnh, tăng phần trăm tập huấn luyện khi lượng dữ liệu lớn hơn.
Hình 3.1 Chia dữ liệu với scikit-learn
Hàm `train_test_split` chia dữ liệu thành tập huấn luyện (70%) và tập kiểm tra (30%) dựa trên các đặc trưng (x) và biến mục tiêu (y) `test_size=0.30` và `random_state` đảm bảo phân chia ngẫu nhiên nhưng nhất quán.
Dữ liệu được chia thành bốn biến: x_train, x_test, y_train và y_test x_train và y_train dùng để huấn luyện mô hình, còn x_test và y_test dùng để đánh giá mô hình.
Bài viết này kiểm tra việc phân chia dữ liệu bằng cách in ra kích thước của tập huấn luyện (x_train), tập kiểm tra (x_test), nhãn tập huấn luyện (y_train) và nhãn tập kiểm tra (y_test) Việc xác nhận kích thước đảm bảo quá trình phân chia dữ liệu được thực hiện chính xác.
3.1.5 Feature Scaling cho dữ liệu
Scaling features là bước tiền xử lý quan trọng cho nhiều mô hình máy học (Linear Regression, Logistic Regression, KNN, SVM, Neural Networks), giúp chuẩn hóa phạm vi giá trị của biến đặc trưng mà không làm thay đổi phân phối dữ liệu Phương pháp phổ biến là Normalization (Min-Max Scaling).
Normalization, còn được gọi là Min-Max Scaling, chuyển đổi giá trị của một biến thành một phạm vi giữa 0 và 1.
Phương pháp chuẩn hóa dữ liệu này thực hiện phép trừ giá trị nhỏ nhất khỏi từng giá trị biến, rồi chia kết quả cho phạm vi giá trị của biến đó.
Điều này có thể được thực hiện bằng cách sử dụng MinMaxScaler từ scikit-learn.
Input và Output của mô hình
1 PRT_ID: Mã ngôi nhà
2 AREA: Khu vực nhà ở Chennai
3 INT_SQFT: Diện tích mặt sàn
5 DIST_MAINROAD: Khoảng cách từ nhà đến đường chính
6 N_BEDROOM: Số lượng phòng ngủ
7 N_BATHROOM: Số lượng phòng tắm
8 N_ROOM: Tổng số lượng phòng
9 SALE_COND: Điều kiện bán hàng
10 PARK_FACIL: Có chỗ đậu xe
11 DATE_BUILD: Ngày xây dựng ngôi nhà
12 BUILDTYPE: Mục đích xây dựng ngôi nhà
13 UTILITY_AVAIL: Cơ sở vật chất sẵn có
14 STREET: Loại đường gần nhà như thế nào
15 MZZONE: Nhà ở thuộc vùng nào(RL, RH, RM, C, A)
16 QS_ROOMS: Điểm số chất lượng phòng
17 QS_BATHROOM: Điểm số chất lượng phòng tắm
18 QS_BEDROOM: Điểm số chất lượng phòng ngủ
19 QS_OVERALL: Điểm số chất lượng tổng quát
20 REG_FEE: Phí đăng ký sau bán nhà
21 COMMIS: Phí hoa hồng sau khi bán nhà
22 SALES_PRICE: Giá tiền khi bán nhà
Giá nhà dự đoán qua tập dữ liệu đầu vào được huấn luyện bằng mô hình Linear Regression.
Đề xuất mô hình sử dụng
Mô hình hồi quy tuyến tính (Linear Regression) là một trong những mô hình AI đơn giản và phổ biến nhất, hiệu quả trong việc giải quyết các bài toán dự đoán và phân tích dữ liệu.
Linear Regression dự đoán giá trị đầu ra liên tục (ví dụ: giá cổ phiếu, doanh số) dựa trên mối quan hệ tuyến tính giữa các biến đầu vào và biến đầu ra.
Linear Regression là mô hình học máy đơn giản, dễ hiểu và dễ triển khai, lý tưởng cho các vấn đề đơn giản hoặc khi cần giải pháp nhanh chóng, dễ giải thích.
Mô hình hồi quy tuyến tính (Linear Regression) cho phép hiểu rõ mối quan hệ tuyến tính giữa các biến đầu vào và biến đầu ra, đồng thời định lượng mức độ ảnh hưởng của từng biến độc lập đến biến phụ thuộc.
Linear Regression sở hữu cấu trúc đơn giản, dẫn đến thời gian huấn luyện nhanh chóng, đặc biệt hiệu quả với tập dữ liệu lớn.
Linear Regression là công cụ dự đoán giá trị liên tục mạnh mẽ và linh hoạt trong học máy, cho phép dự đoán chính xác và phân tích dữ liệu hiệu quả.
Hãy xem xét sử dụng Linear Regression cho bài toán của bạn nếu bạn đang tìm kiếm một giải pháp đơn giản và hiệu quả.
Một số mô hình đề xuất khác để thực hiện mô hình AI dự đoán :
Hồi quy cây quyết định phù hợp với dữ liệu phi tuyến tính và tương tác biến phức tạp, xử lý được cả biến phân loại và liên tục, thường không cần chuẩn hóa.
Random Forest Regression is an ensemble method that combines multiple decision trees to improve prediction accuracy It's particularly effective for high-interaction data and mitigates overfitting.
Gradient boosting là phương pháp ensemble xây dựng tuần tự các cây quyết định, giảm lỗi từng bước Phương pháp này hiệu quả cao và được ứng dụng rộng rãi.
Hồi quy vector hỗ trợ (SVR) là phương pháp hiệu quả cho dữ liệu phi tuyến tính, đa biến, cho phép xác định biên tốt giữa các điểm dữ liệu và xử lý nhiễu hiệu quả.
Mạng nơ-ron hiệu quả trong dự đoán giá nhà nhờ khả năng xử lý dữ liệu phức tạp, tương tác cao và học các mối quan hệ phi tuyến tính, mang lại kết quả chính xác nếu được huấn luyện tốt.
Mô tả, thống kê và kết quả các bước tiền xử lý dữ liệu
4.1.1 Mô tả dữ liệu Đọc dữ liệu từ một tệp CSV có tên là "Chennai houseing sale.csv" và lưu dữ liệu vào một DataFrame có tên là df.
Hình 4.1 Xuất dữ liệu khi đọc từ file csv
PRT_ID: Định danh duy nhất cho mỗi bất động sản.
AREA: Khu vực hoặc vị trí nơi bất động sản đặt.
INT_SQFT: Diện tích nội thất của bất động sản tính bằng feet vuông.
DATE_SALE: Ngày bán bất động sản.
DIST_MAINROAD: Khoảng cách từ bất động sản đến con đường chính.
N_BEDROOM: Số phòng ngủ trong bất động sản.
N_BATHROOM: Số phòng tắm trong bất động sản.
N_ROOM: Tổng số phòng trong bất động sản.
SALE_COND: Tình trạng bán hàng (ví dụ: mới, tái bán, vv.).
PARK_FACIL: Sự có sẵn các cơ sở đỗ xe (ví dụ: Có, Không).
DATE_BUILD: Ngày xây dựng của bất động sản.
BUILDTYPE: Loại công trình (ví dụ: Nhà, Căn hộ, vv.).
UTILITY_AVAIL: Sự có sẵn các tiện ích (ví dụ: AllPub, NoSeWa, vv.).
STREET: Loại đường tiếp cận bất động sản (ví dụ: Lát gạch, Sỏi, vv.).
MZZONE: Phân loại khu vực (zoning) cho bất động sản.
QS_ROOMS: Điểm chất lượng của các phòng trong bất động sản.
QS_BATHROOM: Điểm chất lượng của các phòng tắm trong bất động sản.
QS_BEDROOM: Điểm chất lượng của các phòng ngủ trong bất động sản.
QS_OVERALL: Điểm chất lượng tổng thể của bất động sản.
REG_FEE: Phí đăng ký cho bất động sản.
COMMIS: Tiền hoa hồng trả cho môi giới cho việc bán.
SALES_PRICE: Giá bán của bất động sản.(Target Column)
Hàm `.describe()` trong pandas cung cấp tóm tắt thống kê dữ liệu DataFrame, bao gồm số quan sát, trung bình, độ lệch chuẩn, giá trị tối thiểu, phần vị và giá trị tối đa của các cột số.
Dưới đây là các thông số mà describe() cung cấp:
count: Số lượng giá trị không bị thiếu (NaN).
mean: Giá trị trung bình của dữ liệu.
std: Độ lệch chuẩn của dữ liệu, đo lường mức độ biến động của dữ liệu.
min: Giá trị nhỏ nhất trong dữ liệu.
25%, 50%, 75%: Các phần vị (percentiles) thứ 25, 50 (median), và 75 của dữ liệu.
max: Giá trị lớn nhất trong dữ liệu.
Hình 4.2 Thống kê của cột INT_SQFT
Hình 4.3 Thống kê của cột DIST_MAINROAD
Hình 4.4 Thống kê của cột N_BEDROOM
Hình 4.5 Thống kê của cột N_BATHROOM
Hình 4.6 Thống kê của cột N_ROOM
Hình 4.7 Thống kê của cột QS_ROOMS
Hình 4.8 Thống kê của cột QS_BATHROOM
Hình 4.9 Thống kê của cột QS_BEDROOM
Hình 4.10 Thống kê của cột QS_OVERALL
Hình 4.11 Thống kê của cột REG_FEE
Hình 4.12 Thống kê của cột COMMIS
Hình 4.13 Thống kê của cột SALES_PRICE
4.1.3 Kết quả các bước tiền xử lý dữ liệu
Xử lí dữ liệu thiếu, mất mát
Hình 4.14 Thống kê số lượng giá trị NaN
Hình 4.15 Thực hiện lấp đầy các giá trị NaN
Employing scikit-learn's SimpleImputer (Figure 4.15), replace NaN values in DataFrame 'df' columns 'N_BEDROOM', 'N_BATHROOM', and 'QS_OVERALL' with their respective column means.
Tiếp theo, tạo một instance của SimpleImputer với các tham số sau:
missing_values=np.nan: Đây là giá trị cần thay thế, trong trường hợp này là NaN.
strategy='mean': Chiến lược thay thế giá trị NaN bằng giá trị trung bình của cột.
fill_value=None: Điều này chỉ ra rằng giá trị fill (điền vào) không được sử dụng Mặc định là None.
Sau đó áp dụng SimpleImputer vào các cột 'N_BEDROOM', 'N_BATHROOM', và 'QS_OVERALL' bằng cách sử dụng phương thức fit_transform() của SimpleImputer trên mỗi cột.
Kết quả là các giá trị NaN trong các cột được thay thế bằng giá trị trung bình của cột tương ứng.
Xử lí dữ liệu trùng lắp, ngoại lệ
Kiểm tra dữ liệu trùng lặp giúp đảm bảo tính nhất quán dữ liệu, phát hiện các hàng trùng lặp hoàn toàn hoặc sai cấu trúc trong DataFrame, ngăn ngừa lỗi phân tích.
Hình 4.16 Một số cột có các giá trị trùng lắp, sai cấu trúc
Hình 4.17 Xử lí đồng nhất dữ liệu
Sử dụng hàm `replace()` của Pandas để chuẩn hóa dữ liệu, thay thế các giá trị không nhất quán trong DataFrame bằng giá trị thống nhất.
Mã lệnh `df.AREA.replace(['Ana Nagar','Ann Nagar'],'Anna Nagar',inplace=True)` thay thế "Ana Nagar" và "Ann Nagar" thành "Anna Nagar" trong cột 'AREA' Tương tự, "Karapakkam" thành "Karapakam", "Chrompt", "Chrmpet", "Chormpet" thành "Chrompet" và các giá trị khác được chuẩn hóa.
Data standardization in the 'BUILDTYPE' column was performed using pandas' `.replace()` function This corrected inconsistencies, replacing 'Comercial' with 'Commercial' and 'Other' with 'Others'.
Bài viết chuẩn hóa dữ liệu các cột 'UTILITY_AVAIL', 'SALE_COND', 'PARK_FACIL', và 'STREET' bằng các giá trị đã được định nghĩa sẵn.
Chuẩn hóa dữ liệu đảm bảo tính đồng nhất, giúp quá trình phân tích và xử lý dễ dàng hơn.
Trực quan hóa dữ liệu dể huấn luyện mô hình
Hình 4.18 Thống kê phân bố nhà
Số lượng nhà ở các khu vực khác nhau tại Chennai
Khu vực Chrompet có số lượng nhà lớn nhất so với các khu vực khác.
Khu vực T Nagar có ít nhà nhất tại Chennai.
Hình 4.19 Thống kê sự dao động giá bán theo khu vực
Biểu đồ sự biến đổi Giá Bán của các căn nhà theo các khu vực khác nhau tại Chennai
Giá nhà tại T Nagar và Anna Nagar cao nhất, tiếp theo là KK Nagar.
Các căn nhà ở khu vực Karapakam có giá bán thấp hơn so với các căn nhà ở các khu vực khác.
Hình 4.20 Thống kê ảnh hưởng của diện tích với giá bán Ảnh hưởng của Diện Tích căn nhà đến Giá bán
Tăng diện tích của căn nhà sẽ tăng giá bán của căn nhà.
Nhìn vào, các căn nhà liên quan đến cùng một khu vực có độ dài diện tích gần như giống nhau.
Các căn nhà ở khu vực T Nagar và Anna Nagar có giá cao nhất với diện tích trong khoảng từ 1500 đến 2000 foot vuông.
Các căn nhà ở khu vực KK Nagar có diện tích lớn từ 1400 đến
Hình 4.21 Ảnh hưởng của việc gần mặt đường với giá bán
Sự phụ thuộc của Giá Bán vào khoảng cách đến Đường Chính từ căn nhà
Dường như khoảng cách đến đường chính không ảnh hưởng quá nhiềuđến giá bán của các căn nhà.
Giá bán không khác nhau cho các căn nhà có khoảng cách đến Đường chính ngắn hơn và lớn hơn.
Vì vậy, khoảng cách đến đường chính không ảnh hưởng nhiều đến giá bán.
Hình 4.22 Ảnh hưởng của thời gian xây dựng so với giá bán
Sự phụ thuộc của Giá Bán vào Thời Gian Xây Dựng
Dường như khoảng thời gian xây dựng không ảnh hưởng nhiều đến giá bán của các căn nhà.
Giá bán không khác nhau cho các căn nhà có khoảng thời gian xây dựng cách xa nhau
Vì vậy, khoảng thời gian xây dựng không ảnh hưởng nhiều đến giá bán.
Thời gian xây dựng hầu như không ảnh hưởng đến giá bán nhà.
Hình 4.24 Ảnh hưởng số lượng phòng so với giá nhà Ảnh hưởng của Số Phòng Đến Giá Bán
Có thể thấy rằng việc tăng số phòng sẽ tăng giá bán của các căn nhà.
Các căn nhà có tổng cộng 4 và 5 phòng ở khu vực Anna Nagar, Velacherry, KK Nagar và T Nagar có giá bán cao nhất.
Các căn nhà ở khu vực Karapakam, Adyar và Chrompet có từ
2 đến bốn phòng, nhưng những căn nhà có 4 phòng có giá bán cao nhất so với các căn nhà khác.
Khu vực Anna Nagar, Velacherry và T Nagar bao gồm các căn nhà có từ 4 đến 5 phòng.
Khu vực KK Nagar có các căn nhà có từ hai đến sáu phòng và giá bán tăng theo sự tăng số lượng phòng.
Hình 4.25 Ảnh hưởng số lượng phòng ngủ so với giá nhà Ảnh hưởng của Số Phòng Ngủ Đến Giá Bán?
Tăng số phòng ngủ tăng giá bán của căn nhà.
Khu vực Anna Nagar, T Nagar, Adyar, Karapakam và Chrompet có từ 1 đến 2 phòng ngủ, nhưng các căn nhà 2 phòng ngủ có giá bán cao nhất.
Khu vực KK Nagar có từ 1 đến 4 phòng ngủ và giá bán tăng theo số phòng ngủ.
Khu vực Velacherry có từ 2 đến 3 phòng ngủ.
Trong tất cả các khu vực, các căn nhà ở Anna Nagar và T Nagar có 2 phòng ngủ có giá bán cao nhất.
Hình 4.26 Ảnh hưởng số lượng phòng tắm so với giá nhà Ảnh hưởng của Số Phòng Tắm Đến Giá Bán
Sự tăng số phòng tắm thường đi đôi với việc tăng giá bán ở tất cả các khu vực.
Tuy nhiên, có một điểm đặc biệt là ở khu vực Anna Nagar và
Giá nhà tại T Nagar, dù chỉ có một phòng tắm, vẫn cao nhất thành phố, phản ánh vị trí đắc địa, tiện ích vượt trội và sức hút mạnh mẽ từ người mua.
Hình 4.27 Ảnh hưởng loại hình bán so với giá nhà Ảnh hưởng của Tình Trạng Bán Đối Với Giá Bán Của Nhà
Các căn nhà được bán trong tình trạng Normal Sale, Family và Abnormalthường có giá bán cao nhất.
Nhà ở được bảo dưỡng tốt, đáp ứng nhu cầu gia đình, hoặc sở hữu đặc điểm độc đáo thường có giá trị cao hơn trên thị trường bất động sản.
Hình 4.28 Ảnh hưởng tiện ích đỗ xe so với giá nhà Ảnh hưởng của Tiện ích đỗ xe so với Giá Bán
Giá bán thường cao nhất cho các căn nhà có tiện ích đỗ xe ở các khu vực khác nhau.
Chỗ đậu xe là yếu tố quan trọng ảnh hưởng trực tiếp đến giá bán nhà, đáp ứng nhu cầu và mang lại sự tiện lợi cho người mua.
Hình 4.29 Ảnh hưởng của kiến trúc so với giá bán Ảnh hưởng của Kiến Trúc so với Giá Bán
Giá bán thường cao nhất cho các căn nhà có kiểu kiến trúc xây dựng thương mại(Commercial) ở các khu vực khác nhau.
Kiểu kiến trúc thương mại ảnh hưởng trực tiếp đến giá bán nhà ở nhờ tính đa dạng và tiện ích.
Hình 4.30 Ảnh hưởng của khu vực so với giá bán Ảnh hưởng của Loại Đường Phố Đối Với Giá Bán Của Nhà
Giá bán có chênh lệch một ít cho nhà ở các con phố trên các khu vực khác nhau.
Hình 4.31 Biểu đồ tương quan của các cột dữ liệu
Heatmap correlation giúp xác định mức độ tương quan giữa các đặc trưng Tương quan cao (gần 1 hoặc -1) cho thấy thông tin trùng lặp, có thể loại bỏ đặc trưng dư thừa khỏi mô hình.
Thông số cho mô hình, độ đo đánh giá
Thông số huấn luyện mô hình:
1 AREA: Diện tích của căn nhà.
2 INT_SQFT: Diện tích nội thất của căn nhà.
3 DIST_MAINROAD: Khoảng cách đến đường chính gần nhất.
4 N_BEDROOM: Số lượng phòng ngủ.
5 N_BATHROOM: Số lượng phòng tắm.
6 N_ROOM: Tổng số phòng trong căn nhà.
7 SALE_COND: Tình trạng bán của căn nhà.
8 PARK_FACIL: Tiện ích gửi xe có sẵn hay không.
9 BUILDTYPE: Loại cấu trúc xây dựng của căn nhà.
10 UTILITY_AVAIL: Tiện ích công cộng có sẵn hay không.
11 STREET: Kiểu đường đi trước nhà.
13 QS_ROOMS: Đánh giá chất lượng phòng.
14 QS_BATHROOM: Đánh giá chất lượng
15 QS_BEDROOM: Đánh giá chất lượng phòng ngủ.
16 QS_OVERALL: Đánh giá chất lượng tổng thể của nhà.
17 REG_FEE: Phí đăng ký.
18 COMMIS: Tiền hoa hồng cho người môi giới.
Lựa chọn đặc trưng phù hợp là yếu tố quyết định hiệu suất mô hình dự đoán giá nhà Các đặc trưng cần phản ánh mối quan hệ giữa biến độc lập và biến phụ thuộc (giá nhà).
Thông số đánh giá cho mô hình:
MAE được tính bằng trung bình của giá trị tuyệt đối của sự chênh lệch giữa dự đoán và giá trị thực tế.
��là giá trị thực tế,
ŷ�là giá trị dự đoán.
MSE là trung bình của bình phương của sự chênh lệch giữa dự đoán và giá trị thực tế.
3.Root Mean Squared Error (RMSE):
RMSE là căn bậc hai của MSE, đo lường sự chênh lệch trung bình giữa dự đoán và giá trị thực tế dưới dạng đơn vị của dữ liệu.
R2_score đo lường khả năng giải thích phương sai của biến phụ thuộc trong mô hình, dao động từ 0 đến 1; giá trị 1 thể hiện mô hình hoàn hảo.
Tổng biến thiên mô hình giải thích: SST = �=1 � (�� − y) 2
Tổng biến thiên không giải thích: SSE = � �=1 (�� − ŷ�) 2
y là giá trị trung bình của giá trị thực tế.
5 Root Mean Squared Log Error (RMSLE):
RMSLE đo lường sai lệch giữa logarit của giá trị dự đoán và giá trị thực tế, đặc biệt hữu ích khi biến đổi logarit phù hợp với dữ liệu.
Công thức:RMSLE = ( 1 n i=1 n log (1 + yi) − log(1 + ŷ�) ) 2
6 Mean Absolute Percentage Error (MAPE):
MAPE đo lường sự chênh lệch trung bình giữa dự đoán và giá trị thực tế dưới dạng phần trăm của giá trị thực tế.
7 Adjusted R Square: Đây là một biến thể của R2_score, điều chỉnh dựa trên số lượng biến độc lập trong mô hình Nó cố gắng loại bỏ các biến không cần thiết khỏi mô hình.
k là số lượng biến độc lập trong mô hình.
4.3 Thực nghiệm và đánh giá kết quả
Chuẩn bị dữ liệu cho mô hình
Hình 4.32 Chia dữ liệu thành 2 tập Features(x) và Target(y)
Hình 4.33 Chia dữ liệu để huấn luyện x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.30, random_stateB):
x: Là tập hợp các biến độc lập.
y: Là tập hợp các biến phụ thuộc cần dự đoán.
Bài viết này thảo luận về tham số `test_size=0.30` trong machine learning, nghĩa là 30% dữ liệu dùng để kiểm tra mô hình và 70% còn lại dùng để huấn luyện.
`random_state=42` đảm bảo tính nhất quán trong việc chia dữ liệu, cho kết quả giống nhau mỗi lần chạy mã Giá trị này có thể thay đổi hoặc bỏ qua tùy ý.
Tiến hành huấn luyện với Linear Regression Model
Hình 4.34 Import Model Linear Regression với Scikit-learn
Hình 4.35 Huấn luyện với dữ liệu đã chuẩn bị
Hình 4.36 Định nghĩa các hàm thông số đánh giá
Nhận xét sơ lượt về mô hình
Hình 4.37 Các thông số đánh giá mô hình
Sai số tuyệt đối trung bình (MAE) đo lường độ lệch trung bình giữa giá trị dự đoán và giá trị thực tế, đạt 1.031.042.027, cho thấy sai số dự đoán khá lớn.
Sai số bình phương trung bình (MSE) là trung bình bình phương độ lệch giữa giá trị dự đoán và giá trị thực tế MSE đạt 1.687.454.090.536, cho thấy sai lệch lớn giữa dự đoán và thực tế.
Root Mean Squared Error (RMSE) là thước đo phổ biến đánh giá sai số dự đoán, với giá trị RMSE đạt 1.299.020.435 cho thấy sai lệch lớn giữa giá trị dự đoán và thực tế.
R-squared (R2_score):R2_score là một phép đo thống kê để đánh giá mức độ phù hợp của mô hình Nó cho biết phần trăm phương sai của biến phụ thuộc được giải thích bởi mô hình Với giá trị R2_score là khoảng 0.87557, mô hình giải thích khoảng 87.56% sự biến thiên của dữ liệu, điều này cho thấy một mức độ phù hợp tương đối tốt của mô hình.
RMSLE đo lường sai lệch giữa logarit giá trị dự đoán và giá trị thực tế Chỉ số RMSLE 14.077 cho thấy độ lệch lớn giữa dự đoán và thực tế.
Sai số phần trăm tuyệt đối trung bình (MAPE) đo lường độ lệch trung bình phần trăm giữa giá trị dự báo và giá trị thực tế Chỉ số MAPE 10,16% phản ánh độ chính xác của mô hình.
Chỉ số Adj R-squared (0.875254) cho thấy mô hình có độ phù hợp tốt, đã được điều chỉnh để tính đến số lượng biến số.
Hình 4.38 Giá dự đoán và giá thực tế
Mô hình dự đoán cho thấy độ chính xác cao khi so sánh giá trị thực tế và dự đoán (Hình 4.38) Sai số nhỏ, và sự khác biệt giữa hai giá trị này được duy trì ở mức thấp.
Hình 4.39 Biểu đồ phân tán dữ liệu về giá
Biểu đồ phân tán với đường xu hướng cho thấy mối quan hệ mạnh giữa giá trị thực tế và giá trị dự đoán của mô hình hồi quy Sự phân bố điểm dữ liệu gần đường xu hướng phản ánh độ chính xác cao của mô hình.
Ưu điểm và nhược điểm của mô hình
Linear Regression là mô hình đơn giản, dễ hiểu và triển khai nhờ mối quan hệ tuyến tính giữa biến độc lập và biến phụ thuộc.
Mô hình Linear Regression hiệu quả với dữ liệu lớn nhờ các thuật toán tối ưu như Gradient Descent, cho phép tính toán nhanh chóng.
Hồi quy tuyến tính (Linear Regression) ứng dụng rộng rãi trong nhiều lĩnh vực, từ dự đoán giá nhà, doanh số bán hàng đến dự đoán thu nhập cá nhân và nhiều hơn nữa.
Mô hình Linear Regression hiệu quả khi dữ liệu có mối quan hệ tuyến tính Tính đơn giản của giả định này là một ưu điểm khi dữ liệu đáp ứng điều kiện đó.
Mô hình Linear Regression đơn giản nhưng hạn chế trong việc mô tả các mối quan hệ phức tạp giữa biến độc lập và biến phụ thuộc.
Linear Regression dễ bị ảnh hưởng bởi nhiễu và ngoại lai, gây giảm độ chính xác dự đoán Mô hình này giả định mối quan hệ tuyến tính giữa các biến, điều có thể không phản ánh dữ liệu thực tế nếu mối quan hệ không tuyến tính.
Mô hình Linear Regression hạn chế khả năng giải quyết vấn đề overfitting, nhất là khi gặp nhiều biến độc lập không tuyến tính hoặc có độ tương quan cao.
5 2 Đề xuất cải tiến cho mô hình:
1 Thêm các biến phụ thuộc tuyến tính: Một cách đơn giản nhất để cải thiện mô hình Linear Regression là thêm các biến phụ thuộc tuyến tính Điều này có thể giúp mô hình mô hình hóa mối quan hệ phức tạp hơn giữa biến độc lập và biến phụ thuộc.
2 Chuẩn hóa các biến độc lập: Chuẩn hóa các biến độc lập trước khi đưa vào mô hình có thể giúp mô hình hội tụ nhanh hơn và giảm thiểu ảnh hưởng của các biến có tỷ lệ khác nhau.
3 Xử lý điểm ngoại lai: Phát hiện và xử lý điểm ngoại lai có thể giúp cải thiện độ chính xác của mô hình bằng cách loại bỏ các ảnh hưởng không mong muốn từ các điểm ngoại lai.
4 Sử dụng Regularization: Sử dụng các kỹ thuật regularization như Lasso hoặc Ridge Regression có thể giúp kiểm soát overfitting và cải thiện hiệu suất của mô hình, đặc biệt là khi có nhiều biến độc lập có tương quan cao.
5 Sử dụng Polynomial Regression: Đôi khi mối quan hệ giữa biến độc lập và biến phụ thuộc không phải là tuyến tính Trong trường hợp này, sử dụng Polynomial Regression có thể giúp mô hình mô hình hóa mối quan hệ phức tạp hơn.
6 Thử nghiệm các mô hình phức tạp hơn: Ngoài Linear Regression, bạn có thể thử nghiệm các mô hình phức tạp hơn như Decision Trees, Random Forests, hoặc Neural Networks để xem xét mô hình nào hoạt động tốt nhất cho dữ liệu của bạn.
7 Tinh chỉnh siêu tham số: Tinh chỉnh các siêu tham số của mô hình như learning rate, số lượng epochs, hoặc hệ số regularization có thể cải thiện hiệu suất của mô hình.
8 Sử dụng Ensemble Learning: Kết hợp nhiều mô hình Linear Regression thông qua các kỹ thuật như Bagging hoặc Boosting có thể tạo ra một mô hình mạnh mẽ hơn.