预备知识
1、什么是凸函数? 对区间
[
a
,
b
]
[a, b]
[a,b]上定义的函数
f
f
f,若它对区间中任意两点
x
1
x_1
x1?,
x
2
x_2
x2?均有
f
(
x
1
+
x
2
2
)
≤
f
(
x
1
)
+
f
(
x
2
)
2
f(\frac{x_1 + x_2}{2} )\le \frac{f(x_1)+f(x_2)}{2}
f(2x1?+x2??)≤2f(x1?)+f(x2?)?,则称
f
f
f 为区间
[
a
,
b
]
[a, b]
[a,b]上的凸函数。 2、先验概率:事件
X
X
X的先验概率是统计得到的,即
p
(
X
)
p(X)
p(X) 后验概率:事件
X
X
X的后验概率为在观察到事件
Y
Y
Y发生后得到的概率,即
p
(
X
∣
Y
)
p(X|Y)
p(X∣Y)
绪论
分类:如果模型预测的是离散值,例如"好瓜",“坏瓜”,此类学习任务称为分类。 回归:如果模型预测的是连续值,例如甜度"0.75",“0.63”,此类学习任务称为回归。 分类和回归是监督学习的代表,聚类则是无监督学习的代表。
模型的评估与选择
1、错误率:分类错误的样本数占样本总数的比例称为错误率。 正确率acc:分类正确的样本数占样本总数的比例称为正确率。 2、误差error:把学习器在训练集上的误差称为“训练误差”或者“经验误差”(empirical error),在新样本上的误差称为“泛化误差”。很多情况下,我们想要得到一个经验误差最小化,在训练集上表现很好的学习器。
3、欠拟合怎么办:可以在训练神经网络的时候增加训练轮数。 过拟合怎么办:过拟合是无法彻底避免的
4、评估学习器的泛化误差的方法有 (1)留出法(hold-out):将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即
D
=
S
∪
T
,
S
∩
T
=
?
D = S\cup T, S\cap T = \emptyset
D=S∪T,S∩T=?。留出法一般要采用若干次随机划分,重复进行实验评估后取平均值作为留出法的评估结果。 (2)交叉验证法(cross validation):先将数据集D划分为
k
k
k个大小相似的互斥子集,即
D
=
D
1
∪
D
2
∪
D
3
.
.
.
.
∪
D
k
,
D
i
∩
D
j
=
?
(
i
≠
j
)
D = D_1\cup D_2 \cup D_3....\cup D_k, D_i \cap D_j = \emptyset(i \neq j)
D=D1?∪D2?∪D3?....∪Dk?,Di?∩Dj?=?(i?=j)… (3)自助法(bootstrpping) 自助法在数据集较小,难以有效划分训练/测试集时很有用。此外,自助法能从初始数据集中产生多个不同的训练集,这对集成学习等方法有很大的好处。然而,自助法产生的数据集改变了初始数据集的分布,这会引入估计偏差。因此,在初始数据足够时,留出法和交叉验证法更常用一些。
查准率、查全率、F1分数、PR曲线
二分类的混淆矩阵
真实情况 | 预测结果 | 正例 | 反例 | 正例 | TP(真正例) | FN(假反例) | 反例 | FP(假正例) | TN(真反例) |
查准率precision:查准率是相对预测结果为正例的样本来说的,就是说预测结果为正例的样本中有多少是真正的正例。
P
=
T
P
T
P
+
F
P
P = \frac{TP}{TP + FP}
P=TP+FPTP?
查全率recall: 查全率是针对真实情况来说的,就是说真实为正例的样本正有多少被预测出来了。
R
=
T
P
T
P
+
F
N
R = \frac{TP}{TP+ FN}
R=TP+FNTP?
查准率(precision)和查全率是一对矛盾的度量。一般来说,查准率高的时候,查全率往往偏低;而查全率高时,查准率往往偏低。
ROC 和 AUC
ROC 叫受试者特征曲线, AUC 是ROC曲线与坐标轴围起来的面积 ROC曲线的两个坐标轴都是查全率,一个是正例的查全率(真正例率),一个是假正例率(即 1 - 负例的查全率)
真
正
例
率
T
P
R
=
T
P
T
P
+
F
N
真正例率TPR=\frac{TP}{TP + FN}
真正例率TPR=TP+FNTP?
假
正
例
率
F
P
R
=
F
P
T
N
+
F
P
假正例率FPR=\frac{FP}{TN + FP}
假正例率FPR=TN+FPFP?
偏差、方差的分解
一个算法的期望泛化误差可以通过偏差-方差的分解得到:
E
(
f
;
D
)
=
E
D
[
(
f
(
x
;
D
)
?
f
ˉ
(
x
)
)
2
]
+
(
f
ˉ
(
x
)
?
y
)
2
+
E
D
[
(
y
D
?
y
)
2
]
E(f; D)=\mathbb{E} _D[(f(\bf{x}; D)-\bar{f}(\bf{x}))^2]+(\bar{f}(\bf{x})-y)^2+\mathbb{E} _D[(y_D-y)^2]
E(f;D)=ED?[(f(x;D)?fˉ(x))2]+(fˉ(x)?y)2+ED?[(yD??y)2] 也就是说,泛化误差可分解为偏差、方差和噪声之和。
- 偏差bias:度量了学习算法的期望预测和真实结果的偏离程度,即刻画了学习算法本身的拟合能力
- 方差variance:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响
- 噪声noise:表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界(也就是说误差再怎么也会大于这个值),即刻画了学习问题本身的难度
偏差、方差的分解说明,泛化性能是由学习算法的能力,数据的充分性以及学习任务本身的难度所共同决定的。
第三章 线性模型
线性模型和非线性模型的区别
按照周志华西瓜书的回答:线性模型试图学的一个通过属性的线性组合来进行预测的函数,即
f
(
x
)
=
w
1
x
1
+
w
2
x
2
+
.
.
.
+
w
d
x
d
+
b
f(x)=w_1x_1+w_2x_2+...+w_dx_d+b
f(x)=w1?x1?+w2?x2?+...+wd?xd?+b的函数,这个函数中的
x
i
x_i
xi? 代表的就是属性,说明线性模型并不是说模型的函数代表的是一条直线,同理,非线性模型也不是说模型函数代表的是一条曲线。如果模型的函数是属性的非线性组合的话,比如
f
(
x
)
=
w
1
x
1
+
w
2
x
1
x
2
+
.
.
.
+
w
d
x
d
+
b
f(x)=w_1x_1+ \bm{w_2x_1x_2}+...+w_dx_d+b
f(x)=w1?x1?+w2?x1?x2?+...+wd?xd?+b中存在
w
2
x
1
x
2
\bm{w_2x_1x_2}
w2?x1?x2?项,这是属性的非线性组合。所以这个函数代表的模型是非线性模型。
同理,按照西瓜书的定义,线性回归是试图学得一个线性模型以尽可能准确地预测实值输出标记。说明线性回归是试图学的一个线性模型,说明线性这个词的理解也是指属性的线性组合。
那么非线性模型是什么呢,我的理解是线性模型的堆叠就可以构成非线性模型。比如多层感知机、深度神经网络等都满足上面的非线性模型的定义。当然还有一个易混的点是:线性模型是能够反应非线性关系的,这个非线性关系就是指的直线和曲线的区别了,比如加激活函数就可以让原本的线性关系变成非线性关系,或者增强原本的非线性关系。
线性回归、逻辑回归
(1)线性回归 用一条直线去划分离散点可以看成是一元线性回归,拟合一个多项式就是多元线性回归 一般的线性回归模型可以写成如下形式:
y
=
w
T
x
+
b
y = \bf{w}^T\bf{x}+b
y=wTx+b (2)对数几率回归和广义线性回归 也就是令模型的预测值逼近
y
y
y 的衍生物,比如我们可以认为实例所对应的输出标记是在指数尺度上变化,那就可将输出标记的对数作为线性模型逼近的目标,即:
ln
?
y
=
w
T
x
+
b
\ln_{}{y} = \bf{w}^T\bf{x}+b
ln?y=wTx+b 上式从形式上仍然是线性回归,但是实质上已经是求取输入空间到输出空间的非线性函数映射。对于一个单调可微函数
g
(
?
)
g(\cdot)
g(?),由此可以推导出广义线性模型为:
y
=
g
?
1
(
w
T
x
+
b
)
y = g^{-1}( \bf{w}^T\bf{x}+b)
y=g?1(wTx+b) (3)逻辑回归 逻辑回归其实就是分类,只要找一个单调可微的函数将广义线性回归模型中的
g
(
?
)
g(\cdot)
g(?)替换即可。 (4)线性判别分析LDA LDA 是一种经典的降维方法,它是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”,即”类内数据扰动最小,类间数据扰动最大“,也即是要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
|