精华内容
下载资源
问答
  • 产品发生异常如何分析
    千次阅读
    2021-04-01 10:09:13

    用SpringMVC时,使用ExceptionHandler去做Controller层的统一异常处理。
    使用ExceptionHandler注解的异常处理方法可以使用很灵活的方法签名。

    如何在异常发生时输出请求

    发生异常时,不仅仅需要输出异常本身,经常还需要根据Request的具体内容来分析、排查问题。
    比如HttpRequestMethodNotSupportedException、HttpMessageConversionException等等,这些异常发生在业务代码处理之前,业务代码是无法获取到request的数据的,发生异常时如果能够看到请求body的具体内容,那么处理起来就可以对症下药,事半功倍。
    说起来简单,做起来却不是很顺当,虽然ExcelptionHandler中可以传入ServerletRequest作为入参,但是ServerletRequest的inputStream只能被读取一次,发生异常的时候再想去读取body只能悲催的得到一个已经Closed的Stream。

    使用ContentCachingRequestWrapper

    1,通过过滤器将ServerletRequest封装成ContentCachingRequestWrapper,body被读取后,会被它缓存。

    @Component
    public class RequestWrapperFilter extends OncePerRequestFilter {
    
        @Override
        protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
            filterChain.doFilter(new ContentCachingRequestWrapper(httpServletRequest), httpServletResponse);
        }
    }
    

    2,ExceptionHandler传入ServletRequest,此时的ServletRequest就是ContentCachingRequestWrapper,输出即可

        @ExceptionHandler(value = Exception.class)
        public ResponseEntity<Response> returnMediaTypeNotSupportError(Exception ex, ServletRequest request) {
            if (request != null && request instanceof ContentCachingRequestWrapper) {
                ContentCachingRequestWrapper wrapper = (ContentCachingRequestWrapper) request;
                logger.error("request_body:{}", StringUtils.toEncodedString(wrapper.getContentAsByteArray(), Charset.forName(wrapper.getCharacterEncoding())));
            }
        }
    
    更多相关内容
  •    前置文章中提及到了各种实用的用例设计方法,本文章将讲解测试人员少见,但很实用的异常分析法,它可是发现bug的利器,快来一起看看吧!~    二、异常分析法简介 2.1 什么是异常分析法?    异常分析法是...

    一、前言

       前置文章中提及到了各种实用的用例设计方法,本文章将讲解测试人员少见,但很实用的异常分析法,它可是发现bug的利器,快来一起看看吧!~

      

    二、异常分析法简介

    2.1 什么是异常分析法?

       异常分析法是针对游戏中玩法、系统有可能存在的异常操作、游戏缺陷引起的联合性缺陷、疑难杂症、故障等各类问题进行分析,依此设计测试用例。主要针对软件系统/游戏的容错能力、故障恢复能力进行测试。通俗而言是以人为的方式让系统出现故障,故障后检查系统故障的恢复能力

      
    2.2 异常分析法的优缺点

    优点:

      能够提升软件/游戏的健壮性,明显提升软件/游戏系统的容错能力

    缺点:

       依赖测试人员的经验,对新手不友好

      

    三、异常分析法应用场景

    3.1 异常分析法的应用场景

       异常分析法可使用的应用场景有很多,具体依赖测试人员的经验,以下列举游戏中很容易出现异常的场景:
                          在这里插入图片描述

      优先级场景:

      对于游戏而言,时间优先级是至关重要的一环内容,比如说PUBG(吃鸡),如果决赛圈剩余2个人且两个人为敌对的状态,这时两个人紧贴且同时一名玩家拉手雷不抛出握在手上(别问,问就是皮),当手雷引爆时如何判断击杀?算A玩家胜利还是B玩家胜利?亦或者导致服务器宕机崩溃…?

      这里所描述的,主要信息在于“同时”,当两名玩家距离无限接近于相同,手雷引爆时间无限接近于相同时,服务器是否能够精准的计算先后顺序并给出正确的数据返回,如果发生错误,可能会导致非常严重的后果。

      对于上述场景,有很多热爱PUBG的玩家真实做了测试,参考:

      吃鸡决赛圈两个人同时死亡

      

      互斥场景:

      生活中存在很多互斥场景,即做了事件A则无法做事件B,但游戏中这类场景经常出现,比如A玩家为队长,B,C,D玩家均为队员,A玩家此时申请进入副本,待小队成员确认,此时A玩家进行了地图跳转操作,操作可能拥有1.5秒引导,引导后跳转地图,如果在1.4秒甚至更极限的情况下,小队成员全员确认完毕,触发了副本进入状态的话就会出现,即有一个地图跳转的事件,又有一个副本进入的请求,从而出现互斥,在部分程序的开发中,可能会忽略这一类互斥的情况,无法判断到底应该跳转地图还是进入副本,导致宕机

      
      
      
      
      好啦~以上就是本次文章分享的全部内容啦,你学会了吗?希望能给大家带来帮助哦!
      

    展开全文
  • 数据分析--异常值处理

    千次阅读 多人点赞 2020-10-04 18:19:35
    异常点在某些场景下极为重要,如疾病预测,通常健康人的身体指标在某些维度上是相似,如果一个人的身体指标出现了异常,那么他的身体情况在某些方面肯定发生了改变,当然这种改变并不一定是由疾病引起(通常被称为

    参考资料:

    机器学习中的异常值检测和处理
    学会五种常用异常值检测方法,亡羊补牢不如积谷防饥 - 机器之心的文章 - 知乎

    1 什么是异常值?

    1. 模型通常是对整体样本数据结构的一种表达方式,这种表达方式通常抓住的是整体样本一般性的性质,而那些在这些性质上表现完全与整体样本不一致的点,我们就称其为异常点

    2. 异常点在某些场景下极为重要,如疾病预测,通常健康人的身体指标在某些维度上是相似,如果一个人的身体指标出现了异常,那么他的身体情况在某些方面肯定发生了改变,当然这种改变并不一定是由疾病引起(通常被称为噪音点),但异常的发生和检测是疾病预测一个重要起始点。相似的场景也可以应用到信用欺诈,网络攻击等等。

    2 异常值的检测方法

    1. 简单统计

    • 直接观察整体数据,使用pandas.describe()观察数据的统计描述(统计数据应当为连续性)
    • 简单使用散点图,从图中即可看出

    在这里插入图片描述

    2. 3 σ \sigma σ原则

    前提条件:数据分布需要服从正态分布或者近似正态分布
    这个是根据正态分布的性质而得出的方法

    在这里插入图片描述

    一个正态分布的横轴区间 ( μ − 3 σ , μ + 3 σ ) (\mu-3\sigma,\mu+3\sigma) μ3σ,μ+3σ)内的面积为99.730020%。
    若是不服从正态分布,可以使用原理 n n n倍标准差来描述,具体 n n n由应用场景确定

    算法实现

    
    import numpy as np
    import matplotlib.pyplot as plt
    seed(1)
    anomalies = []
    
    # multiply and add by random numbers to get some real values
    data = np.random.randn(50000)  * 20 + 20
    
    # Function to Detection Outlier on one-dimentional datasets.
    def find_anomalies(random_data):
        # Set upper and lower limit to 3 standard deviation
        random_data_std = std(random_data)
        random_data_mean = mean(random_data)
        anomaly_cut_off = random_data_std * 3
    
        lower_limit  = random_data_mean - anomaly_cut_off 
        upper_limit = random_data_mean + anomaly_cut_off
        print(lower_limit)
        # Generate outliers
        for outlier in random_data:
            if outlier > upper_limit or outlier < lower_limit:
                anomalies.append(outlier)
        return anomalies
    
    find_anomalies(data)
    

    3.箱型图

    使用箱型图的四方位居(IQR)对异常进行检测,也叫Tukey`s test

    举例:

    #计算df中某列的25%分位,下分位
    Q1 =  np.percentile(df[col], 25)
    #计算df中某列的75%分位,上分位
    Q2 = np.percentile(df[col], 75)
    IQR = Q2-Q1
    

    一般使用IQR的 1.5 1.5 1.5倍为标准:

    • 值大于上四分位+1.5*IQR为异常值
    • 值小于"下四分位-1.5*IQR"为异常值


    在这里插入图片描述

    举例:

    这只是举例检测异常的一个函数
    
    
    def detect_outliers(df,n,features):
        '''
            features:检测这个特征集然后检测特征集中某个特征是否含有异常值,将含有异常值的index记录下来
            若是某个index中(即某行)含有的异常值超过n个,就将其加入到outlier_indices
    
        '''
        outlier_indices=[]
        
        for col in features:
            # 1st quartile(25%)
            Q1 = np.percentile(df[col],25)
            #3rd quartile (75%)
            Q3 = np.percentile(df[col],75)
            # 四分位
            IQR = Q3-Q1
            
            #异常值范围
            outlier_step = 1.5*IQR
            
            outlier_list_col = df[(df[col]<Q1-outlier_step)|(df[col]>Q3 + outlier_step)].index
            
            outlier_indices.extend(outlier_list_col)
            
        outlier_indices = Counter(outlier_indices)
        multiple_outliers = list(k for k,v in outlier_indices.items() if v > n)
        
        return multiple_outliers
    
    

    使用seaborn中的boxplot或者boxenplot画图
    图上的菱形黑点就是异常值

    在这里插入图片描述

    4. 基于模型检测

    这种方法一般会构建一个概率分布模型,并计算对象符合该模型的概率,把具有低概率的对象视为异常点。

    • 如果模型是簇的集合,则异常是不显著属于任何簇的对象;
    • 如果模型是回归时,异常是相对远离预测值的对象。

    离群点的概率定义:离群点是一个对象,关于数据的概率分布模型,它具有低概率。这种情况的前提必须知道数据集服从什么分布,如果估计错误就造成了重尾分布。

    比如特征工程中的RobustScaler方法,在做数据特征值缩放的时候,它会利用数据特征的分位数分布,将数据根据分位数划分为多段,只取中间段来做缩放,比如只取25%分位数到75%分位数的数据做缩放。这样减小了异常数据的影响。

    优缺点

    • (1)有坚实的统计学理论基础,当存在充分的数据和所用的检验类型的知识时,这些检验可能非常有效;
    • (2)对于多元数据,可用的选择少一些,并且对于高维数据,这些检测可能性很差。

    5.基于近邻度的离群点检测

    统计方法是利用数据的分布来观察异常值,一些方法甚至需要一些分布条件,而在实际中数据的分布很难达到一些假设条件,而在实际中数据的分布很难达到一些假设条件,在使用上有一定的局限性

    确定数据集的有意义的邻近性度量比确定它的统计分布更容易。这种方法比统计学方法更一般、更容易使用,因为一个对象的离群点得分由到它的 k k k-最近邻(KNN)的距离给定。

    需要注意的是:离群点得分对 k k k取值高度敏感。如果k太小,则少量的邻近离群点可能导致较低的离群点得分;如果 K K K太大,则点数少于 k k k的簇中所有的对象可能都成了离群点。为了使该方案对于 k k k的选取更具有鲁棒性,可以使用 k k k个最近邻的平均距离。

    优缺点

    1. 简单;
    2. 缺点:基于邻近度的方法需要 O ( m 2 ) O(m^2) O(m2)时间,大数据集不适用;
    3. 该方法对参数的选择也是敏感的;
    4. 不能处理具有不同密度区域的数据集,因为它使用全局阈值,不能考虑这种密度的变化。

    6. 基于密度的异常检测

    从基于密度的观点来说,离群点是在低密度区的对象。、

    基于密度的离群点检测与基于邻近度的离群点检测密切相关,因为密度通常用邻进度定义。

    • 一种常用的定义密度的方法是,定义密度为到k个最近邻的平均距离的倒数。如果该距离小,则密度高,反之亦然。
    • 另一种密度定义是使用DBSCAN聚类算法使用的密度定义,即一个对象周围的密度等于该对象指定距离 d d d内对象的个数。

    优缺点

    1. 给出了对象是离群点的定量度量,并且即使数据具有不同的区域也能够很好的处理;
    2. 与基于距离的方法一样,这些方法必然具有 O ( m 2 ) O(m_2) O(m2)的时间复杂度。对于低维数据使用特定的数据结构可以达到 O ( m log ⁡ m ) O(m\log{m}) O(mlogm)
    3. 参数选择是困难的。虽然LOF算法通过观察不同的k值,然后取得最大离群点得分来处理该问题,但是,仍然需要选择这些值的上下界。

    7.基于聚类的异常检测

    一个对象是基于聚类的离群点,如果该对象不属于任何簇,那么该对象属于离群点

    DBScan 是一种用于把数据聚成组的聚类算法。它同样也被用于单维或多维数据的基于密度的异常检测。其它聚类算法比如 k 均值和层次聚类也可用于检测离群点。

    核心点:在定义DBScan任务的超参数,第一个超参数是min_samples。这只是形成簇所需的最小核心点数量。第二个重要的超参数是eps。eps可以视为同一个簇中两个样本之间的最大距离

    边界点与核心点位于同一个簇中,但前者距离簇的中心要远得多
    在这里插入图片描述

    离群点对初始聚类的影响:

    如果通过聚类检测离群点,则由于离群点影响聚类,存在一个问题:结构是否有效。
    这也是k-means算法的缺点,对离群点敏感。
    为了处理该问题,可以使用如下方法:对象聚类,删除离群点,对象再次聚类(这个不能保证产生最优结果)。
    

    优缺点

    1. 基于线性和接近线性复杂度(k均值)的聚类技术来发现离群点可能是高度有效的;
    2. 簇的定义通常是离群点的补,因此可能同时发现簇和离群点;
    3. 产生的离群点集和它们的得分可能非常依赖所用的簇的个数和数据中离群点的存在性;
    4. 聚类算法产生的簇的质量对该算法产生的离群点的质量影响非常大。

    8.专门的离群点检测

    其实以上说到聚类方法的本意是是无监督分类,并不是为了寻找离群点的,只是恰好它的功能可以实现离群点的检测,算是一个衍生的功能。

    除了以上提及的方法,还有两个专门用于检测异常点的方法比较常用:One Class SVM和Isolation Forest,详细内容不进行深入研究。

    9. 孤立森林

    https://blog.csdn.net/extremebingo/article/details/80108247

         ~~~~     孤立森林是一种无监督学习算法,属于组合决策树家族。这种方法和以上所有方法都不同。之前的所有方法都在试图寻找数据的常规区域,然后将任何在此定义区域之外的点都视为离群点或异常值。

         ~~~~     这种方法的工作方式不同。它明确地隔离异常值, 而不是通过给每个数据点分配一个分数来分析和构造正常的点和区域。它利用了这样一个事实:异常值只是少数,并且它们具有与正常实例非常不同的属性值。

         ~~~~     该算法适用于高维数据集,并且被证明是一种非常有效的异常检测方法。由于本文关注的是实现,而不是理论,因此作者不打算进一步讨论算法的工作原理。但是,周志华合著的论文《Isolation Forest》涵盖了其工作方式的全部细节。

    10.Robust Random Cut Forest

    Github地址

    Random Cut Forest (RCF) 算法是亚马逊用于异常检测的无监督算法。它也通过关联异常分数来工作。较低的分数值表示数据点点是正常的,较高的分数值则表示数据中存在异常。

    「低」和「高」的定义取决于应用,但一般实践表明,超过平均分三个标准差的分数被认为是异常的。
    算法的细节可以在论文《Robust Random Cut Forest Based Anomaly Detection On Streams》里找到。

    这个算法的优点在于它可以处理非常高维的数据。它还可以处理实时流数据(内置 AWS Kinesis Analytics)和离线数据

    作者在下面的视频中更详细地解释了这个概念https://youtu.be/yx1vf3uapX8

    本文给出了与孤立森林相比的一些性能基准。本文的研究结果表明,RCF 比孤立森林更准确、更快速。
    在这里插入图片描述

    3 异常值的处理方法

    • 删除含有异常值的记录
    • 视为缺失值:将异常值视为缺失值,按照缺失值进行处理
    • 平均值修正:可用前后两个观测值的平均值修正该异常值
    • 不处理:不直接在具有异常值的数据集上进行数据挖掘

    是否要删除异常值可根据实际情况考虑。因为一些模型对异常值不很敏感,即使有异常值也不影响模型效果,但是一些模型比如逻辑回归LR对异常值很敏感,如果不进行处理,可能会出现过拟合等非常差的效果。

    展开全文
  • 【方法】DAU异常下降该如何分析

    千次阅读 2021-02-10 12:43:29
    数据分析师, 负责DAU流量增长策略与数据监控, 希望可以和各位一起交流学习。 01前言 “同一个世界,同一个老板”,作为数据分析师,相信此情此景你也一定经历过:正在埋头工作,突然收到老板的一条微信,...

    作者介绍

    @郝笑笑 

    数据分析师,

    负责DAU流量增长策略与数据监控,

    希望可以和各位一起交流学习。

     

    01  前言

     

    “同一个世界,同一个老板”,作为数据分析师,相信此情此景你也一定经历过:正在埋头工作,突然收到老板的一条微信,昨日的DAU为啥降了?然后你“一顿操作猛如虎”,但令人焦灼的是,面对一大堆数据“仔细一看还是原地杵”……

     

    那么我们该如何建立科学的数据分析体系,并从业务的角度给到老板最满意的答案呢?接下来笔者将结合自身做DAU监控以及用户增长的经验,给到屏幕面前的你实用的干货知识!

     

     

    02  梳理你所在公司的用户增长模式

     

    在构建DAU流量监控体系前,建议通过业务人员调研、公司组织架构等途径,摸清楚真正驱动企业用户增长的“核心模式”是什么,以便为后续建立DAU监控体系提供基础;否则,无头苍蝇般地从各个维度拆解数据,会让整个分析工作变得非常低效。

     

    尽管不同业务形态、以及不同发展阶段的公司,其用户增长模式各有差异,但都可以从拉新策略和促活策略进行分解。

     

    常见的拉新策略有:

    1. 流量采购。

      比如通过厂商预装、应用商店渠道、信息流广告、搜索广告、网盟广告等途径付费采购流量。

    2. 基于微信生态的社交裂变。比如归功于微信流量的支持,趣头条会通过“领取金币任务”吸引老用户参与“邀请新用户”的活动;微信读书依靠“组队抽取无限卡”的裂变活动,仅仅半年就暴涨百万用户。

     

    常见的促活策略有:

    1. 外部渠道促活。

      比如:

      通过push唤起App;

      头条系的APP矩阵可以互相促活;

      在广点通第三方媒体投放基于“RTA+个性化商品素材”技术的实时动态出价广告,可以对不活跃的老用户进行促活;

      朋友圈内打开一篇来自知乎的文章后,点击“App内打开”的底部浮层按钮可以唤起知乎App;

      通过负一屏的weiget小组件可以唤起App等;

      双十一短信促活。

    2. 社交裂变。

      例如,拼多多的拼团砍价;

      趣头条唤醒沉睡老用户可以赚钱金币。

    3. 红包补贴。

      往往补贴力度越高,促活的效果越好。

    4. 电商的养成类游戏。

      比如支付宝的蚂蚁森林、拼多多的多多果园、美团的小美果园等。

    5. 用户运营活动。比如签到任务、积分体系等,促活效果取决于虚拟币变现的能力。

     

    值得注意的是,在梳理用户增长的核心驱动力时,需要重点识别影响DAU增长的核心要素。

     

    举个例子,尽管虽然很多公司会有签到任务、积分体系、老拉新任务等用户激励体系,但由于兑换商品吸引力不足等原因导致用户参与度非常低,所以不足以成为促进用户回流的核心手段。

     

    而对于很多App,Push拉活、RTA广告促活已经是提升老用户活跃度的标配手段,促活用户的DAU占比可达10%以上,那么在DAU监控体系中必须将push和rta广告等促活方式作为监控的重点。

     

     

    03  搭建数据监控预警体系

     

    1. 判定DAU是否异常

    常用的方法是:看日环比绝对值、周同比绝对值、日环比、周同比、以及最近30天的变化趋势。

     

    可以基于经验判断异常变化的Δ,比如日环比、周同比上升或下降超过5%可以判定为异常;或者日环比绝对值、周同比绝对值上升或下降超过 xx 万判定为异常。

     

    这个异常Δ怎么设定呢?可以观察至少3个月的DAU波动数据,将波动较大的时间点所对应的数据变化幅值作为异常 Δ。

     

    为实现自动化,建议将下图的监控报表进行数据产品化:即每日以邮件抄送各部门领导层;并在DAU处于异常时,给数据分析组发送报警邮件,以便于分析师第一时间排查诊断,做到在领导还没有张口发问怎么回事之前,就已经知晓背后的原因。

     

    2. 构建DAU拆解的指标体系

    在DAU被判定为异常增高或者异常下降时,就需要基于前面提到的“用户增长模式”,对DAU进行拆解以定位业务原因了。

     

    这里值得一提的是,因为数据分析师的职责就在于通过科学的方法量化业务的表现,所以如果能给到业务方这样的论述,比如:这次DAU日环比下降 50% 的原因是由xxx贡献,30%是由于xxx贡献,20%是由于xxx贡献, 更能够凸显自己在数据分析方面的专业性。

     

    为了对异动原因进行科学的量化和归因,可以按照完全穷尽、互相独立地去拆解日活:

     

    拆解的第一层级为:

    DAU =  当日新增用户 + 首次外部唤起App的老用户 +  首次自然启动App的老用户 

     

    DAU中老用户的拆解,借用了渠道广告归因中“首次归因”的思想,即将全部功劳归因到用户行为路径上的首次行为属性。例如,某个用户当日先通过手机桌面图标 自然启动App,然后又通过push启动了App,但由于“自然启动App”是用户当日行为序列中的首次行为,该用户的这 1个DAU功劳将100%全部归给“自然启动”,push功劳为0。

     

    说明下第一层拆解指标的具体计算方式:

    1. 新增用户可以利用当天激活的设备数来计算;

    2. 外部唤起老用户可以通过埋点统计字段(启动入口)进行区分,当启动入口为非桌面图标启动时记做外部唤起;

    3. 自然启动的老用户,可以通过DAU-当日新增用户-自然启动老用户计算。

    4.  

    拆解的第二层级为:

    • 新增用户。

      可按照渠道、机型等维度来进一步拆分,以细化异动是哪个拉新渠道的问题;

    • 外部唤起App的老用户。

      可按照首次唤起App的入口(比如Push、RTA广告、微信等)拆分。

      即 首次外部唤起App的老用户数= 首次push唤起App的老用户数 + 首次RTA广告唤起App的老用户数 +  ….

    • 自然启动App的老用户,可按照用户访问App的目的进行拆分。具体是,通过对用户站内核心行为的先后发生顺序进行分析,将DAU的贡献归因于首个核心行为模块。比如,某产品的渗透率较高的核心模块有:A、B、C,那么自然启动App的老用户 = 站内首次进入A模块的老用户 +站内首次B模块的老用户 + 站内首次C模块的老用户 + 其他行为模块的老用户。「其他行为模块的用户」,是指未发生以上前面任何核心行为的用户。

     

    这里需要说明的是,如果App核心功能和使用场景比较单一,可以不对自然启动的老用户进行拆解。

     

    3. 计算波动贡献度

    指标Xi的波动贡献度=指标Xi的变化幅度/DAU的变化幅度。贡献度越大,说明该指标对波动的解释效果越好。通过波动贡献度,我们将异常原因定位到是新增用户、还是外部唤起老用户、还是自然回流老用户部分有问题。

     

    比如下面虚构的例子,DAU日环比下降70W,尽管RTA广告、微信启动等也有下降,但下降贡献很小,而老用户回流的下降贡献可达93%,所以问题范围就缩小为老用户回流为何减少。

     

    一般地,如果发现「新增用户」「外部唤起老用户」的异常波动贡献度较大,可以进一步按维度拆解指标并计算波动贡献度,例如按渠道拆分「新增用户」,发现 A 渠道的波动贡献度最高,那么A渠道就是造成DAU波动的主要原因。

     

    如果发现「老用户回流」异常波动贡献度较高,需要排查是否是由于内外部环境变化导致(内部变化:新发版出现bug、运营活动、产品功能;外部变化:节假日、市场变化、竞品策略、热点舆论事件等)。

     

    对于外部因素引起的老用户回流异常,可以结合竞品数据、百度搜索指数、去年同期数据进一步确认。

     

    对于内部因素引起的老用户回流异常:

    • 如果要排查是否是发版bug导致,可以拆分操作系统和版本进行排查

    • 一般地,产品功能、运营活动的影响,可以按照首次归因的思想,计算打开App后首次进入活动页面(或者访问产品功能)的用户Δ增量,只有该 Δ 占 DAU波动Δ 的比例非常高,才能说明该活动对于DAU有显著的影响。

     

    04  向上汇报异常原因

     

    通过上述的波动贡献度计算和逐层下钻,我们可以找出DAU波动的主要因素,和业务方核实确认后,就可以邮件或微信同步上级领导。可参考以下格式进行汇报:

     

    各位领导和同事,

    xx月xx日的DAU为xxxx,周同比下降xx。

    主要原因是:xxxx。

    建议是:1、xxxx;2、xxx;3、xxx。

     

    05  结语

     

    结合自己浅薄的工作经历来看,尽管日活的监控诊断工作可能非常繁琐枯燥,但它可以很好地锻炼我们的数据敏感性。比如,当你完成多轮的拆解归因后,就能知道大概率有哪些因素可能会引起DAU的剧烈涨跌,而哪些因素影响较小,以及哪些拆解指标是需要重点关注的,同时DAU波动的排查工作也会变得越来越娴熟。

     

    以上就是DAU波动诊断的全部内容了,希望大家都能够有所启发。由于本文的案例均来源于实际工作,其中的部分结论可能并不适合所有业务场景;另外,限于自己的知识和视角,本文难免存在一些考虑不周的情况,一些分析方法和思路也许并非最优,若有不足之处,欢迎大家在评论区探讨。

     

     

    一个数据人的自留地是一个助力数据人成长的大家庭,帮助对数据感兴趣的伙伴们明确学习方向、精准提升技能。关注我,带你探索数据的神奇奥秘

     

    1、回“数据产品”,获取<大厂数据产品面试题>

    2、回“数据中台”,获取<大厂数据中台资料>

    3、回“商业分析”,获取<大厂商业分析面试题>;

    4、回“交个朋友”,进交流群,认识更多的数据小伙伴。

     

     

     

    展开全文
  • 异常点检测算法分析与选择

    千次阅读 2018-05-28 12:06:28
    转自:https://blog.csdn.net/xmuecor/article/details/45039163目录111 基于统计的异常点检测算法112 基于距离的异常点检测算法113 基于密度的异常点检测算法114 基于深度的异常点检测算法115 基于偏移的异常...
  • Python数据分析基础: 异常值检测和处理

    万次阅读 多人点赞 2020-10-31 22:05:31
    【Python数据分析基础】: 数据缺失值处理 本篇继续分享数据清洗中的另一个常见问题:异常值检测和处理。 1 什么是异常值? 在机器学习中,异常检测和处理是一个比较小的分支,或者说,是机器学习的一个副产物,因为...
  • 引发的异常: 0xC0000005: 读取位置 0x0000000200000000 时发生访问冲突 运行环境:windows10 open3d visual studio2017 问题描述:在Debug下调试运行正常,但是在Release模式下报错:0x00007FF8FFA61CE7 ...
  • 基于系统日志分析进行异常检测

    万次阅读 多人点赞 2019-11-07 11:04:40
    异常检测:https://github.com/logpai/loglizer 预备知识:需要对逻辑回归、决策树、SVM、PCA、聚类等有一些了解 论文原文:https://github.com/AmateurEvents/article/blob/master/System-Log-Analysis-for-An...
  • 探索性分析中比较常用的功能是,通过数据过滤的功能,如分析数据中的极值、平均值、方差等,识别数据中的异常值;或使用检验的方法,判断后续使用的统计分析方法是否合适等,比如数据的正态分布假设是否成立。 一、...
  • 数据分析学习总结笔记04:异常值处理1 异常值概述2 如何判断异常值2.1 简单的统计分析2.2 3δ原则2.3 四分位数检验/箱型图分析2.4 格拉布斯检验2.5 基于模型检测2.6 基于距离检测2.7 基于密度检测3 如何处理异常值 ...
  • 数据异常波动,应该如何分析

    千次阅读 2020-04-21 21:37:00
    ↑关注 + 置顶 ~ 别错过小z的干货内容来源:python数据分析和机器学习对于一枚数据分析师而言,监控日常指标数据是必不可少的工作之一,数据异常分析是数据分析工作中最常见且重要的...
  • troubleshoot之:分析OutOfMemoryError异常

    万次阅读 2020-08-14 10:10:05
    OutOfMemoryError 先看一下OutOfMemoryError的定义,OutOfMemoryError继承自 VirtualMachineError,它是Error的一种,表示的是应用程序无法处理的异常,一般情况下会导致虚拟机退出。 public class ...
  • 数据分析异常值检测与处理

    万次阅读 多人点赞 2020-03-20 15:10:22
    (一)什么是异常值? 在机器学习中,异常检测和处理是一个比较小的分支,或者说,是机器学习的一个副产物,因为在一般的预测问题中,模型通常是对整体样本数据结构的一种表达方式,这种表达方式通常抓住的是整体...
  • "调用的目标发生异常。"问题处理

    万次阅读 2015-10-29 11:15:56
    我在用反射创建类的时候,提示“调用的目标发生异常。”,如下图所示: 我上网找了很久,都没有找到答案,纠结了一下下。我想,这个提示很清楚,就是我的调用类是不是有bug,所以才没有办法用反射创建类呢?我就...
  • MVC中出现“初始化数据库时发生异常”,已经出现过两次。第一次处理时乱点一气,也不知道如何解决的,今天又出现了,好好研究一下: 分析后,应该是当前的数据库无法正常打开导致的。做如下处理: 1. 在VS中删除...
  • 此文是转载的,转载了我朋友的。 今天给大家分享一下数据分析基础的一些学习笔记,希望对你有用。 ...生活中我们总能遇见一些喜欢说“我认为...这里就以产品经理岗位的角色讲解数据分析。 一、什么是数据...
  • 57 more 20-Feb-2021 16:32:55.952 严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke 调用方法[createStandardContext]时发生异常 javax.management....
  • 有两种根因分析的需要,一种就是单指标异常检测,就是指标就是一维的这种,如果这种指标发生异常,直接就能够锁定到相关时间,位置,如果这种做异常检测,自然就需要升维,就是比如说,同时针对几个指标来进行,用...
  • wireshark TCP常见异常报文分析

    千次阅读 2019-10-19 15:44:59
    流媒体播放中,常常需要借助wireshark从TCP层面对交互过程进行分析,本文记录一些常见的TCP异常报文及其分析。 乱序与丢包 1、[TCP Previous segment not captured] [TCP Previous segment not captured]报文指的...
  • 【数据分析异常值与缺失值

    千次阅读 2021-05-27 15:09:01
    异常值与缺失值1、缺失值分析与处理1.1 造成缺失的原因1.2 缺失的一般处理方法1.3 数据集介绍及缺失值填充参考文献 1、缺失值分析与处理 1.1 造成缺失的原因 由于数据采集设备、传输线路故障等机械原因或者记录失误...
  • 异常检测数据集收集与介绍分析

    千次阅读 2021-09-28 14:08:07
    在计算机视觉的大研究领域内,有一个小方向叫做异常检测(Anomaly Detection),也叫做新颖性检测。在该方向下有以下的数据集作为大家所提出的新的研究方法的检测精度的测试。 UCSD异常检测数据集:视频–>图片 ...
  • 一次RPC服务调用异常分析

    千次阅读 2018-07-02 12:29:01
    现象:RPC请求一直超时异常如下java.lang.RuntimeException: xxxRpcTimeOutException-null 分析:查看代码,可能是某个sql或者第三方服务调用超时造成的,查找该服务业务日志,没有发现任何异常日志数据!!这下子尴尬...
  • Java异常打印输出中常见方法的分析

    万次阅读 多人点赞 2017-04-30 22:10:35
    但是一般在我们的项目中,由于经验阅历等多方面的原因,依然有若干的童鞋在代码中没有正确的使用异常打印方法,导致在项目的后台日志中,没有收到日志或者日志信息不完整等情况的发生,这些都给项目埋下了若干隐患。...
  • 基于深度学习的日志数据异常检测

    万次阅读 多人点赞 2020-12-27 12:00:12
    基于日志数据的异常检测 数据对象 智能运维(AIOps)是通过机器学习等算法分析来自于多种运维工具和设备的大规模数据。智能运维的分析数据对象多源运维数据包括系统运行时数据和历史记录数据,历史记录数据主要包含...
  • 如何分析产品日活用户数下降? 一、案例再现 面试官:你好,请问如果xx产品的日活突然下降,请问你会从哪些角度去分析呢? 我:嗯。。。。。。那个……嗯。。。。。。。可能有一些外部因素吧,导致日活下降了,再...
  • Java常见异常类型及原因分析

    千次阅读 2018-08-24 17:07:05
    Java常见异常类型及原因分析 0x1 NullPointerException异常 顾名思义,NullPointerException 是空指针异常。但是在 Java 中没有指针,怎么会有 空指针异常呢? 在 C++中,声明的指针需要指向一个实例(通过 new...
  • 产品经理数据分析入门

    万次阅读 多人点赞 2017-11-20 11:47:25
    这篇文章一共会分为四个部分进行讲解。 认识数据 通过这部分我们可以知道什么是数据,数据与产品之间的关系等。...这里我们可以知道在做产品的时候,使用数据的一些场景和利用数据驱动产品的思维方式
  • 异常检测模型整理

    千次阅读 2021-08-01 18:30:07
    异常检测主要检测数据中的离群点,异常数据的特征值与正常数据的特征值距离较远。 异常检测具有以下难点: 标签数据较少,从较少的标签数据中很难学习到哪些是正常数据,哪些是异常数据。 难以划分异常和正常的边界...
  • windows7系统运行没有问题,但是放到Windows...System.Reflection.TargetInvocationException: 调用的目标发生异常。 ---> System.Reflection.TargetInvocationException: 调用的目标发生异常。 ---> Sy...
  • 数据分析异常值的应用

    千次阅读 2019-03-25 22:43:14
    异常值的概念 异常值,不符合正态分布或者不符合业务逻辑的数据,统称为异常值。 异常值的剔除 1.异常值不符合正常的,误差等不符合规律。 2.让数据符合规律,让某些不符合业务逻辑的数据进行剔除。 异常值的成因 1....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 382,317
精华内容 152,926
热门标签
关键字:

产品发生异常如何分析