线性代数是机器学习的基石。在掌握机器学习的实战技巧之前,数学基础是绕不过去的一环。本文从零基础视角,通过简明易懂的方式,带你掌握线性代数的核心概念,帮助你构建机器学习的数据表示与运算基础。
向量是线性代数的核心概念之一,可看作一组有序数值的集合,用于描述对象的特征。
例子: 描述一个人的体型:
这些特征可以组合为一个向量: [ v = [170, 65, 30] ]
维度:向量元素的数量。例如,向量 (v = [170, 65, 30]) 是三维向量。
表示方法:
数学形式:列向量或行向量 [ v = \begin{bmatrix} 170 \ 65 \ 30 \end{bmatrix},\quad v = [170, 65, 30] ]
编程形式(Python):
import numpy as np
v = np.array([[170], [65], [30]]) # 列向量
a = np.array([1, 2])
b = np.array([3, 4])
print(a + b)
v = np.array([3, 4])
c = 2
print(c * v)
from numpy.linalg import norm
v = np.array([3, 4])
print(norm(v))
矩阵是一个二维数组,由行和列组成,用于表示数据集、模型参数和特征变换。
例子:房价数据集
面积(㎡) | 房龄(年) | 房价(万元) |
---|---|---|
50 | 5 | 100 |
100 | 10 | 200 |
150 | 8 | 300 |
对应的矩阵表示: [ X = \begin{bmatrix} 50 & 5 \ 100 & 10 \ 150 & 8 \end{bmatrix}, \quad y = \begin{bmatrix} 100 \ 200 \ 300 \end{bmatrix} ]
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print(A + B)
C = A.dot(B) # 或 np.matmul(A, B)
定义:若存在矩阵 (A^{-1}),使得 (A \cdot A^{-1} = I) (单位矩阵),则 (A^{-1}) 为 (A) 的逆矩阵。
计算公式(对于 (2 \times 2) 矩阵): [ A = \begin{bmatrix} a & b \ c & d \end{bmatrix},\quad A^{-1} = \frac{1}{ad - bc} \begin{bmatrix} d & -b \ -c & a \end{bmatrix} ] Python实现:
A = np.array([[4, 7], [2, 6]])
A_inv = np.linalg.inv(A)
print(A_inv)
线性回归目标:找到参数向量 (\theta),使得 [ y = X\theta ] 通过最小化误差: [ \min_\theta |X\theta - y|^2 ] 正规方程解: [ \theta = (X^T X)^{-1} X^T y ] Python实现:
X = np.array([[1, 50], [1, 100], [1, 150]])
y = np.array([100, 200, 300])
theta = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
print("参数向量 theta:", theta)
线性代数是理解机器学习算法的关键工具。希望本文能帮助你从零基础逐步建立数学认知,为后续学习奠定基础。如果你有任何问题或建议,欢迎评论交流!