bài tiểu luận nhóm 4 nhập môn phân tích dữ liệu đề tài boston housing data

55 2 0
Tài liệu đã được kiểm tra trùng lặp
bài tiểu luận nhóm 4 nhập môn phân tích dữ liệu đề tài boston housing data

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

dplyr: “ %>%” để kết hợp các hàm khác nhau trong R.hàm filter chọn các biến dựa trên giá trị của chúng Lọc ra các hàng nhất định đáp ứng các tiêu chí của bạn.gridExtra: Gói gridtrong R

Trang 1

 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

 BÀI TIỂU LUẬN NHÓM 4

 Học phần: Nhập Môn Phân Tích Dữ Liệu Giảng viên hướng dẫn: Bình Vũ Ngọc

 Nội dung đề tài : Boston Housing Data

Trang 2

Mục lục

 Giới thiệu Boston Housing Price 3

 Báo cáo vấn đề 3

 Tạo giả thiết 4

 Thư viện Mass chứa tập dữ liệu Boston 5

 Liệt kê tên các biến thuộc tính của dữ liệu Boston 8

 Cấu trúc dữ liệu và nội dung: 10

 Phân tích dữ liệu khám phá 10

 Distributions 14

 Tóm tắt nội dung mục đích code về sau 19

 Forward Variable Selection 22

 Backward Variable Selection 30

 Exhaustive Subset Selection 35

 Plotting Model metrics 36

 Selected Model, 42

 TIỂU KẾT 43

 LASSO Variable Selection 43

 Model Statistics 47

 Comparing models from Subset selection, LASSO with Full model 49

 Residual Analysis plots (lasso model) 50

 Nhận xét các thành viên trong nhóm……….53

Trang 3

 Giới thiệu Boston Housing Price

Boston Housing Price là giá trị nhà điển hình của những ngôi nhà ở Boston là $ 739,180 Giá trị này được điều chỉnh theo mùa và chỉ bao gồm mức giá trungbình của các căn nhà Giá trị nhà ở Boston đã tăng 8,5% trong năm qua.

 Báo cáo vấn đề

Với hơn 600 ngàn dân nằm trên phía bắc Hoa Kỳ, cách DC hơn 1 giờ bay, thành phố Boston – thủ phủ của bang Massachusetts cùng lịch sử 400 năm đã trở thành thủ đô của văn hóa, giáo dục và sáng tạo của nước Mỹ Boston được mệnh danh là nơi đắt đỏ nổi tiếng thế giới nhưng lại đứng thứ 3 tại Hoa Kỳ và thứ 37 trên thế giới về địa điểm lý tưởng để sống Boston còn được mệnh danh là thủ đô tri thức bởi có tới 200 trường đại học với những cái tên nổi tiếng đã trở thành “thương hiệu giáo dục” trong suốt thời gian qua như Harvard, MIT, U-Mass…cùng những thư viện “chứa đựng tất cả những gì mà nhân loại cần”.Boston chào đón hàng trăm ngàn sinh viên ưu tú nhất từ khắp thế giới đổ về

Trang 4

cùng hơn 16 triệu du khách tham quan hàng năm vì thế lĩnh vực bất động sản khu vực này càng tăng trưởng nhanh chóng

 Tạo giả thiết

Nghiên cứu này nhằm xây dựng mô hình dự báo giá nhà ở Boston Housing dựatrên một số các thuộc tính được xác định thông qua tin đăng bất động sản trên mạng Internet

Dự án này nhằm tìm ra các yếu tố ảnh hưởng đến giá trị bất động sản trong nước tại thành phố Boston Các yếu tố như thu nhập bình quân đầu người, các yếu tố môi trường, cơ sở giáo dục, quy mô tài sản

Tạo các gói câu lệnh cần sử dụng:

library(corrr)library(gridExtra)library(ggplot2)library(tidyverse)library(dplyr)library(DT)library(MASS)library(leaps)

Trang 5

library(PerformanceAnalytics)đọc dữ liệu train, test và submission:

 thư viện Mass chứa tập dữ liệu Boston

tidyverse: thao tác và trực quan hóa dữ liệu dễ dàng.corrr: phân tích ma trận tương quan.

ggplot2: tạo trực quan hóa dữ liệu như biểu đồ thanh, biểu đồ hình tròn, biểu

đồ, biểu đồ phân tán, biểu đồ lỗi, v.v

dplyr: “ %>%” để kết hợp các hàm khác nhau trong R.hàm filter () chọn các

