矩阵分解

word2vec预训练词向量

守給你的承諾、 提交于 2019-11-30 23:06:41
NLP中的Word2Vec讲解   word2vec是Google开源的一款用于词向量计算 的工具,可以很好的度量词与词之间的相似性;   word2vec建模是指用 CBoW模型 或 Skip-gram模型 来计算不同 词语的向量(word vector)    CBoW是给定上下文来预测输入词、Skip-gram给定输入词预测上下文,但最终都会得到词向量矩阵W 上图为词向量的部分可视化结构 Statistical Language Model (统计语言模型)    在深入word2vec之前,首先回顾下nlp中的一个基本问题: 如何计算一段文本序列在某种语言下出现的概率?(Ngram) 统计语言模型给出了这一类问题的一个基本解决框架。对于一段文本序列: 它的概率可表示为: 即将序列的联合概率转化为一系列条件概率的乘积。问题变成了如何去预测这些给定previous words下的条件概率:                          由于其巨大的参数空间,这样一个原始的模型在实际中并没有什么用。我们更多的是采用其简化版本——Ngram模型:   常见的如bigram模型(N=2)和tirgram模型(N=3)。事实上,由于模型复杂度和预测精度的限制,我们很少会考虑N>3的模型。我们可以用最大似然法去求解Ngram模型的参数——等价于去统计每个Ngram的条件词频

浅析卡尔曼滤波算法

泪湿孤枕 提交于 2019-11-30 22:56:29
一个算法并不是能适用于任何场景,在使用线性卡尔曼滤波器前,它有两个假设限定了它的应用场景,即: 系统是线性的 系统和测量噪声是高斯白噪声 什么是高斯白噪声?即噪声满足正态分布,表述如下: 高斯白噪声在时间尺度上是互不相关的,即上一时刻的噪声状态并不能决定下一时刻的噪声状态; 噪声在所有频率上具有相等的功率,即功率谱密度服从均匀分布; 4. 分析过程 4.1 基本方程 先直接扔出卡尔曼滤波的经典5个方程(来自于参考文献): 预测(估计)状态方程 更新方程 以上5个方程以矩阵运算形式代表了线性卡尔曼滤波算法的一般形式(不同文献的数学表达方式略有不同)。第一眼看到这几个方程里面的F、K、H之类的变量以及符号肯定是蒙圈的,即使了解了符号代表的意义,在实际过程中怎么使用可能也不是很清楚。 ### 4.2 方程的解释 【注:此节不会完整的再验算一次推导过程,因为篇幅有限,我只能根据我的理解,解释捋清推导过程的一个基本脉络,并解释参考文献中稍微有点绕的地方】 上述算法的一般方程来自于参考文献3,文中以获取机器人的位置和速度这两个变量为例,推导出了(二维)矩阵形式的一般方程,所以结合案例,总结一下方程中各变量符合所代表的意义。 #### 4.2.1 预测(估计)状态方程 【注:以下表述中“预测”和“估计”表示一个意思】 预测状态方程是依据被测对象的数据模型建立的,如例子中所示

CTR预估模型——FM、FFM、DeepFM

北战南征 提交于 2019-11-30 21:05:40
一、CTR(Click Through Rate,点击率)   点击率(click-through rate, CTR) 是点击特定链接的用户与查看页面,电子邮件或广告的总用户数量之比。它通常用于衡量某个网站的在线广告活动是否成功,以及电子邮件活动的有效性,是互联网公司进行流量分配的核心依据之一。   无论使用什么类型的模型,点击率这个命题可以被归纳到二元分类的问题,我们通过单个个体的特征,计算出对于某个内容,是否点击了,点击了就是1,没点击就是0。对于任何二元分类的问题,最后我们都可以归结到逻辑回归上面。 早期的人工特征工程 + LR(Logistic Regression):这个方式需要大量的人工处理,不仅需要对业务和行业有所了解,对于算法的经验要求也十分的高。 GBDT(Gradient Boosting Decision Tree) + LR:提升树短时这方面的第二个里程碑,虽然也需要大量的人工处理,但是由于其的可解释性和提升树对于假例的权重提升,使得计算准确度有了很大的提高。 FM-FFM:FM和FFM模型是最近几年提出的模型,并且在近年来表现突出,分别在由Criteo和Avazu举办的CTR预测竞赛中夺得冠军,使得到目前为止,还都是以此为主的主要模型占据主导位置。 Embedding模型可以理解为FFM的一个变体。   CTR预估技术从传统的Logistic回归

排序推荐算法小结

