矩阵分解

Deep Learning(花书)教材笔记-Math and Machine Learning Basics(线性代数拾遗)

北慕城南 提交于 2020-04-03 14:05:47
I. Linear Algebra 1. 基础概念回顾 scalar : 标量 vector : 矢量,an array of numbers. matrix : 矩阵, 2-D array of numbers. tensor : 张量, 更高维的一组数据集合。 identity Matricx :单位矩阵 inverse Matrix :逆矩阵,也称 非奇异函数 。当矩阵A的行列式 \(|A|≠0\) 时,则存在 \(A^{-1}\) . 2. Span 3. Norm \(L^p\) norm 定义如右: \(||x||_p=(\sum_i|x_i|^p)^{\frac{1}{p}}\) for \(p∈R,p≥1\) . 任何满足如下条件的函数都可视为norm: \(f(x)=0 \, \Rightarrow x=0\) \(f(x+y)≤f(x)+f(y)\) (三角不等式) \(\forall α ∈R,f(αx)=|α|f(x)\) 1) \(L^2\) Norm 最常用的是二范式,即 \(L^2\) norm,也称为Euclidean norm(欧几里得范数)。因为在机器学习中常用到求导,二范式求导之后只与输入数据本身有关,所以比较实用。 2) \(L^1\) Norm 但是二范式在零点附近增长很慢,而且有的机器学习应用需要在零点和非零点之间进行区分

biasLFM分解推荐,java实现

旧街凉风 提交于 2020-04-02 23:05:48
BiasLFM(bias latent factor model)带偏置项的隐语义推荐模型,加入三个偏置项(所有评分的平均,用户偏置项表示用户的评分习惯和物品没关系, * 物品偏置项表示物品接受的评分中和用户没关系的因素)矩阵分解,训练得到U,I矩阵,以及用户偏置项和物品偏置项 * 对user-item评分矩阵进行分解为U、I矩阵,再利用随机梯度下降(函数值下降最快的方向)迭代求解出U,I矩阵,最后用U*I预测得出user对item的预测评分 * 这里U矩阵是user对每个隐因子的偏好程度,I矩阵是item在每个隐因子中的分布。 理论和python实现见 https://www.cnblogs.com/little-horse/p/12498045.html。 以下是java简单实现,完整程序 https://github.com/jiangnanboy/RecomSys/blob/master/src/main/java/com/sy/zhihai/model/BiasLFM.java ,数据来自 https://github.com/jiangnanboy/RecomSys/tree/master/src/main/resources。 import java.util.Map.Entry; import java.util.Scanner; import javolution

[数组]顺时针打印螺旋矩阵

