矩阵分解

算法导论笔记(一):复杂度,分治,随机

做~自己de王妃 提交于 2020-01-07 18:59:15
示例与概念 插入排序 归并排序 最坏情况分析与平均情况分析 函数增长的渐进记号 (O(n)) 表示函数增长的上界。即,花费时间不会高于线性增长。 (Theta(n)) 同时表示上界和下界。即,花费时间一定是这个线性增长的。 (Omega(n)) 表示增长的下界。 (o(n)) 表示不渐进紧确的上界。如, (2n =O(n^2)) , (n^2=O(n^2)) , (2n=O(n^2)) ,但 (n^2neq o(n^2)) (omega(n)) 与 (o(n)) 类似,表示不紧确的下界。 此外,常用 (T(n)) 表示所需的实际时间的函数。 分析分治算法,以归并排序为例 归并排序最坏运行时间的递归式: [ T(n)=begin{cases}Theta(1)&text{若} n=1,\ 2T(n/2)+Theta(n)&text{若} n>1. end{cases} ] 除使用主定理外,还可以这样理解递归式的值:将递归过程看做一个二叉树。递归调用中的每一层的总代价均为 (cn) ,其中 (c) 为常数。而二叉树的层数应为 (log_2n+1) 。故,整个算法的代价期望为 (Theta(nlog_2n)) 。 分治法 分治法求最大和的子数组 分解。将数组划分为两个子数组。此时,只存在三种子数组: 全部位于中点左侧的子数组 全部位于中点右侧的子数组 跨越中点的子数组 解决

16th Polish Collegiate Programming Contest (AMPPZ 2011) A Arithmetic Rectangle

谁说胖子不能爱 提交于 2020-01-07 01:43:32
Looking for a challenge! 2 开坑… 网上好像只能找到 http://ruchiose.is-programmer.com/2014/6/18/main_amppz_2011_solution.48903.html 这个大佬写的一句话题解… 我太菜了,波兰题真的恐怖,我调这个东西调了三个半小时… 退役选手好像做这种稍微长一点的题就不行了 题解基本上是意译自 Looking for a challenge 2 遇到的非傻逼错误好像也就没滚动数组导致RE了… 我不知道我为啥写了这么久啊? 题意 给出一个n*m的子矩阵,求出其最大等差子矩阵的面积。 等差矩阵即每行每列都为等差序列之矩阵。 测试组数不超过10000,n,m <= 3000 元素值不超过1e9,每个测试文件大小不超过20MB 引导问题1:Air crashes 题意 给出一个数组a,对于每一个元素,找出其左侧最近的比它小的元素。 解法:following the arrows 在数组前添加一个哨兵节点,其值设为负无穷。用一个数组,称其为arrow,来维护每个元素左侧比它小的最近元素。 从左向右遍历数组a,若a_{i-1} < a_i 则a_{i-1} 即是a_i左侧最近的比它小的元素。否则,比较 arrow[a_{i-1}] 指向的值与 ai 的大小关系,不断循环,直到找到为止。

机器学习之无监督学习

