- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
降维,可以用下面这张图来很简单的描述, 就是将不同的、复杂的多种树都抽象成最简单的树的描述,也就是我们不关心这棵树长什么样子有什么特别的特征,我们只需要降维,知道它是一棵树即可 .
维度下降实际上就是 找到一个function,使得输入x得到输出z,而输出z的维度要比输入x的维度小 。具体有几种方面,下面就先将PCA(主成分分析) 。
PCA认为,function实际上可以看成一个矩阵,即:
可以通过一个向量与矩阵的运算来描述这件事。那么当前假设x为二维向量,而要求降到一维的向量z,而w的范数等于1,则可以看成 z就是x在w上的投影 。
不同方向的w会导致投影出来的z不一样,因此我们的目标是 找到一个w,它能够使得投影之后的z的差异性能够最大,而不是都挤在一起 ,如下图:
那么如果是降到多维的话也是同理, 首先先找某一维度能够让对应方差最大,再找另一维度能够让对应方差最大且 \(w^2\) 与 \(w^1\) 是正交的,以此类推 :
最终得到的 \(W\) 是 正交矩阵 .
而经过一系列的推导(此部分推导可以具体看影片,之后我也会把统计学习方法中的推导过程补上)得到的结论就是: 假设x的协方差矩阵为 \(S=Cov(x)\) ,而 \(w^i\) 就是矩阵S所有特征值中第i大的特征值对应的特征向量 .
假设当前 有许多个基础的组成成分,而我们每张图片都可以看成是由多个组成成分和一个基础的均值(全数样本的均值)相加而成的,看成在图片均值的基础上拥有自身差异性的部分,那么根据该图片中是否有对应的基础成分就可以写出来一个向量 \(C=[c_1,c_2,...]\) ,如果组成成分不是特别多而图片特别多,那我们用向量C来表示一张图片是非常有意义的 .
那么就可以写成 。
因此我们的思路就转换成 找到一组向量 \(\{u^1,u^2,...,u^k\}\) 能够使得 \(x-\bar{x}\) 与 \(\hat{x}\) 之间的距离最小化 ,即 。
而可以证明, 由PCA方法找出来的向量组 \(\{w^1,w^2,...,w^k\}\) 就是我们要找的目标向量组 。而将上述运算转换成矩阵形式:
目标就是 找出矩阵u和矩阵c,使得他们相乘之后和矩阵X的差距最小 。而回顾学过的SVD,矩阵X可以进行分解:
其中矩阵U的k个列向量就是矩阵 \(XX^T\) 的最大的前k个特征向量,而 \(XX^T\) 就是 \(S=Cov(x)\) ,因此这也就是我们想要找到 \(\{w^1,w^2,...w^k\}\) ,因此只要进行SVD分解就可以找到目标的 \(\{u^1,u^2,...u^k\}\) 。那么下一个问题就是求解矩阵C.
由于我们已知了矩阵U,那么对于某个样本,就有:
而由于 矩阵W中每一个向量都是相互正交的 ,就可以有:
(此部分我也不太理解怎么推导出来的,希望会的大神教教)。接下来就可以将这一个过程用神经网络的形式来表示:(注意图中应该是c应该是下标不是上标).
但是如果现在我们不是从SVD中解出矩阵W,而是从这神经网络之中来进行梯度下降求解,这样求出来的结果和用SVD求出来的结果是不一样的!因为在SVD中求出来的结果还有限制它们彼此之间是正交的,而神经网络是没有的。而将PCA看成是具有一个隐含层的神经网络的方式称为Autoencoder .
但其实用SVD的方式求解起来更快更好,而要学习这种神经网络的方式是因为其隐含层可以加层来实现更复杂的操作.
首先是无监督性质,如果样本本身就具有一定的类别信息,那么就会出现下面这样的问题:
可以看到如果有类别区分那么做PCA就会将它们混淆在一起 .
其次它是线性变换,无法做非线性的事情:
如果将PCA对人脸数据进行处理:
可以看到 各个出来的特征向量并不是我们想象中的基本组成部分(比如嘴巴什么的),更像是一张完整的脸 ,这是为什么呢?
因为这些向量的组成成分的加权数字并不一定是正的,如果是负数就相当于先画出一个很复杂的东西然后再减去某个元素 。这样就很不直观。如果想要加权的参数都是正的, 可以采用NMF,它能够使得参数 \(a_i\) 都是正的,其次是每个 \(w^i\) 里面每个维度的数值都是正的,这是PCA无法保证的,因为在图像中 \(w^i\) 就象征第i个组成部分的图像,如果某个像素是负的那将无法处理 ,PCA就会出现这个问题.
能够更明显地看出组成部分,符合我们的预期.
最后此篇关于【机器学习】李宏毅——线性降维的文章就讲到这里了,如果你想了解更多关于【机器学习】李宏毅——线性降维的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
简介 在上一篇文章《机器学习:神经网络构建(上)》中讨论了线性层、激活函数以及损失函数层的构建方式,本节中将进一步讨论网络构建方式,并完整的搭建一个简单的分类器网络。 目录 网络Netwo
简介 在本篇文章中,我们采用逻辑回归作为案例,探索神经网络的构建方式。文章详细阐述了神经网络中层结构的实现过程,并提供了线性层、激活函数以及损失函数的定义(实现方法)。 目录 背景介绍
简介 在前两篇文章中,我们详细探讨了如何利用采样数据来估计回归曲线。接下来,在本节中,我们将深入讨论如何处理分类问题。 章节安排 背景介绍 数学方法 程序实现 背景介绍 线
简介 在上一篇文章《机器学习:线性回归(上)》中讨论了二维数据下的线性回归及求解方法,本节中我们将进一步的将其推广至高维情形。 章节安排 背景介绍 最小二乘法 梯度下降法 程序
PyCaret是一个开源、低代码Python机器学习库,能够自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,极大地加快了实验周期,提高了工作效率。PyCaret本质上是围绕几个机器学习
在我的研究进展中,我现在已经将寄生虫从图像中分离出来。寄生虫看起来像蠕虫。我希望 MATLAB 读取所有输入图像,查找类似深紫色图像的蠕虫,如果检测到,则给出检测到的答复。我尝试使用直方图比较,但我认
目前我正在尝试了解机器学习算法的工作方式,但我没有真正了解的一件事是预测标签的计算准确度与视觉混淆矩阵之间的明显差异。我会尽量解释清楚。 这是数据集的片段(这里你可以看到 9 个样本(在真实数据集中大
第一章 绪论 机器学习 : 致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。在计算机系统中, “经验” 通常以“数据“形式存在,因此,机器学习所研究的主要内容,是关于在计算
1. 算法原理(K-Nearest Neighbor) 本质是通过距离判断两个样本是否相似,如果距离够近就认为他们足够相似属于同一类别 找到离其最近的 k 个样本,并将这些样本称
前言 K-means是一种经典的无监督学习算法,用于对数据进行聚类。K-means算法将数据集视为具有n个特征的n维空间,并尝试通过最小化簇内平方误差的总和来将数据点划分为簇。本文将介绍K-m
目录 前言 介绍LightGBM LightGBM的背景和起源 L
前言 可以说掌握了机器学习,你就具备了与机器对话,充分利用机器为人类服务的能力。在人工智能时代,这将成为一项必备技能,就好比十年前你是编程大牛,二十年前你英语超好一样。因此,无论你是什么专业的
几个贯穿始终的概念 当我们把人类学习简单事物的过程抽象为几个阶段,再将这些阶段通过不同的方法具体化为代码,依靠通过计算机的基础能力-- 计算 。我们就可以让机器能够“学会”一些简单的事物。
1、选题背景 人脸识别技术是模式识别和计算机视觉领域最富挑战性的研究课题之一,也是近年来的研究热点,人脸性别识别作为人脸识别技术
每当我们在公有云或者私有云发布训练好的大数据模型,为了方便大家辨识、理解和运用,参照huggingface所制定的标准制作一个Model Card展示页,是种非常好的模型展示和组织形式。 下面就是一
2. 支持向量机 对偶优化 拉格朗日乘数法可用于解决带条件优化问题,其基本形式为: \[\begin{gather} \min_w f(w),\\ \mathrm{s.t.} \quad
我正在尝试运行以下代码: https://github.com/opencv/opencv/blob/master/samples/dnn/classification.cpp 我在这里找到所有经过预
我是机器学习新手。当我使用 scikit-learn 模块中的波士顿数据集练习具有默认参数的决策树回归模型时。 在此链接解决方案( How to Build a Decision tree Regre
我有用于训练的数据。当我将其输入神经网络时,该数据出现 3% 的错误。 我知道这些数据有一定的过度代表性 - 例如,第 5 类的示例大约是其他类的十分之一。 我的作业指出,我可以通过偏置训练数据(即删
我在 Python 的多类分类中使用 SVM 时遇到问题。事实上,问题在于性别分类(来自图像),其中训练数据集仅包含“y=1”或“ y=-1”作为类标签(二进制)。但是,在预测中,如果是男性,我必须预
我是一名优秀的程序员,十分优秀!