icon
小维AI总结
HunYuan-Turbos-Latest
思考中···

简介

AI(Artificial Intelligence 人工智能):用计算机模拟人脑,让计算机像人一样的思考和行动

ML(Machine Learning 机器学习):训练机器从数据中自动学习规律和模式

DL(Deep Learning 深度学习):也叫深度神经网络,大脑仿生,设计一层一层神经元模拟万事万物

机器学习是实现人工智能的一种途径,深度学习是机器学习的一种方法(机器学习包含深度学习)

AI发展三要素:数据(决定模型效果上限)、算法、算力

常用术语

术语 英文 定义
样本 sample 一行数据就是一个样本
数据集 dataset 多个样本组成数据集
特征 feature 一列数据一个特征,也叫属性
标签/目标 label/target 模型要预测的那一列数据

数据集划分:训练集用来训练模型、测试集用来测试评估模型,一般比例 7:3 或 8:2

拟合:模型在训练集和测试集上的表现情况

  • 欠拟合(under-fitting):模型在训练集和测试集表现都不好 → 模型太简单
  • 过拟合(over-fitting):训练集表现好,测试集表现不好 → 模型过复杂、数据不纯、训练数据太少

泛化(Generalization):模型在新数据集(非训练数据)上表现好坏的能力

ML算法分类

有监督学习:有特征、有标签

  • 标签连续 → 回归问题(房屋信息–>价格预测)
  • 标签不连续 → 分类问题(猫/狗图片–>猫|狗)

无监督学习:有特征、没有标签,基于样本间相似性(如:聚类)

半监督学习:专家标注少量数据训练模型,用模型预测未标记数据,再由专家校验审核

强化学习:寻找最优解以获取更多奖励

  • 四要素:Agent(智能体)、环境(environment)、行动(action)、奖励(reward)
  • 示例:下象棋,每一步追求最优解

有监督分类问题

Classification:标签/目标不连续

  • 分类种类:二分类、多分类
  • 示例:猫狗分类

有监督回归问题

Regression:目标是连续的,y=wx+b 线性回归

  • 示例:房价预测

无监督聚类问题

Clustering:有特征、没有标签

ML建模流程

  1. 加载数据:图像数据、文本数据等
  2. 数据预处理:处理缺失值、异常值等
  3. 特征工程
    • 特征提取(提取和任务相关特征)
    • 特征预处理(归一化、标准化
    • 特征降维、特征选择、特征组合
  4. 模型训练:线性回归、决策树等
  5. 评估:回归评测指标、分类评测指标等
  6. 模型预测:图像数据、文本数据等

交叉验证

数据集的分割方法,将训练集分n份,拿一份做验证集(测试集)、其他n-1份做训练集

是划分数据集的一种方法,目的为了得到更加准确可信的模型评分

解决:模型数据输入问题(数据集划分)

网格搜索

是模型调参的有力工具,只需将若干参数传给网格搜索对象,它自动帮我们完成不同超参数的组合、模型训练、模型评估,最终返回一组最优的超参数

KNN的K就是超参

解决:超参数的组合

一般都是网格搜索 + 交叉验证组合(模型选择和调优)

1
sklearn.model_selection.GridSearchCV(estimator, param_grid=None, cv=None)

对估计器的指定参数值进行详尽搜索

  • estimator:估计器对象也就是模型
  • param_grid:估计器参数 (dict) {"n_neighbors": [1, 3, 5]}
  • cv:指定几折交叉验证
  • fit:输入训练数据
  • score:准确率

结果分析

  • best_score:在交叉验证中验证的最好结果
  • best_estimator:最好的参数模型
  • cv_results:每次交叉验证后的验证集准确率结果和训练集准确率结果

KNN算法

K-近邻算法(K Nearest Neighbor)简称KNN,根据你的邻居来推断你的类型

思想:一个样本在特征空间中的k个最相似的样本中,大多数属于某个类别,则该样本也属于这个类别

距离度量

  • 欧式距离:对应维度差值平方和,开平方根
    • d=(x1x2)2+(y1y2)2d=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}
  • 曼哈顿距离:对应维度差值的绝对值求和
    • 示例:坐标(0,0)到(6,6) → |0-6|+|0-6|=12步

K值选择

  • K过大会欠投合 → 模型变得简单
  • K过小则过拟合 → 过度分析样本

算法步骤

  1. 计算未知样本到每一个训练样本的距离
  2. 将训练样本根据距离大小升序排序
  3. 取出距离最近的K个训练样本
  4. 分类:进行多数表决,统计K个样本中哪个类别的样本个数最多
  5. 回归:把K个样本的目标值计算其平均值