biến dựa trên giá trị của chúng (Lọc ra các hàng nhất định đáp ứng (các) tiêu chí của bạn.

gridExtra: Gói gridtrong R thực thi các hàm đồ họa nguyên thủy làm nền tảng

cho ggplot2.

DT: lọc, tìm kiếm và xuất dữ liệu sang các định dạng khác nhau một cách dễ

MASS: thư viện chứa dataset Boston housing.

leaps: thư viện để có thể sử dụng các mô hình subset selection.

glmnet: Gói này phù hợp với các đường dẫn mô hình lasso và mạng đàn hồi để

hồi quy hồi quy, logistic và hồi quy đa thức bằng cách sử dụng phương pháp suy giảm tọa độ.

Trang 6

PerformanceAnalytics: một tập hợp các hàm kinh tế lượng để phân tích hiệu

suất và rủi ro.

 Liệt kê tên các biến thuộc tính của dữ liệu Boston

glimpse(Boston)## Observations: 506## Variables: 14

## $ crim <dbl> 0.00632, 0.02731, 0.02729, 0.03237, 0.06905, 0.02985, ## $ zn <dbl> 18.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.5, 12.5, 12.5, 12.5, ## $ indus <dbl> 2.31, 7.07, 7.07, 2.18, 2.18, 2.18, 7.87, 7.87, 7.87, ## $ chas <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ## $ nox <dbl> 0.538, 0.469, 0.469, 0.458, 0.458, 0.458, 0.524, 0.524 ## $ rm <dbl> 6.575, 6.421, 7.185, 6.998, 7.147, 6.430, 6.012, 6.172 ## $ age <dbl> 65.2, 78.9, 61.1, 45.8, 54.2, 58.7, 66.6, 96.1, 100.0, ## $ dis <dbl> 4.0900, 4.9671, 4.9671, 6.0622, 6.0622, 6.0622, 5.5605 ## $ rad <int> 1, 2, 2, 3, 3, 3, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4,

## $ tax <dbl> 296, 242, 242, 222, 222, 222, 311, 311, 311, 311, 311, ## $ ptratio <dbl> 15.3, 17.8, 17.8, 18.7, 18.7, 18.7, 15.2, 15.2, 15.2, ## $ black <dbl> 396.90, 396.90, 392.83, 394.63, 396.90, 394.12, 395.60 ## $ lstat <dbl> 4.98, 9.14, 4.03, 2.94, 5.33, 5.21, 12.43, 19.15, 29.9 ## $ medv <dbl> 24.0, 21.6, 34.7, 33.4, 36.2, 28.7, 22.9, 27.1, 16.5,

Trang 7

Với hàm glimpse(), ta sẽ có thể thấy được một vài thông số cơ bản của dataset Boston, bao gồm số lượng biến dữ liệu, số lượng đối tượng được tham gia, địnhdạng của biến dữ liệu, là một vài đối tượng của các biến

Bên cạnh đó, nếu ta vào help để tìm hiểu thì 13 biến dữ liệu được định nghĩa như sau:

crim tỷ lệ tội phạm bình quân đầu người đang sinh sống nơi đây indus tỷ lệ mẫu đất kinh doanh không bán lẻ trên nơi đây chas biến giả Charles River

nox nồng độ oxit nitric

dis khoảng cách có trọng số đến năm trung tâm việc làm Bostonrad chỉ số khả năng tiếp cận các đường cao tốc hướng tâmtax thuế suất toàn bộ giá trị tài sản trên mỗi lô đấtptratio tỷ lệ học sinh-giáo viên đang sinh sống nơi đâyblack tỷ lệ người da đen đang sinh sống nơi đây medv là giá trị nhà cửa trung bình

rm là số phòng trung bình mỗi nhàage là trung bình độ tuổi của các căn nhà

lstat là tỉ lệ hộ gia đình có địa vị kinh tế xã hội thấp

 Cấu trúc dữ liệu và nội dung:

Để khám phá dữ liệu trong bất kỳ cuộc thi khoa học dữ liệu nào, chúng ta nên nối dữ liệu test vào dữ liệu train Vì vậy, sẽ cần kết hợp cả đào tạo và kiểm tra để thực hiện trực quan hóa dữ liệu, kỹ thuật tính năng, mã hóa một nóng và mã

Trang 8

hóa nhãn Sau đó, chúng tôi sẽ tách dữ liệu kết hợp này trở lại để đào tạo và kiểm tra tập dữ liệu:

 Phân tích dữ liệu khám phá

Với mục đích là bản tóm tắt cung cấp đầy đủ những yếu tố quan trọng về dữ liệu của 14 biến, 6 yếu tố đấy bao gồm: giá trị nhỏ nhất(min), giá trị lớn nhất(max), giá trị quantile thứ nhất (25% dữ liệu của biến), giá trị quantile thứ 3 (75% dữ liệu của biến), giá trị trung bình, giá trị median

## crim zn indus chas

## Min : 0.00632 Min : 0.00 Min : 0.46 Min :0.00000 ## 1st Qu.: 0.08204 1st Qu.: 0.00 1st Qu.: 5.19 1st Qu.:0.00000 ## Median : 0.25651 Median : 0.00 Median : 9.69 Median :0.00000 ## Mean : 3.61352 Mean : 11.36 Mean :11.14 Mean :0.06917 ## 3rd Qu.: 3.67708 3rd Qu.: 12.50 3rd Qu.:18.10 3rd Qu.:0.00000 ## Max :88.97620 Max :100.00 Max :27.74 Max :1.00000 ## nox rm age dis

## Min :0.3850 Min :3.561 Min : 2.90 Min : 1.130 ## 1st Qu.:0.4490 1st Qu.:5.886 1st Qu.: 45.02 1st Qu.: 2.100 ## Median :0.5380 Median :6.208 Median : 77.50 Median : 3.207 ## Mean :0.5547 Mean :6.285 Mean : 68.57 Mean : 3.795 ## 3rd Qu.:0.6240 3rd Qu.:6.623 3rd Qu.: 94.08 3rd Qu.: 5.188

Trang 9

## Max :0.8710 Max :8.780 Max :100.00 Max :12.127 ## rad tax ptratio black

## Min : 1.000 Min :187.0 Min :12.60 Min : 0.32 ## 1st Qu.: 4.000 1st Qu.:279.0 1st Qu.:17.40 1st Qu.:375.38 ## Median : 5.000 Median :330.0 Median :19.05 Median :391.44 ## Mean : 9.549 Mean :408.2 Mean :18.46 Mean :356.67 ## 3rd Qu.:24.000 3rd Qu.:666.0 3rd Qu.:20.20 3rd Qu.:396.23 ## Max :24.000 Max :711.0 Max :22.00 Max :396.90 ## lstat medv

## Min : 1.73 Min : 5.00 ## 1st Qu.: 6.95 1st Qu.:17.02 ## Median :11.36 Median :21.20 ## Mean :12.65 Mean :22.53 ## 3rd Qu.:16.95 3rd Qu.:25.00 ## Max :37.97 Max :50.00

Tiếp theo, chúng tôi tìm xem liệu có dữ liệu nào trong tổng 506 quan sát không được điền hay không ? Mục đích để tránh bị ảnh hưởng đến quá trình xây dựnghàm tuyến tính cho về sau

colSums is.na((Boston))

## crim zn indus chas nox rm age dis rad ## 0 0 0 0 0 0 0 0 0

Trang 10

## tax ptratio black lstat medv ## 0 0 0 0

Ở đây, ta nhận thấy rằng, ở 13 biến dữ liệu, không có biến nào có giá trị chưa được điền (hay xuất hiện giá trị null) Điều này là tốt, để khi ta thực hiện xây dựngbài toán linear, sẽ không có rắc rối nào xảy ra.

Từ đó chúng tôi kiểm tra là đi thì hiểu mối tương quan giữa các biến giá trị với nhau, ngoài trừ biến medv do đây là biến đại lượng ta cần dư đoán kết quả, hay làbiến chúng tôi cần xây dựng sự đoán bởi 13 biến còn lại

chart.Correlation(Boston[,-14], histogram=TRUE, pch=19)

Trang 11

Định nghĩa : Trước tiên, để hiểu được đây là gì, thì ta cần hiểu correlation

trước đó

Correlation hay dịch ra là hệ số tương quan giữa 2 biến với nhau, là chỉ số chỉ

mức độ mật thiết giữa các biến với nhau khi ta làm về việc xây dựng đồ thị

biểu diễn chúng Correlation có phạm vi từ đoạn -1 đến 1, khi hệ số bằng +- 1

thì 2 biến dữ liệu có mối quan hệ mật thiết với nhau và được thể hiện bằng việc

Trang 12

có điểm dữ liệu tập trung trên đường thẳng tuyến tính, và khi hệ sống bằng 0 thì 2 biến sẽ gần như không hề có sự ảnh hưởng gì đến nhau Khi hệ số càng dương thì các dữ liệu của 2 biến sẽ hướng theo hướng hệ số (a) dương của đường tuyến tính, và điều ngược lại xảy ra khi hệ số correlation càng hướng về -1.

Dựa vào hình ta, có thấy mức độ correlation (hệ số tương quan) của 13 biến

dữ liệu với nhau

Với đồ thị và chỉ số correlation của 2 biến bất kỳ với nhau là giao của 2

đường vuông góc kẻ từ vị trí biến đấy Ví dụ như đồ thị của biến crimnoxlà đồ thị ở hàng 5 cột 1 và hệ số correlation là 0.42, hay đồ thị của nox với age

 Distributions

Trang 13

Chúng tôi cũng sẽ kiểm tra qua các dữ liệu của các biến, xem nó phân bố như thế nào.

Boston %>%

gather(-medv, key = "var", value = "value") %>%

filter(var != "chas") %>%

ggplot aes( (x = '',y = value)) +

geom_boxplot(outlier.colour = "red", outlier.shape = 1) +

facet_wrap(~ var, scales = "free") +

theme_bw()

Với %>% là thuộc thư viện dplyr, với mục đích là thực hiện liện tục dòng lệnhtrước dấu và sau dấu %>%, để hạn chế tài nguyên cũng như không cần hiển thị dòng lệnh đã thực thi không cần thiết qua console, giống như lệnh pipe

Trang 30

Qua 4 biểu đồ trên, ta thấy được rằng giá trị rsq, adjr2, bic, cp đều có một 1 tăng giảm nhất định mỗi khi ta tăng sô lượng biến dữ liệu vào đồ thị Giá trị rsq, adjr2 có xu hướng tăng mỗi khi ta tăng biến dữ liệu, và điều ngược lại xảy ra đối với giá trị bic và cp.

Và nếu chúng tôi chạy dòng lện thì kết quả thu được :which.max(sum.model2$rsq)

Chúng tôi thu được kết quả là 13, chứng tỏ đã có 13 biến dữ liệu tham gia

hình càng có sự chuẩn xác Nhưng có một vấn đề, mỗi khi ta thêm biến giá trị

Dẫn đến việc là kể cả có những biến dữ liệu không có mối quan hệ gì với kết

Chúng tôi sẽ thu được 11, chứng tỏ mô hình tốt nhất là mô hình có 11 biến dữ liệu Tương tự khi chúng tôi tìm min của cp, và bic.

Chúng tôi cũng sẽ thu được mô hình 11 là mô hình có sự chuẩn xác cao nhất.

Trang 31

## 4.135996126 -1.440623894 0.304517981 -0.013434078 -0.897688747 ## black lstat

## 0.008922492 -0.494178892

Qua đó, như dự đoán trước đó, mình sẽ loại bỏ 2 biến dữ liệu là ageindus, để cho mô hình dự đoán giá nhà trở nên chuẩn xác hơn Và từ số liệu ở coef ta cũng có thể thấy được luyện phương trình tiến tính dự đoán giá nhà:

Y= 33 -0.09*crim -0.045*zn+3.38*chas+…

 Backward Variable Selection

model3 <-regsubsets(medv~., data = Boston.train, nvmax = 13, method="backward")

sum.model3 <-summary(model3)

Trang 32

model3.subsets <-cbind(sum.model3$which, sum.model3$bic, sum.model3$rsq, sum.model3$adjr2,sum.model3$cp)model3.subsets <-as.data.frame(model3.subsets)

colnames(model3.subsets)[15:18] <-c("BIC" "rsq" "adjr2" "cp", , , )model3.subsets

model3 là biến lưu giá trị của hàm regsubsets() (mục đích là lựa chọn mô hình bởi “backward selection”)

Nội dung: Ở đây, bây giờ chúng ta đến với phương pháp lựa chọn Backward selection, nơi chúng ta tiếp tục loại bỏ các biến không ảnh hưởng khỏi mô hình, để xây dựng mô hình với số lượng của các biến dữ liệu các tầm ảnh hưởng đến việc dự đoán giá nhà lần lượt tăng lên 1 theo thứ tự ảnh hưởng (hay nói cách khác là mô hình đâu tiên sẽ có 1 biến dữ liệu đánh, mô hình thứ 2 sẽ có 2 biến dữ liệu đánh,…, đến mô hình thứ 13) Qua đó, ta sẽ thiết lập nên 4 biểu đồ

chính là về chỉ số R-squared(rsq), Adjusted R-Squared(adjr2), BIC(bic) và

giá trị CP(cp) bằng việc sử dụng hàm ggplot() và sử dụng hàm

scale_x_continuous() để biểu diễn giá trị thu được 13 mô hình về 4 đại lượng

nêu trên Cuối cùng, ta sử dụng hàm grid.arrange() để biểu diễn 4 biểu đồ đường- điểm chính theo dạng ma trận như hình bên dưới.

Trang 33

Qua 4 biểu đồ trên, ta thấy được rằng giá trị rsq, adjr2, bic, cp đều có một 1 tăng giảm nhất định mỗi khi ta tăng sô lượng biến dữ liệu vào đồ thị Giá trị rsq, adjr2 có xu hướng tăng mỗi khi ta tăng biến dữ liệu, và điều ngược lại xảy ra đối với giá trị bic và cp.

Và nếu chúng tôi chạy dòng lện thì kết quả thu được:

Trang 34

Chúng tôi thu được kết quả là 13, chứng tỏ đã có 13 biến dữ liệu tham gia trong quá trình đánh giá, điều này là rất tốt do nếu R-squared càng cao thì mô hình càng có sự chuẩn xác Nhưng có một vấn đề, mỗi khi ta thêm biến giá trị vào mô hình, R-squared sẽ có xu hướng là giữ nguyên giá trị hoặc tăng lên Dẫn đến việc là kể cả có những biến dữ liệu không có mối quan hệ gì với kết

quả đầu ra, R-squared vẫn có thể tăng lên Vậy nên ta sẽ xét thêm câu lệnh:

Chúng tôi sẽ thu được 11, chứng tỏ mô hình tốt nhất là mô hình có 11 biến dữ liệu Tương tự khi ta tìm min của cp, và bic.

chúng tôi cũng sẽ thu được mô hình 11 là mô hình có sự chuẩn xác cao nhất.Bằng việc sử dụng lệnh này:

Trang 35

## 33.007130803 -0.092092535 0.045489957 3.383711876 -16.588259678 ## rm dis rad tax ptratio

## 4.135996126 -1.440623894 0.304517981 -0.013434078 -0.897688747 ## black lstat

## 0.008922492 -0.494178892

Qua đó, như dự đoán trước đó, mình sẽ loại bỏ 2 biến dữ liệu là ageindus, để cho mô hình dự đoán giá nhà trở nên chuẩn xác hơn Và từ số liệu ở coef ta cũng có thể thấy được luyện phương trình tiến tính dự đoán giá nhà:

Y= 33 -0.09*crim -0.045*zn+3.38*chas+…

 Exhaustive Subset Selection

model4 <-regsubsets(medv~., data = Boston.train, nvmax = 13)sum.model4 <-summary(model4)

model4.subsets <-cbind(sum.model4$which, sum.model4$bic, sum.model4$rsq, sum.model4$adjr2,sum.model4$cp)model4.subsets <-as.data.frame(model4.subsets)

colnames(model4.subsets)[15:18] <-c("BIC" "rsq" "adjr2" "cp", , , )model4.subsets

Trang 36

## (Intercept) crim zn indus chas nox rm age dis rad tax ptratio black## 1 1 0 0 0 0 0 0 0 0 0 0 0 0

## 2 1 0 0 0 0 0 1 0 0 0 0 0 0## 3 1 0 0 0 0 0 1 0 0 0 0 1 0## 4 1 0 0 0 1 0 1 0 0 0 0 1 0## 5 1 0 0 0 0 1 1 0 1 0 0 1 0## 6 1 0 0 0 1 1 1 0 1 0 0 1 0## 7 1 0 0 0 1 1 1 0 1 0 0 1 1## 8 1 0 1 0 1 1 1 0 1 0 0 1 1## 9 1 0 0 0 1 1 1 0 1 1 1 1 1## 10 1 0 1 0 1 1 1 0 1 1 1 1 1## 11 1 1 1 0 1 1 1 0 1 1 1 1 1## 12 1 1 1 1 1 1 1 0 1 1 1 1 1## 13 1 1 1 1 1 1 1 1 1 1 1 1 1## lstat BIC rsq adjr2 cp

## 1 1 -310.4951 0.5498895 0.5487698 329.66053## 2 1 -416.5731 0.6589365 0.6572354 154.88775## 3 1 -458.8968 0.6973878 0.6951182 94.55548## 4 1 -469.3669 0.7094775 0.7065650 76.95723## 5 1 -482.8609 0.7231641 0.7196862 56.77032## 6 1 -493.4400 0.7342956 0.7302799 40.72531## 7 1 -497.4187 0.7407790 0.7361968 32.21528

Ngày đăng: 14/05/2024, 16:07

Tài liệu cùng người dùng

Tài liệu liên quan