僤鯓⒐⒋嵵緔 提交于 2020-03-31 05:03:46
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10。 分析:第一次看到这个题目的时候,觉得这个题目很简单,完全不需要用到数据结构或者算法的知识,因此没有兴趣做这道题。后来听到包括Autodesk、EMC在内的多家公司在面试或者笔试里采用过这道题,于是想这么多家公司用它来检验一个程序员的编程功底总是有原因的,于是决定自己写一遍试一下。真正写一遍才发现,要完整写出这道题的代码,还真不是件容易的事情。 解决这道题的难度在于代码中会包含很多个循环,而且还有多个边界条件需要判断。如果在把问题考虑得很清楚之前就开始写代码,不可避免地会越写越混乱。因此解决这个问题的关键,在于先要形成清晰的思路,并把复杂的问题分解成若干个简单的问题。下面分享我分析这个问题的过程。 通常当我们遇到一个复杂的问题的时候,我们可以用图形帮助我们思考。由于我们是以从外圈到内圈的顺序依次打印,我们在矩阵中标注一圈作为我们分析的目标。在下图中,我们设矩阵的宽度为columns,而其高度为rows。我们我们选取左上角坐标为(startX, startY),右下角坐标为(endX,

无监督学习与sklearn库

故事扮演 提交于 2020-03-30 22:40:19
一、无监督学习基础知识 利用无标签的数据学习数据的分布或数据与数据之间的关系被称作无监督学习 有监督学习和无监督学习的最大区别在于 数据是否有标签 无监督学习最常应用的场景是 聚类(Clustering) 和 降维(Dimension Reduction) 二、聚类 聚类是根据数据的“相似性”将数据分为多类的过程。评估两个不同样本之间的“相似性”,通常使用的方法就是计算两个样本之间的“距离”。使用不同的方法计算样本间的距离会关系到聚类结果的好坏 1、欧氏距离 欧氏距离是最常用的一种距离度量方法,源于欧式空间中两点的距离 2、曼哈顿距离 曼哈顿距离也称作“城市街区距离”,类似于在城市之中驾车行驶,从一个十字路口到另一个十字路口的距离 3、马氏距离 马氏距离表示数据的协方差距离,是一种尺度无关的度量方式。马氏距离会先将样本点的各个属性标准化,再计算样本间的距离 4、夹角余弦 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个样本差异的大小。余弦值越接近于1,说明两个向量夹角越接近0度,表明两个向量越相似 5、sklearn库 scikit-learn库(简称sklearn库)提供的常用聚类算法函数包含在sklearn.cluster这个模块中,如:k-means,近邻传播算法,DBSCAN等。以同样的数据集应用于不同的算法,可能会得到不同的结果,算法所耗费的时间也不尽相同

Matlab - 基础知识

烂漫一生 提交于 2020-03-30 02:11:55
Matlab R2016a完全自学一本通 记在前面: (1)函数中:dim=1 按列;dim=2 按行 (2)这本书很垃圾,不建议买。 (3)在数据库连接中,用两个单引号表示字符串,千万不能用双引号 第2章 Matlab基础知识 2.1 数据类型 数值,逻辑,字符串,函数句柄,结构体,单元数组 2.1.1 数值类型 int8,uint8;int16,uint16;int32,uint32;int64,uint64  整数型 single 单精度 double 双精度 (默认) 示例:int32(820) 查看数值类型 class() 函数 向下取整 floor(x) 向上取整 ceil(x) 四舍五入 round(x) 向0取整 fix(x) 以数轴的思想去思考。正整数时同floor 负整数时同ceil whos列出当前spacework的所有变量 eps函数 默认是1 eps(1)表示离1最近的浮点数值;因为精度只有这么多,算出的结果会去匹配到系统的精度。一般不影响计算结果,除非对数值有非常苛刻的要求。 复数部分: complex(a,b) : 构建复数 a+bi real(z) z的实部;image(z) z的虚部;abs(z) 复数z的模;angle(z) 复数的辐角;conj(z) 复数的共轭复数 无穷量(Inf) 和 非数值量(NaN) Inf -Inf NaN 2.1

关于数据

a 夏天 提交于 2020-03-25 21:01:28
数据是一切的根本。 一.获取数据 1.可以使用爬虫scrapy获取数据,但是更一般的是自家数据库中的数据 2.可以获得公用数据集: http://www.kaggle.com/datasets 等网站 3.可以自己创建虚拟数据 4.注意:1)数据量尽可能多、利于训练,(2)数据内容尽可能有效,能对预测产生作用(有用的特征),(3)数据尽可能要均匀(分类),即全面 5.注意:无论是数据获取还是处理,都要注意多做备份,有能力每步都要备份,数据的价值难以想象。 二.原始数据 1.数据的本质是信息的具体化,原始数据有很多种:数字、文字、图片....我们可以从这些数据中看出里面所包含的信息。 2.计算机接收进行处理的是数字,根据经验,把原始数据转换为数字是比较容易的(比如把图片转化为矩阵的形式), 3.我们得到的原始数据可能有这样那样的问题,所以要进行下一步的数据清洗 ------原始数据是杂乱的,含有不完整、重复、错误的数据,因此要先进行数据清洗------- 三.数据清洗(Data cleaning) 1.数据清洗是为了对数据进行重新审查和校验,目的在于删除重复信息、纠正存在的错误,并提供数据一致性 2.不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类 (1)缺失数据(数据为空Null):如果缺失数据的记录占比较小,可以直接剔除(主要包括删除样本或删除特征两种

推荐算法入门

空扰寡人 提交于 2020-03-24 01:21:31
推荐算法概览(一) 为推荐系统选择正确的推荐算法非常重要,而可用的算法很多,想要找到最适合所处理问题的算法还是很有难度的。这些算法每种都各有优劣,也各有局限,因此在作出决策前我们应当对其做以衡量。在实践中,我们很可能需要测试多种算法,以便找出最适合用户的那种;了解这些算法的概念以及工作原理,对它们有个直观印象将会很有帮助。 推荐算法通常是在 推荐模型 中实现的,而推荐模型会负责收集诸如用户偏好、物品描述这些可用作推荐凭借的数据,据此预测特定用户组可能感兴趣的物品。 主要的推荐算法系列有四个(表格1-4): 协同过滤(Collaborative Filtering)的推荐算法 基于内容过滤(Content-based Filtering)的推荐算法 混合型推荐算法 流行度推荐算法 此外,还有很多高级或非传统的方式,可参见表格5。 本文是系列文中的第一篇,将会以表格形式来介绍推荐算法的主要分类,包括算法简介、典型的输入内容、常见的形式及其优劣。在系列文的第二与第三篇中,我们将会更详细地介绍各种算法的不同,以便让大家更深入地理解其工作原理。本文的某些内容是基于一篇2014年的推荐算法2014教程 《推荐问题再探(Recommender Problem Revisited)》 来撰写的,该文的作者是 Xavier Amatriain 。 表格一:协同过滤推荐算法概览 表格二

C#矩阵运算类库

对着背影说爱祢 提交于 2020-03-15 19:42:07
这个类库是本人参考许多相关资料之后做出的C#矩阵运算类库,因为C#的数值计算库相对比较少,所以希望这个类库能够给大家带来一些帮助。 源码github网址: https://github.com/JoshuaHe2015/MatrixLibrary 功能介绍:(持续更新中) 1、矩阵的基本运算:   矩阵的加、减、乘、除、求逆、求幂、求秩、求行列式、转置。运算包括矩阵与矩阵的运算,矩阵与向量的运算和矩阵与标量的运算。 1 using System; 2 using LinearAlgebra; 3 namespace MatrixLibraryTest 4 { 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 Matrix A = Matrix.Create(2, 2, new double[] { 1, 2, 3, 4 }); 10 Matrix B = new double[,] { 11 { 5, 6 }, 12 { 7, 8 } }; 13 Matrix C = A + B; 14 Matrix D = A * 2; 15 Matrix E = A * B; 16 Matrix F = E.Inverse(); 17 Console.WriteLine(C); 18 Console.WriteLine(D)

最小二乘法

我的梦境 提交于 2020-03-14 15:42:26
1、前言 a、本文主性最小二乘的标准形式,非线性最小二乘求解可以参考Newton法 b、对于参数求解问题还有另外一种思路:RANSAC算法。它与最小二乘各有优缺点: --当测量值符合高斯分布(或者说测量误差符合期望为0的高斯分布),使用最小二乘比较合适,可以获得比较稳定且很高的精度。 而当误差服从高斯分布的情况下, 最小二乘法等价于极大似然估计。 --当测量值离散性比较大,存在很多outliers,那么使用最小二乘求解就会存在很大的误差,此时使用RANSAC算法更合适。 线性最小二乘只适用于参数模型会线性关系的情形,RANSAC则没有此限制。 c、线性最小二乘又分为齐次线性最小二乘和非齐次线性最小二乘。 2、非齐次方程组的最小二乘解 a、 非齐次线性最小二乘的标准形式: AX = B (1) 其中A、B分别为测量数据构成的矩阵与向量,X为待求参数向量。 这里主要针对方程数多于未知元素的情形--超定方程组。 b、为什么要用最小二乘求解参数: 举例: ,其中 为测量已知量, 为待求量。 那么只需要三组 就可以求出 。实际情况是某次实验不止测了三组数据: 如何在(1,2,3,29)(2,1,1,13)(3,2,4,37)(2,4,2,33)(4,2,1,23)这些测量数据中求出最准确的 ? 结论:当数据存在冗余,且数据噪声偏差不大的情况下适合用最小二乘求解。 c、如何转化为最小二乘形式:

GMM算法应用实例介绍及参数详解

坚强是说给别人听的谎言 提交于 2020-03-10 19:30:26
GMM,高斯混合模型,也可以简写为MOG。高斯模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,将一个事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。 高斯混合模型(CMMs)是统计学习理论的基本模型,在可视媒体领域应用广泛。近些年来,随着可视媒体信息的增长和分析技术的深入,GMMs在(纹理)图像分割、视频分析、图像配准、聚类等领域有了进一步的发展。从GMMs的基本模型出发,从理论和应用的角度讨论和分析了GMMs的求解算法,包括EM算法、变化形式等,论述了GMMs的模型选择问题:在线学习和模型约简。在视觉应用领域,介绍了GMMs在图像分段、视频分析、图像配准、图像降噪等领域的扩展模型与方法,详细地阐述了一些最新的典型模型的原理与过程,如用于图像分段的空间约束CMMs、图像配准中的关联点漂移算法。最后,讨论了一些潜在的发展方向与存在的困难问题。 GMM在视觉分析中的应用 1. 图像分段 高斯混合模型在图像分割领域应用广泛,在一般图像上经典过程是将像素映射到特征空间,然后假设特征空间的点由待定参数的GMMs生成,使用EM等算法计算最优的参数值以确定像素的类别。实际上,在图像分割应用中GMMs被看做是一个聚类模型,与特征选择、聚类分析、模型选择、EM算法设计紧密相关。 2. 视频分析 CMMs和相关的统计方法广泛应用于视频分段、目标识别和跟踪、错误消除,为手势识别