(六)PCA与梯度上升法

函数优化算法之:梯度上升法(Gradient Ascent) 然而,在实际应用中,目标函数可能更加复杂,并且可能存在多个局部最大值点,这时梯度上升法可能会收敛到局部最优解而非全局最优解。此外,学习率的选择也非常重要,过大的学习率可能导致算法不稳定,而过小的学习率则会使收敛速度变慢。(3)算法效率:梯度上升法在每次迭代中都需要计算目标函数的梯度,这可能会涉及大量的计算。在梯度上升法的核心公式是参数的更新规则,它基于目标函数在当前参数值下的梯度(即偏导数的向量)来进行更新。的梯度,它是一个向量,其分量是目标函数对各个参数的偏导数,表示在处函数增加最快的方向。 阅读详情

一,什么是PCA(Principal Component Analysis)

  • 一个非监督的机器学习方法

  • 主要用于数据的降维

  • 通过降维,可以发现更便于人类理解的特征

  • 其他应用:可视化;去噪

理解:PCA的主要思想是将n为特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

当样本只有俩个特征时,并且这俩个特征的分布满足某种关系,比如线性关系,那我们就可以把这写样本点近似的映射到一条直线上,也就是把特征1和特征2看作一条直线,就做到把二维的点降维到了一维。并且此时点与点之间的间距更大,更容易区分。

因此问题简化为:

如何找到让这个样本间间距最大的轴(即映射的直线)?

如何定义样本间距?

使用方差Variance,表示样本的疏密!方差最大化的意义是尽最大限度的保留数据样本之间的关系特征。

=》找到一个轴,使得样本空间的所有点映射到这个轴后方差最大

首先要使样本的均值为0,即对所有样本进行demean处理

之后我们想要求一个轴的方向w=(w1,w2,…),使得所有的样本映射到w以后,

对于二维数据,有

其中X的平均是0,X的投影是俩个向量的点乘

对于多维样本:

一个目标函数的最优化问题,使用梯度上升法解决

二,使用梯度上升法求解PCA问题

注:这样的符号中,右上角的(1)表示行,也就是第几个样本,右下角的1表示样本的特征,也就是列。

虽然上述的推导已经可以交给计算机实现了,但是我们为了简化程序的逻辑,可以进一步转化为:

想清楚那些符号表示矩阵,哪些符号表示向量(小写),以及向量的方向,维度等

三,求数据的主成分PCA

数据生成:

X =np.empty((100, 2)) #俩个特征

X[:,0] =np.random.uniform(0., 100., size=100)

X[:,1] = 0.75 * X[:,0]+ 3. + np.random.normal(0, 10., size=100)

demean数据:

def demean(X):

return X - np.mean(X, axis=0) #减去的是每一个特征的均值,axis=0是列

X_demean = demean(X)

使用梯度上升法:

def f(w, X):

return np.sum((X.dot(w)**2)) / len(X)

def df_math(w, X):

return X.T.dot(X.dot(w)) * 2. / len(X)

defdf_debug(w, X, epsilon=0.0001): #验证梯度的准确性

res = np.empty(len(w)) #epsilon取值较小是因为w是单位向量,值比较小

for i in range(len(w)):

w_1 = w.copy()

w_1[i] += epsilon

w_2 = w.copy()

w_2[i] -= epsilon

res[i] = (f(w_1, X) - f(w_2, X)) / (2 *epsilon)

return res

def direction(w):

return w / np.linalg.norm(w) #norm就是求模

def gradient_ascent(df, X, initial_w, eta, n_iters =1e4, epsilon=1e-8):

w = direction(initial_w)

cur_iter = 0

while cur_iter < n_iters:

gradient = df(w, X)

last_w = w

w = w + eta * gradient

w = direction(w) # 注意1:每次求一个单位方向

if(abs(f(w, X) - f(last_w, X)) <epsilon):

break

cur_iter += 1

return w

initial_w =np.random.random(X.shape[1]) # 注意2:不能用0向量开始

eta =0.001 # 注意3:不能使用StandardScaler标准化数据

因为对于用户给定的数据,如果俩种数据之间有线性关系,当我们归一化数据,也就是把数据的方差定为1的话就破坏了这种线性关系,使得主成分的轴发生改变。

