矩阵分解

PCA算法

丶灬走出姿态 提交于 2019-11-28 04:04:48
作者:桂。 时间:2017-02-26 19:54:26 链接: http://www.cnblogs.com/xingshansi/articles/6445625.html 前言 本文为模式识别系列第一篇,主要介绍主成分分析算法(Principal Component Analysis,PCA)的理论,并附上相关代码。全文主要分六个部分展开:   1)简单示例。通过简单的例子,引出PCA算法;   2)理论推导。主要介绍PCA算法的理论推导以及对应的数学含义;   3)算法步骤。主要介绍PCA算法的算法流程;   4)应用实例。针对PCA的实际应用,列出两个应用实例;   5)常见问题补充。对于数据预处理过程中常遇到的问题进行补充;   6)扩展阅读。简要介绍PCA的不足,并给出K-L变换、Kernel-PCA(KPCA)的相关链接。 本文为个人总结,内容多有不当之处,麻烦各位批评指正。 一、简单示例    A-示例1:降维 先来看一组学生的成绩 学生1 学生2 学生3 学生4 ... 学生N 语文成绩 85 85 85 85 ... 85 数学成绩 96 93 78 64 ... 97 为了方便分析,我们假设N=5; 学生1 学生2 学生3 学生4 学生5 语文成绩 85 85 85 85 85 数学成绩 96 93 78 64 97 问题:

召回:矩阵分解

心不动则不痛 提交于 2019-11-28 03:45:28
(1)SVD(Singular value decomposition):奇异值分解,矩阵分解的算法之一。 在数据分析中的输入矩阵A一般是非奇异矩阵,而使用SVD可将A分解成一个对角阵B,形式如下: A = P B Q 这里的B是不带有隐特征的,但由于SVD计算量太大,一般都用MF模型 (2)MF(Matrix Factorization):也是一种矩阵分解。形式如下: A = (P的转置)Q 隐特征在P和Q之内 (3)FM(Factorization Machine): FM模型是用于推荐系统的一种新提出来的推荐模型,用于预测用户对某个该用户没有选择过的项目的评分,依据评分的高低针对用户进行推荐。FM模型也是一种有监督的学习过程,也就是说要有训练集,通过训练集的数据进行参数训练来得到模拟推荐的模型的最优。 隐特征在(Vi,Vj)中 来源: https://blog.csdn.net/woshiliulei0/article/details/99978276

特征值和特征向量

自古美人都是妖i 提交于 2019-11-28 00:24:57
设A是n阶方阵,若存在n维非零向量x,使得: 那么就称λ是A的特征值,x为A属于λ的特征向量,一个矩阵的一组特征向量是一组正交向量。 特征值分解 是将一个矩阵分解成下面的形式: 其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。 首先要明确的是一个矩阵其实就是一个线性变换,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。比如说下面这个矩阵: 这个矩阵对应的线性变换为: 由于上面这个矩阵式对称的,所以变换是一个对x,y轴的方向一个拉伸变换(每一个对角线上的元素将会对一个维度进行拉伸变换,当值>1时,是拉长,当值<1时时缩短),当矩阵不是对称的时候,假如说矩阵是下面的样子: 那么变换是: 其实就是在平面上对一个轴进行拉伸变换,蓝色的箭头是最主要的一个方向(变化的方向可能不止一个),如果想要描述好一个变换,那就描述这个主要的变化方向就好了。 特征值分解的式子里分解得到的对角阵,里面的特征值是从大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。 当矩阵式高维时候,这个矩阵就是高维空间下的一个线性变换,这个变换同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变换方向。我们利用这N个变换方向,就可以近似这个矩阵变换。也就是说的

抗几何攻击数字水印分类总结

浪子不回头ぞ 提交于 2019-11-27 23:24:33
1利用矩阵转换不变的特性。 最经典的是SVD(奇异值分解),生成的矩阵相互转换。在使用的过程中,能够抵抗几何攻击。但早期的SVD数字水印算法出现虚警率的问题。 2扩频模式 这个是经典的实现算法,模拟信道传输,需要DSP方面的技术,这方面我很缺乏,就不细讲了。 3同步检测 canny边缘检测是经典的方法,特别对于旋转攻击,检测到角点,计算出偏移的角度,实现旋转纠正。 4 特征点提取。经典的是SIFT算法,但时间复杂度高,SURF就继承过来,并且时间复杂度得到改善。在结合一些数学工具的改进,能使图像获得更多的特征点。我现在正在研究,希望能有所收获,发篇好的论文,求祝福。 来源: CSDN 作者: 杨宝涛 链接: https://blog.csdn.net/zhongriqianqian2076/article/details/51996664

