MLconclusionfor112
一、线性回归
(1)给出模型后,怎么确定模型参数
? 从训练集学习参数
θ
\theta
θ
? 计算测试集误差:
J
t
e
s
t
(
θ
)
=
?
1
m
t
e
s
t
∑
i
=
1
m
t
e
s
t
y
t
e
s
t
(
i
)
l
o
g
h
θ
(
x
t
e
s
t
(
i
)
)
+
(
1
?
y
t
e
s
t
(
i
)
)
l
o
g
h
θ
(
x
t
e
s
t
(
i
)
)
J_{test}(\theta)=-\frac{1}{m_{test}}\sum_{i=1}^{m_{test}}y_{test}^{(i)}logh_\theta(x_{test}^{(i)})+(1-y_{test}^{(i)})logh_\theta(x_{test}^{(i)})
Jtest?(θ)=?mtest?1?∑i=1mtest??ytest(i)?loghθ?(xtest(i)?)+(1?ytest(i)?)loghθ?(xtest(i)?)
? 分类误差:
e
r
r
o
r
(
h
θ
(
x
)
,
y
)
=
{
1
i
f
h
θ
≥
0.5
,
y
=
0
o
r
i
f
h
θ
(
x
)
<
0.5
,
y
=
1
0
t
h
e
r
w
i
s
e
error(h_\theta(x),y)=\begin{cases} 1\quad if \quad h_\theta \geq0.5,y=0 \quad or\quad if\quad h_\theta(x)<0.5,y=1 \\0\quad therwise \end{cases}
error(hθ?(x),y)={1ifhθ?≥0.5,y=0orifhθ?(x)<0.5,y=10therwise? ? 测试误差=
1
m
t
e
s
t
∑
i
=
1
m
e
r
r
(
h
θ
(
x
t
e
s
t
(
i
)
)
,
y
t
e
s
t
(
i
)
)
\frac{1}{m_{test}}\sum_{i=1}^merr(h_\theta(x_{test}^{(i)}),y_{test}^{(i)})
mtest?1?∑i=1m?err(hθ?(xtest(i)?),ytest(i)?)
梯度下降法
(2)Logistics回归:
? 将假设参数代入梯度下降
Gradient descent
Repeat{
?
θ
0
=
θ
0
?
α
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
?
y
(
i
)
)
x
0
(
i
)
\theta_0 = \theta_0 - \alpha\frac{1}{m}\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})x_0^{(i)}
θ0?=θ0??αm1?∑i=1m?(hθ?(x(i))?y(i))x0(i)?
?
θ
j
=
θ
j
?
α
[
1
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
?
y
(
i
)
)
x
j
(
i
)
+
λ
m
θ
j
]
\theta_j = \theta_j -\alpha[\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)}+\frac{\lambda}{m}\theta_j]
θj?=θj??α[m1?∑i=1m?(hθ?(x(i))?y(i))xj(i)?+mλ?θj?]
(j=1,2,3,…,n)
}
h
θ
(
x
)
=
1
1
+
e
?
θ
x
h_\theta(x)=\frac{1}{1+e^{-\theta x}}
hθ?(x)=1+e?θx1?(sigmoid函数)
二、模型评估
(1)过拟合与欠拟合两种情况:
? 训练误差与经验误差的特点
? 误差:是学习器的实际预测输出与样本的真实输出之间的差异
? 训练误差(经验误差):学习器在训练集上的误差
? 泛化误差:学习器在新样本上的误差(指模型在任意一个测试数据样本上表现出的误差的期望)
? 根据学习曲线判断出现的是过拟合还是欠拟合
? 过拟合:学习器把训练样本训练得太好,也就是训练误差极小,导致把训练样本自身的一些特点当作一般性质来处理和泛化能力降低
? 欠拟合:训练样本的一般性质尚未学好
(2)出现过拟合以及欠拟合的解决办法?
? 出现过拟合时:
? 减少特征数量:–手动选择哪些特征要保留;
? --模型选择算法
? 正则化:–保留所有特征,但减少参数
θ
j
\theta_j
θj?的大小/值
? --当我们有很多特征,每个特征都对预测Y有一定的贡献时,就能很好地工作。
? – 设置
θ
0
,
θ
1
,
.
.
.
,
θ
n
\theta_0,\theta_1,...,\theta_n
θ0?,θ1?,...,θn?为小值:“简单的假设”;不容易过度拟合
? 1、获取更多训练样例;
? 2、尝试更小的特征集合
? 3、增加
λ
\lambda
λ的值
? 出现欠拟合时:
? 1、增加特征
? 2、增加多项式特征
? 3、减少
λ
\lambda
λ的值
训练误差:
J
t
r
a
i
n
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
i
)
?
y
(
i
)
)
2
J_{train}(\theta)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x_{i})-y^{(i)})^2
Jtrain?(θ)=2m1?i=1∑m?(hθ?(xi?)?y(i))2 交叉验证误差:
J
c
v
(
θ
)
=
1
2
m
c
v
∑
i
=
1
m
c
v
(
h
θ
(
x
c
v
(
i
)
)
?
y
c
v
(
i
)
)
2
J_{cv}(\theta)=\frac{1}{2m_{cv}}\sum_{i=1}^{m_{cv}}(h_\theta(x_{cv}^{(i)})-y_{cv}^{(i)})^2
Jcv?(θ)=2mcv?1?i=1∑mcv??(hθ?(xcv(i)?)?ycv(i)?)2 测试误差:
J
t
e
s
t
(
θ
)
=
1
2
m
t
e
s
t
∑
(
i
=
1
)
m
t
e
s
t
(
h
θ
(
x
t
e
s
t
(
i
)
)
?
y
t
e
s
t
(
i
)
)
2
J_{test}(\theta)=\frac{1}{2m_{test}}\sum_{(i=1)}^{m_{test}}(h_\theta(x_{test}^{(i)})-y_{test}^{(i)})^2
Jtest?(θ)=2mtest?1?(i=1)∑mtest??(hθ?(xtest(i)?)?ytest(i)?)2
判断是欠拟合还是过拟合:
? 欠拟合的情况:
? 训练误差
J
t
r
a
i
n
(
θ
)
J_{train}(\theta)
Jtrain?(θ)很高,
J
c
v
(
θ
)
≈
J
t
r
a
i
n
(
θ
)
J_{cv}(\theta)\approx J_{train}(\theta)
Jcv?(θ)≈Jtrain?(θ)
? 过拟合的情况:
? 训练误差
J
t
r
a
i
n
(
θ
)
J_{train}(\theta)
Jtrain?(θ)很低,
J
c
v
(
θ
)
>
>
J
t
r
a
i
n
(
θ
)
J_{cv}(\theta)>>J_{train}(\theta)
Jcv?(θ)>>Jtrain?(θ)
(3)精确率与召回率的定义
精确率=
T
P
T
P
+
F
P
\frac{TP}{TP+FP}
TP+FPTP?
召回率=
T
P
T
P
+
F
N
\frac{TP}{TP+FN}
TP+FNTP?
预测真正例:高精准率,低召回率
避免假阴性:高召回率,低精准率
(4)画ROC曲线(有限样本情况)
(5)AUC值如何求
三、构建决策树
(1)属性划分停止的条件
(2)预剪枝与后剪枝的处理思想
(3)判断用预剪枝还是后剪枝
(4)在样本的基础上计算模型的精度
四、聚类算法
(1)K-means算法具体过程:
? 手动跑k-means
? 样本分配情况和簇中心分析
五、BP算法
出现过拟合如何解决
BP算法的主要流程可以总结如下:
输入:训练集D=(xk,yk)mk=1D=(xk,yk)k=1m; 学习率;
过程:
1. 在(0, 1)范围内随机初始化网络中所有连接权和阈值
2. repeat:
3. for all (xk,yk)∈D(xk,yk)∈D do
4. 根据当前参数计算当前样本的输出;
5. 计算输出层神经元的梯度项;
6. 计算隐层神经元的梯度项;
7. 更新连接权与阈值
8. end for
9. until 达到停止条件
输出:连接权与阈值确定的多层前馈神经网络
备注:后续补充BP算法的公式推导。
BP算法参考博文:
? https://www.cnblogs.com/duanhx/p/9655213.html
|