而demean的过程是将坐标轴进行位移,并没有改变数据的分布。

gradient_ascent(df_debug,X_demean, initial_w, eta)

gradient_ascent(df_math,X_demean, initial_w, eta)

结果是二者数值相同

plt.scatter(X_demean[:,0],X_demean[:,1])

plt.plot([0, w[0]*30],[0, w[1]*30], color='r')

这个轴是计算出的第一个主成分,因此也被称为第一主成分

四,求数据的前n个主成分

第一个主成分的方差最大,第二个主成分次之,以此类推

求出第一主成分后,如何求出下一个主成分?

数据进行改变,将数据在第一个主成分上的分量去掉

映射到绿线,绿线与蓝线垂直!认真理解

当样本中有俩个主成分,当我们去除第一个主成分的分量后,剩余样本均分布在第二主成分上,即剩余样本的特征的方差是0

程序实现:

deffirst_n_components(n, X, eta=0.01, n_iters = 1e4, epsilon=1e-8):

X_pca = X.copy()

X_pca = demean(X_pca)

res = []

for i in range(n):

initial_w =np.random.random(X_pca.shape[1])

w = first_component(X_pca, initial_w,eta)

res.append(w)

X_pca = X_pca -X_pca.dot(w).reshape(-1, 1) * w

return res

五,高维数据映射为低维数据

Wk是新建立的k维坐标系,Xk是X在这个坐标系下的映射

当我们想要恢复原来的维度时,其实是不能完全复原的,因为在映射到主成分的过程中,我们丢失了一部分的信息。

scikit-learn中的PCA

scikit-learn中的PCA使用的方法不是梯度上升,是另外的数学求解方法

from sklearn.decomposition import PCA

pca =PCA(n_components=1)

pca.fit(X)

X_reduction =pca.transform(X)

X_restore =pca.inverse_transform(X_reduction)

plt.scatter(X[:,0],X[:,1], color='b', alpha=0.5)

plt.scatter(X_restore[:,0],X_restore[:,1], color='r', alpha=0.5)

plt.show()

PCA的真正威力:

import numpy as np

importmatplotlib.pyplot as plt

from sklearn importdatasets

digits =datasets.load_digits()

X = digits.data

y =digits.target #创建数据

fromsklearn.model_selection import train_test_split

X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=666)

%%time

#使用k邻近计算预测准确率

from sklearn.neighborsimport KNeighborsClassifier

knn_clf=KNeighborsClassifier()

knn_clf.fit(X_train,y_train)

使用PCA对数据降维:

fromsklearn.decomposition import PCA

pca =PCA(n_components=2)

pca.fit(X_train)

X_train_reduction=pca.transform(X_train)

X_test_reduction=pca.transform(X_test)

#必须用训练X的方法来训练测试数据集

%%time

knn_clf=KNeighborsClassifier()

knn_clf.fit(X_train_reduction,y_train)

knn_clf.score(X_test_reduction,y_test)

识别精度太低!因此降低的维数太小,需要调整参数

PCA提供了一个算法:

pca.explained_variance_ratio_#主成分可解释的方差相应的比例

表示第一个轴可以解释0.14比例原数据的方差,第二个轴同理

PCA的手段是维持的方差越大越好,当这个数太小就表示原始数据的很多信息都丢失了,我们维持方差最大是为了尽可能的保留原始数据间的信息。

可以看到一共64个轴,每个轴对应的重要成分,值越小表示越不重要

plt.plot([i for i inrange(X_train.shape[1])],

[np.sum(pca.explained_variance_ratio_[:i]) for i inrange(X_train.shape[1])])

plt.show()

如果我们希望数据可以保持95%以上的信息,就可以在上图中找到对应主成分数目。这个函数在sklearn中也已经封装好

pca=PCA(0.95) #确定精度范围

pca.fit(X_train)

之后再用KNN训练,计算时间明显减少,并且精度也保持较高水平,只是依然没有使用全样本数据得到的精度高

使用PCA对数据进行降维可视化

pca =PCA(n_components=2) #将数据降到2维

pca.fit(X)

