当前位置: 首页 > article >正文

机器学习零基础小白指南---- 线性代数入门

前言

线性代数是机器学习的基石。在掌握机器学习的实战技巧之前,数学基础是绕不过去的一环。本文从零基础视角,通过简明易懂的方式,带你掌握线性代数的核心概念,帮助你构建机器学习的数据表示与运算基础。

为什么从线性代数开始?
  • 数据表示:机器学习中的数据多以矩阵或向量形式表示,线性代数是理解这些数据的语言。
  • 模型构建:从线性回归到神经网络,矩阵运算是核心。
  • 特征变换:降维、特征提取等技术都依赖线性代数。

一、向量:数据的基本单元

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 np
      v = np.array([[170], [65], [30]])  # 列向量
      
1.3 向量的基本运算
  1. 向量加法
    [
    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)
  1. 数乘
    [
    c \cdot v = [c \cdot v_1, c \cdot v_2]
    ]
    例子:
    [
    2 \cdot [3, 4] = [6, 8]
    ]
    Python实现:
v = np.array([3, 4])
c = 2
print(c * v)
  1. 向量的长度(范数)
    [
    |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 norm
v = np.array([3, 4])
print(norm(v))

二、矩阵:多维数据的集合

2.1 什么是矩阵?

矩阵是一个二维数组,由行和列组成,用于表示数据集、模型参数和特征变换。

例子:房价数据集

面积(㎡)房龄(年)房价(万元)
505100
10010200
1508300

对应的矩阵表示:
[
X =
\begin{bmatrix}
50 & 5 \
100 & 10 \
150 & 8
\end{bmatrix}, \quad y =
\begin{bmatrix}
100 \
200 \
300
\end{bmatrix}
]

2.2 矩阵的运算
  1. 矩阵加法
    两个相同维度的矩阵逐元素相加。
    [
    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)
  1. 矩阵乘法
    [
    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)

结语

线性代数是理解机器学习算法的关键工具。希望本文能帮助你从零基础逐步建立数学认知,为后续学习奠定基础。如果你有任何问题或建议,欢迎评论交流!


http://www.kler.cn/a/447981.html

相关文章:

  • 秒优科技-供应链管理系统 login/doAction SQL注入漏洞复现
  • arm Rk3588 更新固件
  • Leetcode Hot 100 【二叉树】104. 二叉树的最大深度
  • [JavaScript] 我该怎么去写一个canvas游戏
  • React系列(八)——React进阶知识点拓展
  • Apache Solr RCE(CVE-2017-12629)--vulhub
  • 生态学研究中,森林生态系统的结构、功能与稳定性是核心研究
  • Go语言中context 结构原理, 使用场景和用途
  • kotlin中泛型中in和out的区别
  • 使用qemu搭建armv7嵌入式开发环境
  • word文档中有大量空白行删除不掉,怎么办?
  • E46.【C语言】练习:面试题:循环多少次?
  • 探秘 Go 语言赋值表达式的奇妙之旅
  • 类型注解:基本类型
  • Linux驱动开发应用层 2 点亮一个LED
  • python2和python3的区别
  • Mysql学习笔记之SQL-3
  • Nginx:刷新显示404
  • 【数据分析】活动效果评估
  • java中的继承
  • ARM 处理器平台 Ethernet Compliance 测试流程示例
  • 电脑运行库DirectX出问题怎么办?
  • 开源轮子 - Apache Common
  • 九大高效的前端测试工具与框架
  • 答:C++需要学到什么程度再开始学 qt 比较合理?
  • 【优选算法---分治】快速排序三路划分(颜色分类、快速排序、数组第K大的元素、数组中最小的K个元素)