sigma

机器学习公开课笔记(9):异常检测和推荐系统

大兔子大兔子 提交于 2020-03-18 10:53:17
异常检测(Anomaly Detection) 基本假设:多数情况下数据点落入正常的取值范围,但是当异常行为发生时,数据点的取值落入正常取值范围之外(如图1所示)。所以可以利用高斯分布,计算行为发生的概率,如果是概率小于给定阈值,则认为发生了异常行为。基本过程是利用训练数据点建立模型$p(x)$,对于新的数据点$x_{new}$, 如果$p(x_{new})<\epsilon$则发生异常;否则正常。异常检测的应用包括: 欺诈检测(Fraud detection) 制造业(Manufacturing) 数据中心监视电脑(Monitering computers in data center) 图1 异常行为(Outlier Point)发生示例 高斯分布 对于一元高斯分布$x \sim N(\mu, \sigma^2)$,表达式如下,其中$\mu$表示均值,对应于分布的对称轴;$\sigma$表示数据点的离散程度,$\sigma$越大函数图像的下端张口越大峰值越低;反之$\sigma$越小,图像下端张口越小,峰值越高,如图2所示。 $$p(x;\mu, \sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{(x-\mu)^2}{2\sigma^2})$$ 图2 不同参数($\mu, \sigma$)取值下的一元高斯分布 参数估计

Expected object of backend CPU but got backend CUDA 报错解决方法---torchSnooper