代码示例

分类问题

1
2
3
4
5
6
7
8
9
10
from sklearn.neighbors import KNeighborsClassifier

x_train = [[1], [2], [3], [4]] # 训练集特征
y_train = [0, 0, 1, 1] # 训练集标签
x_test = [[5]] # 测试集特征
model = KNeighborsClassifier(n_neighbors=2)
model.fit(x_train, y_train)

y_test = model.predict(x_test)
print(f'模型预测结果为:{y_test}')

回归问题

1
2
3
4
5
6
7
8
9
10
from sklearn.neighbors import KNeighborsRegressor

x_train = [[0, 0, 1], [1, 1, 0], [3, 10, 10], [4, 11, 12]]
y_train = [0.1, 0.2, 0.3, 0.4] # 标签连续,一维数组
x_test = [[3, 11, 10]]
model = KNeighborsRegressor(n_neighbors=3)
model.fit(x_train, y_train)

y_test = model.predict(x_test)
print(f'模型预测结果为:{y_test}')

归一化

通过对原始数据进行变化,把数据映射到0到1之间,都包括左右

适用场景:适合小数据集操作

公式:(当前值-最小值)/(最大值-最小值)

样本 特征1 (原始) 特征2 (原始) 特征3 (原始) 特征4 (原始)
A 90 2 10 40
B 60 4 15 45
C 75 3 13 46

示例:90 → (90-60)/(90-60)=1.0,60 → (60-60)/(90-60)=0

映射到其他范围:结果 *(最大值-最小值)+ 最小值

样本 特征1 特征2 特征3 特征4
A 1.0 0.0 0.0 0.0
B 0.0 1.0 1.0 0.83
C 0.5 0.5 0.6 1.0
1
2
3
4
5
6
7
from sklearn.preprocessing import MinMaxScaler

x_train = [[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]]
transfer = MinMaxScaler(feature_range=(0, 1))
x_train_new = transfer.fit_transform(x_train)

print(x_train_new)

标准化

数据标准化:通过对原始数据进行标准化,各列的值映射到均值为0、标准差为1的标准正态分布序列

正态分布:也叫高斯分布,记作 N(μ, σ)

  • μ决定其位置
  • 标准差σ决定了分布的幅度

适用场景:大数据处理,样本大时异常值影响可忽略不计

目的:解决量纲(单位)问题导致的模型评估较低等问题

公式:x =(当前值-该列平均值)/ 该列的标准差σ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from sklearn.preprocessing import StandardScaler

x_train = [[90, 2, 10, 40],
[60, 4, 15, 45],
[75, 3, 13, 46]]

transfer = StandardScaler()
x_train_new = transfer.fit_transform(x_train)

print(f'标准化后的数据为:\n{x_train_new}')
print(f'数据集的均值为:{transfer.mean_}')
print(f'数据集的方差为:{transfer.var_}')
print(f'数据集的标准差为:{transfer.scale_}')

# 输出结果:
# [[ 1.22474487 -1.22474487 -1.29777137 -1.3970014 ]
# [-1.22474487 1.22474487 1.13554995 0.50800051]
# [ 0. 0. 0.16222142 0.88900089]]

计算示例(第一列):

  • 均值:(90+60+75)/3 = 75
  • 方差:((90-75)²+(60-75)²+(75-75)²)/3 = 150
  • 标准差:√150 = 12.24744871
  • 90标准化后:(90-75)/12.247 = 1.22474487

公式说明

  • 方差 = 该列每个值与均值的差的平方和的平均值
  • 标准差 = √方差

线性回归

定义:用一条线表示2个变量之间的关系

公式

  • 一元线性回归:y=kx+b(k斜率,b截距)
  • 多元线性回归:y=w₁x₁+w₂x₂+…+b = wᵀx + b
  • 其中:w(weight)权重,b(bias)偏置

应用场景:有了身高体重数据,根据身高去预测体重

损失函数(loss function):用来计算模型的预测值和真实值之间的误差,也叫代价函数、目标函数 = 各个样本的误差和,越小越好

让损失函数最小的方法

  • 梯度下降法:更加普遍
  • 正规方程(求导、偏导):适合数据量小

回归模型评估指标

指标 全称 计算公式 说明
MAE 平均绝对误差(Mean Absolute Error) Σ|预测值−真实值| / 样本总数 反映预测值与真实值的平均误差,对异常值不敏感
MSE 均方误差(Mean Squared Error) Σ(预测值−真实值)² / 样本总数 平方放大误差,对异常值敏感,最小二乘法常用
RMSE 均方根误差(Root Mean Squared Error) √MSE 与原始数据单位一致,对较大误差更加敏感

