java实现梯度上升算法_机器学习之PCA与梯度上升法

本文详细介绍了主成分分析(PCA)的基本原理和如何使用Java实现梯度上升法解决PCA问题。PCA是一种用于数据降维的非监督学习算法,通过最大化样本间的方差来找到最佳投影方向。文章通过实例展示了PCA的计算过程,并利用梯度上升法求解主成分。此外,还探讨了PCA在降维和kNN分类中的应用,表明PCA可以有效提高计算效率并保持较高预测准确性。
摘要由CSDN通过智能技术生成

主成分分析(Principle Component Analysis,简称:PCA)是一种非监督学习的机器算法,主要用于数据的降维。

PCA 基本原理

以有2个特征的二维平面举例,如图:

30575dd36ebc160c1731c6fb129e5bcb.png

横轴表示特征1,纵轴表示特征2,其中4个点表示二维的特征样本。如果要对样本进行降维降到一维,可以将这些点映射到横轴、纵轴或者其它轴上如:

dfdc7f2cf18bf9377ddb2feb16389205.png

映射到不同的轴后样本间间距会不一样,而要找的就是让样本间间距最大的轴。假定这个轴方向为 $w = (w1, w2)$。

对于样本间间距可以用方差 $Var(x) = \frac{1}{m}\sum_{i=1}^m(x_i-\overline x)^2$ 来衡量,方差越大,样本间越稀疏。

接着进行均值归0(demean)处理,即 $\overline x = 0$,使得 $Var(x) = \frac{1}{m}\sum_{i=1}^m(x_i)^2$。均值归0处理使得原始样本发生了变化转换成了新的样本 $X$。将其映射到轴 $w$ 上又得到新的样本 $X_{pr}$,此时的方差为:

$$

Var(X_{pr}) = \frac{1}{m}\sum_{i=1}^m(X_{pr}^{(i)})^2

$$

因为 $X_{pr}^{(i)}$ 是一个向量 $(X_{pr1}^{(i)}, X_{pr2}^{(i)})$,所以实际的方差表示为:

$$

Var(X_{pr}) = \frac{1}{m}\sum_{i=1}^m||X_{pr}^{(i)}||^2

$$

最后计算 $||X_{pr}^{(i)}||$,如图所示:

b06ada8780537d8cb6a958ead45ccd48.png

$||X_{pr}^{(i)}|| = X^{(i)}·w$ ($w$ 为单位向量),如此得到了想要的目标函数:

求 $w$ 使得 $Var(X_{pr}) = \frac{1}{m}\sum_{i=1}^m(X^{(i)}·w)^2$ 最大;对于多维特征,即 $\frac{1}{m}\sum_{i=1}^m(X_1^{(i)}w_1+X_2^{(i)}w_2+...+X_n^{(i)}w_n)^2$ 最大。

梯度上升法解决PAC问题

在梯度上升法中,$+\eta\nabla f$ 代表了 $f$ 增大的方向。

对于 PAC 的目标函数:求 $w$ 使得 $f(X) = \frac{1}{m}\sum_{i=1}^m(X_1^{(i)}w_1+X_2^{(i)}w_2+...+X_n^{(i)}w_n)^2$ 最大,可以使用梯度上升法来解决。

$f(X)$ 的梯度为:

$$

\nabla f = \begin{pmatrix} \frac{\partial f}{\partial w_1} \\\ \frac{\partial f}{\partial w_2} \\\ \cdots \\\ \frac{\partial f}{\partial w_n} \end{pmatrix} = \fra

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值