矩阵分解

R语言常用函数

元气小坏坏 提交于 2020-02-11 09:42:11
数据结构 一、数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框 c:连接为向量或列表 length:求长度 subset:求子集 seq,from:to,sequence:等差序列 rep:重复 NA:缺失值 NULL:空对象 sort,order,unique,rev:排序 unlist:展平列表 attr,attributes:对象属性 mode,typeof:对象存储模式与类型 names:对象的名字属性 二、字符串处理 character:字符型向量 nchar:字符数 substr:取子串 format,format C:把对象用格式转换为字符串 paste,strsplit:连接或拆分 charmatch,pmatch:字符串匹配 grep,sub,gsub:模式匹配与替换 三、复数 complex,Re,Im,Mod,Arg,Conj:复数函数 四、因子 factor:因子 codes:因子的编码 levels:因子的各水平的名字 nlevels:因子的水平个数 cut:把数值型对象分区间转换为因子 table:交叉频数表 split:按因子分组 aggregate:计算各数据子集的概括统计量 tapply:对“不规则”数组应用函数 数学相关计算 一、计算

“猜你喜欢”实现策略?

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

数据降维方法小结

帅比萌擦擦* 提交于 2020-02-10 08:40:01
原文:http://blog.csdn.net/yujianmin1990/article/details/48223001  数据的形式是多种多样的,维度也是各不相同的,当实际问题中遇到很高的维度时,如何给他降到较低的维度上?前文提到进行属性选择,当然这是一种很好的方法,这里另外提供一种 从高维特征空间向低纬特征空间映射 的思路。 数据降维的目的   数据降维,直观地好处是维度降低了,便于计算和可视化,其 更深层次的意义在于有效信息的提取综合及无用信息的摈弃 。 数据降维的方法   主要的方法是线性映射和非线性映射方法两大类。 线性映射    线性映射方法的代表方法有:PCA(Principal Component Analysis),LDA(Discriminant Analysis) PCA方法简介   主成分分析的 思想 ,就是线性代数里面的K-L变换,就是 在均方误差准则下失真最小的一种变换 。是将原空间变换到特征向量空间内,数学表示为 A x = λ x 。   特征向量和特征值的意义:分别表示不同频率及其幅度。    特征向量和特征值的直白理解: 想在特征空间内找到某个向量 x ,使得其满足 A x = λ x 。这个式子可以这样理解, A 是空间内的运动, x 经过运动 A 后,保持方向不变(仍是 x 的方向),只是大小伸缩了 λ 倍。这样我们找到了 k

数论初步

泪湿孤枕 提交于 2020-02-09 12:39:08
PS:以下部分定理没有证明,如果有读者想要了解定理的具体证明,请自行百度,本文限于篇幅 (只是因为笔者自己不会) ,对部分定理的证明不作讨论。 本文讲啥 本文主要讲的是ACM中的数论基础内容 (以后可能会再写一篇ACM的数论进阶内容) ,侧重应用,证明都是瞎证的,严谨的证明请观众姥爷自行百度 线性筛筛素数 埃氏筛 埃氏筛用每个素数来筛掉它的倍数,剩下的就是素数,时间复杂度是 \(O(nloglogn)\) 为啥能正确地筛? 每一个合数,都可以被质因数分解,且根据 唯一分解定理 ,这个分解是唯一的,所以只要拿每个素数把它的倍数都筛掉,就能所有合数筛掉 板子 bool check[maxn]; std::vector<ll> prime; for (ll i = 2; i <= n; ++i) if (!check[i]) { prime.push_back(i); for (ll j = i * i; j <= n; j += i) check[j] = 1; } 为啥 \(j\) 从 \(i^2\) 开始? 上面的板子中第二层循环就是用素数筛掉它的倍数的过程, \(j\) 从 \(2i\) 开始循环,那为什么板子里是从 \(i^2\) 开始呢?实际上,这是一个小小的优化,因为在用素数 \(i\) 来筛它的倍数时,区间 \([2, i-1]\) 中的所有素数已经将它的倍数都筛过了

矩阵快速幂

