核密度估计 KDE 和累积分布函数 CDF
核密度估计 概率密度(probability density): 概率密度是观测值与其概率之间的关系。一个随机变量的某个结果可能会以很低的概率出现,而其他的结果可能概率会比较高。 概率密度的总体形状被称为概率分布 (probability distribution),常见的概率分布有均匀分布、正态分布、指数分布等名称。 对随机变量特定结果的概率计算是通过概率密度函数来完成的,简称为PDF (Probability Density Function)。 可以通过概率密度函数来判断一个样本的可信度高低,进而判断这个样本是否是异常值。此外,如果输入数据服从某个分布也需要用到概率密度函数。 但是通常我们是不知道一个随机变量的PDF的,因此我们需要不断去逼近这个PDF,而逼近的这个过程就是概率密度估计。 在某些情况下,一个数据样本可能不像一个常见的概率分布,或者不容易用某种分布来进行拟合,尤其是当数据有两个峰(双峰分布)或多个峰(多峰分布)时。这种情况下需要使用 非参数密度估计。 其实非参数密度估计还是有参数的,只不过这个参数和参数密度估计中的参数有所不同。后者的参数是可以直接控制分布情况的,而 ...
WWW 2020丨AutoMAP:微服务应用自动故障诊断框架
论文标题丨AutoMAP: Diagnose Your Microservice-based Web Applications Automatically 论文来源丨WWW 2020 论文链接丨https://dl.acm.org/doi/10.1145/3366423.3380111 源码链接丨未开源 TL;DR AutoMap 主要思想:1. 根据指标构造节点间的依赖关系图 2. 根因推荐主要还是基于随机游走的排序方法,但考虑了不同指标的权重。 Algorithm/Model Experiments Thoughts
Python 中 _、__ 和 __xx__ 方法的区别
原文地址:Difference between _, __ and xx in Python _ Python中不存在真正的私有方法。为了实现类似于 c++ 中私有方法,可以在类的方法或属性前加一个“_”单下划线,意味着该方法或属性不应该去调用,它并不属于API。 __ 这个双下划线更会造成更多混乱,但它并不是用来标识一个方法或属性是私有的,真正作用是用来避免子类覆盖其内容。即 在创建一个以"__"两个下划线开始的方法时,这意味着这个方法不能被重写,它只允许在该类的内部中使用。 __xx__ __xx__ 经常是操作符或本地函数调用的magic methods。 123456>>> name = "igor" >>> name.__len__() 4 >>> len(name) 4 >>> number = 10 >>> number.__add__(20) 30 >>> number + 20 3 总结 使用 _ 来表示该方法或属 ...
【2019/ICLR】Simplifying Graph Convolutional Networks
文章链接:https://arxiv.org/pdf/1902.07153.pdf TL;DR 考虑到GCN计算的复杂性,文章中提出的SGC在保证模型准确率不变的前提下,通过减少非线性单元和连续层之间的权值矩阵来减少计算量,提高了模型的效率因此文中的模型能适用于大型的数据集上。 Dataset/Algorithm/Model 至于传统的GCN形式就不过多介绍,直接说这篇文中将GCN简化的形式。文中直接移去了layers之间的Relu操作,形成线性的GCN,假设是K-layer的话,那么简化之后的GCN数学形式表达如下: Y^=softmax(S…SSXΘ(1)Θ(2)…Θ(K))\hat{\mathbf{Y}}=\operatorname{softmax}\left(\mathbf{S} \ldots \mathbf{S S X \Theta}^{(1)} \mathbf{\Theta}^{(2)} \ldots \Theta^{(K)}\right) Y^=softmax(S…SSXΘ(1)Θ(2)…Θ(K)) 对于一个分类任务,可以写成以下的形式: Y^SGC=softmax ...
ICLR 2018丨DAGMM:基于深度自编码和高斯混合模型的无监督异常检测模型
论文标题丨 DEEP AUTOENCODING GAUSSIAN MIXTURE MODEL FOR UNSUPERVISED ANOMALY DETECTION 论文来源丨 ICLR 2018 论文链接丨 https://openreview.net/pdf?id=BJJLHbb0- 源码链接丨 https://github.com/danieltan07/dagmm TL;DR 本文提出 DAGMM 对时间序列数据中异常位置的检测。主要思路:首先对多维数据进行降维,然后采用混合高斯模型对降维后的数据进行密度估计,最后根据密度估计结果检测异常数据。传统模型对降维后的数据进行密度估计。低维的数据会损失信息量,直接使用低维数据进行密度估计的模型容量低、效果较差。传统方法是先训练降维模型,再训练密度估计模型,没能融合两者。作者对降维后的数据进行重建,结合低维数据和重建误差进行密度估计,增大了模型的容量。此外引入正则项,联合降维模型和密度估计模型进行训练。 Algorithm/Model 数据降维后容易区分异常点: 整体 DAGMM 模型架构如下图所示 模型分为压缩网络 (Compre ...
详解 CRON 表达式
cron 表达式 cron表达式,主要用于定时作业(定时任务)系统定义执行时间或执行频率的表达式; 表达式格式如下: 123cron = "* * * * * *"* 分别表示 {秒} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)} // {Seconds} {Minutes} {Hours} {DayofMonth} {Month} {DayofWeek} 每一个域可出现的字符如下: Seconds:可出现, - * /四个字符,有效范围为0-59的整数; Minutes:可出现, - * /四个字符,有效范围为0-59的整数; Hours:可出现, - * /四个字符,有效范围为0-23的整数; DayofMonth:可出现, - * / ? L W C八个字符,有效范围为0-31的整 ...
ROC 曲线与 AUC 值计算详解
背景 在信号检测理论中,接收者操作特征曲线ROC (receiver operating characteristic curve)是一种坐标图式的分析工具,主要用于 选择最佳的信号侦测模型、舍弃次佳的模型。 在同一模型中设定最佳阈值。 在做决策时,ROC分析能不受成本/效益的影响,给出客观中立的建议。 数十年来,ROC分析被用于医学、无线电、生物学、犯罪心理学领域中,而且最近在机器学习和数据挖掘领域也得到了很好的发展。 ROC曲线解释 一个二分类问题,可以将实例分成正类postive或者 负类negative。但是实际中分类时,会出现四种情况 某一个实例是正类,并且预测结果也为正类,此为真正类(True Positive, TP) 某一个实例是正类,被预测为负类,此为假负类(False Negative, FN) 某一个实例是负类,被预测为正类,此为假正类(False Positive, FP) 某一个实例为负类,并且预测结果也为负类,此为真负类(True Negative, TN) ROC曲线的纵坐标是真正率(TPR) TPR=TPTP+FNTPR = \frac{TP}{ ...
InfluxDB 基础知识和常用命令汇总
InfluxDB 简介 InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。类似的数据库有Elasticsearch、Graphite等。 安装 MacOS 1$ brew install influxdb 基本概念 名词 InfluxDB 名词 对应的数据库概念 database 数据库 measurement 表 points 表中一行数据 Point point 由时间戳(time)、数据(field)、标签(tags)组成。 point属性 传统数据库概念 time 每个数据记录时间,是数据库中的主索引(会自动生成) fields 各种记录值(没有索引的属性)也就是记录的值:温度, 湿度 tags 各种有索引的属性:地区,海拔 Series 所有在数据库中的数据,都需要通过图表来展示,而这个series表示这个表里面的数据,可以在图表上画成几条线:通过tags排列组合算出来。 12$ show series from measurement_name$ show tag keys ...
Shedule 模块实现代码定时执行
参考文档:https://schedule.readthedocs.io/en/stable/ schedule是一个第三方轻量级的任务调度模块,可以按照秒,分,小时,日期或者自定义事件执行时间,便于执行轻量级任务。 安装 1pip install schedule 模块使用 123456789101112131415161718import timeimport scheduleimport datetimedef job(): print(datetime.datetime.now(),'I am working...')schedule.every(10).seconds.do(job) #每10秒执行一次,如果要加参数,只需在job后面加上参数schedule.every(10).minutes.do(job) # 每10分钟执行一次schedule.every().hour.do(job) # 每小时执行一次schedule.every().day.at("10:30").do(j ...
优雅地处理 Python 中的异常
最近学习 Scala 的异常处理模块时 Scala 模式匹配与异常处理,发现自己对于 Python 中的异常处理地非常不好并且进行 code review 时代码体验非常差,因此本文简单介绍下 Python 中的异常处理以及如何扩展其异常处理模块! 背景 为什么需要进行异常处理呢?例如解析器去执行程序并检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,那么就这样崩溃的软件必然带给用户糟糕的体验。所以必须提供一种异常处理机制来增强你程序的健壮性与容错性。 python 详细的异常处理情况可以参考教程:https://www.runoob.com/python/python-exceptions.html 首先引入python中的常用操作作为示例来了解 python 中的异常,例如除法运算和文件读取操作,如下所示: 1234def example(num1, num2, path): result = num1 / num2 with open(path, 'r') as file: fil ...
Zsh 安装与个性化配置
解决 zsh-autosuggestions 命令行字体不显示灰色而是白色的问题; 在 ~/.zshrc 中加入配置: 1$ echo "export TERM=xterm-256color" >> ~/.zshrc 达到的效果如下: zsh配置 安装 12sudo apt updatesudo apt install zsh 查看版本 1zsh --version 设置为默认shell 查找zsh的安装路径: 1whereis zsh 设为默认shell: 1sudo usermod -s /usr/bin/zsh $(whoami) 重启: 1reboot 重新登录时zsh已启用; 个人终端除了少了用户名root其它没有任何变化。 Oh-my-zsh配置 安装 1sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" 问题1:Fail ...
因果推理之因果图挖掘 PC 算法
基本定义 Skeleton:初始化图 GGG 为无向完全图。 PDAG:设 G=(V,E)G = (V, E)G=(V,E) 是一个图,若边集 EEE 中包含有向边和无向边,则称 𝑃 是一个部分有向图。若部分有向图 𝑃 中不存在有向环,则称 𝑃 是一个部分有向无环图 (PDAG)。 马尔科夫等价:贝叶斯网络 <G1,P1><G_1, P_1><G1,P1> 和 <G2,P2><G_2, P_2><G2,P2> 马尔科夫等价,当且仅当 G1G_1G1 和 G2G_2G2 具有相同的框架和 VVV 结构(即对撞结构)。 有向无环图 G=(V,E)G = (V, E)G=(V,E) ,任意有向边 Vi→Vj∈EV_i \rightarrow V_j ∈ EVi→Vj∈E,若存在图 G′=(V,E′)G' = (V, E')G′=(V,E′) 与 GGG 等价,且Vj→Vi∈E′V_j \rightarrow V_i ∈ E'Vj→Vi∈E′,则称有向边 Vi→VjV ...
解决 VScode 终端 Zsh 主题乱码的问题
问题描述 配置好服务器的zsh后,本地采用Xshell远程登录服务器发现未出现命令行乱码的问题,但是使用VScode终端登录后发现出现乱码的情况,如下图所示: 这样运行命令就太不美观了,因此本篇文章就记录如何解决该问题。 解决问题后达到的效果如下: 问题原因 oh-my-zsh配置中采用的是Powerline字体,而本人本地windows中不包含该系列字体,因此才会出现乱码的问题。知道原因后那么就很好解决该问题了。 直接在windows中安装powerline字体并在vscode中进行设置! 解决步骤 下载powerline字体 下载链接:https://github.com/powerline/fonts 安装字体 windows中安装字体直接打开对应的字体文件夹右键进行安装!(PS:安装一种powerline字体即可) vscode中设置终端 在setting中搜索terminal选项,然后修改字体为powerline字体即可。例如本人采用的是Space Mono For Powerline: 修改完成后字体显示正常啦!果然是好看多了!!! 联系作者
算法工程师 の 自我修养
引用:Hidden technical debt in Machine learning systems [1] 在学好机器学习、深度学习的理论基础之后,如何使用自己的理论知识来解决实际数据分析中的算法问题呢?对于该问题,在此分享下自己在工业界的一点感受。 作为一个萌新初出校门从学术界转移到工业界,必然会遇到非常多的问题。首先是对工业界项目接触较少(个人感觉在学校写论文其实也算一个小型项目😊),关于不同企业的开发环境、项目流程、工作汇报等工作都不熟悉,因此,都会需要一定的时间来适应这种新环境。当然,考虑问题也不仅仅是满足个人需求,例如服务器配置开发环境时需要同时考虑到不同开发人员的调用情形和存在的问题等等。每个人会遇到的问题很多但在此就不详细介绍了,本文主要分享下作为算法工程师可能遇到的问题和需要具备的素养。 作为“炼丹”新手,最大的问题可能就是解决实际问题时的逻辑思路不清晰,也是本人存在的问题。例如,部门中有一个新项目时,如果在学校时间充裕都可以可以使用“蛮力法”来解决问题,思路简述如下: Github 搜索开源代码; 尝试跑下模型或算法,调下参数; 效果不好,接着搜 ...
2020年北京智源大会总结
开幕式 开幕大领导强调了目前深度学习理论已到达瓶颈,如何将科研成果落地是下个十年重要的问题!balabala… 智源社区提出了一套机器学习的符号表示,个人感觉符号这东西重要性不大,如果对某领域有所了解也不会困惑于符号表示! balabala… 专题:深度学习:新进展与新挑战 Ruslan Salakhutdinov 卡耐基梅隆大学教授 知识图谱和知识推理 稍微了解点,为了解决多跳问答准确率低的问题,大佬强调 knowledge base 和 domain knowledge 非常重要(这家伙讲话真快…百度同传翻译准确率真心不高),而我对该领域的knowledge又太少了!!!安心吃早饭… 机器人SLAM 半监督学习与自监督学习 专题:数据向善 Data for Good: Ensuring the Responsible Use of Data to Benefit Society. 周以真 哥伦比亚大学教授 首先就吹了一波哥伦比亚大学和它的教育,balabala… 再讲到了数据隐私和应用方面的问题,又吹哥大的各学院的研究优势…不看了! 接下来讲了下主题模型、智能医疗等 ...