sklearn API

LinearRegression(正规方程优化):

1
sklearn.linear_model.LinearRegression(fit_intercept=True)
  • 参数:fit_intercept 是否计算偏置
  • 属性:coef*(回归系数),intercept*(偏置)

SGDRegressor(随机梯度下降):

1
2
sklearn.linear_model.SGDRegressor(loss=”squared_loss”, fit_intercept=True,
learning_rate='constant', eta0=0.01)
  • 参数
    • loss:损失函数类型
    • fit_intercept:是否计算偏置
    • learning_rate:学习率策略
    • eta0:学习率的值
  • 属性:coef*(回归系数),intercept*(偏置)

梯度

概念:梯度的方向就是上升最快的方向,单变量函数就是导数,多变量函数就是偏导数

梯度下降法公式:下一个点 = 当前点 - 学习率 × 损失函数

学习率:范围一般 0.001~0.01

  • 太小:学的很慢
  • 太大:抖动、震荡、错过最优解

梯度下降算法分类

算法 全称 说明
FGD 全梯度下降 使用全部样本的梯度值
SGD 随机梯度下降 随机选择一个样本的梯度值更新权重
Mini-batch 小批量梯度下降 随机选择小部分样本的梯度值更新权重(使用最多)
SAG 随机平均梯度下降 使用以前产生的梯度值来指导当前的梯度计算

逻辑回归

一种分类模型,把线性回归的输出,作为逻辑回归的输入,输出(0,1)之间的值

基本思想

  1. 利用线性模型 f(x)=wᵀx+b 根据特征的重要性计算出一个值
  2. 再使用 sigmoid 激活函数将 f(x) 的输出值映射为概率值
    • 设置阈值(eg: 0.5),输出概率值大于 0.5 → 1类
    • 否则 → 0类

假设函数:h(x)=sigmoid(wᵀx+b)

一般用于二分类

损失函数:- 极大似然估计函数

分类问题评估

混淆矩阵、精确率、召回率、F1-score

示例:共10个样本,其中6个为恶性(正例),4个为良性(假例),模型A预测对了3个恶性肿瘤样本,4个良性肿瘤样本

预测:正例 预测:假例
真实:正例 (6) TP = 3 FN = 3
真实:假例 (4) FP = 0 TN = 4
指标 计算公式 含义
精确率 (Precision) TP/(TP+FP) 预测为正例的样本中,有多少是真的正例
召回率 (Recall) TP/(TP+FN) 所有真实的正例样本中,有多少被成功预测出来
F1-Score 2×精确率×召回率/(精确率+召回率) 精确率和召回率的调和平均数

决策树

树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果

核心概念

  • 信息熵:数据的混乱程度,数据越混乱,熵越大
    • H = -Σ(Pᵢ × log₂Pᵢ)
  • 条件熵:特征列中A分类占比 × 条件A的熵 + …
  • 信息增益:熵 - 条件熵
  • 信息增益率:信息增益 / 特征熵(C4.5树)

ID3 决策树构建流程

  1. 计算每个特征的信息增益
  2. 使用信息增益最大的特征将数据集拆分为子集
  3. 使用该特征作为决策树的一个节点
  4. 使用剩余特征对子集重复上述过程

CART决策树(Classification and Regression Tree)

Cart模型是一种决策树模型,必须是二叉树,既可以用于分类,也可以用于回归

类型 策略
Cart回归树 平方误差最小化
Cart分类树 基尼指数最小化

基尼值:从数据集中随机抽取两个样本,其类别标记不一致的概率 = 1 - ΣPᵢ²(越小越好,纯度越高)

基尼系数:分类占比 × 基尼值 累加和

剪枝

把叶子节点、子节点删掉,用更大的叶子节点(子树)替换叶子节点

类型 说明
预剪枝 在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶节点
后剪枝 先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点

集成学习

定义:构建并结合多个”弱学习器”(表现一般的模型),组合成一个”强学习器”

目的:通过集体智慧,解决单一模型预测不准的问题,从而获得比单个模型更好的性能

Bagging思想(代表算法:随机森林)

采用决策树模型作为每一个弱学习器

特点 说明
有放回抽样 Bootstrap Sampling,允许重复抽取,每个子模型看到的数据略有不同
并行训练 所有的子模型同时训练,互不干扰,效率很高
平权投票 分类任务采用”多数表决”,回归任务采用”平均法”

Boosting思想(代表算法:AdaBoost, GBDT, XGBoost)

Boosting的核心在于**”串行””纠错”**

