数据预处理
- 归一化 Normalization
- PCA降维和白化
权重初始化
- 批量归一化 Batch Normalization
正则化
- L1, L2正则化
- Dropout and 反向 Dropout
- 属性分类:一个样本有多个标签
- 偏差和方差 bias and variance
1. 数据预处理
对原始数据进行预处理:
均值减法(Mean subtraction)
### 对数据每个维度减去平均值
X -= np.mean(X, axis = 0)
### 对图像的话,是所有的维度减去一个平均值
X -= np.mean(X)
归一化(Normalization)
是指将数据的所有维度都归一化,使其数值范围都近似相等。
先做零中心化,然后每个维度除以标准差.
X /= np.std(X, axis = 0)
PCA和白化
PCA: 统计分析和机器学习里面常用的降维算法~~主成分分析
为什么要降维??
feature太多会造成模型复杂,训练速度过慢,因此我们引入降维。
About Visualization:
多维数据很难进行可视化分析,因此我们需要降维分析。
PCA的数学原理
http://blog.codinglabs.org/articles/pca-tutorial.html
总结下就是:
1)输入数据是(m,n),即n个样本,m维特征.可以看作是m个特征向量
2) PCA就是将m维特征向量转换到k(k
\end{pmatrix}
⎛⎝⎜⎜⎜⎜p1a1p2a1⋮pRa1p1a2p2a2⋮pRa2⋯⋯⋱⋯p1anp2an⋮pRan⎞⎠⎟⎟⎟⎟
(
p
1
a
1
p
1
a
2
⋯
p
1
a
n
p
2
a
1
p
2
a
2
⋯
p
2
a
n
⋮
⋮
⋱
⋮
p
R
a
1
p
R
a
2
⋯
p
R
a
n
)
$$
$p_i$是行向量,表示基向量中第i个向量,$a_j$是一个列向量,表示第j个样本.
4) 降低特征数量就是减少单位基向量,新的基向量可以不一定是正交基,新的基向量个数之后再说~而是尽量让原始数据转换到基向量上之后保存的信息最多!
- 怎么才是保存最大的信息呢?
- 一种直观的看法是:希望投影后的投影值尽可能分散。数学上表征离散程度,可以用方差~~也就是找出一个基向量,使得原始数据向量投影到它上面之后,方差最大~
Var(a)=1n∑i=1n(ai−μ)2 V a r ( a ) = 1 n ∑ i = 1 n ( a i − μ ) 2
Var(a)=1n∑i=1na2i V a r ( a ) = 1 n ∑ i = 1 n a i 2 - 找到了一个基,怎么确定第二个,第三个…显然如果还是以方差最大为目标,那么第二个基和第一个基几乎重合了吧.那么他们得到的信息其实是一样的
所以应该尽量让第二个基和第一个基相关系越小越好~怎么数学上表征两个向量相关系小呢,就是他们内积得到的结果很小呀~~
Cov(a,b)=1n∑i=1naibi
C
o
v
(
a
,
b
)
=
1
n
∑
i
=
1
n
a
i
b
i
5) 很巧的是,对于原始数据X,其协防差矩阵可以表示它信息量的多少~
X=(a1b1a2b2⋯⋯anbn)
X
=
(
a
1
a
2
⋯
a
n
b
1
b
2
⋯
b
n
)
假设只有2维特征,(a1,b1)表示一个样本,总共有n个样本 假 设 只 有 2 维 特 征 , ( a 1 , b 1 ) 表 示 一 个 样 本 , 总 共 有 n 个 样 本
C=1nXX