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

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

了解PCA

PCA的概念:主成分分析(Principal Component Analysis,PCA),是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。

PCA的主要目标是将特征维度变小,同时尽量减少信息损失。就是对一个样本矩阵,一是换特征,找一组新的特征来重新表示;二是减少特征,新特征的数目要远小于原特征的数目。

通过PCA将n维原始特征映射到k维(k<n)上,称这k维特征为主成分。需要强调的是,不是简单地从n维特征中去除其余n- k维特征,而是重新构造出全新的k维正交特征,且新生成的k维数据尽可能多地包含原来n维数据的信息。例如,使用PCA将20个相关的特征转化为5个无关的新特征,并且尽可能保留原始数据集的信息。

怎么找到新的维度呢?实质是数据间的方差够大,通俗地说,就是能够使数据到了新的维度基变换下,坐标点足够分散,数据间各有区分。

在这里插入图片描述
上图所示的左图中有5个离散点,降低维度,就是需要把点映射成一条线。将其映射到右图中黑色虚线上则样本变化最大,且坐标点更分散,这条黑色虚线就是第一主成分的投影方向。

PCA是一种线性降维方法,即通过某个投影矩阵将高维空间中的原始样本点线性投影到低维空间,以达到降维的目的,线性投影就是通过矩阵变换的方式把数据映射到最合适的方向。

使用梯度上升法求解第一主成分

公式:

  • 向量映射
    在这里插入图片描述
  • 求某向量在X轴上的映射(求a到b的映射)
    在这里插入图片描述
  • 主成分分析法
    在这里插入图片描述
  • 主成分分析
    在这里插入图片描述
    在这里插入图片描述

步骤:

  1. 生成数据