喜夏-厌秋 提交于 2020-03-12 04:37:06
这种问题调试起来很麻烦,因为你不知道从哪里开始出问题的,比如你可能在代码的第三行用torch.zeros新建了一个cpu tensor,然后这个tensor进行了若干运算,全是在cpu上进行的,一直没有报错,直到第10行需要跟你作为输入传进来的CUDAtensor 进行运算的时候,才报错。要调试这种错误,有时候就不得不一行行地手写print语句,非常麻烦。 TorchSnooper就是一个设计了用来解决这个问题的工具,安装: pip install torchsnooper 安装完之后,只需要用@torchsnooper.snoop()装饰一下要调试的函数,这个函数在执行的时候,就会自动print出来每一行的执行结果的tensor的形状,数据类型,设备是否需要梯度的信息。 import torchsnooper @torchsnooper.snoop() def create_window(window_size: int, sigma: float, channel: int): ''' Create 1-D gauss kernel :param window_size: the size of gauss kernel :param sigma: sigma of normal distribution :param channel: input channel

最小二乘法

柔情痞子 提交于 2020-03-08 12:30:19
假设有一组样本数据,我们用一个函数去拟合它。由于实验数据有误差,不能够达到y_k = f(x_k)。这个时候就会产生偏差。 偏差表示为r_k = y_k - f(x_k),可由偏差平方和最小来确定函数f(x)。我们希望偏差尽量小,尽量接近于函数f(x_k)。 因为这些偏差中有正有负,我们不能冒昧的直接求这些偏差的和,所以我们使用偏差的平方和来表示函数f(x_k)的总偏差。 于是问题就转化成了min \sum_{i=0}^n[y_i-f(x_i)]^2。 这就是最小二乘法。 假设数据点分布 近似一条直线时,确定a, b,使y =ax + b满足 M(a,b) = min_{a,b} \sum_{k=0}^n(y_k + ax_k - b)^2 令 1、\frac {\sigma M}{\sigma a} = -2\sum_{k=0}^n(y_k - ax_k - b)x_k = 0 2、\frac {\sigma M}{\sigma b} = -2\sum_{k=0}^n(y_k - ax_k - b) = 0 通过计算确定某些经验公式类型的方法: 1)若\deta y_i / \deta x_i 约等于 定值,则考虑y = ax + b 2)若\deta lin y_i / \deta lin x_i 约等于 定值, 则考虑 y = ax^b 3)若\deta ln y_i /

halcon算子翻译——measure_pos

浪子不回头ぞ 提交于 2020-03-08 06:50:56
名称 measure_pos - 提取垂直于矩形或环形弧的直线边缘。 用法 measure_pos(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdge, ColumnEdge, Amplitude, Distance) 描述   measure_pos提取垂直于矩形或环形弧长轴的直边。   该算法通过计算垂直于矩形或环形弧的长轴的“切片”中的灰度值的均值以获得一维边缘轮廓。采样是在矩形中心的整数行和列位置(在矩形的坐标系中)的图像Image中的亚像素位置完成的。由于这含有可以在多次测量中重复使用的一些计算,所以使用算子gen_measure_rectangle2或gen_measure_arc来执行一次这些计算,从而显著提高了measure_pos的速度。由于在灰度值的亚像素计算中存在精度和速度之间的折衷,并且因此在所提取的边缘位置的准确度中,可以在gen_measure_rectangle2中选择不同的插值方案。 (插值仅影响与图像轴不对齐的矩形。)使用gen_measure_rectangle2生成的measure对象在MeasureHandle中传递。   在计算出一维边缘轮廓之后,通过将轮廓与标准偏差Sigma的高斯平滑核的导数进行卷积来计算亚像素边缘位置

halcon算子翻译——measure_pairs

匆匆过客 提交于 2020-03-08 06:50:18
名称 measure_pairs - 提取垂直于矩形或环形弧的直边对。 用法 measure_pairs(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance) 描述   measure_pairs用于提取垂直于矩形或环形弧长轴的直边对。   提取算法与measure_pos相同。 此外,边被分组为:如果Transition ='positive',则在RowEdgeFirst和ColumnEdgeFirst中将返回沿矩形长轴方向的暗到亮过渡的边缘点。 在这种情况下,在RowEdgeSecond和ColumnEdgeSecond中将返回具有明到暗过渡的相应边。 如果Transition = 'negative',则行为完全相反。 如果Transition =“all”,则RowEdgeFirst和ColumnEdgeFirst定义为首先检测到的边。 即取决于测量对象的定位,返回具有亮暗亮的边缘对或具有暗亮暗的边缘对。 这适合于测量具有相对于背景的不同亮度的物体。

计算两幅图像的PSNR和SSIM的python源码

老子叫甜甜 提交于 2020-03-02 18:44:57
import math import numpy as np from skimage import io from scipy . signal import convolve2d def compute_psnr ( img1 , img2 ) : if isinstance ( img1 , str ) : img1 = io . imread ( img1 ) if isinstance ( img2 , str ) : img2 = io . imread ( img2 ) mse = np . mean ( ( img1 / 255 . - img2 / 255 . ) ** 2 ) if mse < 1.0e-10 : return 1000000000000 PIXEL_MAX = 1 psnr = 20 * math . log10 ( PIXEL_MAX / math . sqrt ( mse ) ) return mse , psnr def matlab_style_gauss2D ( shape = ( 3 , 3 ) , sigma = 0.5 ) : """ 2D gaussian mask - should give the same result as MATLAB's fspecial('gaussian',[shape],[sigma]) ""

「知乎」如何证明不可计算的函数比可计算的函数多? - 高旭旭的博客

谁都会走 提交于 2020-02-27 12:54:50
这篇文章转载自 我在知乎上的回答 严谨的证明的话,可以使用「形式语言」( Formal language )来证明: 在可计算理论和计算复杂度理论中,每个「计算问题」都被描述为一个一个「形式语言」,即字符串的集合。比如对于判断一个图是否是无向连通图这个问题:我们可以写为一个描述所有无向连通图的集合: 由于图灵机只能接受字符串,所以这里的尖括号表示对图的「编码」。出于简单,我们全部使用现实计算机所使用的字母表 $Sigma = {0, 1}$,所以「编码」即一个对象的二进制字符串描述。 如果我们能构造出一个图灵机来「决定」这个「形式语言」,即可以判断一个「输入」是否属于这个集合(membership 与 non-membership),那么我们可以说我们用「图灵机」描述了一个「算法」来计算这个问题,而这个「计算问题」所对应的函数是「可计算的」,否则是「不可计算的」。(注 1) 那么,如果我们有一个包含了所有「可计算函数」的集合,这个集合会有多大呢? 由于 所有「可计算函数」总有一个对应的「图灵机」来计算它 每一个「图灵机」都可以被「编码」为一个不同的 0、1 序列,比如 000,010… 0、1 序列、即二进制,总是可以被转换为一个十进制数的 所以,我们这个集合实际上是与整数集 $Z$ 一样大(等势)的,我们把这个集合表示为 $Sigma^{*}$。 易知 $Z$ 是「无穷可数

线性回归

时间秒杀一切 提交于 2020-02-25 19:56:05
美国房价问题 Alex经过一年的努力,终于拿到了美国波士顿麻省理工学院的研究生录取通知书,在远离家乡的地方上学,Alex想在波士顿买一套房子,他手头有一些积蓄,在网上找了几套自己满意的房子,但是又不敢相信网上的价格,人生地不熟的,Alex怕被宰,就从自己做数据分析的朋友Bachelor手里要到了过去几年一些有关波士顿房价的资料。 import numpy as np import pandas as pd import seaborn as sns import matplotlib.pyplot as plt house_prices = pd.read_csv("train.csv") Bachelor给的数据非常非常多,包含各个方面。 为了方便分析呢,先提取其中三个特征作为分析素材,分别是LotArea表示房屋面积,TotalBsmtSF表示地下室的总面积,SalePrice表示的就是房价了。 house_prices[['LotArea', 'TotalBsmtSF', 'SalePrice']] 理工科出生的Alex想起了曾经学过的知识,想计算一下自己喜欢的那几套房子的大概房价是多少,到买房的时候心里好有点数。 于是他把数据重新处理了一下。 sample_test_data = house_prices[['LotArea', 'TotalBsmtSF',

样本估计量的有偏估计和无偏估计

戏子无情 提交于 2020-02-23 01:28:09
0.背景 有一组独立同分布的样本 { x 1 , x 2 , . . . , x m } \{x_{1},x_{2},...,x_{m}\} { x 1 ​ , x 2 ​ , . . . , x m ​ } 服从高斯分布 p ( x i ) = N ( x i ; μ , σ 2 ) p(x_{i})=N(x_{i};\mu,\sigma^{2}) p ( x i ​ ) = N ( x i ​ ; μ , σ 2 ) 。高斯概率密度函数如下: p ( x i ) = 1 2 π σ 2 e x p ( − 1 2 ( x i − μ ) 2 σ 2 ) p(x_{i})=\frac{1}{\sqrt{2\pi\sigma^{2}}}exp(-\frac{1}{2}\frac{(x_{i}-\mu)^{2}}{\sigma^{2}}) p ( x i ​ ) = 2 π σ 2 ​ 1 ​ e x p ( − 2 1 ​ σ 2 ( x i ​ − μ ) 2 ​ ) 1.估计的偏差计算公式 b i a s ( θ ^ m ) = E ( θ ^ m ) − θ bias(\hat\theta_m)=E(\hat\theta_m)-\theta b i a s ( θ ^ m ​ ) = E ( θ ^ m ​ ) − θ 其中 θ \theta θ 是定义数据生成分布的 θ

机器学习——从线性回归到逻辑回归【附详细推导和代码】

♀尐吖头ヾ 提交于 2020-02-19 09:34:54
本文始发于个人公众号: TechFlow ,原创不易,求个关注 在之前的文章当中,我们推导了线性回归的公式,线性回归本质是线性函数,模型的原理不难,核心是求解模型参数的过程。通过对线性回归的推导和学习,我们基本上了解了机器学习模型学习的过程,这是机器学习的精髓,要比单个模型的原理重要得多。 新关注和有所遗忘的同学可以点击下方的链接回顾一下之前的线性回归和梯度下降的内容。 一文讲透梯度下降法 详细推导线性回归模型 回归与分类 在机器学习当中,模型根据预测结果的不同分为两类,如果我们希望模型预测一个或者多个连续值,这类问题被称为是回归问题。像是常见的未来股票价格的估计、未来温度估计等等都算是回归问题。还有一类呢是分类问题,模型的预测结果是一个离散值,也就是说只有固定的种类的结果。常见的有垃圾邮件识别、网页图片鉴黄等等。 我们之前介绍的逻辑回归顾名思义是一个回归问题,今天的文章讲的呢是如何将这个回归模型转化成分类模型,这个由线性回归推导得到的分类模型称为 逻辑回归 。 逻辑回归 逻辑回归这个模型很神奇,虽然它的本质也是回归,但是它是一个分类模型,并且它的名字当中又包含”回归“两个字,未免让人觉得莫名其妙。 如果是初学者,觉得头晕是正常的,没关系,让我们一点点捋清楚。 让我们先回到线性回归,我们都知道,线性回归当中 \(y=WX+b\) 。我们通过W和b可以求出X对应的y