特点 说明
关注不足 每一个新模型都是为了解决前一个模型的错误而生
串行训练 模型必须一个接一个地训练,后一个模型依赖于前一个模型的结果
加权投票 表现好的模型话语权更大(权重高),表现差的模型话语权小

聚类算法

无监督学习,根据样本之间的相似度进行划分,一般用相似度计算方法,如欧式距离

聚类分类:Kmeans算法、层次聚类、DBSCAN聚类、谱聚类

sklearn实现

1
sklearn.cluster.KMeans(n_clusters=8)

核心参数

  • n_clusters:聚类中心数量(默认值8)
  • 含义:指定生成的聚类数,即最终要产生的质心数量

常用方法

  • estimator.fit(x):训练模型,确定聚类中心的位置
  • estimator.predict(x):根据已确定的聚类中心,判断每个样本属于哪个类别
  • estimator.fit_predict(x):一步到位,同时完成”计算聚类中心”和”预测样本类别”

基础数学

为什么要学习标量、向量、矩阵、张量?

宗旨:用到就学什么,不要盲目的展开、大篇幅学数学

概念 说明
标量 scalar 一个独立存在的数,只有大小没有方向
向量 vector 一列顺序排列的元素,默认是列向量,有大小和方向
矩阵 matrix 二维数组,Pandas中的DataFrame
张量 tensor 基于向量和矩阵的推广,reshape(2,3,4) 表示2个3行4列的矩阵

导数:函数值变化量与自变量变化量的比值,当变化量趋于无穷小

f(x0)=limΔx0f(x0+Δx)f(x0)Δxf'(x_0) = \lim_{\Delta x \to 0} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x}

image-20260610210148590

导数四则运算

image-20260610210420560

鸢尾花

花特征

特征 最小值 最大值 均值 标准差 类别相关性
sepal length 4.3 7.9 5.84 0.83 0.7826
sepal width 2.0 4.4 3.05 0.43 -0.4194
petal length 1.0 6.9 3.76 1.76 0.9490 (high!)
petal width 0.1 2.5 1.20 0.76 0.9565 (high!)

总结

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
有监督学习(Supervised Learning)

├── 分类(Classification)
│ │
│ ├── 二分类(Binary Classification)
│ │ ├── 垃圾邮件识别
│ │ ├── 猫/狗分类
│ │ └── 是否违约
│ │
│ └── 多分类(Multi-class Classification)
│ ├── 手写数字识别(0~9)
│ ├── 动物分类
│ └── 新闻分类

│ 常用评估指标:
│ ├── Accuracy(准确率)
│ │ ├── 越大越好
│ │ ├── 含义:预测正确样本占总样本比例
│ │ └── 场景:类别均衡(如猫狗分类)
│ │
│ ├── Precision(精确率)
│ │ ├── 越大越好,误报越少
│ │ ├── 含义:预测为正的样本中,有多少是真的正样本(减少误报 FP)
│ │ └── 场景:垃圾邮件、推荐系统、人脸识别(不能误报)
│ │
│ ├── Recall(召回率)
│ │ ├── 越大越好,漏报越少
│ │ ├── 含义:真实正样本中,有多少被找出来(减少漏报 FN)
│ │ └── 场景:癌症检测、欺诈检测、安全风控(不能漏报)
│ │
│ ├── F1 Score
│ │ ├── 越大越好
│ │ ├── 含义:精确和召回的综合指标
│ │ └── 场景:类别不平衡,需要兼顾误报和漏报
│ │
│ └── AUC-ROC
│ ├── 越大越好(0.5≈随机,1.0最好)
│ ├── 含义:模型区分正负样本的整体能力
│ └── 场景:二分类模型比较、类别不平衡、评价整体性能

└── 回归(Regression)

├── 房价预测
├── 温度预测
├── 销售额预测
└── 股票价格预测

常用评估指标:
├── MAE(平均绝对误差)
│ ├── 越小越好
│ ├── 含义:平均预测误差
│ └── 场景:关注平均误差,对异常值不敏感

├── MSE(均方误差)
│ ├── 越小越好
│ ├── 含义:平方后的平均误差,会放大大误差
│ └── 场景:希望重点惩罚大误差(训练损失常用)

├── RMSE(均方根误差)
│ ├── 越小越好
│ ├── 含义:MSE 开平方,与原始数据单位一致
│ └── 场景:最常用的回归评估指标,易解释

├── R²(决定系数)
│ ├── 越接近1越好
│ ├── 含义:模型对数据变化的解释能力
│ └── 场景:比较不同回归模型拟合效果

└── MAPE(平均绝对百分比误差)
├── 越小越好
├── 含义:预测误差占真实值的百分比
└── 场景:销售预测、流量预测、业务指标预测(便于业务理解)