SVD, QR और Cholesky अपघटन
आयाम घटाने और गुणनखंडन के लिए svd(), qr() और chol() का प्रयोग करें।
SVD, QR और Cholesky अपघटन, CoddyKit पर R Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह R Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
मैट्रिक्स अपघटन क्यों
मैट्रिक्स अपघटन A को सरल मैट्रिक्सों के गुणनफलों में विभाजित करते हैं। वे छिपी हुई संरचना (रैंक, कंडीशन) उजागर करते हैं, कुशल गणना संभव बनाते हैं और सांख्यिकी तथा मशीन लर्निंग में PCA, प्रतिगमन और अनुकूलन की आधारशिला हैं।
# Three fundamental decompositions:
# 1. SVD: A = U D V' (any matrix)
# 2. QR: A = Q R (any matrix)
# 3. Cholesky: A = L L' (symmetric positive definite)
# Each serves a purpose:
# SVD -> PCA, pseudoinverse, rank, image compression
# QR -> linear regression, Gram-Schmidt, eigenvalues
# Cholesky -> fast solve for SPD systems, simulation
A <- matrix(c(4, 3, 2,
3, 6, 1,
2, 1, 5), nrow = 3, byrow = TRUE)
cat('Matrix ready for decomposition')
print(A)SVD: svd() फ़ंक्शन
सिंगुलर वैल्यू अपघटन (SVD) किसी भी m×n मैट्रिक्स A = U D V' का गुणनखंडन करता है, जहाँ U और V लंबवत होती हैं तथा D विकर्ण मैट्रिक्स होती है, जिसमें घटते क्रम में गैर-ऋणात्मक सिंगुलर मान होते हैं।
A <- matrix(c(1, 2, 3,
4, 5, 6), nrow = 2, byrow = TRUE)
# Compute SVD
svd_result <- svd(A)
# Components:
svd_result$d # singular values (decreasing)
svd_result$u # left singular vectors (2x2)
svd_result$v # right singular vectors (3x2)
cat('Singular values:', svd_result$d, '\n')
cat('Rank of A:', sum(svd_result$d > 1e-10), '\n')SVD से पुनर्निर्माण
SVD से A का पुनर्निर्माण A = U %*% diag(d) %*% t(V) के रूप में करें। निम्न-रैंक सन्निकटन केवल शीर्ष k सिंगुलर मानों या सदिशों को रखते हैं — यही छवि संपीड़न और शोर में कमी का आधार है।
A <- matrix(c(1, 2, 3,
4, 5, 6,
7, 8, 9), nrow = 3, byrow = TRUE)
res <- svd(A)
U <- res$u; d <- res$d; V <- res$v
# Full reconstruction: A = U diag(d) V'
A_reconstructed <- U %*% diag(d) %*% t(V)
all.equal(A, A_reconstructed) # TRUE
# Rank-1 approximation (best rank-1 approx by Eckart-Young)
A_rank1 <- d[1] * U[, 1] %*% t(V[, 1])
print(round(A_rank1, 2))
# Frobenius error of rank-1 approx
sqrt(sum((A - A_rank1)^2))SVD: छद्मप्रतिलोम और रैंक
SVD छद्मप्रतिलोम A⁺ = V D⁺ U' देता है, जहाँ D⁺ प्रत्येक गैर-शून्य सिंगुलर मान को उसके प्रतिलोम से बदलता है। जब A वर्गाकार या पूर्ण रैंक की न हो, तब भी यह Ax = b का न्यूनतम-वर्ग अर्थ में हल निकालता है।
A <- matrix(c(1, 2, 3,
4, 5, 6), nrow = 2, byrow = TRUE)
# Pseudoinverse via SVD
svd_res <- svd(A)
tol <- 1e-10
# Invert nonzero singular values
d_inv <- ifelse(svd_res$d > tol, 1/svd_res$d, 0)
A_pinv <- svd_res$v %*% diag(d_inv) %*% t(svd_res$u)
print(A_pinv) # 3x2 pseudoinverse
# Least-squares solution: x = A+ b
b <- c(7, 8)
x_ls <- A_pinv %*% b
print(x_ls)
# Compare with MASS::ginv
# MASS::ginv(A) should give the same resultQR अपघटन: qr()
QR अपघटन A = QR का गुणनखंडन करता है, जहाँ Q लंबवत (Q'Q = I) और R ऊपरी त्रिकोणीय होती है। इसका उपयोग रैखिक प्रतिगमन, आइगेनमानों की गणना (QR एल्गोरिदम) और Gram-Schmidt लंबवतकरण में किया जाता है।
A <- matrix(c(1, 2,
3, 4,
5, 6), nrow = 3, byrow = TRUE)
# Compute QR decomposition
qr_res <- qr(A)
# Extract Q and R
Q <- qr.Q(qr_res) # 3x2 orthogonal
R <- qr.R(qr_res) # 2x2 upper triangular
cat('Q is orthogonal: Q\'Q = I\n')
print(round(t(Q) %*% Q, 10)) # Identity
cat('R is upper triangular:\n')
print(round(R, 6))
# Reconstruct A = Q %*% R
all.equal(A, Q %*% R) # TRUEप्रतिगमन के लिए QR
QR के माध्यम से रैखिक प्रतिगमन के सामान्य समीकरण हल करना संख्यात्मक रूप से बेहतर है। चूँकि Q'Q = I, सामान्य समीकरण A'Ax = A'b, R'Q'QRx = R'Q'b बन जाते हैं और सरल होकर Rx = Q'b हो जाते हैं, जिन्हें बैक-सब्स्टिट्यूशन से हल किया जाता है।
# Generate regression data
set.seed(7)
n <- 20
x1 <- rnorm(n); x2 <- rnorm(n)
y <- 1 + 2*x1 - 0.5*x2 + rnorm(n, sd = 0.5)
# Design matrix
X <- cbind(intercept = 1, x1 = x1, x2 = x2)
# QR solve: numerically stable
beta_qr <- qr.solve(X, y)
print(beta_qr) # ~c(1, 2, -0.5)
# Compare with lm()
beta_lm <- coef(lm(y ~ x1 + x2))
all.equal(beta_qr, beta_lm, check.names = FALSE) # TRUE
# The qr.solve internals use backsolve on R
cat('QR regression is lm()\'s default method')Cholesky अपघटन: chol()
Cholesky एक सममित धनात्मक निश्चित मैट्रिक्स का A = L L' के रूप में गुणनखंडन करता है, जहाँ L निचली त्रिकोणीय होती है। R का chol() ऊपरी त्रिकोणीय गुणक U लौटाता है, इसलिए A = t(U) %*% U होता है।
# Symmetric positive definite matrix
A <- matrix(c(4, 2,
2, 3), nrow = 2, byrow = TRUE)
# Cholesky decomposition: A = t(U) %*% U
U <- chol(A)
print(U)
# Note: chol() returns UPPER triangular in R
# Reconstruct
all.equal(A, t(U) %*% U) # TRUE
# Attempting Cholesky on non-PD matrix throws error
# Catch it:
result <- tryCatch(
chol(matrix(c(1, 3, 3, 2), nrow = 2)),
error = function(e) cat('Error:', e$message)
)Cholesky से हल निकालना
सममित धनात्मक निश्चित प्रणालियों (जैसे सहप्रसरण मैट्रिक्सों) के लिए Cholesky-आधारित हल निकालना LU की तुलना में दोगुना तेज़ है। प्रतिलोम की गणना के लिए chol2inv() का उपयोग करें, या Cholesky गुणक के साथ backsolve/forwardsolve का उपयोग करें।
# SPD system: typical in statistics (covariance matrices)
set.seed(1)
X <- matrix(rnorm(30), nrow = 10, ncol = 3)
A <- crossprod(X) # X'X is always SPD
b <- c(1, 2, 3)
# Cholesky factor
U <- chol(A) # Upper triangular
# Solve A x = b using two triangular solves
# A = t(U) %*% U -> solve t(U) y = b, then U x = y
y <- forwardsolve(t(U), b)
x <- backsolve(U, y)
print(x)
# Verify
all.equal(as.vector(A %*% x), b)
# Or: inverse via chol2inv
A_inv <- chol2inv(U)
all.equal(x, as.vector(A_inv %*% b))PCA में SVD
SVD के माध्यम से PCA: डेटा मैट्रिक्स X को केंद्रित करें, फिर केंद्रित X का SVD निकालें। दाएँ सिंगुलर सदिश V प्रधान घटक दिशाएँ होते हैं; सिंगुलर मान d समझाए गए विचरण से संबंधित होते हैं (d²/(n-1))।
set.seed(42)
n <- 50; p <- 3
X <- matrix(rnorm(n * p), nrow = n)
# Add correlation
X[, 2] <- 0.8 * X[, 1] + 0.6 * X[, 2]
# Center
X_c <- scale(X, center = TRUE, scale = FALSE)
# SVD of centered data
svd_res <- svd(X_c)
# Variance explained by each PC
var_explained <- svd_res$d^2 / (n - 1)
prop_var <- var_explained / sum(var_explained)
cat('Proportion of variance explained:\n')
print(round(prop_var, 3))
# Compare with prcomp
pc <- prcomp(X)
all.equal(prop_var, pc$sdev^2 / sum(pc$sdev^2))SVD से मैट्रिक्स रैंक
मैट्रिक्स की रैंक गैर-नगण्य सिंगुलर मानों की संख्या के बराबर होती है। रैंक निर्धारित करने का सबसे अधिक संख्यात्मक रूप से विश्वसनीय तरीका SVD है — बस किसी सीमा से ऊपर के d मान गिनें (आमतौर पर max(d) * tol)।
# Full-rank matrix (rank 3)
A <- matrix(c(1, 0, 0,
0, 2, 0,
0, 0, 3), nrow = 3)
svd(A)$d # c(3, 2, 1) - all nonzero -> rank 3
# Rank-deficient matrix (rank 2)
B <- matrix(c(1, 2, 3,
2, 4, 6, # row 2 = 2 * row 1
0, 1, 1), nrow = 3, byrow = TRUE)
svd(B)$d # Third value is ~0
# Rank function using SVD
matrix_rank <- function(M, tol = 1e-10) {
d <- svd(M)$d
sum(d > tol * d[1]) # relative tolerance
}
matrix_rank(B) # 2बहुचर सामान्य वितरण के नमूने के लिए Cholesky
बहुचर सामान्य N(μ, Σ) से नमूना लेने के लिए Σ का Cholesky गुणक U निकालें, फिर मानक सामान्य मानों को रूपांतरित करें: X = μ + Z %*% U। MASS::mvrnorm() आंतरिक रूप से इसी तरह काम करता है।
set.seed(99)
# Covariance matrix
Sigma <- matrix(c(4, 2,
2, 3), nrow = 2)
mu <- c(1, 5)
n_samples <- 500
# Cholesky factor
U <- chol(Sigma)
# Sample standard normals
Z <- matrix(rnorm(n_samples * 2), nrow = n_samples)
# Transform: X ~ N(mu, Sigma)
X <- sweep(Z %*% U, 2, mu, FUN = '+')
# Check empirical covariance
print(round(cov(X), 2)) # Should be close to Sigma
print(round(colMeans(X), 2)) # Should be close to muत्वरित जाँच
R में SVD, QR और Cholesky अपघटनों की अपनी समझ जाँचें।
पुनरावलोकन: SVD, QR और Cholesky
मुख्य बातें: SVD (svd()) d, u, v लौटाता है — इसका उपयोग PCA, रैंक, छद्मप्रतिलोम और निम्न-रैंक सन्निकटन के लिए किया जाता है। QR (qr()) एक लंबवत Q और ऊपरी त्रिकोणीय R लौटाता है — इसका उपयोग प्रतिगमन और स्थिरता के लिए किया जाता है। Cholesky (chol()) ऊपरी त्रिकोणीय U लौटाता है, जहाँ A = t(U)%*%U — SPD प्रणालियों के लिए यह सबसे तेज़ है। सभी A का सटीक पुनर्निर्माण करते हैं और अलग-अलग गणनात्मक उद्देश्यों की पूर्ति करते हैं।
A <- matrix(c(4, 2, 2, 3), nrow = 2)
# SVD
res <- svd(A)
all.equal(A, res$u %*% diag(res$d) %*% t(res$v)) # TRUE
# QR (on a design matrix)
X <- cbind(1, c(1,2,3,4,5))
qr_res <- qr(X)
all.equal(X, qr.Q(qr_res) %*% qr.R(qr_res)) # TRUE
# Cholesky
U <- chol(A)
all.equal(A, t(U) %*% U) # TRUE
# Use cases:
# svd() -> PCA, rank, pseudoinverse
# qr() -> regression, stability
# chol()-> SPD solve, MVN samplingएआई शिक्षक के साथ R सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 43
- पाठ
- 159
अक्सर पूछे जाने वाले प्रश्न
क्या “SVD, QR और Cholesky अपघटन” पाठ निःशुल्क है?
हाँ — R Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “SVD, QR और Cholesky अपघटन” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। R Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“SVD, QR और Cholesky अपघटन” में मैं क्या सीखूँगा?
आयाम घटाने और गुणनखंडन के लिए svd(), qr() और chol() का प्रयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ R Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या R Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर R Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।
“SVD, QR और Cholesky अपघटन” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस R Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर R Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- मैट्रिक्स गुणा और Determinants
- solve() से रैखिक समीकरण-तंत्र हल करना
- आइगेनमान और आइगेनसदिश
- SVD, QR और Cholesky अपघटन