X = np.empty(shape=(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)

在这里插入图片描述

  1. 先做一个demean操作,均值归零的操作,这样的好处在于可以少计算平均值
def demean(X): # 传入一个矩阵使得各个维度上的均值都为0
    return X-np.mean(X, axis=0) 
    # axis = 0 : 在横的方向上取值
  1. 求方差最大的效用函数
    在这里插入图片描述
def f(X,w): # 求方差最大的效用函数
    return np.sum(X.dot(w)**2)/len(X)
  1. 求梯度
    在这里插入图片描述
def df(X,w): # 求梯度
    return X.T.dot(X.dot(w))*2./len(X)
  1. 求单位方向。因为w的模是1,那么说明w的每个维度都非常小,因为w+步长后w的模发生改变,但是我们不希望它的模发生变化,因为w作为方向向量,我们希望它的值为一,所以每次得到w之后我们都要进行处理,使它的模为1。
def direction(w): # 每次求一个单位方向
    return w/np.linalg.norm(w)
  1. 用梯度上升法求第一主成分。w的模是1,那么说明w的每个维度都非常小,所以不能选择太大值。
def gradient_ascent(X, initial_w, eta=0.00001, n_iters=1e4, espilon=1e-8):
    w = direction(initial_w)
    i_iter = 1
    while i_iter<=n_iters:
        last_w = w
        gradient = df(X,w)
        w = w + gradient*eta
        w = direction(w)
        if abs(f(X,w)-f(X,last_w)) < espilon:
            break
        i_iter += 1
    return w

在这里插入图片描述

  1. 绘制第一主成分
    在这里插入图片描述
    因为demean操作后会得到零值坐标轴,所以红线在中间部位,将值放大,即可清楚的看到第一主成分。对于PCA问题,不能用数据标准化来处理数据,因为在数据标准化中就把方差变为0,也就不存在方差最大值了。
    在这里插入图片描述

使用梯度上升法求解第二主成分

如何寻找第二主成分?
找到第一主成分之后,每一个样本都去掉第一主成分上的分量,对于这个结果,继续去求第一主成分,得到的就是第二主成分。

举个简单的例子:
如下图所示,比如求y轴为它的第一主成分,那么把y轴的分量去掉,也就是去掉各点在第一主成分上的分量,即得到第二主成分。
在这里插入图片描述
在这里插入图片描述

比如说a想去掉b上的主成分,获得在c上的主成分,
在这里插入图片描述

步骤:

  1. 去掉第一主成分分量(其中的w为求第一主成分中的w)
X2 = X_demean-X_demean.dot(w).reshape(-1,1)*w # 去掉第一主成分分量以后的样本
  1. 求第二主成分(其中的initial_w为求第一主成分中的initial_w)
w2 = gradient_ascent(X2, initial_w)
  1. 将第二主成分画在图上
    在这里插入图片描述
    在这里插入图片描述

求数据前n个主成分

根据以上内容,编写相应的程序:

def first_n_components(n_conponents,X,eta=0.01):
    def demean(X): #  传入一个矩阵使得各个维度上均值都维0 
        return X-np.mean(X,axis=0)

    def f(X,w): # 求方差最大的效用函数
        return np.sum(X.dot(w)**2)/len(X)

    def df(X,w): # 求梯度
        return X.T.dot(X.dot(w)) * 2. /len(X)

    def direction(w): # 每次求一个单位方向
        return w/np.linalg.norm(w)

    def first_components(X,initial_w,eta,n_iters=1e4,epsilon=1e-8): # eta取值比较小
        w = direction(initial_w)
        i_iter = 1
        while i_iter<=n_iters:
            last_w = w
            gradient = df(X,w)
            w = w+ gradient*eta
            w = direction(w)
            if abs(f(X,w)-f(X,last_w))<epsilon:
                break
            i_iter+=1
        return w
    X_p =X.copy()
    initial_w = np.random.random(X.shape[1])   # 这里不能取0
    X_p = demean(X_p)
    res = np.empty(shape=(n_conponents,X.shape[1]))
    for i in range(n_conponents):
        res[i] = first_components(X_p,initial_w,eta)
        X_p = X_p-X_p.dot(res[i]).reshape(-1,1)*res[i] 
    return res

在这里插入图片描述

使用sklearn中封装的PCA

示例1:
在这里插入图片描述
在这里插入图片描述

使用真实数据集

在这里插入图片描述
在这里插入图片描述

  • 解释方差的比例,如下图所示,这两个数据表示这两个维度占了多少的方差比重,如果把64个维度算作100%,则这两个维度占了约29%。(主成分分解是从方差最大的往方差最小的求)
    在这里插入图片描述
    在这里插入图片描述

  • 根据方差比例,求主成分
    在这里插入图片描述

  • 降维的意义:方便做数据可视化
    在这里插入图片描述

机器学习--基础算法--PCA与梯度上升法 1 什么是PCA 主成分分析: ●一个非监督的机器学习算法 ●主要用于数据的降维。通过降维,可以发现更便于人类理解的特征 ●其他应用:可视化;去噪 2 使用梯度上升法求解PCA问题 ... 阅读详情

相关推荐

【机器学习】主成分分析法(PCA)

本文主要讲述了主成分分析法(PCA)的原理和应用。PCA通过选择最重要的特征,将高维数据映射到低维空间,同时保持数据间的关系,实现降维和去噪。通过具体的例子和图示解释了PCA的原理,并比较了两种降维方案,解释了为什么选择将数据映射到x轴上可以得到更好的分类效果。最后强调了在PCA之前需要对所有样本的均值进行归零处理。通过这篇文章,读者可以深入了解PCA的原理和应用,并掌握如何使用PCA进行数据降维和去噪,提高分类效果。

聚焦大数据、AI、数据库三大核心领域,分享 Flink/Spark 实时计算、数仓架构设计、AI 模型落地、数据库性能调优的实战干货,附可直接运行的源码与方案。提供企业技术内训、项目咨询与定制化服务,助力开发者与企业高效搞定数智技术难题。 2866

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

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

计算机硕士的博客 8439

主成分分析法(PCA)——自学第六篇

1、主成分分析 (1)用途 非监督的机器学习算法 主要用于数据的降维 通过降维,可以得到更容易理解的特征信息 可以方便数据可视化、用于去噪 (2)原理 坐标系上有五个点,需要通过降维,在最大程度保留数据信息的基础上将二维表示的数据降到一维。所以我们需要找到一个轴,使得样本映射到轴上之后,样本间的方差最大(最容易区别各个样本) 。需要求一个轴的方向w=(w1,w2),使得所...

yh_1021的博客 3648

梯度下降法和梯度上升法

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

weixin_45112546的博客 2034

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

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

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

梯度上升算法实现

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

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

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

Leo的博客 800

带挂牵引车前向运动模型推导及仿真实现

牵引车-半挂车的车辆结构与普通的车辆相比增加了一个半挂车,它们之间通过鞍座相连接,为了分析半挂牵引车运动过程中的位姿和状态,本文将基于车辆的机械结构建立对应的运动学模型,该模型基于以下假设: 车辆行驶过程中,道路平坦且无凸凹; 车辆低速行驶,且运行过程中车身无侧倾和俯仰运动; 车辆行驶过程中,轮胎无形变,无侧向滑动,且无侧向力; 牵引车和半挂车均满足阿克曼转向几何原理; 牵引车与半挂车不会发现折叠。

jianmo的博客 3181

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

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

weixin_44446756的博客 2215

华为交换机与思科/华三设备LACP对接实战:手把手教你配置链路聚合

本文详细解析了华为交换机与思科、华三设备间的LACP链路聚合配置实战,涵盖核心原理、配置步骤及排错技巧。通过对比不同厂商的实现差异,提供可落地的跨厂商对接方案,助力企业网络工程师高效部署高可靠性链路聚合。

weixin_30836759的博客 422

SAP 屏幕增强:客户商主数据屏幕增强(KNA1、KNB1、KNVV)

本文介绍了SAP系统中针对客户主数据(KNA1、KNB1、KNVV)进行屏幕增强的具体实现方法。主要内容包括:1)在SPRO配置中创建新条目;2)通过SE80创建函数组和程序(LZKNA1TOP等);3)设置子屏幕9001并添加自定义结构字段;4)利用BADI(CUSTOMER_ADD_DATA等)实现数据交互逻辑。文章分别详细说明了针对客户主数据的一般数据(KNA1)、公司代码数据(KNB1)和销售数据(KNVV)三类不同数据的增强配置步骤,包括函数模块创建、屏幕设置和BADI方法调用等关键技术点。

