矩阵特征值

LBP特征提取原理及代码实现

北战南征 提交于 2020-03-06 15:37:25
老规矩,先上背景,算是表示对LBP算法提出者的一种尊敬(其实,是为了装...kkk,大家都懂ha)。 一、LBP背景:     LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像 局部纹理特征 的算子;它具有旋转不变性和灰度不变性等显著的优点。它是首先由 T. Ojala, M.Pietikäinen, 和D. Harwood 在1994年提出,用于纹理特征提取。而且,提取的特征是图像的局部的纹理特征。至今,仍在图像识别和人脸识别部分,有很好的效果。 二、LBP特征的原理:      从94年T. Ojala, M.Pietikäinen, 和D. Harwood提出至今,LBP经历过多次的改进,以下根据时间顺序介绍: FirstBleed:    原始的LBP算子定义为在3*3的窗口内,以窗口内的中心点的像素值为标准,对比窗口内其余8个元素的像数值大小,大于中心点的位置用1表示,小于为0。如此,3*3领域内的8个点恰可产生8为二进制数字(通常转化为十进制表示成LBP值)即为中心点的LBP特征值。     上图: SecondBleed:    原始的LBP提出后,研究人员不断对其改进和优化,以下是改进点。   (一):圆形LBP算子:      原始LBP算子固定为某个区域,在图像尺寸和频率纹理发生改变时,会出现很大的偏差

海森矩阵介绍及其在机器学习、深度学习中的理解

瘦欲@ 提交于 2020-03-01 19:13:21
海森矩阵(Hessian Matrix) Hessian Matrix:二阶导和函数曲率 海森 & 机器学习 特征值、凸性和鞍点 Key Words: Hessian Matrix, second order derivatives, convexity, and saddle points 原文链接: Hessian, second order derivatives, convexity, and saddle points 翻译: Hessian Matrix:二阶导和函数曲率 回忆一下 f f f 的梯度 f : R n → R f:\mathbb{R}^n \rightarrow \mathbb{R} f : R n → R : f ′ ( x ) = [ δ f δ x 1 , δ f δ x 2 , ⋯   , δ f δ x n ] (1) f'(x) = [\frac{\delta f}{\delta x_1}, \frac{\delta f}{\delta x_2}, \cdots, \frac{\delta f}{\delta x_n} ]\tag{1} f ′ ( x ) = [ δ x 1 ​ δ f ​ , δ x 2 ​ δ f ​ , ⋯ , δ x n ​ δ f ​ ] ( 1 ) 求 f f f 的二阶导意味着,我们可以看到第 i i i

SVD 奇异值分解与word embedding

血红的双手。 提交于 2020-02-29 22:21:35
在研究NLP的过程中,遇到了word embedding, 经过一系列学习,发现它最初的原理之一来自奇异值分解。于是对奇异值分解做一个简单的记录。 资料中比较好的资料: https://www.cnblogs.com/endlesscoding/p/10033527.html 原理讲解简单,demo做的十分好! https://www.cnblogs.com/litaotao-doctor/p/5320521.html 这篇把特征值和奇异值放在一起讲,十分到位。 看完上面的资料后,我觉得自己没必要记录公式原理了,自惭形秽。好,下面开始: SVD: Sigular Value Decomposition 个人认为奇异值和特征值应该可以有相同的理解,这里我们先谈特征值: 特征值的定义为对矩阵A存在特征值 λ,特征向量x,使下式成立: 而对A的所有特征值,我们称为A的谱,记为λ(A)。 那么我们该如何理解这个式子? 有几个相关的关系可以给我们参考:矩阵A的秩不小于A的非零特征值数;如果矩阵A不满秩,则一定存在0特征值;若矩阵A可对角化,则rankA = A的非零特征值数。 也就是说 矩阵的特征值与矩阵的线性相关性是有关系的。 则我们对特征值的理解可以为: 任意矩阵A对向量x的矩阵乘法,可以理解为对x向量的表换(旋转、平移、缩放),那么Ax可以理解为一次表换,而特征值λ与x的相乘

【Graph Embedding】GCN:天空飘来七个大字

