精华内容
下载资源
问答
  • 简单讲,传统推荐模型的发展主要由以下几部分组成 协同过滤算法族 即上图中蓝色部分,协同过滤是推荐系统的首选模型,从物品相似度和用户相似角度出发,衍生出了ItemCF和UserCF两种算法。为了使协同过滤衍生出矩阵...

    本文来自王喆老师《深度学习推荐系统》一书,如果有一定的推荐系统基础的话,建议读一读,当然如果只是初学者的话还是建议从基础的开始学起,比如《推荐系统开发实战》。

    传统机器学习推荐模型演化

    传统机器学习推荐模型演化

    简单讲,传统推荐模型的发展主要由以下几部分组成

    协同过滤算法族

    即上图中蓝色部分,协同过滤是推荐系统的首选模型,从物品相似度和用户相似角度出发,衍生出了ItemCF和UserCF两种算法。为了使协同过滤衍生出矩阵分解模型(Matrix Factorization,MF),并发展出矩阵分解的各分支模型。

    逻辑回归模型族

    协同过滤仅利用用户和物品之间显式或者隐式反馈信息,逻辑回归能够利用和融合更多用户、物品和上下文特征。从LR模型衍生出的各种模型同样“枝繁叶茂”,包括增强了非线性能力的大规模分片线性模型(Large Scale Piece-wise Linear Model,LS-PLM),由逻辑回归发展出来的FM模型,以及与多种不同模型配合使用后的组合模型等。

    LS-PLM模型是阿里巴巴曾经使用的主流推荐模型,本质上,LS-PLM可以看作是对逻辑回归的自然推广,他在逻辑回归的基础上采用了分而治之的思路,先对样本进行分片,而在样本分片中应用逻辑回归进行CTR预估。

    比如在电商领域要预估女性受众点击女装广告的CTR,那么显然我们不希望把男性用户点击数码类的样本数据也考虑进来,因为这些样本不仅与我们要训练的模型目标无关,甚至会在模型训练过程中扰乱相关特征的权重,为了让CTR模型对不同用户群体、不同使用场景更加具有针对性,其采用的方法是先对全量样本进行聚类,再对每个分类实施逻辑回归进行CTR预估。LS-PLM的思路就来自于此。

    LS-PLM的数学形式为:
    f(x)=i=1mπi(x).ηi(x)=i=1meμi.xj=1meμj.x.11+ewi.x f(x) = \sum_{i=1}^{m}\pi_i (x).\eta _i(x) = \sum_{i=1}^{m} \frac{e^{{\mu_i.x}}}{ \sum_{j=1}^{m}e^{{\mu_j.x}} } . \frac{1}{1+e^{-w_i . x}}

    首先用聚类函数π\pi对样本进行分类(这里的π\pi采用了softmax函数对样本进行多分类),再用LR模型计算样本在分片中具体的CTR,然后将二者相乘后求和。

    其中超参数 “分片数” mm 可以较好的平衡模型的拟合和推广能力。m=1m=1时,LS-PLM退化为LR,mm越大,模型的拟合能力越强。阿里给出的mm的经验值为12。

    因子分解机模型族

    因子分解机模型在传统的逻辑回归的基础上,加入了二阶部分,使模型具备了进行特征组合的能力,更进一步,在因子分解机基础上发展出来的域感知因子分解机(Field-aware Factorization Machine,FFM)则通过加入特征域的概念,进一步加强了因子分解机特征交叉的能力。

    组合模型

    为了融合多个模型的优点,将不同模型组合使用时构建推荐模型常用的方法,Fackbook提出的GBDT+LR组合模型是业界影响力较大的组合方式,此外,组合模型体现出的特征工程模型化的思路,也成为了深度学习推荐模型的引子和核心思想之一。

    前沿深度学习推荐模型演化

    前沿深度学习推荐模型演化

    改变神经网络的复杂程度

    从最简单的单层神经网络模型(AutoRec),到经典的深度神经网络结构(Deep Crossing),其主要的进化方式在于—增加了深度神经网络的层数和结构复杂度。

    改变特征交叉方式

    这类模型的主要改变在于丰富了深度学习网络中的特征交叉的方式。例如,改变了用户向量和物品向量互操作方式的NCF(Neural Collaborative Filtering,神经网络协同过滤),定义了多种特征向量交叉操作的PNN(Product-based Neural Network,基于积操作的神经网络)模型。

    组合模型

    这类模型主要是指Wide&Deep模型及其后续变种等,其思路是通过组合两种不同特点、优势互补的深度学习网络,提升模型的综合能力。

    FM模型的深度学习演化版本

    传统推荐模型FM在深度学习时代有了诸多后续版本,其中包括NFM(Neural Factorization Machine,神经网络因子分解机),FNN(Factorization-machine supported network,基于因子分解机支持的神经网络),AFM(Attention neural Factorization Machine,注意力因子分解机)等,他们对FM的改进方向各不相同。例如NFM模型主要使用神经网络提升FM二阶部分的特征交叉能力,AFM是引入了注意力机制的FM模型,FNN利用FM的结果进行网络初始化。

    注意力机制与推荐模型的结合

    这类模型主要是将注意力机制应用于深度学习推荐模型中,主要包括了FM与注意力机制的AFM和引入了注意力机制的CTR预估模型DIN(Deep Interest Network,深度兴趣网络)

    序列模型与推荐模型的结合

    这类模型的特点是使用序列模型模拟用户行为和用户兴趣的演化趋势,代表模型是DIEN(Deep Interest Evolution Network,深度兴趣进化网络)

    强化学习与推荐模型的结合

    这类模型将强化学习应用与推荐领域,签到模型的在线学习和实时更新,其代表模型是DRN(Deep Reinforcement Laearning Network,深度强化学习网络)。


    【技术服务】详情点击查看: https://mp.weixin.qq.com/s/PtX9ukKRBmazAWARprGIAg

    在这里插入图片描述
    扫一扫关注「搜索与推荐Wiki」!号主「专注于搜索和推荐系统,以系列分享为主,持续打造精品内容!

    展开全文
  • 1.背景 采样算法是机器学习中比较常用,也比较容易实现的(出去分层采样)。常用的采样算法以下种(来自百度知道): 一、单纯随机抽样(simple random sampling) 将调查总体全部观察单位编号,再用抽签法或...

    1.背景

        采样算法是机器学习中比较常用,也比较容易实现的(出去分层采样)。常用的采样算法有以下几种(来自百度知道):
       
    一、单纯随机抽样(simple random sampling)
    
    将调查总体全部观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本。
    
    优点:操作简单,均数、率及相应的标准误计算简单。 
    
    缺点:总体较大时,难以一一编号。
    
    二、系统抽样(systematic sampling)
    
    又称机械抽样、等距抽样,即先将总体的观察单位按某一顺序号分成n个部分,再从第一部分随机抽取第k号观察单位,依次用相等间距,从每一部分各抽取一个观察单位组成样本。
    
    优点:易于理解、简便易行。
    
    缺点:总体有周期或增减趋势时,易产生偏性。
    
    三、整群抽样(cluster sampling)
    
    总体分群,再随机抽取几个群组成样本,群内全部调查。
    
    优点:便于组织、节省经费。
    
    缺点:抽样误差大于单纯随机抽样。
    
    四、分层抽样(stratified sampling)
    
    先按对观察指标影响较大的某种特征,将总体分为若干个类别,再从每一层内随机抽取一定数量的观察单位,合起来组成样本。有按比例分配和最优分配两种方案。
    
    优点:样本代表性好,抽样误差减少。
    
    以上四种基本抽样方法都属单阶段抽样,实际应用中常根据实际情况将整个抽样过程分为若干阶段来进行,称为多阶段抽样。
    
    各种抽样方法抽样误差一般是:整群抽样≥单纯随机抽样≥系统抽样≥分层抽样

    2.代码实现

        
        无放回抽样:随机抽样(RandomSampling)和系统抽样(SystematicSampling)。
        有放回抽样:随机抽样(RepetitionRandomSampling)。

    '''
    Sampling archive
    
    @author: Garvin Li
    '''
    import random
    def loadDataSet(fileName):      #general function to parse tab -delimited floats
        dataMat = []                #assume last column is target value
        fr = open(fileName)
        for line in fr.readlines():
            curLine = line.strip().split('\t')
    #         fltLine = map(float,curLine) #map all elements to float()
            dataMat.append(curLine)
        return dataMat
    
    def RandomSampling(dataMat,number):
        try:
             slice = random.sample(dataMat, number)    
             return slice
        except:
             print 'sample larger than population'
    
    def RepetitionRandomSampling(dataMat,number):    
        sample=[]
        for i in range(number):
             sample.append(dataMat[random.randint(0,len(dataMat)-1)])
        return sample
    def SystematicSampling(dataMat,number):    
        
           length=len(dataMat)
           k=length/number
           sample=[]     
           i=0
           if k>0 :       
             while len(sample)!=number:
                sample.append(dataMat[0+i*k])
                i+=1            
             return sample
           else :
             return RandomSampling(dataMat,number)   
           
                
    if __name__=='__main__':
       dataMat=loadDataSet('/Users/hakuri/Desktop/data1.txt')
    #    print RandomSampling(dataMat,7)    
    #    RepetitionSampling(dataMat,4)
       print SystematicSampling(dataMat,9)

    测试结果就不单独上图了,测试集和代码都提供下载,有兴趣可以去看一下。
    过一段把高级聚类算法写好,实现一下分层抽样。

    下载地址:点击我


    /********************************

    * 本文来自博客  “李博Garvin“

    * 转载请标明出处:http://blog.csdn.net/buptgshengod

    ******************************************/



    展开全文
  • 例如照片OCR,对于一个系统部分组成。 首先是求出整体系统的准确率,然后逐步让每个部分表现最好,得出此时的准确率,这样就能发现我改进谁,谁就能最大限度的提升整体系统性能。 可以看出,1-2提升了17,2-3...

    人工数据合成

    人工数据合成主要有两个方法。

    一、从零开始创建数据

    二、已有数据集,进行扩充

    可以对图片等添加噪声,或者图片变形、引入失真等。

    三、上限分析

    例如照片OCR,对于一个系统由几个部分组成。
    在这里插入图片描述
    首先是求出整体系统的准确率,然后逐步让每个部分表现最好,得出此时的准确率,这样就能发现我改进谁,谁就能最大限度的提升整体系统性能。

    可以看出,1-2提升了17,2-3提升了1,3-4提升了10。因此文本检测和字符识别能够较好的提升系统性能,而不需要花费很大精力去完善字符切割。

    展开全文
  • 1.背景 採样算法是机器学习中比較经常使用,也比較easy实现的(出去分层採样)。经常使用的採样算法下面种(来自百度知道): 一、单纯随机抽样(simple random sampling) 将调查整体所有观察单位编号,再用...

    1.背景

        採样算法是机器学习中比較经常使用,也比較easy实现的(出去分层採样)。经常使用的採样算法有下面几种(来自百度知道):
       
    一、单纯随机抽样(simple random sampling)
    
    将调查整体所有观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本。
    
    长处:操作简单,均数、率及对应的标准误计算简单。 
    
    缺点:整体较大时,难以一一编号。
    
    二、系统抽样(systematic sampling)
    
    又称机械抽样、等距抽样,即先将整体的观察单位按某一顺序号分成n个部分,再从第一部分随机抽取第k号观察单位。依次用相等间距,从每一部分各抽取一个观察单位组成样本。
    
    长处:易于理解、简便易行。
    
    缺点:整体有周期或增减趋势时,易产生偏性。
    
    三、整群抽样(cluster sampling)
    
    整体分群。再随机抽取几个群组成样本,群内所有调查。
    
    长处:便于组织、节省经费。

    缺点:抽样误差大于单纯随机抽样

    四、分层抽样(stratified sampling) 先按对观察指标影响较大的某种特征。将整体分为若干个类别,再从每一层内随机抽取一定数量的观察单位,合起来组成样本。有按比例分配和最优分配两种方案。

    长处:样本代表性好。抽样误差降低。

    以上四种基本抽样方法都属单阶段抽样。实际应用中常依据实际情况将整个抽样过程分为若干阶段来进行。称为多阶段抽样。 各种抽样方法抽样误差通常是:整群抽样≥单纯随机抽样≥系统抽样≥分层抽样

    2.代码实现

        
        无放回抽样:随机抽样(RandomSampling)和系统抽样(SystematicSampling)。
        有放回抽样:随机抽样(RepetitionRandomSampling)。

    '''
    Sampling archive
    
    @author: Garvin Li
    '''
    import random
    def loadDataSet(fileName):      #general function to parse tab -delimited floats
        dataMat = []                #assume last column is target value
        fr = open(fileName)
        for line in fr.readlines():
            curLine = line.strip().split('\t')
    #         fltLine = map(float,curLine) #map all elements to float()
            dataMat.append(curLine)
        return dataMat
    
    def RandomSampling(dataMat,number):
        try:
             slice = random.sample(dataMat, number)    
             return slice
        except:
             print 'sample larger than population'
    
    def RepetitionRandomSampling(dataMat,number):    
        sample=[]
        for i in range(number):
             sample.append(dataMat[random.randint(0,len(dataMat)-1)])
        return sample
    def SystematicSampling(dataMat,number):    
        
           length=len(dataMat)
           k=length/number
           sample=[]     
           i=0
           if k>0 :       
             while len(sample)!=number:
                sample.append(dataMat[0+i*k])
                i+=1            
             return sample
           else :
             return RandomSampling(dataMat,number)   
           
                
    if __name__=='__main__':
       dataMat=loadDataSet('/Users/hakuri/Desktop/data1.txt')
    #    print RandomSampling(dataMat,7)    
    #    RepetitionSampling(dataMat,4)
       print SystematicSampling(dataMat,9)

    測试结果就不单独上图了,測试集和代码都提供下载。有兴趣能够去看一下。

    过一段把高级聚类算法写好,实现一下分层抽样。


    下载地址:点击我


    /********************************

    * 本文来自博客  “李博Garvin“

    * 转载请标明出处:http://blog.csdn.net/buptgshengod

    ******************************************/



    展开全文
  • 深度学习是机器学习的重要组成部分,深度学习算法基于神经网络。有几种功能不同的神经网络架构,最适合特定的应用场景。本文介绍一些最知名的架构,尤其是深度学习方面的架构。多层感知器多层感知器(MLP)是一...
  • 微机学习要求答案

    2018-11-27 19:19:38
    8、CPU在内部结构上由哪几部分组成(算术逻辑运算单元ALU、控制器、寄存器),简要说明各部分的作用? 9、地址总线、数据总线、控制总线的作用?它们各自是双向还是单向? 二、 80x86微处理器 1、8086处理器物理地址...
  • 8、CPU在内部结构上由哪几部分组成(算术逻辑运算单元ALU、控制器、寄存器),简要说明各部分的作用? 9、地址总线、数据总线、控制总线的作用?它们各自是双向还是单向? 二、 80x86微处理器 1、8086处理器物理地址...
  • Linux 操作系统基础教程 清华大学信息学院计算机系 ...从网上下载的,但是我不推荐易用这种方法得到 Linux,因为仅仅核心就有几十个 Mbit 的 数据量,而一个完整的发行版本大概都是 1Gbit 左右的数据量...
  • 深入理解计算机系统(中文版)

    热门讨论 2014-03-05 22:49:05
    而通过程序员的视角,读者可以清晰地明白学习计算机系统的内部工作原理会对他们今后作为计算机科学研究者和工程师的工作进一步的帮助。它还助于为进一步学习计算机体系结构、操作系统、编译器和网络互连做好准备...
  • 一个完备的等级考试系统可以使用户在网上学习过后及时检验自己的学习效果, 已发现自己的不足,使得学习效率得到很大提高。等级考试系统中题目的生成、试卷的提交、成绩的批阅等都可以在 上自动完成。只要形成一套...
  • c#学习笔记.txt

    2008-12-15 14:01:21
    另外我发现论坛上学习Java的人都非常的个性,当人问起学习哪种语言更好时,他会打出百个“JAVA”来,填满整个屏幕,也不说是为了什么。我觉得这样做未免有些太霸道了,如果你说这叫偏执狂我也不反对,虽然我...
  • LINGO软件的学习

    2009-08-08 22:36:50
    一个模型可以没有集部分,或一个简单的集部分,或多个集部分。一个集部分可以放置于模型的任何地方,但是一个集及其属性在模型约束中被引用之前必须定义了它们。 2.3.1 定义原始集 为了定义一个原始集,必须详细...
  • 这个阶段的处理方式是在数据库和网络基础上组成分布式处理系统。它的特点是使用数据库和分时处理的计算机网络,并充分利用运筹学等数学方法,实现了硬件、软件和数据资源的共享。 总的说来,计算机技术的发展,其性...
  • 总的来说网络程序是由两个部分组成的--客户端和服务器端.它们的建立步骤一般是: 服务器端 socket-->;bind-->;listen-->;accept 客户端 socket-->;connect 字节转换函数 在网络上面有着许多类型的机器,...
  • asp在线考试系统(asp+access实现)

    热门讨论 2009-04-04 19:34:08
    一个完备的等级考试系统可以使用户在网上学习过后及时检验自己的学习效果, 已发现自己的不足,使得学习效率得到很大提高。等级考试系统中题目的生成、试卷的提交、成绩的批阅等都可以在 上自动完成。只要形成一套...
  • 千里马酒店前台管理系统V7使用手册

    热门讨论 2011-06-16 14:09:38
    所有录入界面、报表格式、工作视图、功能菜单均支持用户自定义,保证了系统有最大限度的自适应性,满足不同酒店的具体需求。数据处理充分利用SQL DBMS的索引技术,保证了在业务繁忙时段和数据量较大时仍然具有快速的...
  • 前 言可扩展标记语言(Extensible Markup Language, XML)作为一种计算技术出现不过是短短年前的事情。它是一种概念,以其简便性而颇得人心,它驱动了Internet应用程序编写方式的动态改变。本书的覆盖范围本书解释...
  • 尽管AVR单片机系列有几十种的型号,但它们有着相同的内核结构,指令兼容。图2-2为典型的AVR单片机的内核结构图。 为了提高MCU并行处理的运行效率,AVR单片机采用了程序存储器和数据存储器使用不同的存储空间和存取...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。 不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也200多个。这里笔者把比较重要和使用频率最多的命令...
  •  本书是一本毫无保留的Oracle学习宝典。通过作者历时3年的写作,本书介绍了Oracle的安装及卸载、数据库的启动关闭、表空间和数据文件的管理、Oracle网络管理、口令文件管理、内存管理、进程管理、用户管理、数据的...
  •  本书是一本毫无保留的Oracle学习宝典。通过作者历时3年的写作,本书介绍了Oracle的安装及卸载、数据库的启动关闭、表空间和数据文件的管理、Oracle网络管理、口令文件管理、内存管理、进程管理、用户管理、数据的...
  •  本书是一本毫无保留的Oracle学习宝典。通过作者历时3年的写作,本书介绍了Oracle的安装及卸载、数据库的启动关闭、表空间和数据文件的管理、Oracle网络管理、口令文件管理、内存管理、进程管理、用户管理、数据的...
  •  本书是一本毫无保留的Oracle学习宝典。通过作者历时3年的写作,本书介绍了Oracle的安装及卸载、数据库的启动关闭、表空间和数据文件的管理、Oracle网络管理、口令文件管理、内存管理、进程管理、用户管理、数据的...
  •  本书是一本毫无保留的Oracle学习宝典。通过作者历时3年的写作,本书介绍了Oracle的安装及卸载、数据库的启动关闭、表空间和数据文件的管理、Oracle网络管理、口令文件管理、内存管理、进程管理、用户管理、数据的...
  •  本书是一本毫无保留的Oracle学习宝典。通过作者历时3年的写作,本书介绍了Oracle的安装及卸载、数据库的启动关闭、表空间和数据文件的管理、Oracle网络管理、口令文件管理、内存管理、进程管理、用户管理、数据的...
  •  本书是一本毫无保留的Oracle学习宝典。通过作者历时3年的写作,本书介绍了Oracle的安装及卸载、数据库的启动关闭、表空间和数据文件的管理、Oracle网络管理、口令文件管理、内存管理、进程管理、用户管理、数据的...
  • 自动语音识别(Automatic Speech Recognition,简称ASR)是一项将机器学习与实际需要...经典语音识别系统通常如下组成部分:特征提取,如利用输入的waveform提取MFCC特征,然后再经过三个独立的模型再求得它们概率
  • 学习操作系统时我们都了解到文件系统是操作系统的重要组成部分之一。文件系统有很多种类型,比windows的fat、fat32;Linux的ext、ext2或ext3;FreeBSD的ufs等等。在使用Linux的过程,也常常Linux操作系统使用虚拟...
  • 汇编语言教程.chm

    2008-11-20 13:41:02
    计算机专业所培养的学生,不应仅仅满足于利用他人已开发出来的软件和软件工具来解决实际问题,还应具备分析、研究原有软件系统,改进、完善、提高原有系统功能供广大用户使用的能力。汇编语言程序设计将使学生受到...

空空如也

空空如也

1 2 3 4 5
收藏数 96
精华内容 38
关键字:

机器学习系统有几部分组成