X_reduction =pca.transform(X)

for i in range(10):

plt.scatter(X_reduction[y==i,0],X_reduction[y==i,1], alpha=0.8)

plt.show()

从上图可以看出,有些特征即使降到二维也可以有很高的区分度,比如蓝色和紫色

使用MNIST数据集

import numpy as np

from sklearn.datasetsimport fetch_openml

mnist =fetch_openml('mnist_784')

X,y=mnist['data'],mnist['target']

使用KNN

from sklearn.neighborsimport KNeighborsClassifier

knn_clf=KNeighborsClassifier()

%timeknn_clf.fit(X_train,y_train)

%timeknn_clf.score(X_test,y_test)

这个样本的数据在使用之前并没有对样本进行归一化处理,是因为样本不同维度的数据都表示图像中像素点的灰度值,因此在同一个数量级上

使用PCA进行降维

fromsklearn.decomposition import PCA

pca = PCA(0.90)

pca.fit(X_train)

X_train_reduction =pca.transform(X_train)

X_test_reduction =pca.transform(X_test)

X_train_reduction.shape

从数据可以看出,经过降维后,数据从原来的784降到了87,但仍然保留了原始数据90%的信息

knn_clf =KNeighborsClassifier()

%timeknn_clf.fit(X_train_reduction, y_train)

%timeknn_clf.score(X_test_reduction, y_test)

可以发现,对样本进行降维之后,预测的准确率反而提高了,是因为原始数据中有噪声,通过PCA的方式可以达到降噪的作用

六,使用PCA对数据进行降噪

手写识别的例子

from sklearn importdatasets

digits =datasets.load_digits()

X = digits.data

y = digits.target

noisy_digits= X + np.random.normal(0, 4, size=X.shape)

#没有噪音的数据集加噪声矩阵

example_digits =noisy_digits[y==0,:][:10]

for num in range(1,10):

example_digits = np.vstack([example_digits,noisy_digits[y==num,:][:10]])

defplot_digits(data): #绘制数据图像

fig, axes = plt.subplots(10, 10,figsize=(10, 10),

subplot_kw={'xticks':[], 'yticks':[]},

gridspec_kw=dict(hspace=0.1, wspace=0.1))

for i, ax in enumerate(axes.flat):

ax.imshow(data[i].reshape(8, 8),

cmap='binary',interpolation='nearest',

clim=(0, 16))

plt.show()

plot_digits(example_digits)

可以看出噪声相对较大

components =pca.transform(example_digits)

filtered_digits= pca.inverse_transform(components) #过滤后的数据

plot_digits(filtered_digits)

处理后的图像更清楚了些

七,人脸识别与特征脸

通过PCA计算出来的前N个主成分就可以称为特征脸,也就是说,形成的k维正交向量组,第一主成分也是这个正交基的第一个轴,这个轴最能反应原始数据的信息,因为这条轴保留了原始数据最多的信息。

绘制一些人脸图像:

import numpy as np

importmatplotlib.pyplot as plt

from sklearn.datasetsimport fetch_lfw_people

faces =fetch_lfw_people()

图像是62乘以47的图像

random_indexes =np.random.permutation(len(faces.data))

#先对样本进行随机排列

X =faces.data[random_indexes]

example_faces =X[:36,:] #要绘制的人脸

example_faces.shape

defplot_faces(faces):

fig, axes = plt.subplots(6, 6, figsize=(10,10),

subplot_kw={'xticks':[], 'yticks':[]},

gridspec_kw=dict(hspace=0.1, wspace=0.1))

for i, ax in enumerate(axes.flat):

ax.imshow(faces[i].reshape(62, 47),cmap='bone')

plt.show()

plot_faces(example_faces)

特征脸

%%time

fromsklearn.decomposition import PCA

pca =PCA(svd_solver='randomized') #使用随机的方式求解PCA

因为数据样本比较多,使用随机的方式可以加快计算速度

pca.fit(X)

pca.components_.shape

plot_faces(pca.components_[:36,:])

绘制出经过PCA降维后的人脸特征,当主成分越多,对应下图越靠后的位置,图像的人脸轮廓越明显

