机器学习十讲学习笔记第六讲
特征值分解
- 设AA是nn阶方阵,如果有常数λλ和nn维非零列向量αα的关系式
Aα=λαAα=λα
成立,则称λλ为方阵AA的特征值,非零向量αα称为方阵AA的对应于特征值λλ的特征向量
- 设方阵A∈Rx×xA∈Rx×x有nn个线性无关的特征向量,存在一个特征分解公式:A=UΛU−1A=UΛU−1
- 其中UU的列向量是方阵AA的单位化后的特征向量,ΛΛ矩阵中的对角元素是方阵AA的特征值
- Λ=diag(λ1,λ2,...,λn)Λ=diag(λ1,λ2,...,λn)
- 表达式A=UΛU(−1)A=UΛU(−1)称为方阵的特征值分解,此时方阵就被特征值和特征向量唯一表示
- 对A=UΛU(−1)A=UΛU(−1)进行一个变换,可得U(−1)AU=ΛU(−1)AU=Λ
- 根据实对称矩阵单位化可知U(−1)=UTU(−1)=UT
- 降维(dimensionalityreduction)(dimensionalityreduction):将数据的特征数量从高维转换到低维
- 实际中很多数据是高维的,但数据"内在的维度"可能更低
- 通信数据原始有七维:入网时间、套餐价格、每月话费、每月流量、每月通话时长欠费金额、欠费月数
- ”内在维度“可能只有3个:用户忠诚度、消费能力、欠费指数
- 解决高维数据的维度灾难问题的一种手段
- 能够作为一种特征抽取的方法
- 便于对数据进行可视化分析
主成分分析
-
主成分分析(PrincipalComponentAnalysis,PCA)(PrincipalComponentAnalysis,PCA),1901年由KarlPearsonKarlPearson提出
-
在人脸识别和图像压缩等领域得到了广泛的应用
-
基本思想:构造原始特征的一系列线性组合形成的线性无关低维特征,以去除数据的相关性,并使降维后的数据最大程度地保持原始数据的方差信息
-
数据集D=x1,x2,...,xnD=x1,x2,...,xn,每个样本表示成dd维向量,且每个维度均为连续型特征。数据集DD也可以表示成一个n×dn×d的矩阵XX
-
为了便于描述,我们进一步假设每一维特征的均值为零(已做中心化处理),且使用一个d×ld×l的线性转换矩阵WW来表示将dd维的数据降到ll维(l<dl<d)空间的过程,降维后的数据用YY表示,有Y=XWY=XW
-
降维后数据的方差为
(1)var(Y)=1n−1tr(YTY)=1n−1tr(WTXTXW)=tr(WT1n−1XTXW)
- 原始数据集的协方差矩阵∑=1n−1XTX∑=1n−1XTX,则PCAPCA的数学模型为
maxWtr(WT∑W)s.t.wiwi=1i∈{1,2,...,l}maxWtr(WT∑W)s.t.wiwi=1i∈{1,2,...,l}
- 使用拉格朗日乘子法将上述带约束的最优化问题转化为无约束的最优化问题,对应的拉格朗日函数为
L(W,λ)=tr(WT∑W)−∑i=1lλi(wTiwi−1)L(W,λ)=tr(WT∑W)−∑i=1lλi(wiTwi−1)
其中λ1,λ2,...,λlλ1,λ2,...,λl为拉格朗日乘子,wiwi为矩阵WW第ii列
- 对wiwi求偏导并令导数为零,有
∑wi=λiwi∑wi=λiwi
-
即我们要求的转换矩阵WW的每一个列向量wiwi都是数据XX的协方差矩阵∑∑的特征向量,而λiλi为对应的特征值
-
由∑wi=λiwi∑wi=λiwi,且tr(WT∑W)=∑li=1wTi∑witr(WT∑W)=∑i=1lwiT∑wi,有tr(WT∑W)=∑liλitr(WT∑W)=∑ilλi
-
故PCAPCA最优化的方差等于原数据集XX的协方差矩阵的ll个特征值之和
-
要使上述方差最大,我们只要首先得∑∑的特征向量和特征值,然后取最大的ll个特征值对应的特征向量组成转换矩阵WW即可
-
算法流程:
- 输入:数据矩阵XX,降维后样本维数ll.
- 输出:转换矩阵W=(w1,w2,...,wl)W=(w1,w2,...,wl).
- 对于XX中的每一个样本xixi进行中心化处理:xi←xi−mxi←xi−m,其中m=1n∑nj=1xjm=1n∑j=1nxj为样本均值;
- 计算协方差矩阵∑=1n−1XTX∑=1n−1XTX;
- 对协方差矩阵∑∑做特征值分解并将特征值降序排序:λ1≤λ2≤...≤λdλ1≤λ2≤...≤λd
- 取最大的前ll个特征值相对应的特征向量w1,w2,...,wlw1,w2,...,wl组成转换矩阵WW.
自编码器
- 一种特殊的神经网络,尝试将输入复制到输出,能够表示非线性变换
- 编码器:将输入xx转换成隐含表示hh
- 解码器:将隐含表示hh转换成输出x′x′
- 优化目标:使得x′x′和xx尽量接近
- 当隐含层神经元数量小于输入层时,可以当做一种降维算法
深沉编码器
- 指数级地降低表示某些函数的计算成本
- 指数级地学习某些函数所需的训练数据量
- 一些实验结果表明,深层自编码器比浅编码器产生更好的压缩效果