Python数据分析-Numpy

放肆的年华 提交于 2019-11-27 15:19:47
Numpy特点 Numpy作为使用Python进行科学计算的常用库,有着如下特点: 提供了N维数组(矩阵),快速高效,矢量数学运算; 高效的Index,不需要循环,因为底层实现采用了C语言开发。 常见的数组和矩阵的方法 数组和矩阵的创建与维度信息 numpy.array() ## 数组的创建 vector = numpy.array([1,2,3,4]) ## 矩阵的创建 matrix = numpy.array([ [1,2,3], [4,5,6], [7,8,9] ]) shape ## 打印数组的维度信息 vector.shape() ——》(4,) # 数组中存在4个元素 ## 打印矩阵的维度信息 matrix.shape()——》(3,3) #三行三列 reshape eg: a = np.arange(15).reshape(3, 5) #随机创建3行5列的矩阵 Out: [[ 0 1 2 3 4] [ 5 6 7 8 9] [10 11 12 13 14]] a.ndim # 返回其维数 即 2 注意: reshape可以创建一个改变了尺寸的新数组,但是原始数组的shape是不会发生变化的。 reshape(-1) :数组新的shape属性应该要与原来的配套,如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值。 eg: z = np

无监督学习——降维

亡梦爱人 提交于 2019-11-27 11:12:37
降维算法应用:数据压缩、数据可视化。 主成分分析 ( PCA ) 是最常见的降维算法。 在 PCA 中,我们要做的是找到一个方向向量( Vector direction ), 当我们把所有的数据 都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点 的向量,而投射误差是从特征向量向该方向向量作垂线的长度。 PCA算法推导 关于PCA算法推导我觉得还是挺复杂的。之前在做数模比赛时,经常用到PCA算法, 但是都是拿来直接套用解决实际问题,根本没有仔细思考原理推导。 这里总结一下PCA算法原理推导中用到的两个重要原理: 特征值分解矩阵和SVD分解矩阵。 1. 特征值分解矩阵原理 (1) 特征值与特征向量 如果一个向量v是矩阵A的特征向量,将一定可以表示成下面的形式: 其中,λ是特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。 (2) 特征值分解矩阵 对于矩阵A,有一组特征向量v,将这组向量进行正交化单位化,就能得到一组正交单位向量。 特征值分解 ,就是将矩阵A分解为如下式: 其中,Q是矩阵A的特征向量组成的矩阵, 则是一个对角阵,对角线上的元素就是特征值。 2. SVD分解矩阵原理 奇异值分解是一个能适用于任意矩阵的一种分解的方法,对于任意矩阵A总是存在一个奇异值分解: 假设A是一个m*n的矩阵,那么得到的U是一个m*m的方阵

动态规划