SAP ABAP开发技能记录分享 1615

(六)PCA与梯度上升法

PCA与梯度上升

Engineering_的博客 337

STM32入门教程:无人机控制

我们将会一步一步引导您完成无人机的控制代码,包括无人机的姿态控制、飞行控制和通信控制等。第三步:配置无人机姿态控制 无人机的姿态控制是指控制无人机在空中的倾斜和转向。为了实现姿态控制,我们需要使用加速度计和陀螺仪传感器来获取无人机的姿态信息,并使用PID控制算法来控制无人机的姿态。在这一步骤中,您需要根据您使用的具体传感器和控制算法的要求进行更详细的配置和编码。在通信控制中,您需要考虑到通信的稳定性和可靠性。第五步:通信控制 无人机的通信控制是指与地面站或其他设备进行通信,传输飞行数据和接收飞行指令。

m0_75244442的博客 747

PCA与梯度上升法

假设存在一根直线,将所有的点都映射在该条指直线上,这样的话点的整体分布和原来的点的分布就没有很大的差异(点和点的距离比映射到x轴或者映射到y轴都要大,区分度就更加明显),与此同时所有的点都在一个轴上(理解成一个维度),虽然这个轴是斜着的。用这种方式将二维降到了一维度那么如何找到这个让样本间距最大的轴?如何定义样本间间距?使用方差(Variance)方差越大代表样本之间越稀疏,方差越小代表样本之间越紧密。

noob9527的博客 390

项目管理 Agent:进度追踪与风险预警 Harness

我们先从LangChain的Agent定义说起:Agent是一个能感知环境、自主决策、调用工具、执行动作、迭代反思的智能实体。而「项目管理全自主Agent」,就是把Agent的核心能力和项目管理的五大过程组(启动、规划、执行、监控、收尾)深度结合,聚焦执行监控阶段的两个核心痛点:进度偏差自动化计算、风险信号自动化识别与预警的专门化Agent。全感知(Omnisensing):能从。

AI架构师小马 515

软考高级信息系统项目管理师系列论文之:百篇软考高级信息系统项目管理师论文范文

软考高级信息系统项目管理师系列论文之:百篇软考高级信息系统项目管理师论文范文

zhengzaifeidelushang的博客 3578

机器学习算法之PCA

PCA

m0_52004821的博客 1900

Azure AI-102 认证全攻略: (二十八) 设置 Azure AI 服务 API