随声附和 提交于 2019-11-30 19:34:04
原文链接:https://www.jianshu.com/p/ba1936ee0b69      https://www.cnblogs.com/pinard/p/9128682.html 排序推荐算法大体上可以分为三类,第一类排序算法类别是点对方法(Pointwise Approach),这类算法将排序问题被转化为分类、回归之类的问题,并使用现有分类、回归等方法进行实现。第二类排序算法是成对方法(Pairwise Approach),在序列方法中,排序被转化为对序列分类或对序列回归。所谓的pair就是成对的排序,比如(a,b)一组表明a比b排的靠前。第三类排序算法是列表方法(Listwise Approach),它采用更加直接的方法对排序问题进行了处理。它在学习和预测过程中都将排序列表作为一个样本。排序的组结构被保持。 之前我们介绍的算法大都是Pointwise的方法,今天我们来介绍一种Pairwise的方法:贝叶斯个性化排序(Bayesian Personalized Ranking, 以下简称BPR) 1.BPR算法简介 1.1基本思路 在BPR算法中,我们将任意用户u对应的物品进行标记,如果用户u在同时有物品i和j的时候点击了i,那么我们就得到了一个三元组<u,i,j>,它表示对用户u来说,i的排序要比j靠前。如果对于用户u来说我们有m组这样的反馈

《python数据分析和数据挖掘》——数据预处理

心不动则不痛 提交于 2019-11-30 18:25:18
此文为《python数据分析和数据挖掘》的读书笔记 通俗讲,经过我们前期的数据分析,得到了数据的缺陷,那么我们现在要做的就是去对数据进行预处理,可包括四个部分:数据清洗、数据集成、数据变换、数据规约。 处理过程如图所示: 1、数据清洗 1) 缺失值处理: 删除记录、数据插补、不处理。不处理吧总感觉不自在,删除了吧数据又有点舍不得,所以一般插补方法用的比较多,该文重点介绍Lagrange插补法和牛顿插补法,并介绍代码。 偷点懒他的详细过程我截图好了。 a 拉格朗日插补法 b 牛顿插补法 但是由于python中的Scipy库中提供了Lagrange插值法的函数,实现上更为容易,应用较多。而牛顿插值法则需要根据自行编写。需要指出两者给出的结果是相同的(相同次数、相同系数的多项式),不过表现的形式不同而已。 二话不说贴上亲测的python代码: import pandas as pd from scipy.interpolate import lagrange#导入拉格朗日函数 import sys sys.__stdout__=sys.stdout inputfile='catering_sale.xls'#销售数据途径 outputfile='tmp/sales.xls'#输出数据途径 data=pd.read_excel(inputfile,Index_col=u'日期')#读入数据

LDA

北战南征 提交于 2019-11-30 16:17:35
    在 主成分分析(PCA)原理总结 中,我们对降维算法PCA做了总结。这里我们就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)做一个总结。LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用,因此我们有必要了解下它的算法原理。     在学习LDA之前,有必要将其自然语言处理领域的LDA区别开来,在自然语言处理领域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),他是一种处理文档的主题模型。我们本文只讨论线性判别分析,因此后面所有的LDA均指线性判别分析。 1. LDA的思想     LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。什么意思呢? 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。     可能还是有点抽象,我们先看看最简单的情况。假设我们有两类数据 分别为红色和蓝色,如下图所示,这些数据特征是二维的,我们希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近

【机器学习】PCA

半腔热情 提交于 2019-11-30 13:35:14
目录 PCA 1. PCA最大可分性的思想 2. 基变换(线性变换) 3. 方差 4. 协方差 5. 协方差矩阵 6. 协方差矩阵对角化 7. PCA算法流程 8. PCA算法总结 PCA PCA 就是找出数据最主要的方面,用数据里最主要的方面来代替原始数据。 PCA 是最重要的降维方法之一,在数据压缩、消除冗余和数据噪音消除等领域都有广泛的应用。 1. PCA最大可分性的思想 ​ 最大可分性: 样本点在超平面上的投影尽可能的分开 2. 基变换(线性变换) ​ 欲获得原始数据新的表示空间,最简单方法是对原始数据进行基变换(线性变换)。 3. 方差 ​ 如何选择一个方向或者基才是最优的?基于PCA最大可分思想,我们要找的方向是 降维后损失最小 ,可以理解为 投影后的数据尽可能分得开 ,而分散程度可以用数学上的方差来表示,因为 方差越大数据也就越分散 。 4. 协方差 ​ 在高维变换中,我们希望基变换后选择的各个方向(或者基)是不相关的,这样才能表示更多的信息。数学上使用协方差表示相关性: \[ Cov(a,b) = \frac{1}{m} \sum_{i=1}^{m}a_ib_i \] 如果 \(Cov(a,b)=0\) ,则表示两个字段完全独立,这也是我们的 优化目标 。 5. 协方差矩阵 ​ 我们想达到的 目标( \(Cov(a,b)=0\) ) 与 字段内方差 及 字段间协方差

正定矩阵、负定矩阵、半正定矩阵、半负定矩阵