只愿长相守 提交于 2020-01-06 19:26:30
注:本篇博客所有案例数据由MOOC平台提供! 无监督学习-聚类 K-means 算法 k-means算法以k为参数,将n个对象分成k个簇,使簇内具有较高的相似度,而簇内具有较高的相似度,而簇间的相似度较低。 其处理过程如下: (1)随机选择k个点作为初始的聚类中心; (2)对于剩下的点,根据其与聚类中心的距离,将其归入最近的簇; (3)对每个簇,计算所有点的均值作为新的聚类中心; (4)重复(2)、(3)直到聚类中心不再发生变化。 import numpy as np from sklearn.cluster import KMeans def loadData(filePath): fr = open(filePath,'r+') lines = fr.readlines() retData = [] retCityName = [] for line in lines: items = line.strip().split(",") retCityName.append(items[0]) retData.append([float(items[i]) for i in range(1,len(items))]) return retData,retCityName if __name__ == '__main__': data,cityName = loadData(

线性代数《Linear Algebra and Its Application》学习总结

£可爱£侵袭症+ 提交于 2020-01-05 22:13:44
此文仅为学习记录,内容会包括一些数学概念,定义,个人理解的摘要。希望能够分享一些学习内容。 第一节:Row Reduction and Echelon Forms Echelon form: 行消元后的矩阵 Reduced echelon form: 行消元并且leading entry为1的矩阵。 Echelon form and reduced echelon form are row equivalent to the original form. Span{v1, v2, v3,...... vp} is the collection of all vectors that can be written in the form c1*v1 + c2*v2 + ...... cp*vp with c1, .... cp scalars. Ax = 0 has a nontrival solution if and only if the equation has at least one free variable.(not full column rank) Ax = b 的解等于 Ax = 0 和 特解的和。 解线性方程组流程P54。 线性无关指任何向量不能组合成其中一个向量。 Ax = b : ColA1 * x1 + ColA2 * x2 +.... ColAm *

线性代数《Linear Algebra and Its Application》学习总结

我是研究僧i 提交于 2020-01-05 22:13:28
此文仅为学习记录,内容会包括一些数学概念,定义,个人理解的摘要。希望能够分享一些学习内容。 第一节:Row Reduction and Echelon Forms Echelon form: 行消元后的矩阵 Reduced echelon form: 行消元并且leading entry为1的矩阵。 Echelon form and reduced echelon form are row equivalent to the original form. Span{v1, v2, v3,...... vp} is the collection of all vectors that can be written in the form c1*v1 + c2*v2 + ...... cp*vp with c1, .... cp scalars. Ax = 0 has a nontrival solution if and only if the equation has at least one free variable.(not full column rank) Ax = b 的解等于 Ax = 0 和 特解的和。 解线性方程组流程P54。 线性无关指任何向量不能组合成其中一个向量。 Ax = b : ColA1 * x1 + ColA2 * x2 +.... ColAm *

机器学习需要的数学总结

落花浮王杯 提交于 2020-01-05 22:10:59
数学知识 数学知识总括 微积分(高等数学) 线性代数 概率论与数理统计 凸优化 微积分 微积分学,数学中的基础分支。内容主要包括函数、极限、微分学、积分学及其应用。函数是微积分研究的基本对象,极限是微积分的基本概念,微分和积分是特定过程特定形式的极限 微积分/高等数学。在机器学习中,微积分主要用到了微分部分,作用是求函数的极值,就是很多机器学习库中的求解器(solver)所实现的功能。在机器学习里会用到微积分中的以下知识点: 导数和偏导数的定义与计算方法 梯度向量的定义 极值定理,可导函数在极值点处导数或梯度必须为0 雅克比矩阵,这是向量到向量映射函数的偏导数构成的矩阵,在求导推导中会用到 Hessian矩阵,这是2阶导数对多元函数的推广,与函数的极值有密切的联系 凸函数的定义与判断方法 泰勒展开公式 拉格朗日乘数法,用于求解带等式约束的极值问题 其中最核心的是记住多元函数的泰勒展开公式,根据它我们可以推导出机器学习中常用的梯度下降法,牛顿法,拟牛顿法等一系列最优化方法: 线性代数 线性代数的理论是计算技术的基础,同系统工程,优化理论及稳定性理论等有着密切联系,随着计算技术的发展和计算机的普及,线性代数作为理工科的一门基础课程日益受到重视。线性代数这门课程的特点是概念比较抽象,概念之间联系很密切。内容包括行列式,矩阵,向量空间,线性方程组,矩阵的相似对角化,二次型

机器学习中的重点数学知识

混江龙づ霸主 提交于 2020-01-05 22:09:51
深度学习中的数学 1、数学是基石,编程为工具 2、深度学习基本全是优化问题(数学) 微积分知识重点: ① 导数:导数法则、常见的函数的导数、 ② 多元函数的导数:求梯度(偏导数)、二阶导数和hess矩阵 l 为什么需要使用矩阵表达多元函数? 方便计算、简洁 l 二次型求梯度 特别简单(需要了解:张矩阵)、 泰勒级数和极值: l 实际中我们想求一个函数的极值点: 令f’(x) = 0, 哇,太难了 ............ 怎么办?(泰勒展开) 一阶函数函数的导数是一个数,可以确定函数的极值点。 但是二阶、多阶呢? 写成二次型后求 hess 矩阵,判断 hess 矩阵的正定性。 l 为什么要用梯度下降法??? 使用泰勒展开,如果 δ为函数的梯度, 为了求出 f’(x) = 0 ,是一种迭代求法。 概率论知识 : 随机变量:分布函数、累积分布函数(求概率)、概率密度函数(累积分布函数的导数) l 高斯分布(最完美的分布) 对称轴: μ 分散程度:δ 独立的高斯变量相加 仍然是高斯分布!(神奇) 。 X = x1 + x2 + x3 (三项以后) ( 任意独立分布加起来 也是高斯分布 ) 贝叶斯公式 (机器学习中最重要的公式) : 矩阵重点: 特征值和特征向量的理解: Ax = λ x 这个式子是如此的简单粗暴,以致于从这个公式来看,给向量 x 乘上一个矩阵 A

学习笔记DL006:特征分解,奇异值分解

你离开我真会死。 提交于 2020-01-05 22:08:09
特征分解。 整数分解质因素。 特征分解(eigendecomposition),使用最广,矩阵分解一组特征向量、特征值。方阵𝑨的特征向量(eigenvector),与𝑨相乘相当对该向量缩放非零向量𝑣,𝑨𝑣=λ𝑣。标量λ为特征向量对应特征值(eigenvalue)。左特征向量(left eigenvector) 𝑣ᵀ𝑨=λ𝑣ᵀ,右特征向量(right eigenvector)。𝑣是𝑨的特征向量,任何缩放向量𝑠𝑣(𝑠∈ℝ,𝑠≠0)也是𝑨的特征向量。𝑠𝑣和𝑣有相同特征值。只考虑单位特征向量。 矩阵𝑨有𝑛个线性无关特征向量{𝑣⁽¹⁾,…,𝑣⁽ⁿ⁾},对应特征值{λ₁,…,λn}。特征向量连接成一个矩阵,每一列是一个特征向量,V=[𝑣⁽¹⁾,…,𝑣⁽ⁿ⁾]。特征值连接成一个向量𝝺=[λ₁,…,λn]ᵀ。𝑨的特征分解(eigendecomposition),记𝑨=Vdiag(𝝺)V⁻¹。 构建具有特定特征值和特征向量矩阵,在目标方向上延伸空间。矩阵分解(decompose)成物征值和特征向量,分析矩阵特定性质。 每个实对称矩阵都可以分解成实特征向量和实特征值,𝑨=Q𝚲Qᵀ。Q是𝑨的特征向量组成正交矩阵,𝚲是对角矩阵。特征值𝚲i,i对应特征向量是矩阵Q的第i列,记Q:,i。Q是正交矩阵,𝑨看作沿方向𝑣⁽i⁾延展λi倍空间。两多或多个特征向量拥有相同特征值,特征向量产生生成子空间

线性代数

放肆的年华 提交于 2020-01-05 22:07:51
线性相关和生成子空间   如果逆矩阵 A -1 存在,那么式子 A x = b 肯定对于每一个向量 b 恰好存在一个解。但是,对于方程组而言,对于向量 b 的某些值,有可能无解或者存在无限多解。存在多于一个解但是少于无限多个解的情况是不可能发生的;因为如果 x 和 y都是某方程组的解,则 z = αx + (1-α)y, (α取任意实数)也是该方程组的解。   形式上,一组向量的线性组合,是指每个向量乘以对应标量系数之后的和,即:∑ i x i v (i) ,一组向量的生成子空间(span)是原始向量线性组合后所能抵达的点的集合。 在线性代数里,矢量空间的一组元素中,若没有矢量可用有限个其他矢量的线性组合所表示,则称为 线性无关或线性独立 (linearly independent),反之称为 线性相关 (linearly dependent)。    例如在三维欧几里得空间R的三个矢量(1, 0, 0),(0, 1, 0)和(0, 0, 1)线性无关;但(2, 0, 1),(1, 0, 1)和(3, 1, 2)线性相关,因为第三个是前两个的和。   确定 A x = b 是否有解,相当于确定向量 b 是否在 A 列向量的生成子空间中。这个特殊的生成子空间被称为 A 的列空间 (column space)或者 A的值域(range)。 范数   范数(norm)函数可以衡量向量大小

机器学习_基础数学

☆樱花仙子☆ 提交于 2020-01-05 22:06:58
机器学习中所需要用到的数学知识: 微积分  线性代数  概率论  最优化方法 1.导数 求导公式 (一元)左导数与右导数都存在且相等,此处的导数才存在。 基本函数求导: 两个重要极限:   单调有界的序列必定收敛   夹逼定理 导数四则运算: 复合函数求导: 高阶导数: 导数与函数单调性的关系: :函数在此点单调增 :函数在此点单调减 极值定理: :(驻点)函数在此点是极值点,可能是极大值(二阶导小于零),也可能是极小值(二阶导大于零)可能是拐点(二阶导等于零) 拐点是凹函数与凸函数的交替点。 导数与函数凹凸性的关系: 凸函数:函数内任意两点的连线,大于两点间的任一点的函数值。 凹函数:函数内任意两点的连线,小于两点间的任一点的函数值。 二阶导大于零,是凸函数。 二阶导小于零,是凹函数。 2.一元函数泰勒展开 3.向量 向量与其运算: 向量分为行向量和列向量。 转置:行向量转置变为列向量,列向量转置变为行向量。 加法:对应位置分量相加 减法:对应位置分量相减 数乘:数与每个分量分别相乘 内积:两个向量的对应分量相乘再相加,两个向量转换为一个标量 a=(a1,a2,...,an),b=(b1,b2,...,bn)-------->a与b内积=a1b1+a2b2+...+anbn 向量的范数 L-P:L的P范数: ,P一般取整数。 L-1范数: L-2范数: 3.矩阵 矩阵与其运算