Importancia de las Matrices en Ciencias de Datos

En ciencia de datos, las matrices son estructuras fundamentales que permiten representar y manipular datos de forma eficiente. Muchos algoritmos de machine learning, estadística multivariada y álgebra lineal (como regresión lineal, análisis de componentes principales, redes neuronales, etc.) utilizan matrices para calcular predicciones, estimaciones y transformaciones.

Las matrices permiten:


Tipos de Matrices y sus funciones en R

1. Matriz básica (llenado por columnas)

m1 <- matrix(1:6, nrow = 2, ncol = 3)
m1  # Crea una matriz de 2 filas y 3 columnas, llenando por columnas

2. Matriz llenada por filas

m2 <- matrix(1:6, nrow = 2, ncol = 3, byrow = TRUE)
m2  # Igual que la anterior, pero llena por filas en lugar de columnas

3. Matriz cuadrada

m3 <- matrix(1:9, nrow = 3)
m3  # Matriz 3x3 que es útil para operaciones cuadradas como determinante

4. Matriz identidad

m_identidad <- diag(1, nrow = 4, ncol = 4)
m_identidad  # Crea una matriz identidad 4x4. Se usa en álgebra lineal.

5. Matriz diagonal

m_diagonal <- diag(c(5, 10, 15))
m_diagonal  # Coloca valores específicos solo en la diagonal principal

6. Matriz de ceros

m_zeros <- matrix(0, nrow = 3, ncol = 4)
m_zeros  # Todos los elementos son 0. Útil para inicialización

7. Matriz de unos

m_unos <- matrix(1, nrow = 2, ncol = 5)
m_unos  # Todos los elementos son 1. Útil para sumas repetidas

8. Matriz con nombres

m_nombres <- matrix(1:6, nrow = 2, byrow = TRUE)
rownames(m_nombres) <- c("Fila1", "Fila2")
colnames(m_nombres) <- c("Col1", "Col2", "Col3")
m_nombres  # Asignación de nombres para facilitar la lectura

9. Matriz a partir de vectores

v1 <- c(1, 2, 3)
v2 <- c(4, 5, 6)
m_rbind <- rbind(v1, v2)  # Une vectores como filas
m_cbind <- cbind(v1, v2)  # Une vectores como columnas
m_rbind
m_cbind

10. Matriz lógica

m_logica <- matrix(c(TRUE, FALSE, TRUE, TRUE), nrow = 2)
m_logica  # Útil para representar condiciones booleanas

11. Matriz con números aleatorios

set.seed(123)
m_random <- matrix(sample(1:100, 12, replace = TRUE), nrow = 3, ncol = 4)
m_random  # Se utiliza para simulación de datos

Operaciones con Matrices en Ciencia de Datos

Transposición

t(m3)  # Intercambia filas por columnas. Muy útil para reorganización de datos

Multiplicación de matrices

m4 <- matrix(1:4, nrow = 2)
m5 <- matrix(5:8, nrow = 2)
m4 %*% m5  # Multiplicación matricial, base de regresión lineal y redes neuronales

Determinante e inversa

m6 <- matrix(c(4, 7, 2, 6), nrow = 2)
det(m6)    # Determinante, útil para saber si la matriz es invertible
solve(m6)  # Inversa de la matriz

Aplicar función por fila o columna

apply(m3, 1, sum)  # Suma por fila
apply(m3, 2, mean) # Media por columna

Aplicaciones prácticas en Ciencia de Datos

Normalización de variables (con scale())

datos <- matrix(c(15, 20, 35, 40, 10, 25), nrow = 3)
normalizado <- scale(datos)  # Estándariza restando media y dividiendo por desviación
normalizado

Análisis de componentes principales (simulado)

datos <- matrix(c(1, 2, 3, 4), nrow = 2)
transformacion <- matrix(c(0.6, -0.8, 0.8, 0.6), nrow = 2)
datos %*% transformacion  # Simula rotación en PCA

Matriz de correlación

set.seed(42)
X <- matrix(rnorm(20), nrow = 5)
cor(X)  # Matriz de correlación de Pearson

Matriz de confusión

conf_matrix <- matrix(c(50, 10, 5, 35), nrow = 2)
colnames(conf_matrix) <- c("Pred:0", "Pred:1")
rownames(conf_matrix) <- c("Real:0", "Real:1")
conf_matrix  # Útil en clasificación binaria

Cálculo de distancia euclidiana

puntos <- matrix(c(1,2,3,4), nrow = 2)
distancia <- sqrt(sum((puntos[1,] - puntos[2,])^2))
distancia  # Métrica usada en clustering

Resumen por variable con apply()

metricas <- matrix(c(100, 120, 130, 95, 85, 105), nrow = 3)
colnames(metricas) <- c("Ventas1", "Ventas2")
apply(metricas, 2, mean)  # Promedio de cada variable

Extracción de submatriz

datos <- matrix(1:20, nrow = 5)
segmento <- datos[1:3, 2:4]  # Extrae subconjunto para análisis parcial
segmento

Simulación de datos aleatorios (observaciones)

X <- matrix(runif(20, min = 0, max = 100), nrow = 5)
colnames(X) <- paste0("Var", 1:4)
X  # Datos simulados para pruebas de modelos

Transposición para ajustar formato de entrada

ventas <- matrix(1:12, nrow = 3)
ventas_t <- t(ventas)  # Útil para visualizar variables como filas
ventas_t