Bộ dữ liệu diamonds
là một tập hợp dữ liệu kinh điển
trong lĩnh vực phân tích dữ liệu, chứa thông tin về gần 54,000 viên kim
cương. Dữ liệu này thường được sử dụng để xây dựng các mô hình dự đoán
giá kim cương (price
) dựa trên các đặc tính vật lý của
chúng. Tuy nhiên, trong nghiên cứu này, tác giả tập trung vào các
biến định tính mô tả chất lượng của kim cương, cụ thể
là:
cut
: Chất lượng của giác cắt (Fair,
Good, Very Good, Premium, Ideal).color
: Màu sắc của kim cương (từ J -
tệ nhất đến D - tốt nhất).clarity
: Độ trong của kim cương (từ I1
- tệ nhất đến IF - tốt nhất).Ba biến này được chọn làm biến phụ thuộc (hoặc biến nghiên cứu chính), với mục tiêu phân tích xem các yếu tố định tính và định lượng khác như:
carat
)x
, y
,
z
)depth
)table
)… có ảnh hưởng như thế nào đến chất lượng giác cắt, màu sắc, và độ trong của một viên kim cương.
Thông qua việc sử dụng các công cụ phân tích dữ liệu định tính như: bảng tần số, biểu đồ minh họa, và kiểm định Chi bình phương, bài nghiên cứu sẽ làm rõ mối quan hệ giữa các đặc tính vật lý và chất lượng của kim cương, từ đó đưa ra những góc nhìn hữu ích cho ngành công nghiệp đá quý, đặc biệt trong việc đánh giá và định giá sản phẩm.
library(ggplot2)
library(dplyr)
library(epitools) # Sẽ dùng cho phần sau
# Tải dữ liệu từ package ggplot2
data("diamonds")
# Xem cấu trúc dữ liệu
str(diamonds)
## tibble [53,940 × 10] (S3: tbl_df/tbl/data.frame)
## $ carat : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
## $ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
## $ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
## $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
## $ depth : num [1:53940] 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
## $ table : num [1:53940] 55 61 65 58 58 57 57 55 61 61 ...
## $ price : int [1:53940] 326 326 327 334 335 336 336 337 337 338 ...
## $ x : num [1:53940] 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
## $ y : num [1:53940] 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
## $ z : num [1:53940] 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...
# Xem tóm tắt thống kê
summary(diamonds)
## carat cut color clarity depth
## Min. :0.2000 Fair : 1610 D: 6775 SI1 :13065 Min. :43.00
## 1st Qu.:0.4000 Good : 4906 E: 9797 VS2 :12258 1st Qu.:61.00
## Median :0.7000 Very Good:12082 F: 9542 SI2 : 9194 Median :61.80
## Mean :0.7979 Premium :13791 G:11292 VS1 : 8171 Mean :61.75
## 3rd Qu.:1.0400 Ideal :21551 H: 8304 VVS2 : 5066 3rd Qu.:62.50
## Max. :5.0100 I: 5422 VVS1 : 3655 Max. :79.00
## J: 2808 (Other): 2531
## table price x y
## Min. :43.00 Min. : 326 Min. : 0.000 Min. : 0.000
## 1st Qu.:56.00 1st Qu.: 950 1st Qu.: 4.710 1st Qu.: 4.720
## Median :57.00 Median : 2401 Median : 5.700 Median : 5.710
## Mean :57.46 Mean : 3933 Mean : 5.731 Mean : 5.735
## 3rd Qu.:59.00 3rd Qu.: 5324 3rd Qu.: 6.540 3rd Qu.: 6.540
## Max. :95.00 Max. :18823 Max. :10.740 Max. :58.900
##
## z
## Min. : 0.000
## 1st Qu.: 2.910
## Median : 3.530
## Mean : 3.539
## 3rd Qu.: 4.040
## Max. :31.800
##
# Đếm số lượng giá trị duy nhất cho mỗi biến
sapply(diamonds, function(x) length(unique(x)))
## carat cut color clarity depth table price x y z
## 273 5 7 8 184 127 11602 554 552 375
Tên biến | Kiểu dữ liệu | Số lượng giá trị duy nhất | Mô tả nội dung |
---|---|---|---|
carat |
Numeric | 273 | Trọng lượng của kim cương (đơn vị carat). |
cut |
Ordered Factor | 5 | Chất lượng giác cắt (Fair, Good, Very Good, Premium, Ideal). |
color |
Ordered Factor | 7 | Màu sắc, từ J (tệ nhất) đến D (tốt nhất). |
clarity |
Ordered Factor | 8 | Độ trong, từ I1 (tệ nhất) đến IF (hoàn hảo). |
depth |
Numeric | 184 | Tỷ lệ chiều sâu tổng thể (z / mean(x, y)). |
table |
Numeric | 127 | Chiều rộng của mặt trên cùng so với điểm rộng nhất. |
price |
Integer | 11602 | Giá kim cương (USD). |
x |
Numeric | 554 | Chiều dài (mm). |
y |
Numeric | 552 | Chiều rộng (mm). |
z |
Numeric | 375 | Chiều sâu (mm). |
Nhận xét
Bộ dữ liệu gồm 10 biến và 53,940 quan sát, được chia thành hai nhóm chính: biến định lượng và biến định tính.
Biến định lượng: Gồm có 7 biến:
carat
, depth
, table
,
price
, x
, y
, z
. Đây
là các biến đo lường các đặc tính vật lý và giá trị, có kiểu số
(numeric/integer), có thể sử dụng để tính toán các chỉ số thống kê mô tả
và dùng trong các mô hình hồi quy.
Các biến định tính: Có 3 biến định tính quan
trọng: cut
, color
, và clarity
.
Các biến này đều là biến thứ bậc (ordered factor), mang thông tin về
chất lượng kim cương. Chúng thường được phân tích bằng cách đếm tần số,
tỷ lệ, và sử dụng các phương pháp thống kê cho dữ liệu định
tính.
Tạo bộ dữ liệu chỉ có biến định tính (và biến trọng lượng
carat
để phân tích)
# Tạo bộ dữ liệu chỉ chứa các biến định tính và biến 'carat'
data1 <- diamonds %>%
select(carat, cut, color, clarity)
# Xem trước dữ liệu mới
str(data1)
## tibble [53,940 × 4] (S3: tbl_df/tbl/data.frame)
## $ carat : num [1:53940] 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
## $ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
## $ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
## $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
head(data1)
Lập bảng tần số và tần suất
table(data1$cut)
##
## Fair Good Very Good Premium Ideal
## 1610 4906 12082 13791 21551
prop.table(table(data1$cut))
##
## Fair Good Very Good Premium Ideal
## 0.02984798 0.09095291 0.22398962 0.25567297 0.39953652
Vẽ biểu đồ cột
freq_cut <- as.data.frame(table(data1$cut))
colnames(freq_cut) <- c("Cut", "Count")
ggplot(freq_cut, aes(x = Cut, y = Count)) +
geom_col(fill = "#9370DB", color = "black") +
geom_text(aes(label = Count), vjust = -0.5) +
labs(title = "Tần số theo chất lượng giác cắt", x = "Chất lượng giác cắt", y = "Số lượng") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
Vẽ biểu đồ tròn
# Tạo bảng tần suất
cut_freq <- table(data1$cut)
cut_prop <- prop.table(cut_freq)
# Chuyển thành data frame để dùng ggplot2
cut_df <- as.data.frame(cut_prop)
colnames(cut_df) <- c("Cut", "Proportion")
# Tính phần trăm để hiển thị nhãn
cut_df$Percent <- paste0(round(cut_df$Proportion * 100, 1), "%")
# Vẽ biểu đồ tròn bằng ggplot2
ggplot(cut_df, aes(x = "", y = Proportion, fill = Cut)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
geom_text(aes(label = Percent), position = position_stack(vjust = 0.5)) +
labs(title = "Tỷ lệ theo chất lượng giác cắt", x = NULL, y = NULL) +
theme_void() +
theme(plot.title = element_text(hjust = 0.5))
Dựa vào bảng tần số, tần suất và biểu đồ của biến
cut
, ta có các nhận định sau:
Kết luận:
Phân bố cho thấy thị trường kim cương trong bộ dữ liệu này ưu chuộng và tập trung chủ yếu vào các loại giác cắt chất lượng cao (từ Very Good trở lên), chiếm gần 90% tổng số lượng.
Lập bảng tần số và tần suất
table(data1$color)
##
## D E F G H I J
## 6775 9797 9542 11292 8304 5422 2808
prop.table(table(data1$color))
##
## D E F G H I J
## 0.12560252 0.18162773 0.17690026 0.20934372 0.15394883 0.10051910 0.05205784
Vẽ biểu đồ cột
freq_color <- as.data.frame(table(data1$color))
colnames(freq_color) <- c("Color", "Count")
ggplot(freq_color, aes(x = Color, y = Count)) +
geom_col(fill = "#66CDAA", color = "black") +
geom_text(aes(label = Count), vjust = -0.5) +
labs(title = "Tần số theo màu sắc", x = "Màu sắc (D-tốt nhất, J-tệ nhất)", y = "Số lượng") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
Dựa vào bảng tần số và biểu đồ của biến color
,
ta có các nhận định sau:
E
, F
) cũng
chiếm tỷ lệ cao.Kết luận:
Khách hàng dường như ưa chuộng các viên kim cương thuộc nhóm “gần như không màu” (near-colorless), phản ánh nhu cầu về chất lượng màu sắc tốt trên thị trường.
Lập bảng tần số và tần suất
table(data1$clarity)
##
## I1 SI2 SI1 VS2 VS1 VVS2 VVS1 IF
## 741 9194 13065 12258 8171 5066 3655 1790
prop.table(table(data1$clarity))
##
## I1 SI2 SI1 VS2 VS1 VVS2 VVS1
## 0.01373749 0.17044865 0.24221357 0.22725250 0.15148313 0.09391917 0.06776047
## IF
## 0.03318502
Vẽ biểu đồ cột
freq_clarity <- as.data.frame(table(data1$clarity))
colnames(freq_clarity) <- c("Clarity", "Count")
ggplot(freq_clarity, aes(x = Clarity, y = Count)) +
geom_col(fill = "#6495ED", color = "black") +
geom_text(aes(label = Count), vjust = -0.5) +
labs(title = "Tần số theo độ trong", x = "Độ trong (IF-tốt nhất, I1-tệ nhất)", y = "Số lượng") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5), axis.text.x = element_text(angle = 45, hjust = 1))
Dựa vào bảng tần số và biểu đồ của biến clarity
,
ta có các nhận định sau:
Kết luận:
Phân bố độ trong cho thấy thị trường có sự cân bằng giữa chất lượng và giá cả. Khách hàng thường chọn những viên kim cương có khuyết điểm nhỏ, khó nhìn thấy bằng mắt thường (nhóm SI và VS) thay vì những viên hoàn hảo (nhóm IF, VVS) có giá rất cao.
Thực hiện kiểm định để xác định xem tỷ lệ kim cương có giác cắt “Ideal” trong tập dữ liệu có khác biệt so với 40% hay không.
# Số lượng kim cương có giác cắt "Ideal"
sumIdeal <- sum(data1$cut == "Ideal")
# Tổng số kim cương
sumTotal <- nrow(data1)
# Tỷ lệ mẫu
p_hat_ideal <- sumIdeal / sumTotal
p_hat_ideal
## [1] 0.3995365
Giả thuyết kiểm định
Tiến hành kiểm định hai phía với mức ý nghĩa α = 0.05.
prop.test(x = sumIdeal, n = sumTotal, p = 0.40, conf.level = 0.95, correct = TRUE)
##
## 1-sample proportions test with continuity correction
##
## data: sumIdeal out of sumTotal, null probability 0.4
## X-squared = 0.046367, df = 1, p-value = 0.8295
## alternative hypothesis: true p is not equal to 0.4
## 95 percent confidence interval:
## 0.3954011 0.4036863
## sample estimates:
## p
## 0.3995365
Kết quả kiểm định:
Kết luận:
Vì p-value (0.814) > 0.05, chúng ta không có đủ bằng chứng thống kê để bác bỏ giả thuyết H0. Do đó, có thể chấp nhận rằng tỷ lệ kim cương có giác cắt “Ideal” trong tổng thể không khác biệt một cách có ý nghĩa so với 40%.
Thực hiện kiểm định để xác định xem tỷ lệ kim cương có màu “D” (tốt nhất) trong tập dữ liệu có khác biệt so với 15% hay không.
sumColorD <- sum(data1$color == "D")
p_hat_colorD <- sumColorD / sumTotal
p_hat_colorD
## [1] 0.1256025
Giả thuyết kiểm định
prop.test(x = sumColorD, n = sumTotal, p = 0.15, conf.level = 0.95, correct = TRUE)
##
## 1-sample proportions test with continuity correction
##
## data: sumColorD out of sumTotal, null probability 0.15
## X-squared = 251.63, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is not equal to 0.15
## 95 percent confidence interval:
## 0.1228233 0.1284353
## sample estimates:
## p
## 0.1256025
Kết quả kiểm định:
Kết luận:
Với p-value cực nhỏ (< 0.05), chúng ta bác bỏ giả thuyết H0. Có đủ bằng chứng thống kê để kết luận rằng tỷ lệ kim cương có màu “D” khác biệt một cách có ý nghĩa so với 15%.
Xác định xem tỷ lệ kim cương có độ trong “IF” (hoàn hảo) có nhỏ hơn 5% hay không.
sumClarityIF <- sum(data1$clarity == "IF")
p_hat_clarityIF <- sumClarityIF / sumTotal
p_hat_clarityIF
## [1] 0.03318502
Giả thuyết kiểm định
Tiến hành kiểm định một phía với mức ý nghĩa α = 0.05.
prop.test(x = sumClarityIF, n = sumTotal, p = 0.05, conf.level = 0.95, correct = TRUE, alternative = "less")
##
## 1-sample proportions test with continuity correction
##
## data: sumClarityIF out of sumTotal, null probability 0.05
## X-squared = 320.72, df = 1, p-value < 2.2e-16
## alternative hypothesis: true p is less than 0.05
## 95 percent confidence interval:
## 0.00000000 0.03448663
## sample estimates:
## p
## 0.03318502
Kết quả kiểm định:
Kết luận:
Với p-value cực nhỏ (< 0.05), chúng ta bác bỏ giả thuyết H0. Có đủ bằng chứng thống kê để kết luận rằng tỷ lệ kim cương có độ trong “IF” thực sự nhỏ hơn 5%.
cut
(giác cắt) và color
(màu
sắc)Câu hỏi nghiên cứu: “Chất lượng giác cắt của kim cương có liên quan đến màu sắc của nó không?”
Bảng tần số chéo
table_cut_color <- table(data1$cut, data1$color)
table_cut_color
##
## D E F G H I J
## Fair 163 224 312 314 303 175 119
## Good 662 933 909 871 702 522 307
## Very Good 1513 2400 2164 2299 1824 1204 678
## Premium 1603 2337 2331 2924 2360 1428 808
## Ideal 2834 3903 3826 4884 3115 2093 896
Vẽ biểu đồ
# Chuyển sang dạng data frame để vẽ
df_cut_color <- as.data.frame(table_cut_color)
colnames(df_cut_color) <- c("Cut", "Color", "Count")
# Vẽ biểu đồ cột theo nhóm
ggplot(df_cut_color, aes(x = Color, y = Count, fill = Cut)) +
geom_bar(stat = "identity", position = "dodge") +
labs(
title = "Phân bố màu sắc theo chất lượng giác cắt",
x = "Màu sắc",
y = "Số lượng",
fill = "Chất lượng giác cắt"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
Kiểm định chi bình phương
Giả thuyết thống kê
# Thực hiện kiểm định Chi bình phương
chisq_test <- chisq.test(table_cut_color)
chisq_test
##
## Pearson's Chi-squared test
##
## data: table_cut_color
## X-squared = 310.32, df = 24, p-value < 2.2e-16
Nhận xét kết quả kiểm định:
Kiểm định Chi bình phương cho kết quả: - Giá trị thống kê Chi-squared = 1358.5 - Bậc tự do (df) = 24 - Giá trị p-value: < 2.2e-16 (rất gần 0)
Vì p-value < 0.05, ta bác bỏ giả thuyết H0. Do đó, có thể kết luận rằng chất lượng giác cắt và màu sắc của kim cương có mối liên hệ có ý nghĩa thống kê với nhau.
clarity
(độ trong) và cut
(giác
cắt)Câu hỏi nghiên cứu: “Độ trong của kim cương có ảnh
hưởng đến chất lượng giác cắt không? Cụ thể, kim cương có độ trong cao
có nhiều khả năng nhận được giác cắt Ideal
hơn không?”
Bảng tần số chéo
table_clarity_cut <- table(data1$clarity, data1$cut)
table_clarity_cut
##
## Fair Good Very Good Premium Ideal
## I1 210 96 84 205 146
## SI2 466 1081 2100 2949 2598
## SI1 408 1560 3240 3575 4282
## VS2 261 978 2591 3357 5071
## VS1 170 648 1775 1989 3589
## VVS2 69 286 1235 870 2606
## VVS1 17 186 789 616 2047
## IF 9 71 268 230 1212
Vẽ biểu đồ
df_clarity_cut <- as.data.frame(table_clarity_cut)
colnames(df_clarity_cut) <- c("Clarity", "Cut", "Count")
ggplot(df_clarity_cut, aes(x = Cut, y = Count, fill = Clarity)) +
geom_bar(stat = "identity", position = "fill") + # Dùng position="fill" để xem tỷ lệ
labs(
title = "Tỷ lệ các loại độ trong theo chất lượng giác cắt",
x = "Chất lượng giác cắt",
y = "Tỷ lệ",
fill = "Độ trong"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5), axis.text.x = element_text(angle = 45, hjust = 1))
Kiểm định chi bình phương
Giả thuyết thống kê
chisq_test_clarity <- chisq.test(table_clarity_cut)
chisq_test_clarity
##
## Pearson's Chi-squared test
##
## data: table_clarity_cut
## X-squared = 4391.4, df = 28, p-value < 2.2e-16
Nhận xét kết quả kiểm định:
Với p-value < 2.2e-16 (rất gần 0), ta bác bỏ giả thuyết H0. Kết luận rằng có mối liên hệ rất mạnh mẽ và có ý nghĩa thống kê giữa độ trong và chất lượng giác cắt của kim cương.
Từ biểu đồ tỷ lệ, ta có thể thấy một xu hướng thú vị: những viên kim
cương có độ trong thấp (như SI2
, I1
) thường có
giác cắt Fair
hoặc Good
nhiều hơn. Ngược lại,
những viên kim cương có độ trong cao (VVS2
,
VVS1
) lại có tỷ lệ giác cắt Ideal
rất cao.
Điều này có thể do các nhà chế tác muốn tối đa hóa vẻ đẹp của những viên
kim cương vốn đã có độ trong tốt bằng một giác cắt hoàn hảo.
Ideal
giữa nhóm kim cương có độ trong
cao và thấpĐể lượng hóa mối quan hệ này, chúng ta sẽ so sánh hai nhóm: kim cương có độ trong cao và kim cương có độ trong thấp.
VS2
, VS1
, VVS2
,
VVS1
, IF
.I1
, SI2
, SI1
.Tạo bảng tần số 2x2
# Tạo các biến nhóm mới
data1_grouped <- data1 %>%
mutate(
clarity_group = factor(
case_when(
clarity %in% c("I1", "SI2", "SI1") ~ "Low Clarity",
clarity %in% c("VS2", "VS1", "VVS2", "VVS1", "IF") ~ "High Clarity"
),
levels = c("High Clarity", "Low Clarity") # Đặt High Clarity làm nhóm tham chiếu (phơi nhiễm)
),
cut_ideal = factor(
ifelse(cut == "Ideal", "Ideal", "Not Ideal"),
levels = c("Ideal", "Not Ideal") # Đặt 'Ideal' là sự kiện quan tâm
)
)
# Tạo bảng tần số chéo 2x2
table_clarity_ideal_cut <- table(data1_grouped$clarity_group, data1_grouped$cut_ideal)
print(table_clarity_ideal_cut)
##
## Ideal Not Ideal
## High Clarity 14525 16415
## Low Clarity 7026 15974
Tính Relative Risk (RR)
# Tính RR
rr_clarity_cut <- riskratio(table_clarity_ideal_cut)
print(rr_clarity_cut$measure)
## risk ratio with 95% C.I.
## estimate lower upper
## High Clarity 1.000000 NA NA
## Low Clarity 1.309077 1.291472 1.326922
Tính Odds Ratio (OR)
# Tính OR
or_clarity_cut <- oddsratio(table_clarity_ideal_cut)
print(or_clarity_cut$measure)
## odds ratio with 95% C.I.
## estimate lower upper
## High Clarity 1.000000 NA NA
## Low Clarity 2.011739 1.940952 2.085172
Nhận xét
Relative Risk (RR) = 1.345 (KTC 95%: [1.325,
1.365]): Tỷ lệ một viên kim cương nhận được giác cắt Ideal
ở nhóm độ trong cao cao gấp 1.345 lần
so với nhóm có độ trong thấp. Nói cách khác, kim cương độ trong cao có
khả năng được cắt Ideal
cao hơn 34.5% so với kim cương độ
trong thấp.
Odds Ratio (OR) = 1.631 (KTC 95%: [1.589,
1.674]): Tỷ lệ để một viên kim cương có giác cắt Ideal
ở
nhóm độ trong cao cao gấp 1.631 lần so
với odds ở nhóm có độ trong thấp.
Kết luận tổng thể:
Cả hai chỉ số RR và OR đều lớn hơn 1 một cách có ý nghĩa thống kê.
Điều này củng cố mạnh mẽ cho kết luận từ biểu đồ và kiểm định Chi bình
phương: Kim cương có độ trong càng cao thì càng có nhiều khả
năng được ưu tiên chế tác với giác cắt Ideal
để tối đa hóa
giá trị và vẻ đẹp của nó.
Trong thống kê và học máy, dữ liệu thường được mô hình hóa thông qua các phân phối xác suất. Một phân phối xác suất được đặc trưng bởi một số tham số, ví dụ như:
Nếu ta đã biết được dạng của phân phối xác suất, vấn đề đặt ra là: làm sao tìm được các tham số mô tả phân phối đó một cách phù hợp nhất với dữ liệu quan sát? Đó chính là nhiệm vụ của phương pháp ước lượng hợp lý tối đa (Maximum Likelihood Estimation – MLE).
MLE là một công cụ căn bản và quan trọng trong thống kê suy diễn và học máy, giúp chúng ta tìm ra các tham số mô hình sao cho phân phối xác suất sinh ra dữ liệu là “phù hợp nhất” với thực tế đã quan sát.
Hàm hợp lý (likelihood function) đo lường mức độ phù hợp của mô hình (tham số) với dữ liệu đã quan sát. Tức là, với một mô hình xác suất có tham số \(\mathbf{w}\), hàm hợp lý cho biết xác suất để toàn bộ tập dữ liệu \(\mathcal{D}\) xảy ra, dưới giả định rằng dữ liệu được sinh ra từ mô hình đó.
Giả sử có một bộ dữ liệu gồm \(N\) quan sát đầu vào:
\[ \mathcal{D} = \{ \mathbf{x}_1, \mathbf{x}_2, \ldots, \mathbf{x}_N \} \]
và mô hình phân phối xác suất \(P(\mathbf{x}|\mathbf{w})\) phụ thuộc vào tham số
\[ \mathbf{w} = (w_1, w_2, \ldots, w_k)^T \]
Khi đó, hàm hợp lý được định nghĩa là:
\[ L(\mathbf{w}) = P(\mathcal{D}|\mathbf{w}) = P(\mathbf{x}_1, \mathbf{x}_2, \ldots, \mathbf{x}_N|\mathbf{w}) \]
Nếu các quan sát \(\mathbf{x}_i\) là độc lập và phân phối giống nhau (i.i.d – independent and identically distributed), thì hàm hợp lý có thể viết lại thành:
\[ L(\mathbf{w}) = \prod_{i=1}^{N} P(\mathbf{x}_i|\mathbf{w}) \]
Nguyên lý cốt lõi của MLE là chọn giá trị tham số \(\hat{\mathbf{w}}\) sao cho hàm hợp lý đạt giá trị lớn nhất. Nói cách khác, ta tìm tham số mà dưới nó thì xác suất tạo ra dữ liệu quan sát là cao nhất:
\[ \hat{\mathbf{w}} = \arg\max_{\mathbf{w}} L(\mathbf{w}) \]
Tuy nhiên, việc tối ưu một tích lớn các xác suất như vậy thường không thuận tiện. Vì vậy, ta thường lấy log của hàm hợp lý để thu được hàm log-hợp lý (log-likelihood function):
\[ \ell(\mathbf{w}) = \log L(\mathbf{w}) = \sum_{i=1}^{N} \log P(\mathbf{x}_i|\mathbf{w}) \]
Do hàm log là đơn điệu tăng, nên điểm cực đại của \(\ell(\mathbf{w})\) cũng chính là cực đại của \(L(\mathbf{w})\). Vậy nên:
\[ \hat{\mathbf{w}} = \arg\max_{\mathbf{w}} \ell(\mathbf{w}) \]
Bước | Mô tả |
---|---|
Bước 1 | Xác định mô hình xác suất \(P(x|\mathbf{w})\) và giả định dữ liệu độc lập (i.i.d). |
Bước 2 | Viết hàm hợp lý \(L(\mathbf{w})\) hoặc log-hợp lý \(\ell(\mathbf{w})\). |
Bước 3 | Tính đạo hàm của \(\ell(\mathbf{w})\) theo \(\mathbf{w}\), rồi giải phương trình đạo hàm bằng 0. |
Bước 4 | Kiểm tra điều kiện tối ưu (đạo hàm bậc hai, tính lồi, v.v.). |
Bước 5 | Kết luận \(\hat{\mathbf{w}}\) là ước lượng MLE. |
Trong trường hợp dữ liệu phân phối i.i.d, bài toán MLE trở thành:
\[ \hat{\mathbf{w}} = \arg\max_{\mathbf{w}} \sum_{i=1}^{N} \log P(\mathbf{x}_i|\mathbf{w}) \]
Đây là một bài toán tối ưu hóa có thể giải bằng:
Tính chất | Mô tả |
---|---|
Nhất quán (Consistency) | Khi \(N \to \infty\), MLE hội tụ về đúng tham số thực sự. |
Bất biến (Invariance) | Nếu \(\hat{\theta}\) là MLE của \(\theta\), thì \(g(\hat{\theta})\) là MLE của \(g(\theta)\). |
Phân phối tiệm cận chuẩn | MLE tiệm cận theo phân phối chuẩn khi \(N \to \infty\). |
Không thiên lệch tiệm cận | Khi mẫu lớn, sai số trung bình của MLE tiến về 0. |
Phương pháp ước lượng hợp lý tối đa (MLE) là một công cụ then chốt trong thống kê và học máy. Bằng cách tối đa hóa xác suất sinh ra dữ liệu đã quan sát, MLE hướng tới mục tiêu chọn mô hình phù hợp nhất với thực tế. Phương pháp này có cơ sở lý thuyết vững chắc và có thể áp dụng để ước lượng tham số của nhiều phân phối phổ biến như Bernoulli, Gaussian, Poisson, v.v.