一个人想着一个人 提交于 2019-11-30 13:13:45
正定矩阵、负定矩阵、半正定矩阵、半负定矩阵 载 ▼ 1.正定矩阵 一个 n × n 的实 对称矩阵 M 是 正定 的, 当且仅当 对于所有的非零实系数 向量 z ,都有 z T M z > 0 。其中 z T 表示 z 的 转置 。 2.负定矩阵 与正定矩阵相对应的,一个 n × n 的埃尔米特矩阵 是 负定矩阵 当且仅当对所有不为零的 (或 ),都有: 3. 半正定矩阵 是 半正定矩阵 当且仅当对所有不为零的 (或 ),都有: 4. 半负定矩阵 是 半负定矩阵 当且仅当对所有不为零的 (或 ),都有: 正定阵的判别 [ 编辑 ] 对 n × n 的 埃尔米特矩阵 M ,下列性质与“ M 为正定矩阵”等价: 1. 矩阵 的所有的 特征值 都是正的。根据 谱定理 , M 必然与一个实 对角矩阵 D 相似 (也就是说 ,其中 P 是 幺正矩阵 ,或者说 M 在某 个 正交基 可以表示为一个实 对角矩阵 )。因此, M 是正定阵当且仅当相应的 D 的对角线上元素都是正的。 2. 半双线性形式 定义了一个 C n 上的 内积 。实际上,所有 C n 上的内积都可看做由某个正定阵通过此种方式得到。 3. M 是 n 个线性无关的 k 维向量 的 Gram矩阵 ,其中的 k 为某个正整数。更精确地说, M 定义为: 换句话说, M 具有 的形式,其中 A 不一定是方阵,但需要是单射的。 4.

一个C++的矩阵运算库

99封情书 提交于 2019-11-30 13:12:46
Armadillo:C++下的Matlab替代品 Eigen3:强大且只需头文件 OpenCV:方便的计算机视觉计算库 ViennaCL:并行矩阵计算 PETSc:大规模并行科学计算 其他的矩阵计算库和资料 最近在几个地方都看到有人问C++下用什么矩阵运算库比较好,顺便做了个调查,做一些相关的推荐吧。主要针对稠密矩阵,有时间会再写一个稀疏矩阵的推荐。欢迎关注我的独立博客: http://cvnote.info/ 。另外新开了个新浪微博@cvnote求关注!啊!!! Armadillo:C++下的Matlab替代品 地址: http://arma.sourceforge.net/ 许可证:MPL 2.0 目前使用比较广的C++矩阵运算库之一,是在C++下使用Matlab方式操作矩阵很好的选择,许多Matlab的矩阵操作函数都可以找到对应,这对习惯了Matlab的人来说实在是非常方便,另外如果要将Matlab下做研究的代码改写成C++,使用Armadillo也会很方便,这里有一个简易的Matlab到Armadillo的语法转换。下面列了一些Armadillo的特性: 支持整数,浮点数,和复数矩阵。 支持矩阵逐元素操作,包括abs · conj · conv_to · eps · imag/real · misc functions (exp, log, pow, sqrt, round

SVD(奇异值分解)记录

对着背影说爱祢 提交于 2019-11-30 11:59:57
转载自 https://www.cnblogs.com/endlesscoding/p/10033527.html 奇异值分解在数据降维中有较多的应用,这里把它的原理简单总结一下,并且举一个图片压缩的例子,最后做一个简单的分析,希望能够给大家带来帮助。 1、特征值分解(EVD) 实对称矩阵 在理角奇异值分解之前,需要先回顾一下特征值分解,如果矩阵A是一个m×m的 实对称矩阵 (即 ),那么它可以被分解成如下的形式: 其中Q为标准正交阵,即有 ,Σ为对角矩阵,且上面的矩阵的维度均为m×m。λi称为 特征值 ,qi是Q(特征矩阵)中的列向量,称为 特征向量 。 一般矩阵 上面的特征值分解,对矩阵有着较高的要求,它需要被分解的矩阵A为实对称矩阵,但是现实中,我们所遇到的问题一般不是实对称矩阵。那么当我们碰到一般性的矩阵,即有一个m×n的矩阵A,它是否能被分解成上式的形式呢?当然是可以的,这就是我们下面要讨论的内容。 2、奇异值分解(SVD) 2.1 奇异值分解定义 有一个m×n的实数矩阵A,我们想要把它分解成如下的形式 其中U和V均为单位正交阵,即有 和 ,U称为 左奇异矩阵 ,V称为 右奇异矩阵 ,Σ仅在主对角线上有值,我们称它为 奇异值 ,其它元素均为0。上面矩阵的维度分别为 , , 。 一般地Σ有如下形式 对于奇异值分解,我们可以利用上面的图形象表示,图中方块的颜色表示值的大小