
math
文章平均质量分 80
五道口纳什
wx公众号/B站:五道口纳什
展开
-
线性方程组(A是上三角矩阵时)的C++求解
将矩阵$A$通过一系列的线性变换转换为三角矩阵(上三角:upper triangular,下三角:lower triangular),然后便可轻松的求解联立线性方程组。这也是诸如LU分解存在的理由。原创 2015-10-21 10:17:24 · 3604 阅读 · 0 评论 -
点乘和叉乘及其物理意义(C++STL实现)
一些错误观念的澄清,比如数学意义上的点积和叉积并不对应matlab程序中的.*(按位相乘)和*(矩阵乘法)内积的物理意义一种向量到标量的映射两向量的夹角的计算两向量是否正交的判断两向量的相似性(similarity)的度量叉积的意义如何使用C++语言(STL容器,运算符重载):表示向量计算内积计算叉积计算模长计算两向量的夹角计算点到直线的距离prerequisites内积(i原创 2015-11-14 20:42:35 · 36763 阅读 · 3 评论 -
数论及Python实践
二项式系数二项式系数的定义式: (nk)=n!k!(n−k)!\begin{equation}\begin{pmatrix}n\\k\end{pmatrix}=\frac{n!}{k!(n-k)!}\end{equation}(nk)=(n−1k)+(n−1k−1)\begin{equation}\begin{pmatrix}n\\k\end{pmatrix}=\begin{pmatr原创 2015-12-12 21:45:28 · 2050 阅读 · 0 评论 -
二项分布的实现(np.random.binomial)
二项分布(binomial distribution): P(N)=(nN)pN(1−p)n−NP(N)=\begin{pmatrix}n\\N\end{pmatrix}p^N(1-p)^{n-N} numpy给出的api是:numpy.random.RandomState.binomial(n, p, size=None)表示对一个二项分布进行采样(size表示采样的次数,draw sa原创 2015-12-04 11:30:29 · 32167 阅读 · 2 评论 -
产生一定范围随机数的通用表达式
要知道rand()%(b-a)产生的随机数范围为[0, b-a-1],知道这一点,下列实现都比较容易了:产生(a, b)rand()%(b-a-1)+(a+1)产生[a, b)rand()%(b-a)+a产生(a, b]rand()%(b-a)+(a+1)产生[a, b]rand()%(b-a+1)+a原创 2015-12-13 17:03:00 · 1738 阅读 · 0 评论 -
从一个例子看频率学派与贝叶斯学派的不同(Python)
考虑如下的一个游戏场景:setup: Alice and Bob enter a room. Behind a curtain there is a billiard table, which they cannot see, but their friend Carol can. Carol rolls a ball down the table, and marks where it lan原创 2015-12-21 08:26:33 · 2640 阅读 · 3 评论 -
Huber Loss function
Huber loss是为了增强平方误差损失函数(squared loss function)对噪声(或叫离群点,outliers)的鲁棒性提出的。DefinitionLδ(a)=⎧⎩⎨⎪⎪⎪⎪12a2,δ⋅(|a|−12δ),for |a|≤δ,otherwise.\begin{split}L_\delta(a)=\left \{\begin{array}{ll}\frac12a^2,&\t原创 2015-12-29 15:29:52 · 24618 阅读 · 2 评论 -
线性拟合——从最大似然估计到平方误差到huber loss
考虑这样一些数据:x = np.array([0, 3, 9, 14, 15, 19, 20, 21, 30, 35, 40, 41, 42, 43, 54, 56, 67, 69, 72, 88]) # x # x_iy = np原创 2015-12-28 23:09:23 · 13639 阅读 · 0 评论 -
线性插值——如何根据两点确定一条线段
计算机能画一条线段(数学意义上)吗?并不能。不管多短的一条线段,都包含实数集上的无数个点,计算机能做的是尽可能多地采样,描更多的点,让人眼难以看出其中的不连续性。已知 x,yx,y 分别为坐标轴上的两点,下式为采样公式, x′=(1−p)⋅x+p⋅y,p∈[0,1]x'=(1-p)\cdot x+p\cdot y,\quad p\in [0, 1]对 pp在整个 [0,1][0, 1]闭区间上原创 2016-01-08 13:06:04 · 6084 阅读 · 0 评论 -
关于e的等式及相关证明
ee的定义式是一切的起点: e=limn→∞(1+1n)ne=\lim_{n\to\infty}(1+\frac1n)^n证明limn→−∞(1+1n)n=e\lim\limits_{n\to-\infty}(1+\frac1n)^n=elimn→−∞(1+1n)n=limn→−∞[(1−1−n)−n]−1=limn→∞1(1−1n)n=limn→∞(nn−1)n=limn→∞(1+1n−1)n=原创 2015-12-18 17:18:10 · 7518 阅读 · 0 评论 -
重温二项分布
实现我们在概率论与数理统计课上学过的二项(binomial)分布,属于一种离散型随机变量(discrete random variable),其概率质量函数(probability mass function)为:f(k;n,k)=Pr(K=k)=(nk)pk(1−p)n−kf(k;n,k)=Pr(K=k)=\binom n k p^k(1-p)^{n-k}其E[X]=np,Var[X]=np(1−原创 2015-12-16 16:58:18 · 2033 阅读 · 0 评论 -
Beta函数与Gamma函数及其与Beta分布的关系
相关函数在scipy.specialimport scipy.special as ssss.beta(x1, x2)相关分布(概率密度)在scipy.statsimport scipy.stats as stss.beta(a, b) # 随机变量β\beta Function:B(x,y)=∫10tx−1(1−t)y−1dtB(x, y)=\int_0^1t^{x-1}原创 2015-12-20 13:22:19 · 19986 阅读 · 0 评论 -
复数相关的等式及证明
复数相关的等式及证明1. 棣莫弗公式2.原创 2016-01-18 23:23:28 · 1823 阅读 · 0 评论 -
仿射变换(Affine transformation)与python实践
仿射变换,又称仿射映射,是指在几何张,一个向量空间(vector space)进行一次线性变换(linear transformation)并拼上一个平移(Translation ),其矩阵表达形式(matrix formal)为: y⃗ m×1=Am×nx⃗ n×1+b⃗ m×1\vec{y}_{m\times 1}=A_{m\times n}\vec{x}_{n\times 1}+\vec{b原创 2015-12-30 11:57:28 · 16120 阅读 · 0 评论 -
emcee——Quickstart
emcee是一个强大的、易上手的python第三方的库,使用基于蒙特卡洛的算法实现对贝叶斯参数的估计(Bayesian Parameter Estimation)。如何对一个多维高斯密度函数进行采样p(x⃗ )∝exp[−12(x⃗ −μ⃗ )TΣ−1(x⃗ −μ⃗ )]p(\vec{x})\propto \exp\left [ -\frac12(\vec x-\vec \mu)^T\Sigma^原创 2016-01-01 10:50:31 · 5610 阅读 · 0 评论 -
三局两胜还是五局三胜?
已知如下的竞赛规则: 假定有甲、乙两个乒乓球运动员参加比赛,已知甲的实力强于乙。现有两个备选的竞赛规则,”三局两胜制”和”五局三胜制”。请问,这种情况下:选手甲应该争取哪一种规则对自己有利?自然是比较两种规则下各自获胜的概率: “三局两胜制”: f(p)=p2+2(1−p)p2=p2(3−2p)f(p)=p^2+2(1-p)p^2=p^2(3-2p) “五局三胜制”: g(p)=p3+3(原创 2015-12-17 11:48:52 · 6818 阅读 · 1 评论 -
被平均("统计平均")的陷阱
在统计平均的调查方法下: 公司100人,患糖尿病的有9人,则患病率为9%;研究所150人,患糖尿病的有18人,患病率为12%; 是否说明,研究所的糖尿病患病率要比公司高? 公司 研究所 100 9 9% 150 18 12%我们将年龄结构考虑进去(事实上,糖尿病的患病率也确实跟年龄有密切的联系): 年龄结构 公司原创 2015-12-17 12:00:27 · 2196 阅读 · 0 评论 -
3.5!——阶乘的插值(python)
本文的全部理论基础见于 神奇的Gamma函数(scipy)。k!⇒x!,x≥0k!\Rightarrow x!,\quad x \geq 0 阶乘插值,在更大的范围里说这其实是一个数列插值的问题,通俗地说,就是把数列的通项公式定义从整数集合延拓到实数集合。 n⇒Rn\Rightarrow \mathbb{R} 例如数列 1,4,9,16,…1, 4, 9, 16, \ldots 可用通原创 2016-01-19 08:56:35 · 2300 阅读 · 0 评论 -
线性拟合——离群点outliers的处理
问题考虑如下的数据集:x,yx,y 是观测到的变量(observed variables),yy的误差存放在数组 ee 中:x = np.array([ 0, 3, 9, 14, 15, 19, 20, 21, 30, 35, 40, 41, 42, 43, 54, 56, 67, 69, 72, 88])y = np.array([33, 68, 34, 34,原创 2016-01-01 17:41:21 · 21994 阅读 · 2 评论 -
happy 2016, happy 11111100000
我们首先来看微博上流传甚广的一幅图片: 自然我们可以预定: 210+29+28+27+26+25+24==2016+242032\begin{split}2^{10}+2^9+2^8+2^7+2^6+2^5+2^4=&2016+2^4\\=&2032\end{split} 210+29+28+27+26+25+242^{10}+2^9+2^8+2^7+2^6+2^5+2^4用原创 2016-01-02 10:21:16 · 1139 阅读 · 0 评论 -
机器学习常用数学公式
reconstruction errorx→y→zx\rightarrow y\rightarrow z,yy是被污染的xx,zz是从yy中试图对xx进行的重构。如何度量重构的好坏,此时就要用到重构误差,也即reconstruction error。重构误差可通过多种方式进行度量,度量方式的选择取决于给定映射(也即编码code)下关于输入的分布的假设。传统的平方误差:L(x,z)=∥x−z∥2L(原创 2015-12-03 13:03:25 · 7457 阅读 · 0 评论 -
点与圆相交的判断
点与圆相交的判断,本质在求解联立方程。我们以平面上(二维)的直线和圆为例,其方程分别为: (x−a)2+(y−b)2=r2y=kx+c⇓(x−a)2+(kx+c−b)2=r2⇓(1+k2)x2+2(kc−kb−a)x+a2+(c−b)2−r2=0Δ=4(kc−kb−a)2−4(1+k2)(a2+(c−b)2−r2)(x-a)^2+(y-b)^2=r^2\\y=kx+c\\\Downarrow原创 2016-01-20 11:51:40 · 1390 阅读 · 0 评论 -
如何判断两个矩形相交
如何判断两个矩形相交假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形 rect1{(minx1, miny1)(maxx1, maxy1)} rect2{(minx2, miny2)(maxx2, maxy2)} 相交的结果一定是个矩形,构成这个相交矩形 rect{(minx, miny) (maxx, maxy)}的点对坐标是: minx =原创 2016-01-20 12:06:50 · 2168 阅读 · 0 评论 -
[面试]——用一行代码判断两矩形是否相交
typedef struct{ int left; // leftmost: 最左 int top; // topmost: 最上 int right; // rightmost: 最右 int bottom; // bottommost:原创 2016-01-20 13:05:35 · 15690 阅读 · 2 评论 -
计算几何常用算法及numpy仿真
在很久之前的一篇的文章点乘和叉乘及其物理意义(C++STL实现),我们用C++(STL)实现了对向量内积和叉积的定义与简单计算,最后演示了如何用几何的方法计算点到直线的距离,计算任意三角形的面积等问题。把这些放在更大的范围内,其实就是今天的主角,计算几何原创 2016-01-20 08:59:21 · 5716 阅读 · 0 评论 -
从np.random.normal()到正态分布的拟合
先看伟大的高斯分布(Gaussian Distribution)的概率密度函数(probability density function):f(x)=12π−−√σexp(−(x−μ)22σ2)f(x)=\frac1{\sqrt{2\pi}\sigma}\exp(-\frac{(x-\mu)^2}{2\sigma^2})对应于numpy中:numpy.random.normal(loc=0.0, s原创 2015-12-03 17:20:01 · 162321 阅读 · 12 评论 -
频率主义(Frequentism)与贝叶斯主义(Bayesianism)的哲学辨异与实践(Python仿真)
对概率的认识两者的根本不同在于对概率的认识:frequentists probabilities are fundamentally related to frequencies of events. Bayesians, probabilities are fundamentally related to our own knowledge about an event.频率We’l原创 2015-12-18 09:48:21 · 4266 阅读 · 0 评论 -
最小二乘法进行曲线拟合(Python)
本文不手动实现最小二乘,调用scipy库中实现好的相关优化函数。考虑如下的含有4个参数的函数式:f(x)=A−D1+(x/C)B+Df(x)=\frac{A-D}{1+(x/C)^B}+D构造数据import numpy as npfrom scipy import optimizeimport matplotlib.pyplot as pltdef logistic4(x, A, B, C,原创 2015-12-19 17:07:16 · 24466 阅读 · 4 评论 -
Bootstrap采样方法的python实现
本文只考虑相对简单的一维的情况:import numpy as npdef bootstrap(data, num_samples, statistics, alpha): n = len(data) idx = np.random.randint(0, n, size=(num_samples, n)) samples = data[idx] stat = np.s原创 2015-12-19 17:48:56 · 14603 阅读 · 5 评论 -
贝叶斯分析——从数值积分到MCMC
Analytical solutionNumerical integrationOne simple way of numerical integration is to estimate the values on a grid of values for θ\theta. To calculate the posterior, we find the prior and the likelhoo原创 2016-01-05 22:07:43 · 2878 阅读 · 2 评论 -
MCMC(Markov Chain Monte Carlo)的理解与实践(Python)
Markov Chain Monte Carlo (MCMC) methods are a class of algorithms for sampling from a probability distribution based on constructing a Markov chain that has the desired distribution as its stationary d原创 2016-01-03 20:56:01 · 17969 阅读 · 4 评论 -
MCMC公式及推导
We want the stationary distribution π(x)\pi(x) to be the posterior distribution P(x)P(x). So we set P(x)P(x→y)=P(y)P(y→x)P(x)P(x\to y)=P(y)P(y\to x) Rearranging, we get P(x)P(y)=P(y→x)P(x→y)\frac{P原创 2016-01-06 11:30:26 · 1995 阅读 · 0 评论 -
MCMC: Metropolis-Hastings, Gibbs and slice sampling
从标题中即已看出,Metropolis-Hastings、Gibbs and slice sampling是MCMC(基于马尔科夫链的蒙特卡洛采样算法)的变体及改进算法。With MCMC, we draw samples from a (simple) proposal distribution so that each draw depends only on the state of the原创 2016-01-06 08:15:11 · 2801 阅读 · 0 评论 -
斐波那契数列与黄金分割比以及矩阵形式推导
数学上,斐波那契数列以递归的形式进行定义: F 0 =0F 1 =1F n =F n−1 +F n−2 \begin{split}&F_0=0\\&F_1=1\\&F_n=F_{n-1}+F_{n-2}\end{split}注意,递归的形式实现较为简单明了,当然在编程实践时,并不推荐递归的实现方式,因为存在大量的重复计算,斐波那契的优化实现不是本文的重点,如有兴趣,请参阅 每周一原创 2016-01-23 12:35:40 · 6537 阅读 · 0 评论 -
从排列与组合的python实现到"生日问题"的解释
在 数论及Python实践一文中,我们介绍了组合的基本定义以及一些常规实现方法,并未充分发挥python语言的优势,本文我们从reduce函数的角度(从这个角度我们应当恢复reduce正宫娘娘的地位,因为在python3中Guido将reduce从系统内置函数降格为functools中的函数),重新实现给出排列组合的各自实现,以及据此给出”生日问题”的概率解释。(nk)=n!k!(n−k)!(nk)原创 2015-12-17 10:01:57 · 4113 阅读 · 0 评论 -
"生日悖论"补充
从排列与组合的python实现到”生日问题”的解释首先定义我们的记号(notation),用整数 i=1,2,…,k i=1,2,\ldots,k 来对房间里的人进行编号,其中 k k是房间里的总人数。不考虑闰年,所有的年份都是 n=365 n=365,令 b i b_i表示第 i i个人的生日。我们假设每个人的生日是独立的(这是一个重要假设),则 i i 和 j j 生日落在同一天 r r 的概原创 2016-01-24 12:42:10 · 2091 阅读 · 0 评论 -
取模运算与hash function
取模运算常常对应于hash散列;错误的 m,常得到错误的hash散列,错误的hash散列,则无法达到选取hash散列的目的;原创 2016-01-24 15:55:19 · 2599 阅读 · 0 评论 -
机器学习常用公式(二)
机器学习常用数学公式(一)条件概率logp(X|θ)=logp(X,z|θ)−logp(z|X,θ)\log p(X|\theta)=\log p(X,z|\theta)-\log p(z|X,\theta)利用的是条件概率计算公式: p(A|B)=p(A,B)p(B)p(A|B)=\frac{p(A,B)}{p(B)}p(A,B)p(A,B):表示联合概率,joint probabilit原创 2016-01-08 11:06:55 · 1506 阅读 · 0 评论 -
割补法求阴影部分的面积
其实这是一节小学数学课。割补法:拆东墙(割),补西墙(补),也即割补法需要两个动作,分别是割与补。我们首先来看一个直观的应用割补法的例子: 右侧的四分之一圆挪到左侧,补上空白部分,这里的挪和补即暗含割补法的思想。通过割补或者叫分裂合并,实现对不好计算的面积转换为容易计算的面积,比如讲曲线围绕出来的面积(当然可用微积分的方法加以计算,不在本文的考虑范围之内),转换位三角形或者梯形等常规图形。割补原创 2015-12-24 00:03:17 · 6656 阅读 · 0 评论 -
从 GMM 到 EM 算法
X={x1,x2,…,xN}X=\{x_1, x_2,\dots,x_N\} 其 joint density 或者叫 log joint density:logP(X)=∑i=1Nlog∑ℓ=1kαkN(xi|μℓ,σℓ)\log P(X)=\sum_{i=1}^N\log\sum_{\ell=1}^k\alpha_k\mathcal{N}(x_i|\mu_\ell,\sigma_\ell)原创 2016-01-07 09:01:21 · 1707 阅读 · 0 评论