在本文中,您学习了如何通过 Azure 门户设置和管理 Azure AI 服务,以及如何通过编程方式访问这些服务。在这篇文章中,我们将深入探讨如何设置 Azure AI 服务,特别是如何通过 Azure API 来进行编程访问,以实现自动化和集成。通过本篇文章的学习,您不仅能够顺利完成 Azure AI-102 认证中的 API 配置和集成内容,还能高效地管理和优化 Azure AI 服务,构建稳定、可靠的 AI 应用。在成功设置并测试了 API 后,接下来要管理和维护您的 Azure AI 服务。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1444

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

主成分分析(Principle Component Analysis,简称:PCA)是一种非监督学习的机器算法,主要用于数据的降维。PCA 基本原理以有2个特征的二维平面举例,如图:横轴表示特征1,纵轴表示特征2,其中4个点表示二维的特征样本。如果要对样本进行降维降到一维,可以将这些点映射到横轴、纵轴或者其它轴上如:映射到不同的轴后样本间间距会不一样,而要找的就是让样本间间距最大的轴。假定这个轴方...

weixin_28895791的博客 371

深度揭秘!用 DeepSeek 打造超智能电商客服系统全流程

摘要:本文围绕使用 DeepSeek 开发电商智能客服展开详细教程。先介绍前期准备,包括了解 DeepSeek、获取 API 权限与搭建开发环境。接着阐述数据收集预处理,结合电商业务逻辑实现商品与订单信息查询。还提及优化性能的方法,如模型微调、多轮对话管理和错误处理。然后说明了基于 Web 和云平台的部署方案。最后强调持续监控和改进的重要性,通过设置监控指标、收集分析用户反馈来优化系统,助力开发者打造高效电商智能客服。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 7812

VC中sqlite的使用

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

机器学习:PCA(使用梯度上升法求解数据主成分 Ⅰ )

一、目标函数的梯度求解公式 PCA 降维的具体实现,转变为:    方案:梯度上升法优化效用函数,找到其最大值时对应的主成分 w ; 效用函数中,向量 w 是变量; 在最终要求取降维后的数据集时,w 是参数;  1)推导梯度求解公式 变形一      变形二      变形三:向量化处理      ...

ab1213456的博客 325

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

4.pca与梯度上升法

(一)什么是pca pca,也就是主成分分析法(principal component analysis),主要是用来对数据集进行降维处理。举个最简单的例子,我要根据姓名、年龄、头发的长度、身高、体重、皮肤的白皙程度(随便想的)等特征来预测一个人的性别,但这些特征中有一个是最没有用的,是什么的?显然是年龄,因为年龄的大小跟这个人的性别无关。还有姓名,这个特征显然起不到决定性作用,因为有...

weixin_30596343的博客 131

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python遇见机器学习 ---- 主成分分析 PCA

目录 综述 01 使用梯度上升法求解主成分 demean 梯度上升法 02 获得前n个主成分 03 从高维数据向低维数据的映射 04 scikit-learn中的PCA 05 使用PCA降噪 手写识别例子 人脸识别 06 特征脸 特征脸 综述 “明道若昧;进道若退;夷道若颣;大方无隅;大器免成;大音希声;大象无形。” 本文采用编译器:jupyter ...

如切如磋,如琢如磨 988

机器学习----使用梯度上升进行PCA求解

PCA简介 PCA(Principal Component Analysis):也是一个梯度分析的应用,不仅是机器学习的算法,也是统计学的经典算法 1.1 举个栗子 例如下面一个两个特征的一个训练集,我们可以选择一个特征,扔掉一个特征 下图分别是扔掉了特征一和特征二的两种方案,很明显右边这种的效果会更好一些,因为访问二扔掉特征二以后,点之间的分布情况更接近与原图,但是这不是更好的 我们希望有一根直线,是斜着的,我们希望将所有的点都映射到这条直线上,那么这个时候我们就成功的将二维降到了一维,与此同时,这

__Miracle__ 473
上一篇: 讲真的,我哭死,搞了一个画图软件
下一篇: 【普中51单片机教程 - 4】:独立按键 & 矩阵按键
街 三 仔
街 三 仔 新星创作者: python技术领域 新星创作者: python技术领域 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄5年 1万+粉丝 338原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

街 三 仔

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值