机器学习零基础小白指南---- 线性代数入门_实验数据集记为d0={x0|y}根号什么意思
前言
线性代数是机器学习的基石。在掌握机器学习的实战技巧之前,数学基础是绕不过去的一环。本文从零基础视角,通过简明易懂的方式,带你掌握线性代数的核心概念,帮助你构建机器学习的数据表示与运算基础。
为什么从线性代数开始?
一、向量:数据的基本单元
1.1 向量的定义
向量是线性代数的核心概念之一,可看作一组有序数值的集合,用于描述对象的特征。
例子:
描述一个人的体型:
- 身高:170 厘米
- 体重:65 公斤
- 年龄:30 岁
这些特征可以组合为一个向量:
[
v = [170, 65, 30]
]
1.2 向量的维度与表示
- 维度:向量元素的数量。例如,向量 (v = [170, 65, 30]) 是三维向量。
- 表示方法:
- 数学形式:列向量或行向量
[
v =
\\begin{bmatrix}
170 \\
65 \\
30
\\end{bmatrix},\\quad
v = [170, 65, 30]
] - 编程形式(Python):
import numpy as npv = np.array([[170], [65], [30]]) # 列向量
- 数学形式:列向量或行向量
1.3 向量的基本运算
- 向量加法
[
a = [1, 2],\\quad b = [3, 4],\\quad a + b = [4, 6]
]
Python实现:
a = np.array([1, 2])b = np.array([3, 4])print(a + b)
- 数乘
[
c \\cdot v = [c \\cdot v_1, c \\cdot v_2]
]
例子:
[
2 \\cdot [3, 4] = [6, 8]
]
Python实现:
v = np.array([3, 4])c = 2print(c * v)
- 向量的长度(范数)
[
|v| = \\sqrt{v_1^2 + v_2^2 + \\dots + v_n^2}
]
例子:
[
v = [3, 4],\\quad |v| = \\sqrt{3^2 + 4^2} = 5
]
Python实现:
from numpy.linalg import normv = np.array([3, 4])print(norm(v))
二、矩阵:多维数据的集合
2.1 什么是矩阵?
矩阵是一个二维数组,由行和列组成,用于表示数据集、模型参数和特征变换。
例子:房价数据集
对应的矩阵表示:
[
X =
\\begin{bmatrix}
50 & 5 \\
100 & 10 \\
150 & 8
\\end{bmatrix}, \\quad y =
\\begin{bmatrix}
100 \\
200 \\
300
\\end{bmatrix}
]
2.2 矩阵的运算
- 矩阵加法
两个相同维度的矩阵逐元素相加。
[
A =
\\begin{bmatrix}
1 & 2 \\
3 & 4
\\end{bmatrix}, \\quad B =
\\begin{bmatrix}
5 & 6 \\
7 & 8
\\end{bmatrix}, \\quad A + B =
\\begin{bmatrix}
6 & 8 \\
10 & 12
\\end{bmatrix}
]
Python实现:
A = np.array([[1, 2], [3, 4]])B = np.array([[5, 6], [7, 8]])print(A + B)
- 矩阵乘法
[
C = A \\cdot B
]
规则:若 (A) 为 (m \\times n) 矩阵,(B) 为 (n \\times p) 矩阵,则结果为 (m \\times p) 矩阵。
Python实现:
C = A.dot(B) # 或 np.matmul(A, B)
三、矩阵的高级操作
3.1 矩阵的逆
定义:若存在矩阵 (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)
四、矩阵在机器学习中的应用
4.1 线性回归中的矩阵运算
线性回归目标:找到参数向量 (\\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)
结语
线性代数是理解机器学习算法的关键工具。希望本文能帮助你从零基础逐步建立数学认知,为后续学习奠定基础。如果你有任何问题或建议,欢迎评论交流!