会有一股神秘感。 提交于 2020-02-07 18:13:49
这周学习了矩阵快速幂,就在这里记录下我的一下理解吧。 要学习矩阵快速幂,首先得先知道“矩阵”和“快速幂”的写法。 先说快速幂 顾名思义,快速幂就是快速算底数的n次幂。其时间复杂度为O(log₂N),与朴素的O(N)相比效率有了极大的提高。 ——百度百科 以NOIP2013的麦森数为例题,讲一下快速幂 从文件中输入P(1000<P<3100000),计算2^P-1的位数和最后500位数字(用十进制高精度数表示) 本题显然要使用高精度运算。对2^P-1位数可以用公式log10(2^P-1)+1来求。因为2^P最后一位不可能为0,所以原式可化简为log10(2^P)+1=P*log10(2)+1。于是就能快速得到麦森数的位数了。 我们主要看求最后500位的运算。这显然要用到高精度。但是使用普通的高精度运算,时间复杂度就为P*500^2=2500P。对于最大的P=3100000,显然超时。那有没有更快的算法呢? 这就要牵扯到二进制了,二进制一直是很神奇的一个东西。 以十进制数5举例子,5的二进制为101,这可以通过取模然后反过来得到。看一下101是怎样表示5的。 二进制逢二进一。所以十位上的数就表示这个数有几个2,这就像十进制的十位表示这个数有几个10一样。所以像十进制一样往上推,百位上的数就表示这个数有几个2^2,千位上的数就表示这个数有几个2^3……那么根据这样,就可以看出,101=1

模型,视图,投影,平移,旋转,缩放六大矩阵

蹲街弑〆低调 提交于 2020-02-06 20:07:14
模型矩阵ModelMatrix 在Unity中,每一个GameObject上面都会有一个Transform,用来记录这个Object的position,rotation和scale. 这可以用另外三个矩阵表示。 视图矩阵ViewMatrix 视图矩阵用来将物体从世界坐标系转变为摄像机坐标系。 投影矩阵ProjectionMatrix 投影矩阵用来将物体从摄像机坐标系转变为屏幕坐标系。 --------------- 以上三个变换矩阵,取首字母就是mvpmatrix。这些矩阵实际计算每个需要再分解为3个矩阵,即平移,旋转,缩放。 其中旋转矩阵是正交矩阵。The orthogonal matrix,如果一个矩阵满足以下几个条件,则此矩阵就是正交矩阵: (1)是一个方阵 (2)转置矩阵等于逆矩阵 如果A为一个正交矩阵,则A满足以下条件: A的各行是单位向量且两两正交 A的各列是单位向量且两两正交 参考 https://blog.csdn.net/silangquan/article/details/50987196 https://blog.csdn.net/silangquan/article/details/50984641 https://blog.csdn.net/charlee44/article/details/102063461 http://www.opengl

NMF人脸数据特征提取

点点圈 提交于 2020-02-06 01:22:43
非负矩阵分解(NMF) 非负矩阵分解是在矩阵中所有元素均为非负数约束条件之下的矩阵分解方法。 基本思想:给定一个非负矩阵V,NMF能够找到一个非负矩阵W和一个非负矩阵H,使得矩阵W和H的乘积近似等于矩阵V中的值。 非负矩阵分解(NMF) W矩阵:基础图像矩阵,相当于从原矩阵V中提取的特征。 矩阵:系数矩阵。 NMF能够广泛应用于图像分析、文本挖掘和语音处理等领域。 矩阵分解优化目标:最小化W矩阵H矩阵的乘积和原始矩阵之间的差别。 import matplotlib . pyplot as plt from sklearn import decomposition #加载PCA算法包 from sklearn . datasets import fetch_olivetti_faces #加载人脸数据集 from numpy . random import RandomState #加载RandomState用于创建随机种子 n_row , n_col = 2 , 3 #设置图像展示时的排列情况,2行三列 n_components = n_row = n_col #设置提取的特征的数目 image_shape = ( 64 , 64 ) #设置人脸数据图片的大小 dataset = fetch_olivetti_faces ( shuffle = True , random

WebGL多模型光照综合实例