两盒软妹~` 提交于 2019-11-27 05:45:25
动态规划 算法总体思想 动态规划算法与分治法类似,其基本思想也是将 待求解问题分解成若干个子问题 。 但是经分解得到的 子问题往往不是互相独立 的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。 如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。 动态规划基本步骤: (1)找出最优解的性质,并刻划其结构特征。 (2)递归地定义最优值。 (3)以自底向上的方式计算出最优值。 (4)根据计算最优值时得到的信息,构造最优解。 实例一、完全加括号的矩阵连乘积 问题可递归定义: (1)单个矩阵是完全加括号的; (2)矩阵连乘积A是完全加括号的 ,则A可表示为2个完全加括号的矩阵连乘积B和C的乘积并加括号,即 A = (BC)。 设有四个矩阵A,B,C,D它们的维数分别是: A = 50*10 , B = 10*40 , C = 40*30 , D = 30*5 总共有五中完全加括号的方式: 例如:((A(BC))D): 10 * 40 * 30 + 10 * 30 * 50 + 50 * 30 * 5 = 34500 给定矩阵{A1, A2, A3,..., An},其中Ai与A(i+1)是可乘的。i = 1,2,3, ..., n - 1。考察这n个矩阵的连乘积A1*A2*A3...An.

10种传统机器学习算法

不羁岁月 提交于 2019-11-26 22:30:54
1基于CF的推荐算法 1.1算法简介 CF(协同过滤)简单来形容就是利用兴趣相投的原理进行推荐,协同过滤主要分两类,一类是基于物品的协同过滤算法,另一种是基于用户的协同过滤算法,这里主要介绍基于物品的协同过滤算法。 给定一批用户,及一批物品,记Vi表示不同用户对物品的评分向量,那么物品i与物品j的相关性为: 上述公式是利用余弦公式计算相关系数,相关系数的计算还有:杰卡德相关系数、皮尔逊相关系数等。 计算用户u对某一物品的偏好,记用户u对物品i的评分为score(u,i),用户u对物品i的协同过滤得分为rec(u,j)。 1.2业务实践 以购物篮子为例,业务问题:根据用户的历史购买商品记录,给用户推荐一批商品,协同过滤算法实现方法如下。 记buyers表示用户购买商品的向量,记为 其中表示全库用户集合,表示用户对商品的得分,定义如下: Step1:计算物品之间的相关系数 记buyersi表示用户购买商品的向量,记buyersi=(…,bu,i,…) u∈U为,其中U表示全库用户集合,bu,i表示用户u对商品i的得分,定义如下: 那么商品i与商品j的相关系数如下: 上述公式是是利用余弦公式计算相关性,含义是商品的用户购买向量夹角越小越相似。此外也可以运用皮尔逊、杰卡德、自定义公式计算相关性,这里不一一列举。 Step2:计算用户对商品的协同过滤得分 给定一个用户u

“猜你喜欢”实现策略?

萝らか妹 提交于 2019-11-26 22:16:28
有没有想过自己在亚马逊眼中你是什么样子?答案是:你是一个很大、很大的表格里一串很长的数字。这串数字描述了你所看过的每一样东西,你点击的每一个链接以 及你在亚马逊网站上买的每一件商品;表格里的其余部分则代表了其他数百万到亚马逊购物的人。你每次登陆网站,你的数字就会发生改变;在此期间,你在网站上 每动一下,这个数字就会跟着改变。这个信息又会反过来影响你在访问的每个页面上会看到什么,还有你会从亚马逊公司收到什么邮件和优惠信息。 许 多年来,推荐系统的开发者试过用各种各样的方法来采集和解析所有这些数据。最近这段时间,多数人都选择使用被称为个性化协同推荐 (Personalized Collaborative Recommender)的算法。这也是亚马逊、Netflix、Facebook 的好友推荐,以及一家英国流行音乐网站 Last.fm 的核心算法。说它 “个性化”,是因为这种算法会追踪用户的每一个行为(如浏览过的页面、订单记录和商品评分),以此进行推荐;它们可不是瞎猫碰上死耗子——全凭运气。说它 “协同”,则是因为这种算法会根据许多其他的顾客也购买了这些商品或者对其显示出好感,而将两样物品视为彼此关联,它不是通过分析商品特征或者关键词来进 行判断的。 不同类型的个性化协同推荐系统最晚从 1992 年开始便已经出现。除了 GroupLens 计划,另一项早期的推荐系统是 MIT 的

大话数据结构读书笔记系列(七)图

妖精的绣舞 提交于 2019-11-26 11:58:43
7.1 开场白 旅游几乎是每个年轻人的爱好,但没有钱或没时间也是困惑年轻人不能圆梦的直接原因。如果可以用最少的资金和最少的时间周游中国甚至是世界一定是非常棒的。假设你已经有了一笔不算很丰裕的闲钱,也有了约半年的时间。此时打算全国性的旅游,你将会如何安排这次行程呢? 我们假设旅游就是逐个省市进行,省市内的风景区不去细分,例如北京玩7天,天津玩3天,四川玩20天这样子。你现在需要做的就是制订一个规划方案,如何才能用最少的成本将图7-1-1中的所有省市都玩遍,这里所谓最少的成本是指交通成本与时间成本。 如果你不善于规划,很有可能就会出现如玩好新疆后到海南,然后再冲向黑龙江这样的荒唐决策。但是即使是紧挨着省市游完的方案也会存在很复杂的选择问题,比如游完湖北,周边有安徽,江西,湖南,重庆,陕西,河南等省市,你下一步怎么走最划算呢? 你一时解答不了这些问题是很正常的,计算的工作本来就非人脑应该是电脑去做的事情。我们今天要开始学习最有意思的一种数据结构--图。在图的应用中,就有相应的算法来解决这样的问题。学完这一章,即便不能马上获得最终答案,你也大概知道应该如何去做了。 7.2 图的定义 在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关