匆匆过客 提交于 2020-02-27 04:00:21
今天学习的是阿姆斯特丹大学的同学于 2016 发表的一篇论文《Semi-supervised Classification with Graph Convolutional Networks》,目前有 2800 多引用。 在 2013 年在之前,NetWork Representation 有两种主流的方式,包括矩阵分解和 NetWork Embedding。 在 2013 年之后,也就是 Mikolov 提出 Word2Vec 之后,人们将注意力转移到 Network Embedding 上,并在此之后出现了很多有名的算法——DeepWalk、LINE、Node2Vec 等等。但是所有的这些方法都需要分成两步分别优化,一个是基于随机游走的生成序列和另一个是半监督学习的训练。 2013 年,本文作者提出了基于空间的图卷积神经网络,通过在图上进行卷积来完成特征提取,并取得非常好的效果。 1. Introduction 我们知道对于 CNN 网络中来说,其核心在使用了基于 Kernel 的卷积操作来提取图像的特征,卷积操作类似于对 计算区域内的中心节点和相邻节点进行加权求和 : CNN 之所以能成为图像领域的明珠却很少应用于其他领域原因是: 图片是一个规整的二维矩阵 ,无论 Kernel 平移到图片中的哪个位置都可以保证其运算结果的一致性,即: 平移不变性 。CNN

层次分析法

萝らか妹 提交于 2020-02-26 00:14:48
title: 层次分析法 date: 2020-02-25 19:14:41 categories: 数学建模 tags: [MATLAB, 评价模型] mathjax: true 定义 ​ 层次分析法(The Analytic Hierarchy Process即AHP)是由美国运筹学家、 匹兹堡大学教授T . L. Saaty于20世纪70年代创立的一种系统分析与决策的综合 评价方法,是在充分研究了人类思维过程的基础上提出来的,它较合理地解 决了定性问题定量化的处理过程。 ​ AHP的主要特点是通过建立递阶层次结构,把人类的判断转化到若干因 素两两之间重要度的比较上,从而把难于量化的定性判断转化为可操作的重 要度的比较上面。在许多情况下,决策者可以直接使用AHP进行决策,极大 地提高了决策的有效性、可靠性和可行性,但其本质是一种思维方式,它把 复杂问题分解成多个组成因素,又将这些因素按支配关系分别形成递阶层次 结构,通过两两比较的方法确定决策方案相对重要度的总排序。整个过程体 现了人类决策思维的基本特征,即分解、判断、综合,克服了其他方法回避 决策者主观判断的缺点。 步骤 第一步递阶层次结构 分析系统中各因素之间的关系,建立系统的递阶层次结构。 第二步构造判断矩阵 {1,2,3,...,9}:代表重要程度,逐渐递增 得到一个方阵,我们记为A,对应的元素为 \(a_{ij}\)

机器学习

梦想的初衷 提交于 2020-02-24 20:35:57
机器学习 概述 什么是机器学习 机器学习是一门能够让编程计算机从数据中学习的计算机科学。 一个计算机程序在完成任务T之后,获得经验E,其表现效果为P,如果任务T的性能表现,也就是用以衡量的P,随着E增加而增加,那么这样计算机程序就被称为机器学习系统。 自我完善,自我增进,自我适应。 为什么需要机器学习 自动化的升级和维护 解决那些算法过于复杂甚至跟本就没有已知算法的问题 在机器学习的过程中协助人类获得对事物的洞见 机器学习的问题 建模问题 所谓机器学习,在形式上可这样理解:在数据对象中通过统计或推理的方法,寻找一个接受特定输入X,并给出预期输出Y的功能函数f,即Y=f(X)。 评估问题 针对已知的输入,函数给出的输出(预测值)与实际输出(目标值)之间存在一定的误差,因此需要构建一个评估体系,根据误差的大小判定函数的优劣。 优化问题 学习的核心在于改善性能,通过数据对算法的反复锤炼,不断提升函数预测的准确性,直至获得能够满足实际需求的最优解,这个过程就是机器学习。 机器学习的种类 监督学习、无监督学习、半监督学习、强化学习 有监督学习:用已知输出评估模型的性能。 无监督学习:在没有已知输出的情况下,仅仅根据输入信息的相关性,进行类别的划分。 半监督学习:先通过无监督学习划分类别,再根据人工标记通过有监督学习预测输出。 强化学习:通过对不同决策结果的奖励和惩罚

【线性代数公开课MIT Linear Algebra】 第二十三课 微分方程与exp(At)

百般思念 提交于 2020-02-21 06:33:24
本系列笔记为方便日后自己查阅而写,更多的是个人见解,也算一种学习的复习与总结,望善始善终吧~ 一阶常系数微分方程 A u = d u d t 将一阶常系数微分方程转换为线性代数问题的关键在于常系数微分方程的解一定是 指数形式 的。那么我们的需要求解的东西就是指数的系数和指数的幂,而这可以转换为线性代数问题。 解的指数形式通常是自然常数 e 的指数(猜测是因为时域信号可以转到频域,傅里叶变换,这方面学识浅薄) 这个形式很容易让我们联想到之前对于矩阵 A 的幂的求解,这里看一个例子: 这里问题被转换为了求解 A u = d u d t 特征值与特征向量 先找 A 的特征值和特征向量 求解特征值 两个小技巧: 行列式determinant为特征值的积 矩阵的迹trace为特征值的和 当然可以直接求解determinant=0得到特征值: 由于老师直接剧透 e 的幂系数中为矩阵 A 的特征值,那么对于特征值-3来说,随着t的增加,最终这一项为0;而对于特征值0来说,随着t增加,最终这一项为某一个确定值(解会收敛);举一反三:对于特征值大于0,随着t增加,解发散。 求解特征向量 两个小技巧: 对于特征值为0,特征向量即为null space,free variable自由变量置1很容易求得 对于另一个特征值-3,利用 A − λ I 特征向量不变,也可以转换为求解null space

