精华内容
下载资源
问答
  • 记用户A的训练样本是 train_dataA (用户A的历史行为数据) 用户B的训练样本是 train_dataB (用户B的历史行为数据) 用户A的真实购买物品集合是 set_A (ground_truth...平均召回定义为 [ ( set_A∩set_fake_A / ...

    记用户A的训练样本是  train_dataA  (用户A的历史行为数据)

       用户B的训练样本是  train_dataB   (用户B的历史行为数据)

     

    用户A的真实购买物品集合是  set_A (ground_truth)

    用户B的真实购买物品集合是  set_B  (ground_truth)

     

    推荐算法给A推荐的记为    set_fake_A

    推荐算法给B推荐的记为    set_fake_B

     

    平均召回率定义为  [ ( set_A∩set_fake_A   /   len(set_A)) +  ( set_B∩set_fake_B   /   len(set_B))  ]    /2

    标准召回率是   (set_A∩set_fake_A + set_B∩set_fake_B)/( len(set_A)+len(set_B))

    len(set_A)代表 set_A的长度(集合元素个数)

     

    举个例子:

    这里的推荐是TopN推荐,N取2,也就是一次给用户推荐两个。

    用户A实际购买了物品  {a,b,c,d,e}       算法给用户A推荐物品{a,b}   这样命中的就是a,b    命中了2个

    用户B实际购买了物品  {e,f,g}             算法给用户B推荐物品{d,e}    这样命中的就只有e    命中了1个

    平均召回率=[( 2/5 ) + ( 1/3 )]/2  =  0.367

    标准召回率=[(2+1)/(5+3)]=0.375

     

    平均召回率可以更好的描述推荐算法的性能,这是因为平均召回率考虑到了召回一个元素的难度。

    举例来说

    用户A实际购买10个物品,推荐算法的推荐结果命中一个

    用户B实际只购买2个物品,推荐算法的推荐结果也是只命中一个

    那么平均召回率=(1/10+1/2)/2=0.3

    标准召回率=(1+1)/(10+2)=0.167     这里推荐算法命中的结果都是1,然后直接相加了起来,这里显然不合理,因为2个中1个是比较难的,10个中1个是较为简单的,所以这两个1应该区别开来。

    平均召回率就更好的衡量了推荐算法的性能。

     

     

    展开全文
  • 城市道路交通拥挤事件的相对增量判别准则和平均占有自动检测算法,庄斌,杨晓光,本文针对我国城市道路中存在的交通拥挤现象,从分析交通流基本要素着手,通过对城市道路路段上环形线圈采集到的交通流流量和占有
  • 滑动平均算法

    2019-12-07 17:28:36
    为什么要使用滑动平均模型? 因为在神经网络中, 更新的参数时候不能太大也不能太小,更新的参数跟你之前的参数有联系,不能发生突变。一旦训练的时候遇到个“疯狂”的...参数decay:滑动平均模型通过控制衰减(d...

    为什么要使用滑动平均模型?
    因为在神经网络中, 更新的参数时候不能太大也不能太小,更新的参数跟你之前的参数有联系,不能发生突变。一旦训练的时候遇到个“疯狂”的参数,有了滑动平均模型,疯狂的参数就会被抑制下来,回到正常的队伍里。这种对于突变参数的抑制作用,用专业术语讲叫鲁棒性,鲁棒性就是对突变的抵抗能力,鲁棒性越好,这个模型对恶性参数的提抗能力就越强。

    参数decay:滑动平均模型通过控制衰减率(decay)来控制参数更新前后之间的差距,从而达到减缓参数的变化幅度的目的(如,参数更新前是5,更新后的值是4,通过滑动平均模型之后,参数的值会在4到5之间),如果参数更新前后的值保持不变,通过滑动平均模型之后,参数的值仍然保持不变。
    **num_updates:**默认为None,如果设置了num_updates,那么这个参数就代表了模型更新的次数,每次使用的衰减率将会按照如下公式更新:
    decay = min{init_decay , (1 + num_update) / (10 + num_update)}
    随着 num_update 更新次数的增加,(1 + num_update) / (10 + num_update 这一项的计算结果越接近1

    此时原模型参数按照以下公式更新:
    shadow_variable = decay * shadow_variable + (1 - decay) * variable
    其中 shadow_variable 为变量更新前的数值,我们叫它影子变量,variable为变量更新后的数值,上面我们说到,随着num_updates的增大,decay的计算结果越来越接近1,那么1-decay就趋近于0,即,模型参数更新变得越来越慢。

    这样,我们就可以通过对num_updates的控制来使得模型在训练初期参数更新幅度加大,在接近最优值处参数更新幅度减小,即在减少训练时间的基础上保证模型训练的精度。

    如何使用滑动平均模型?

    import tensorflow as tf
    
    #定义一个变量用于计算滑动平均,初始值为 0 ,类型为实数
    v1 = tf.Variable(0, dtype = tf.float32)
    #step变量用来模拟神经网络中迭代的轮数,即我们上面说的num_updates参数,用来动态控制衰减率
    step = tf.Variable(0, trainable = False)
    
    #定义一个滑动平均类,初始化衰减率(0.99)和衰减率控制变量step
    #该函数返回一个ExponentialMovingAverage对象,该对象调用apply方法可以通过滑动平均模型来更新参数
    ema = tf.train.ExponentialMovingAverage(0.99, step)
    
    #定义一个更新变量滑动平均的操作。
    #这里的给定数据需要是列表的形式,每次执行这个操作时列表中的变量都会被更新
    maintain_averages_op = ema.apply([v1])
    
    with tf.Session() as sess:
        init_op = tf.global_variables_initializer()
        sess.run(init_op)
        
    #通过ema.average(v1)获取滑动平均之后变量的取值,此处输出为[0.0 , 0.0]
    #初始化之后变量v1和v1的滑动平均都为0
        print sess.run([v1, ema.average(v1)])
    
    #更新变量v1的值为5
        sess.run(tf.assign(v1, 5))
    #更新v1的滑动平均值
    #此时衰减率为min(0.99,(1+step)/(10+step)=0.1) = 0.1
    #所以v1的滑动平均会被更新为0.1*0 + 0.9*5 = 4.5
        sess.run(maintain_averages_op)
        print sess.run([v1, ema.average(v1)])   #输出[5.0 , 4.5]
    
    #更新step的值为10000
        sess.run(tf.assign(step, 10000))
    #更新v1的值为10
         sess.run(tf.assign(v1, 10))
    #计算v1的滑动平均值
    #此时衰减率为min(0.99,(1+step)/(10+step)=0.999999) = 0.99
    #所以v1的滑动平均会被更新为0.99*4.5 + 0.01*10 = 4.555
        sess.run(maintain_averages_op)
        print sess.run([v1, ema.average(v1)])   #输出[10.0, 4.5549998]  
           
    #再次更新滑动平均值,得到的新的滑动平均值为0.99*4.555 + 0.01*10 = 4.60945
        sess.run(maintain_averages_op)
        print sess.run([v1, ema.average(v1)])    #输出[10.0, 4.6094499]
        
    

    吴恩达老师Deeplerning课程对于滑动平均算法有更深的讲解。

    展开全文
  • 旋转法是一种用于获得被测面旋转非对称面形的绝对检测技术。...与旋转平均法相比,只需增加一次旋转,就能得到更完整的面形,极大地提高了检测效率和精度,实验中补偿达到61%,检测精度提高了约1倍。
  • 转化率算法大赛

    2019-10-08 21:25:10
    最近做了一个月的腾讯广告大赛,总结一下,算法程序 腾讯给出了两个代码 1、基于平均分组转化的代码 # -*- coding: utf-8 -*- """ baseline 1: history pCVR of creativeID/adID/camgaignID/...

    最近做了一个月的腾讯广告大赛,总结一下,算法程序

     

    腾讯给出了两个代码

    1、基于平均分组转化的代码

     

    # -*- coding: utf-8 -*-
    """
    baseline 1: history pCVR of creativeID/adID/camgaignID/advertiserID/appID/appPlatform
    """
    
    import zipfile
    import numpy as np
    import pandas as pd
    
    # load data
    data_root = "."
    dfTrain = pd.read_csv("%s/train.csv"%data_root)
    dfTest = pd.read_csv("%s/test.csv"%data_root)
    dfAd = pd.read_csv("%s/ad.csv"%data_root)
    
    # process data
    dfTrain = pd.merge(dfTrain, dfAd, on="creativeID")
    dfTest = pd.merge(dfTest, dfAd, on="creativeID")
    y_train = dfTrain["label"].values
    
    # model building
    key = "appID"
    dfCvr = dfTrain.groupby(key).apply(lambda df: np.mean(df["label"])).reset_index()
    dfCvr.columns = [key, "avg_cvr"]
    dfTest = pd.merge(dfTest, dfCvr, how="left", on=key)
    dfTest["avg_cvr"].fillna(np.mean(dfTrain["label"]), inplace=True)
    proba_test = dfTest["avg_cvr"].values
    
    # submission
    df = pd.DataFrame({"instanceID": dfTest["instanceID"].values, "proba": proba_test})
    df.sort_values("instanceID", inplace=True)
    df.to_csv("submission.csv", index=False)
    with zipfile.ZipFile("submission.zip", "w") as fout:
        fout.write("submission.csv", compress_type=zipfile.ZIP_DEFLATED)
    平均分组

    2、基于热编码后进行逻辑回归算法的预测算法

     

    # -*- coding: utf-8 -*-
    """
    baseline 2: ad.csv (creativeID/adID/camgaignID/advertiserID/appID/appPlatform) + lr
    """
    
    import zipfile
    import pandas as pd
    from scipy import sparse
    from sklearn.preprocessing import OneHotEncoder
    from sklearn.linear_model import LogisticRegression
    
    # load data
    data_root = "."
    dfTrain = pd.read_csv("%s/train.csv"%data_root)
    dfTest = pd.read_csv("%s/test.csv"%data_root)
    dfAd = pd.read_csv("%s/ad.csv"%data_root)
    
    # process data
    dfTrain = pd.merge(dfTrain, dfAd, on="creativeID")
    dfTest = pd.merge(dfTest, dfAd, on="creativeID")
    y_train = dfTrain["label"].values
    
    # feature engineering/encoding
    enc = OneHotEncoder()
    feats = ["creativeID", "adID", "camgaignID", "advertiserID", "appID", "appPlatform"]
    for i,feat in enumerate(feats):
        x_train = enc.fit_transform(dfTrain[feat].values.reshape(-1, 1))
        x_test = enc.transform(dfTest[feat].values.reshape(-1, 1))
        if i == 0:
            X_train, X_test = x_train, x_test
        else:
            X_train, X_test = sparse.hstack((X_train, x_train)), sparse.hstack((X_test, x_test))
    
    # model training
    lr = LogisticRegression()
    lr.fit(X_train, y_train)
    proba_test = lr.predict_proba(X_test)[:,1]
    
    # submission
    df = pd.DataFrame({"instanceID": dfTest["instanceID"].values, "proba": proba_test})
    df.sort_values("instanceID", inplace=True)
    df.to_csv("submission.csv", index=False)
    with zipfile.ZipFile("submission.zip", "w") as fout:
    fout.write("submission.csv", compress_type=zipfile.ZIP_DEFLATED)
    逻辑回归

    然后我基于第二组的代码进行不同的特征选择,最终这个比较好

     

    # -*- coding: utf-8 -*-
    """
    baseline 2: ad.csv (creativeID/adID/camgaignID/advertiserID/appID/appPlatform) + lr
    """
    
    import zipfile
    import pandas as pd
    from scipy import sparse
    from sklearn.preprocessing import OneHotEncoder
    from sklearn.linear_model import LogisticRegression
    
    # load data
    data_root = "."
    dfTrain = pd.read_csv("%s/train.csv"%data_root)
    dfTest = pd.read_csv("%s/test.csv"%data_root)
    dfAd = pd.read_csv("%s/ad.csv"%data_root)
    dfapp_categories = pd.read_csv("%s/app_categories.csv"%data_root)
    dfuser = pd.read_csv("%s/user.csv"%data_root)
    dfposition = pd.read_csv("%s/position.csv"%data_root)
    
    # process data
    dfad=pd.merge(dfAd,dfapp_categories,on="appID")
    dfTrain = pd.merge(dfTrain, dfad, on="creativeID")
    dfTrain = pd.merge(dfTrain, dfposition,how='left',on="positionID")
    dfTest = pd.merge(dfTest, dfad, on="creativeID")
    dfTest = pd.merge(dfTest, dfposition, how='left', on="positionID")
    y_train = dfTrain["label"].values
    dfTest.sort_values("instanceID", inplace=True)
    dfTrain.to_csv("strain.csv", index=False)
    dfTest.to_csv("stest.csv", index=False)
    # feature engineering/encoding
    enc = OneHotEncoder()
    feats = ["creativeID", "adID", "camgaignID", "advertiserID", "appPlatform","appID","appCategory","positionID","sitesetID","positionType","userID","connectionType","telecomsOperator"]
    for i,feat in enumerate(feats):
        x_train = enc.fit_transform(dfTrain[feat].values.reshape(-1, 1))
        x_test = enc.transform(dfTest[feat].values.reshape(-1, 1))
        if i == 0:
            X_train, X_test = x_train, x_test
        else:
            X_train, X_test = sparse.hstack((X_train, x_train)), sparse.hstack((X_test, x_test))
    
    
    
    # 模型训练
    # model training
    lr = LogisticRegression()
    lr.fit(X_train, y_train)
    proba_test = lr.predict_proba(X_test)[:,1]
    
    # submission
    df = pd.DataFrame({"instanceID": dfTest["instanceID"].values, "proba": proba_test})
    df.sort_values("instanceID", inplace=True)
          
    df.to_csv("submission.csv", index=False)
    with zipfile.ZipFile("submission.zip", "w") as fout:
        fout.write("submission.csv", compress_type=zipfile.ZIP_DEFLATED)
    最好的

    不同的特征,结果是不同的,所以如果以后做算法大赛的话,需要的还是调参和特征选择

     

    PS:

     

    使用的Python中SK-learn包中的一些机器学习算法,Python的好处就是简洁,另外有很多机器学习的算法都已经集成在包中,使用时

    调用即可,不用再去写算法的代码。

    PSS:此次成绩不是很理想,最高也仅仅是3百多名而已,以后还要深入学习Python机器学习方面的知识,为以后的工作打下基础。

    PSSS:此次大赛的数据集在此

    链接:http://pan.baidu.com/s/1nv7cf49 密码:gqz1

    转载于:https://www.cnblogs.com/b-l-java/p/6973754.html

    展开全文
  • 基于短时能量和平均过零的语音信号的特征参数提取的算法介绍
  • 为此,利用无监督学习数据的局部特性或监督学习中样本的类别信息建立样本的权重,从而提出一种基于样本加权的格拉斯曼平均算法,在UCI数据集和ORL人脸数据库上的实验结果表明,新算法有好的鲁棒性并且其识别比已...
  • 算法平均年龄

    2017-03-17 20:53:28
    今天这题也十分容易。。但是卧槽。。我做的十分气愤。。因为我明明本地ide下输入输出都是正确...从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(最后结果向上取整)。  输入描述: 输入W Y

    今天这题也十分容易。。但是卧槽。。我做的十分气愤。。因为我明明本地ide下输入输出都是正确的,但是网页提交就是有问题。。

    来自美团

    题目描述

    已知某公司总人数为W,平均年龄为Y岁(每年3月末计算,同时每年3月初入职新人),假设每年离职率为x,x>0&&x<1,每年保持所有员工总数不变进行招聘,新员工平均年龄21岁。 
    从今年3月末开始,请实现一个算法,可以计算出第N年后公司员工的平均年龄。(最后结果向上取整)。 
    输入描述:
    输入W Y x N


    输出描述:
    输出第N年后的平均年龄

    输入例子:
    5 5 0.2 3

    输出例子:
    15

    import java.util.Scanner;
    
    public class Main{
    	public static void main(String[] args){
        	Scanner sin = new Scanner(System.in);
    
            while (sin.hasNext()) {
            	    String tmp = sin.nextLine().trim();
            		String[] words=tmp.split(" ");
                    float[] len=new float[4];
                    if(words.length>3){
                    	len[0]=Float.valueOf(words[0]);
                        len[1]=Float.valueOf(words[1]);
                        len[2]=Float.valueOf(words[2]);
                        len[3]=Float.valueOf(words[3]);
                    }
                    float answear=len[1];
                    for(int i=0;i<len[3];i++){
                    	answear=(float)(answear+1)*(1-len[2])+21*len[2];
                    }
                    System.out.print((int) Math.ceil(answear));
            }
        }
    }


    展开全文
  • 再利用自适应指数加权移动平均滤波算法对透射进行优化;之后修复明亮区域透射,避免颜色失真;最后通过变换大气散射模型求解得到去雾图像。实验结果表明:本文算法具有很快的执行速度,且经本文算法处理后的去雾图像...
  • 个性化社交网络协同过滤推荐系统依赖用户的社交关系(用户关注用户...本文主要讲解了个性化社交网络协同过滤推荐系统的开发环境、数据集、开发过程、协同过滤推荐算法、推荐算法测评指标等内容。 一、个性化社交网...
  •  # 偏差修正指的是前面起始的数据 进行修正 超参数的选择 Adam 优化算法有很多的超参数,其中 学习 α:需要尝试一系列的值,来寻找比较合适的; β1:常用的缺省值为 0.9; β2:Adam 算法的作者建议为 0.999; ...
  • 针对K-均值聚类算法对初始聚类中心存在依赖性的缺陷,提出一种基于数据空间分布选取初始聚类中心的改进算法....实验表明,改进后的算法不仅提高了聚类结果的稳定性和正确,而且迭代次数明显减少,收敛速度快.
  • 为了提高个性化推荐效率和推荐质量,平衡冷门与热门数据推荐权重,对关联规则的Apriori算法频繁项集挖掘问题进行了重新评估和分析,定义了新的测评指标推荐非空以及k前项频繁项集关联规则的概念,设计了基于 k 前...
  • 首先,定义各参数 samples:总请求数 duration:持续时间(基于jmeter原理,实际持续时间可能大于填写持续时间) thread:并发数 totalrt:所有请求的响应时间之和 1.TPS:每秒事务数 ...2.平均响应时间(...
  • 实验结果表明,该方法提高了恢复图像质量,有效地减少了优化截取内嵌码块编码算法的计算量和内存使用量(bpp=1时,测试图像的整体、感兴趣区域和背景区域平均峰值信噪比均提高0.1dB以上,计算量和内存使用量平均减少40%和...
  • 在采用随机梯度下降算法训练神经网络时,使用滑动平均模型可以提高最终模型在测试集数据上的表现。在Tensflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模型。在初始化ExponentialMovingAverage时,...
  • Hash算法碰撞统计

    千次阅读 2018-11-23 15:12:38
    之前公司需要调研这方面的,做了统计。... 1000万次的平均执行时间 一亿次的平均执行时间 一亿次的平均长度 BKDRHash  0.00002 0.000112 0.000251 0.0011894 0.0023321 0.0229439 ...
  • 为了提高多元低密度奇偶校验(LDPC, low density parity-check)码符号翻转译码算法的性能并降低译码的复杂度,提出了基于平均概率和停止准则的多元 LDPC 码加权符号翻转译码(APSCWSF, average probability and ...
  • 滑动平均模型,一般用于提升模型在测试集上的准确。需要指定一个更新比率decay,一般会指定为比较大的一个值,比如0.996这种,同时会维护一个影子变量shadow,模型中的每个参数都会有一个与之对应的影子变量,这个...
  • 基于用户的协同过滤推荐算法单机版代码实现(包含输出用户-评分矩阵模型、用户间相似度、最近邻居、推荐结果、平均绝对误差MAE、查准、召回) 一、开发工具及使用技术 MyEclipse10、jdk1.7、mahout API、...
  • 为了提高容迟网络的传递、降低传输延迟、对节点缓存进行更有效的管理,结合已有的PROPHET和Spray and Wait算法,提出了一种基于平均传递概率的容迟网络路由算法RAB-ADP。在该算法中设置了一个与时间有关的平均传递...
  • 预测院校录取分数线,计算近十年的目标院校录取难度系数,院校录取难度系数=院校录取平均分/省控线,该校综合录取难度=院校录取难度系数*大小年权值的累加。假设考生所在省份n+1年省控线为X,则预测n+1年的院校录取...
  • 首先,利用图片本身的属性,图片的灰度平均值进行识别分类,我运行出来的准确是22%左右 利用图片的灰度平均值来进行分类实现手写图片识别(数据集50000张图片)——Jason niu 其次,利用SVM算法,我...
  • 梯度下降算法主要用于优化单个参数的取值,而反向传播算法给出了一个高效的方式在所有的参数上使用梯度下降算法,从而使得神经网络模型在训练数据上的损失函数尽可能小。反向传播算法是训练神经网络的核心算法,它...
  • 为解决视频图像在互联网中进行传输时,其质量易受网络丢包、时延等因素的影响而显著降低的问题...该算法不但降低了视频传输的平均时延和丢包,而且提高了接收端视频图像的重建质量,具有复杂度低、实现简单的特点。
  • 原作:cloud&amp;ken发表于:博客园链接:...基本思想:计算梯度的指数加权平均数并利用该梯度更新你的权重假设图中是你的成本函数,你需要优化你的成本函数函数形象如图所示.其中红点所示就是你的最低点.使用常规...
  • 算法

    2017-01-05 15:57:16
    算法一:快速排序算法 ...事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效地被实现出来。 快速排序使用分治法(Divide and conquer)策

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,286
精华内容 914
关键字:

平均率算法