机器学习-PCA与梯度上升法 PCA与梯度上升法1 什么是PCA2 使用梯度上升法求解PCA问题3 求数据的主成分PCA4 求数据的前n个主成分5 高维数据映射为低纬数据6 scikit-learn中的PCA7 试手MNIST数据集8 使用PCA对数据进行降噪9 人脸识别与特征脸 1 什么是PCA 梯度下降法寻找一个目标函数的最优解(最小值、最大值),梯度寻找还应用在主成分分析(Principal Component Anal... 阅读详情

相关推荐

机器学习经典算法:利用梯度上升法求解 主成分分析(PCA)的载荷轴

梯度上升法可以用于求解主成分分析(PCA)的载荷轴,通过不断迭代调整一个初始随机方向,找到数据方差最大的方向,这个方向对应于数据的主成分。每次迭代时,根据数据的梯度信息调整方向,直到找到最大方差的方向,进而得到PCA的主成分载荷轴。

Norah 的技术博客 1755

【机器学习 - 10】:PCA和梯度上升法

需要强调的是,不是简单地从n维特征中去除其余n- k维特征,而是重新构造出全新的k维正交特征,且新生成的k维数据尽可能多地包含原来n维数据的信息。实质是数据间的方差够大,通俗地说,就是能够使数据到了新的维度基变换下,坐标点足够分散,数据间各有区分。如下图所示,比如求y轴为它的第一主成分,那么把y轴的分量去掉,也就是去掉各点在第一主成分上的分量,即得到第二主成分。找到第一主成分之后,每一个样本都去掉第一主成分上的分量,对于这个结果,继续去求第一主成分,得到的就是第二主成分。,找一组新的特征来重新表示;

Oh_Python的博客 818

【机器学习】机器学习从零到掌握之十三 -- 教你理解Logistics回归之梯度上升算法

本文是《机器学习从零到掌握》系列之第13篇 机器学习从零到掌握之一 -- 教你理解K近邻算法 机器学习从零到掌握之二 -- 教你实现K近邻算法 机器学习从零到掌握之三 -- 教你使用K近邻算法改进约会网站 机器学习从零到掌握之四 -- 教你使用可视化分析数据 机器学习从零到掌握之五 -- 教你使用归一化数值准备数据 机器学习从零到掌握之六 -- 教你使用验证分类器测试算法 机器学习从...

中科院AI算法工程师的博客 1050

机器学习入门教学——梯度下降、梯度上升

梯度下降、梯度上升的简单概述。

计算机硕士的博客 8439

梯度上升算法实现

NULL 博文链接:https://blackproof.iteye.com/blog/2064084

【Labview与SQL Server互联(labview可以引用数据库)】

Labview与SQL Server互联

Magize的博客 3585

梯度下降法和梯度上升法

梯度下降法 梯度下降法来说,在神经网络中用到,最小化误差的一种优化方法。用梯度下降法求函数f(x)=-2x^2+4x+5的极小值。

weixin_45112546的博客 2034

储能逆变器动态无功补偿:从原理到算法实现

本文深入解析了储能逆变器动态无功补偿的核心原理与算法实现。通过四象限运行与解耦控制技术,储能逆变器可在充放电的同时,快速、精准地调节无功功率,有效提升电网电能质量与功率因数。文章详细阐述了从相位调节、容量限制到PI控制算法的完整技术路径,并结合工程实践,探讨了其在光伏/储能系统中的协同控制策略与进阶应用价值。

weixin_29216353的博客 207

PCA与梯度上升法

PCA与梯度上升法   PCA:主成分分析算法,具体记录在:《特征值分解实验:人脸识别与PageRank网页排序》,本质就是矩阵的特征值分解。 PCA 是一个非监督学习的算法,主要用于数据降维,方便人类理解、可视化、去噪。 而梯度上升法,作用于最大化一个效用函数。 举个例子,二维平面的降维: 那怎么把二维降到一维呢?选一个特征即可,另一个特征扔调。 降到特征1:所有点都在X轴上,二维平面变成一条横线。 降到特征2:所有点都在Y轴上,二维平面变成一条竖线。 对比以上俩者,发现降维.

Debroon 960

DNF服务器搭建服务端架设教程

第三步:打开winscp,上传Script.pvf(版本)、publickey.pem(密钥)、df_game_r(等级补丁)到home/neople/game目录下。第四步:打开putty输入./stop,./stop(两次,如果是首次架设不用./stop),./run,运行刚才上传的三个游戏文件。③是本地配置登录器的配置文件,自动生成,可以删除,但是还是会根据你生成的登录器生成这个文件,类似日志。⑤密钥中所上传的三个文件其中之一,重中之重,上传到服务器的密钥必须和登录器中的密钥为一个。

V13807970340的博客 6255

A B C三个气象站的小波分析结果解读

在小波分析的过程中,信号的不同频率分量会在不同的尺度上显现,而纵轴上的数值表示信号在相应尺度上的强度或能量。2. **小波方差的横轴(水平轴)**:横轴上的尺度表示用于分析的小波函数的尺度。1. **共同趋势:** 在所有三个点的小波方差图中,随着尺度的增加,方差逐渐增大,尤其是在较大的时间尺度上。3. **尺度30的特殊性:** 在所有点的小波方差图中,尺度30似乎是一个特殊的点,对应着一个较长的时间尺度上的波动或变化。2. **方差的大小:** 方差的大小反映了在相应尺度下信号的波动强度。

weixin_44259522的博客 859

31-使用梯度上升法求解PCA问题

前言   在上一篇博客中主要介绍了 PCA 这种方法对数据进行降维它的一般性的原理,我们将 PCA 这样的一个问题规约成了求一个目标函数的最大值这样的一个问题。回忆一下,我们要想求出一个目标函数的最大值,我们就可以使用梯度上升法来解决。   这篇博客主要就是来推导一下梯度上升法解决 PCA 问题相应的公式。 推导过程   在这里,我们的目标就是:   这里我们不再用 JJJ 来表示了,因为 JJJ 主要是用来描述损失函数的。如果我们要使用梯度上升法求解的话,那么关键就是要求这个梯度。对于上面的式子来说,

qq_41033011的博客 521

嵌入式Linux网络调试踩坑记:YT8531/YT8521 PHY驱动移植与设备树配置实战

本文深入解析嵌入式Linux系统中YT8531/YT8521 PHY驱动移植与设备树配置的实战经验。从网络不通的常见现象入手,详细介绍了驱动移植关键点、设备树配置详解及常见问题排查技巧,帮助开发者快速解决RGMII接口调试难题,提升嵌入式网络开发效率。

weixin_42525328的博客 444

实现基于梯度上升法的PCA

实现基于梯度上升法的PCA 参考bobo老师的机器学习课程,进行总结回顾 目录 基于梯度上升法的PCA原理 实现基于梯度上升法实现的PCA 用自制数据集验证手写的PCA 基于梯度上升法的PCA原理 PCA(Principal Component Analysis):主成分分析 可以用于数据降维,重新确定数据所在的空间的基,保留k个方差最大的基。 故我们要找到令数据方差最大的基 即寻找使样本空间...

weixin_44264662的博客 259

基于YOLOv8的MVTec AD缺陷检测系统设计与实现

速度快,精度高;支持 anchor-free 架构;支持实例分割和图像分类;模块化代码,易于部署与改进;完美兼容 ONNX、TensorRT 等推理框架;官方支持多平台训练和推理(CPU/GPU)。YOLOv8 是工业视觉检测落地非常理想的选择。MVTec AD(Anomaly Detection)数据集包括15类工业对象,每个对象包括多个子类缺陷(例如 “scratch”, “crack”, “hole”)及正常图像。类别缺陷子类bottlecablecapsule。

YOLO 931

华为OD机试真题 新系统【进制转换后自定义排序】

华为OD机试 新系统真题【进制转换后自定义排序】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【进制转换后自定义排序】多语言题解。

qq_45776114的博客 594

07 PCA(主成分分析)之梯度上升法

上篇讲的是PCA基于矩阵操作方法的实现,本文讲的是基于梯度上升法实现的PCA。 PCA之梯度上升法PCA原理主成分分析PCA均值归零(demean)映射轴和方差梯度上升法代码实现单个主成分分析多个主成分分析 PCA原理 假设现有样本的分布如下图所示。 样本有两个特征,也就是二维的数据:特征1和特征2,如果对样本进行降维,首先可以考虑基于坐标轴进行降维。会有如下两种方式:舍弃特征1,只保留特征2,...

dz4543的博客 1299

uniapp - [全端兼容] 详解实现国际化多语言切换全流程及示例,全部页面中英文多语言随意切换即时生效,语言切换全项目立即变化可自定义新增各国其他语言,uniApp实现中英文语言切换完整源码教程!

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniapp多语言实现,uni-app项目使用多语言切换功能,中英文切换,uniapp实现中英文语言切换,uniApp实现国际化多语言切换,中文英文之间的更换,Uniapp使用什么插件能支持多种语言,退出后重启依然能让语言保留,设置可切换中英文,uniapp国际化页面双语/顶部导航双语/根据系统语言双语,标题栏文字原生底部菜单tabbar怎么改,使用vue-i18n国际化多国语言,全平台i18n插件,

🏆 前端领域优质创作者 1万+

主成分分析PCA 与 梯度上升法

什么是PCA 主成分分析,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。在数据压缩消除冗余和数据噪音消除领域都有广泛应用。 具体的,假如我们的数据集是n维的,共有m个数据(x(1),x(2),…,x(m))。我们希望将这m个数据的维度从n维降到n’维,希望这m个n’维的数据集尽可能的代表原始数据集。我们知道数据从n维降到n’维肯定会有损失,但是我们希望损失尽可能的小。那么如何让这...

石中路的博客 683

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

释放数据的潜力:用梯度上升法解锁主成分分析(PCA)的神奇

主成分分析是一种统计技术,旨在找到数据中的主要变化方向,以便将数据投影到新的坐标系中,从而减少维度或提取最重要的特征。通常情况下,PCA的目标是找到一组正交基向量(模长为1的向量),称为主成分,这些向量按照方差递减的顺序排列。这些主成分捕捉了数据中的大部分信息,允许我们以更低维度的方式表示数据。

null18的博客 724

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

04 PCA与梯度上升法

机器学习之PCA与梯度上升法

qq_45968392的博客 536

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

第7章 PCA与梯度上升法 学习笔记上

目录 7-1 什么是PCA 7-2 使用梯度上升法求解PCA问题 7-3 求数据的主成分PCA demean 梯度上升法 使用极端数据集测试 7-1 什么是PCA 降维后 同理去掉特征一,降维则为 那个方案更好呢,右边的,在x轴上点集间距离大,有更好的区分度 将点映射到这条斜线上,数据点变为,其整体与原来变化不大,从二维降到了一维,这时无论是映射到xy上间距大好 方差样本的疏密 所有的样本减去整体样本的均值 dm..

moonlightpeng的博客 365

04机器学习--主成分分析(PCA)与梯度上升法及python实现

①PCA概述 一个非监督的机器学习算法 主要用于数据的降维 通过降维,可以发现更便于人类理解的特征 其他应用:可视化、去噪 例如:一个二维的数据 经过降维(保留其中一个维度,去除另一个维度,这里保留了特征) 另一种降维方式 比较容易看出第一种降维方案比较好,因为映射在x轴上的特征之间的距离相对较大,容易区分。 第一种方案就是最好的方案吗? 再看一种情况 都映射到了一个轴上,这种方案所有的点更加趋近于原来的分布情况,这个时候的映射的区分度是最明显的,我们的目标就变.

weixin_44446756的博客 2215

机器学习 -- PCA(Ⅱ 梯度上升法解决主成分分析问题)

一. 原理 经过上一节,我们有如下结论。 1. 目标:求w,使得f(X)最大。其中: 2. 梯度可表示为: 即: 对其进行向量化处理: 也可写成: 故将梯度向量化结果为: 二. 实现 1. 生成数据集 (1)导入需要的模块和包 import numpy as np import matplotlib.pyplot as plt (2)生成...

Leo的博客 800
上一篇: (七)多项式回归于模型泛化
下一篇: (八)逻辑回归
Allen’s hub
博客等级 码龄8年 5粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值