PAT basic 1063 计算谱半径 (20分) C++

老子叫甜甜 提交于 2020-02-03 13:56:53
一、题目描述 在数学中,矩阵的“谱半径”是指其特征值的模集合的上确界。换言之,对于给定的 n 个复数空间的特征值 { a​1​​ +b​1​​ i,⋯,a​n​​ +b​n​​ i },它们的模为实部与虚部的平方和的开方,而“谱半径”就是最大模。 现在给定一些复数空间的特征值,请你计算并输出这些特征值的谱半径。 输入格式: 输入第一行给出正整数 N(≤ 10 000)是输入的特征值的个数。随后 N 行,每行给出 1 个特征值的实部和虚部,其间以空格分隔。注意:题目保证实部和虚部均为绝对值不超过 1000 的整数。 输出格式: 在一行中输出谱半径,四舍五入保留小数点后 2 位。 输入样例: 5 0 1 2 0 -1 0 3 3 0 -3 输出样例: 4.24 二、代码 //1063 # define _CRT_SECURE_NO_WARNINGS # include <stdlib.h> # include <cmath> # include <iostream> using namespace std ; int main ( ) { int n ; cin >> n ; double max = 0 , temp ; int a , b ; for ( int i = 0 ; i < n ; i ++ ) { cin >> a >> b ; temp = sqrt ( a * a

PAT乙级1063(C++)——龙哥哥的刷题路

我是研究僧i 提交于 2020-01-30 19:45:02
1063 计算谱半径 (20分) 在数学中,矩阵的“谱半径”是指其特征值的模集合的上确界。换言之,对于给定的 n 个复数空间的特征值 { a​1+b1i,⋯,an+bni },它们的模为实部与虚部的平方和的开方,而“谱半径”就是最大模。 现在给定一些复数空间的特征值,请你计算并输出这些特征值的谱半径。 输入格式: 输入第一行给出正整数 N(≤ 10 000)是输入的特征值的个数。随后 N 行,每行给出 1 个特征值的实部和虚部,其间以空格分隔。注意:题目保证实部和虚部均为绝对值不超过 1000 的整数。 输出格式: 在一行中输出谱半径,四舍五入保留小数点后 2 位。 输入样例: 5 0 1 2 0 -1 0 3 3 0 -3 输出样例: 4.24 解题思路:输出最大值即可 # include <iostream> # include <cstdio> # include <cmath> # include <algorithm> # include <string> using namespace std ; double x [ 10005 ] ; int main ( ) { int N = 0 , a = 0 , b = 0 ; cin >> N ; for ( int i = 0 ; i < N ; i ++ ) { cin >> a >> b ; double m =

PTA 乙级——1063 计算谱半径 C++实现

倖福魔咒の 提交于 2020-01-29 08:43:45
题目 计算谱半径 在数学中,矩阵的“谱半径”是指其特征值的模集合的上确界。换言之,对于给定的 n n n 个复数空间的特征值 { a 1 ​ ​ + b 1 ​ i , ⋯ , a n ​ ​ + b n ​ ​ i a_1​​+b_1​i,⋯,a_n​​+b_n​​i a 1 ​ ​ ​ + b 1 ​ ​ i , ⋯ , a n ​ ​ ​ + b n ​ ​ ​ i },它们的模为实部与虚部的平方和的开方,而“谱半径”就是最大模。 现在给定一些复数空间的特征值,请你计算并输出这些特征值的谱半径。 输入格式: 输入第一行给出正整数 N ( ≤ 10000 ) N(≤ 10 000) N ( ≤ 1 0 0 0 0 ) 是输入的特征值的个数。随后 N N N 行,每行给出 1 个特征值的实部和虚部,其间以空格分隔。注意:题目保证实部和虚部均为绝对值不超过 1000 的整数。 输出格式: 在一行中输出谱半径,四舍五入保留小数点后 2 位。 输入样例: 5 0 1 2 0 -1 0 3 3 0 -3 输出样例: 4.24 代码 # include <iostream> # include <iomanip> # include <math.h> using namespace std ; int main ( ) { int n ; cin >> n ; double