假如想象 提交于 2020-02-05 04:36:43
原文地址: WebGL多模型光照综合实例 WebGL是一个非常的接近硬件底层的光栅化API, 从非常类似C/C++风格的API调用方式就可以看出来, 习惯了高级语言的我们会觉得很不友好,觉得特别繁琐. 这个也是很多人觉得WebGL难的原因之一. 如果我们要使用WebGL做一些项目,毫无疑问要么使用Three.js之类的3D库, 要么需要对原生的API进行封装. 这段时间查看了一些WebGL工具库的源代码, 参考封装出了一个简单的工具库,这样往后用WebGL做小项目就方便多了. 经过前面章节的学习, WebGL的知识点掌握的差不多了, 终于到了做特效和Demo的阶段了,来看一下这节实现的特效: WebGL多物体多光源场景 内容大纲 实现图形绕坐标原点旋转, 同时给所有的物体增加环境光, 漫反射, 高光. 其中旋转功能使用矩阵复合变换实现; 光照部分比较复杂,实现了多个光源照射. 着色器 模型变换 着色器 顶点着色器 代码很简单,逐顶点传入坐标,法向量矩阵,模型矩阵,mvp矩阵. attribute vec4 a_position; attribute vec4 a_normal; uniform mat4 u_modelMatrix; uniform mat4 u_normalMatrix; uniform mat4 u_mvpMatrix; varying vec3 v

【深度学习基础】从零开始的炼丹生活07——深度模型中的优化

喜夏-厌秋 提交于 2020-02-04 07:09:35
往期回顾: 04——从传统机器学习走向深度学习 05——深度前馈网络、神经网络概述 06——深度学习中的正则化 介绍了神经网络的基本构件和正则化策略之后,学习一下深度模型中的优化。先说一说传统的纯优化与机器学习中的优化的异同,再介绍一下神经网络中优化的挑战,最后说说基本的优化算法。(参考《深度学习》第8章) 一、机器学习中的优化 传统的优化方法是纯优化最小化目标 J 本身,而机器学习的优化是间接作用的。在机器学习问题中,我们关注某些性能度量 P ,其定义于测试集上并且是不可解的。因此机器学习希望通过降低代价函数 J(θ)来间接提高 P 。 1. 经验风险最小化 机器学习算法的目标是降低期望泛化误差 J ∗ ( θ ) = E ( x , y ) ∼ p d a t a L ( f ( x ; θ ) , y ) J^*(\theta)=\mathbb E_{(\bold {x,y})\sim p_{data}}L(f(x;\theta),y) J ∗ ( θ ) = E ( x , y ) ∼ p d a t a ​ ​ L ( f ( x ; θ ) , y ) 这被称为 风险 。此时数据取自真实的潜在分布,然而,我们遇到的问题通常并不清楚真实分布,只知道训练集中的样本。 我们将机器学习中的优化转换回一个优化问题的最简单方法就是最小化训练集上的期望损失,以训练集上的经验分布 p

17-正交矩阵和Gram-Schmidt正交化

橙三吉。 提交于 2020-02-02 19:27:41
一、正交矩阵  定义:Orthogonal Matrix (必为方阵) 如果$A^TA=AA^T=I$,则$n$阶实矩阵$A$称为正交矩阵  性质:   1)$A^T$是正交矩阵   2)$A$的各行是单位向量且两两正交   3)$A$的各列是单位向量且两两正交   4)|A|=1或-1   举例: 二、标准正交矩阵的优势   1)求解投影矩阵    在 投影矩阵章节 我们已经知道投影矩阵为: $P=A\left(A^{T} A\right)^{-1} A^{T}$   当矩阵A为标准正交矩阵Q时 ,由于正交矩阵与其转置的乘积为单位矩阵,则上式可以转化为: $P=QQ^{T}$   这样就将投影矩阵简单化了。   2)求解$Ax=b$    在 投影矩阵章节 我们已经知道: $\hat{x}=\left(A^{T} A\right)^{-1} A^{T} b$    当矩阵A为标准正交矩阵Q时 ,由于正交矩阵与其转置的乘积为单位矩阵,则上式可以转化为: $\hat{x}=Q^{T} b$ 三、Gram-Schmidt正交化   1) 二维情况    假设原来的矩阵为[a,b],a,b为 线性无关的二维向量 ,下面我们通过Gram-Schmidt正交化获得 标准正交矩阵   假设正交化后的矩阵为Q=[A,B],我们可以令$A=a$,$B$垂直于$A$,根据我们 在 前面所讲的投影