回归
线性回归
步骤
-
训练数据,画图
-
预测函数和目标函数
-
初始值是随机的
-
最小二乘法
-
1 2 \frac{1}{2} 21 是方便计算加的
-
-
梯度下降法
- 学习率 η \eta η
-
复合函数微分的链式法则
-
参数更新表达式
-
演示程序
-
标准化
- 差值阈值,跳出训练
公式
预测函数:
f
θ
(
x
)
=
θ
0
+
θ
1
x
f_\theta(x)= \theta_0 + \theta_1x
fθ(x)=θ0+θ1x
目标函数(误差函数):
E
(
θ
)
=
1
2
∑
i
=
1
n
(
y
(
i
)
−
f
θ
(
x
(
i
)
)
)
2
E(\theta) = \frac{1}{2}\sum_{i=1}^{n}(y^{(i)} - f_\theta(x^{(i)}))^2
E(θ)=21i=1∑n(y(i)−fθ(x(i)))2
梯度下降法表达式:
θ
0
:
=
θ
0
−
η
∂
E
∂
θ
0
\theta_0 := \theta_0 - \eta\frac{\partial E}{\partial \theta_0}
θ0:=θ0−η∂θ0∂E
链式法则:
u
=
E
(
θ
)
v
=
f
θ
(
x
)
∂
u
∂
θ
0
=
∂
u
∂
v
⋅
∂
v
∂
θ
0
u= E(\theta) \\ v = f_\theta(x) \\ \frac{\partial u}{\partial \theta_0} = \frac{\partial u}{\partial v}\cdot\frac{\partial v}{\partial \theta_0}
u=E(θ)v=fθ(x)∂θ0∂u=∂v∂u⋅∂θ0∂v
参数更新表达式:
u
u
u 对
v
v
v 的微分
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \frac{\partial…
v
v
v 对
θ
0
\theta_0
θ0 的微分
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \frac{\partial…
u
u
u 对
θ
0
\theta_0
θ0 的微分
$$
\begin{align*}
\frac{\partial u}{\partial \theta_0} &= \frac{\partial u}{\partial v}\cdot\frac{\partial v}{\partial \theta_0} \
&= \sum_{i=1}^{n}( v - y^{(i)})\cdot 1\
&= \sum_{i=1}^{n}( f_\theta(x^{(i)}) - y^{(i)})
\end{align*}
KaTeX parse error: Can't use function '$' in math mode at position 2: $̲\theta_0$ 的参数更新…
\theta_0 := \theta_0 - \eta\sum_{i=1}^{n}( f_\theta(x^{(i)}) - y^{(i)})
KaTeX parse error: Can't use function '$' in math mode at position 5: 同理,$̲\theta_1$ 的参数更新…
\theta_1 := \theta_1 - \eta\sum_{i=1}^{n}( f_\theta(x^{(i)}) - y{(i)})x{(i)}
$$
使用矩阵表示
预测函数:
f
θ
(
x
)
=
θ
0
+
θ
1
x
f_\theta(x)= \theta_0 + \theta_1x
fθ(x)=θ0+θ1x
使用向量表示:
KaTeX parse error: Undefined control sequence: \va at position 2: \̲v̲a̲{\theta} = \beg…
优化算法
- 最速梯度下降法的缺点
- 计算量大
- 容易陷入局部最优解
- 随机梯度下降
- 随机选择一个训练数据来更新参数
- 最速下降法更新一次,随机梯度下降法可以更新 n 次
- 小批量梯度下降法
- 随机选择 m 个训练数据来更新参数
问题
为什么要使用梯度下降法,直接求导不行吗?
- 确定不了导数为 0 的时候,是最大值还是最小值
- 计算机更擅长循环迭代的方式求解
- 多元表达式无法直接求解
为什么使用标准化?
- 提升模型精度
- 提升收敛速度
- 不改变原始数据的分布
为什么是用 python 作为 AI 的主流语言?
- 广泛的库和框架选择
- 平*立性
学习率如何决定?
目前只能通过反复尝试来找到合适的值
扩展
- 多重回归
- 对参数进行标准化,校验时需要使用相同的平均数和标准差
- 多项式回归
分类
感知机
- 只能处理线性可分的情况
- 可以处理三维以上的数据
步骤
- 训练数据,画图
- 矩形为横向还是纵向
- 预测函数和目标函数
- KaTeX parse error: Undefined control sequence: \vb at position 1: \̲v̲b̲*{x} 和 \vb*{w}为向量
- 内积正负说明相似程度
- 无目标函数
- 参数更新表达式
- 寻找使权重向量成为法线向量的直线
- 通过向量的相加实现权重的更新
- 演示程序
- 指定训练次数
公式
预测函数(判别函数):
KaTeX parse error: Undefined control sequence: \vb at position 4: f_\̲v̲b̲*{w}(\vb*{x}) =…
参数更新表达式:
KaTeX parse error: Undefined control sequence: \vb at position 2: \̲v̲b̲*{w} := \begin{…
逻辑回归
- y 值使用 0 和 1 处理更加方便
- 训练数据
- 线性可分
- 同感知机
- 预测函数
- KaTeX parse error: Undefined control sequence: \vb at position 1: \̲v̲b̲*{\theta}^T\vb*… 时,值为 0.5
- 函数值在(0,1)范围内
- KaTeX parse error: Undefined control sequence: \vb at position 1: \̲v̲b̲*{\theta}^T\vb*… 时的直线称为决策边界
- 目标函数
- 似然函数,Likelihood
- 派
- 求使目标函数最大化的参数KaTeX parse error: Undefined control sequence: \vb at position 1: \̲v̲b̲*{\theta}
- 参数更新表达式
- l o g ( 1 − v ) log(1-v) log(1−v) 同样使用复合函数求导公式进行微分
- 指定训练次数
公式
sigmoid函数:
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x) = \frac{1}{1+e^{-x}}
σ(x)=1+e−x1
常用导数:
(
e
x
)
′
=
e
x
(
e
−
x
)
′
=
−
e
−
x
(e^x)' = e^x \\ (e^{-x})' = -e^{-x}
(ex)′=ex(e−x)′=−e−x
sigmoid函数微分:
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \sigma'(x) &= …
预测函数:
KaTeX parse error: Undefined control sequence: \vb at position 4: f_\̲v̲b̲*{\theta}(\vb*{…
阈值函数:
KaTeX parse error: Undefined control sequence: \vb at position 25: …in{cases} 1 & (\̲v̲b̲*{\theta}^T\vb*…
未知数据 KaTeX parse error: Undefined control sequence: \vb at position 1: \̲v̲b̲*{x}是横向图像的概率:
KaTeX parse error: Undefined control sequence: \vb at position 8: P(y=1|\̲v̲b̲*{x}) = f_\vb*{…
目标函数:
KaTeX parse error: Undefined control sequence: \vb at position 4: L(\̲v̲b̲*{\theta}) = \p…
对数似然函数:
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \log L(\vb*{\t…
复合函数:
KaTeX parse error: Undefined control sequence: \vb at position 13: u = \log L(\̲v̲b̲*{\theta}) \\ v…
参数更新表达式:
u
u
u 对
v
v
v的微分
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \frac{\partial…
v
v
v 对
θ
j
\theta_j
θj 微分
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \frac{\partial…
u
u
u 对
θ
j
\theta_j
θj 微分
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲ \frac{\partial…
θ
j
\theta_j
θj 的参数更新表达式:
KaTeX parse error: Undefined control sequence: \vb at position 54: …^n(y^{(i)} - f_\̲v̲b̲*{\theta}(\vb*{…
θ
j
\theta_j
θj 的参数更新表达式(和回归时保持一致):
KaTeX parse error: Undefined control sequence: \vb at position 44: …\sum_{i=1}^n(f_\̲v̲b̲*{\theta}(\vb*{…
决策边界:
KaTeX parse error: Undefined control sequence: \vb at position 2: \̲v̲b̲*{\theta}^T\vb*…
线性不可分
- 多项式函数
- 决策边界为曲线
决策边界:
KaTeX parse error: Undefined control sequence: \vb at position 2: \̲v̲b̲*{\theta}^T\vb*…
扩展
- SVM 分类算法
- 其他分类算法
正则化
- 确定正则化项
- λ \lambda λ 表示正则化项影响程度
- 重定义目标函数
- 重定义参数更新表达式
公式
L2正则化项:
R
(
θ
)
=
λ
2
∑
j
=
1
m
θ
j
2
R(\theta) = \frac{\lambda}{2}\sum_{j=1}^{m}\theta_j^2
R(θ)=2λj=1∑mθj2
目标函数:
KaTeX parse error: Undefined control sequence: \vb at position 59: …i)} - f_\theta(\̲v̲b̲*{x}^{(i)}))^2 …
参数更新表达式:
KaTeX parse error: Undefined control sequence: \vb at position 55: …^{n}( f_\theta(\̲v̲b̲*{x}^{(i)}) - y…
基础
-
误差函数
- MSE(Mean Square Error, 均方误差),KaTeX parse error: Undefined control sequence: \vb at position 37: …^n(y^{(i)} - f_\̲v̲b̲*{\theta}(\vb*{…
- SSE(The Sum Of Squares Due To Error, 和方差)
- RMSE(Root Mean Squared Error, 均方根误差)
-
容量
- batchsize:批大小
- iteration:1 个iteration 等于使用 batchsize 个样本训练一次
- epoch:1个epoch等于使用训练集中的全部样本训练一次
-
随机梯度下降法(Stochastic Gradient Descent,SGD)
模型评估
- 交叉验证:将数据按一定比例分为测试数据和训练数据,一般为 3:7 或者 2:8
- 数据的分配方法不能太极端
- 回归问题:均方误差
- 计算精确率和召回率时使用数据少的类别
- K 折交叉验证:需要确定一个合适的 K 值
-
学习曲线:通过学习曲线判断模型是过拟合还是欠拟合
- 高偏差(欠拟合):随着数据数量的增加,使用训练数据时的精度不断下降,使用测试数据时的精度不断上升
- 高方差(过拟合):随着数据数量的增加,使用训练数据时的精度缓慢,使用测试数据时的精度不断上升,但是达不到训练数据精度
分类问题
- 精度
A c c u r a c y = T P + T N T P + F P + F N + T N Accuracy = \frac{TP + TN}{TP + FP + FN + TN} Accuracy=TP+FP+FN+TNTP+TN
- 精确率:当训练数据极不平衡时,在分类为 Positive 的数据中,分类正确的比例
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP + FP} Precision=TP+FPTP
-
召回率:在 Positive 数据中,分类正确的比例
R e c a l l = T P T P + F N Recall = \frac{TP}{TP + FN} Recall=TP+FNTP -
一般来说,精确率和召回率会一个高一个低,不能取平均值
-
调和平均值F1值:
F m e a s u r e = 2 1 P r e c i s i o n + 1 R e c a l l F m e a s u r e = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l Fmeasure = \frac{2}{\frac{1}{Precision} + \frac{1}{Recall}} \\ \\ Fmeasure = \frac{2 \cdot Precision \cdot Recall}{Precision + Recall} Fmeasure=Precision1+Recall12Fmeasure=Precision+Recall2⋅Precision⋅Recall -
权重调和平均值F值:
F m e a s u r e = ( 1 + β 2 ) ⋅ P r e c i s i o n ⋅ R e c a l l β 2 ⋅ P r e c i s i o n + R e c a l l Fmeasure = \frac{(1 + \beta^2) \cdot Precision \cdot Recall}{\beta^2 \cdot Precision + Recall} Fmeasure=β2⋅Precision+Recall(1+β2)⋅Precision⋅Recall
正则化
过拟合
- 过拟合:只能拟合训练数据
- 避免过拟合
- 增加全部训练数据的数量(重要)
- 使用简单的模型,例:将预测函数从曲线变成直线
- 正则化
- 欠拟合:一般模型过于简单
正则化
- 防止参数变得过大,减少参数的影响,对参数进行惩罚
- 不对偏置项进行正则化
- λ \lambda λ 为正则化项影响程度
- 线性回归的正则化
E ( θ ) = 1 2 ∑ i = 1 n ( y ( i ) − f θ ( x ( i ) ) ) 2 R ( θ ) = λ 2 ∑ j = 1 m θ j 2 E(\theta) = \frac{1}{2}\sum_{i=1}^{n}(y^{(i)} - f_\theta(x^{(i)}))^2 \\ R(\theta) = \frac{\lambda}{2}\sum_{j=1}^{m}\theta_j^2 E(θ)=21i=1∑n(y(i)−fθ(x(i)))2R(θ)=2λj=1∑mθj2 - 分类函数的正则化,改变目标函数的符号将最大化问题转换为最小化问题
KaTeX parse error: Undefined control sequence: \vb at position 9: \log L(\̲v̲b̲*{\theta}) = -\… - L1 正则化:被判定为不需要的参数为变为 0
R ( θ ) = λ ∑ j = 1 m ∣ θ j ∣ R(\theta) = \lambda\sum_{j=1}^{m}|\theta_j| R(θ)=λj=1∑m∣θj∣ - L2 正则化:抑制参数
R ( θ ) = λ 2 ∑ j = 1 m θ j 2 R(\theta) = \frac{\lambda}{2}\sum_{j=1}^{m}\theta_j^2 R(θ)=2λj=1∑mθj2
参考
- 数据集 Iris
待学习
- numpy
- Matplotlib Pyplot