Delta

机器学习排序算法:RankNet to LambdaRank to LambdaMART

半腔热情 提交于 2020-09-27 04:47:01
使用机器学习排序算法LambdaMART有一段时间了,但一直没有真正弄清楚算法中的所有细节。 学习过程中细读了两篇不错的博文,推荐给大家: 梯度提升树(GBDT)原理小结 徐博From RankNet to LambdaRank to LambdaMART: An Overview 但经过一番搜寻之后发现,目前网上并没有一篇透彻讲解该算法的文章,所以希望这篇文章能够达到此目的。 本文主要参考微软研究院2010年发表的文章 From RankNet to LambdaRank to LambdaMART: An Overview $^1$,并结合自己的理解,试图将RankNet、LambdaRank和LambdaMART这三种算法的所有算法细节讲解透彻。 1. 概述 RankNet、LambdaRank和LambdaMART是三个关系非常紧密的机器学习排序算法。简而言之,RankNet是最基础,基于神经网络的排序算法;而LambdaRank在RankNet的基础上修改了梯度的计算方式,也即加入了lambda梯度;LambdaMART结合了lambda梯度和MART(另称为GBDT,梯度提升树)。这三种算法在工业界中应用广泛,在BAT等国内大厂和微软谷歌等世界互联网巨头内部都有大量应用,还曾经赢得“Yahoo!Learning To Rank Challenge(Track 1)

独家 | 为什么要尝试A/B测试的贝叶斯方法(附链接)

不问归期 提交于 2020-09-25 10:55:29
作者:Michael Armanious 翻译:欧阳锦 校对:阿笛 本文 约3400字 ,建议阅读 8 分钟 本文通过一个A/B测试的实例,介绍了贝叶斯方法的各种优点和具体的实现方法,同时也将贝叶斯推断方法与传统的频率推断估计进行了对比。 标签:数据科学,A/B测试,贝叶斯统计,机器学习 本文以一种直观的方式介绍了A/B测试、贝叶斯方法的优点以及它的具体实现方法。 “批判性思维是一个活跃而持续不断的过程。它要求我们所有人都像贝叶斯主义者那样思考,随着新信息的到来更新我们的知识。” —— Daniel J. Levitin,说谎的实地指南:信息时代的批判性思维 绪论 在深入研究使用贝叶斯估计方法之前,我们需要了解一些概念。这些概念包括: 推论统计 贝叶斯主义者与频率主义者 A / B测试 概率分布 推论统计是什么? 推论统计是指根据人口总体样本推断某个总体人口的某些信息,而不是描述整个人口总体的描述性统计信息。 当涉及推理统计时,主要有两种哲学:频率推断和贝叶斯推断。众所周知,频率推断方法是更传统的统计推断方法,因此在大多数统计课程(尤其是入门课程)中都进行了更多的研究。然而,许多人认为贝叶斯方法更接近于人类自然地认识概率的方式。 贝叶斯方法包含了根据新证据去改变一个人的想法。例如,你去看医生是因为你感觉不适,并且认为自己患有某种疾病。几个医生对你进行检查

ISODATA聚类算法的matlab程序

依然范特西╮ 提交于 2020-08-20 05:14:09
ISODATA聚类算法的matlab程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 参考: Kmeans及ISODATA算法的matlab实现 算法简介: 聚类算法:ISODATA算法 数据见: MATLAB实例:PCA降维 中的iris数据集,保存为:iris.data,最后一列是类标签。 demo_isodata.m clear clc data_load=dlmread('iris.data'); [~,dim]=size(data_load); x=data_load(:,1:dim-1); K=3; theta_N=1; theta_S=1; theta_c=4; L=1; I=5; ISODATA(x,K,theta_N,theta_S,theta_c,L,I) ISODATA.m function ISODATA(x,K,theta_N,theta_S,theta_c,L,I) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%input parameters%%%%%% % x : data % K : 预期的聚类中心数 % theta_N : 每一聚类中心中最少的样本数,少于此数就不作为一个独立的聚类 % theta_S

Flutter学习笔记(33)--GestureDetector手势识别

为君一笑 提交于 2020-08-20 01:07:57
如需转载,请注明出处: Flutter学习笔记(33)--GestureDetector手势识别 这篇随笔主要记录的学习内容是GestureDetector手势识别,内容包括识别单击、双击、长按、组件拖拽和缩放处理。 单击、双击、长按 先看下demo,很简单,GestureDetector本身也是一个组件,GestureDetector识别其内部子组件的手势动作,GestureDetector的构造方法内给我们提供了onTap单击、onDoubleTap双击、onLongPress长按的是回调方法。 识别到用户的手势操作后会执行对应的回调方法,demo的处理就是简单的更新一下text的文案。 import ' package:flutter/material.dart ' ; class GestureDetectorDemo extends StatefulWidget { @override State <StatefulWidget> createState() { return _GestureDetectorDemo(); } } class _GestureDetectorDemo extends State { String _operation = " No Gesture detected! " ; // 保存事件名 @override Widget build

阿里天池全国社保比赛心得

自闭症网瘾萝莉.ら 提交于 2020-08-19 22:30:43
最近时间都忙于参加阿里天池的全国社会保险大数据应用创新大赛,终于结束,最终全国排名第7,总共是1336只队伍参加,还是很激动进了前10,今天想把一些体悟写一下,希望对后来参加的人有用。这个比赛是完成数据算法模型的开发设计,实现对各类医疗保险基金欺诈违规行为的准确识别,根据给出的数据情况,最开始有两个思路,1.从就诊记录入手,找到可疑的就诊记录,然后拼接到人上 2.直接构造人的可疑程度的行为特征。两者都试过,最终选择了后者,因为题目给出的欺诈标签主要是人的欺诈标签,并没有给出某次就诊行为的欺诈标签。另外,此次的评测指标是F1值,这个非常重要,你要知道你最终排名都是看的这个值。下面我从三个方面讲一下这次比赛的心得。 一、特征 可能没参加比赛前很难理解 特征决定上限 的这个真理,特征特征才是最重要的! 一定要看特征重要度,要不断尝试,有些组合到一起反而降低,有些特征看着不重要,你把他去了 可是结果却会出现下降的情况,因为特征和特征之间是有关系的。 在重要特征做深入处理的收益远大于在次要特征中继续做。 汇总信息有些时候会丢失信息,比如我们最开始将医院数据进行了汇总,计算每个人去一级医院,二级医院,三级医院的个数,反而没有把所有医院的维度扩充好。 观察和了解你的数据很重要。观察数据发现患者同一天在同一个医院有药费,有治疗费分别出现不同的就诊id,包括挂号的费用也是不同的id

RTKLIB源码解析(一)——单点定位(pntpos.c)

江枫思渺然 提交于 2020-08-19 22:12:03
RTKLIB源码解析(一)——单点定位(pntpos.c) 标签: GNSS RTKLIB 单点定位 前段时间一直忙着写毕业论文,所以也没有太多时间来阅读 RTKLIB源码,最近好歹把 pntpos中的相关代码看了一遍,知道了 RTKLIB是如何实现单点伪距定位的。这里把每一个函数都做成了小卡片的形式,每个函数大都包含函数签名、所在文件、功能说明、参数说明、处理过程、注意事项和我的疑惑这几个部分,介绍了阅读代码时我自己的看法和疑惑。所以希望诸位看官能帮忙解答我的疑惑,与我交流,也希望能帮助后来也有需要阅读 RTKLIB源码的人,给他们多提供一份思路。总而言之,既为人,也为己。 这份文档是使用 Cmd Markdown完成的,在作业部落上其格式显式的非常完整,但是在博客园中 目录 、 代码块 和 流程图 似乎都没有显示出来,所以这里也贴上本文在作业部落上的链接 RTKLIB源码解析(一)——单点定位(pntpos.c) ,对格式“零容忍”的同学请移步那里。 目录 RTKLIB源码解析(一)——单点定位(pntpos.c) pntpos satposs estpos raim_fde estvel ephclk satpos satsys seleph eph2clk ephpos eph2pos rescode lsq valsol matmul dops ecef2enu

eureka源码系列

旧时模样 提交于 2020-08-19 17:34:51
eureka源码系列 - 续租流程 @Author:zxw @email: 502513206@qq.com @school:吉首大学 1.前言 在eureka中有3个定时任务,分别为心跳检测heartbeatExecutor,注册表拉取cacheRefreshExecutor,实例信息更新instanceInfoReplicator。 2.拉取注册中心服务 起点是由 CacheRefreshThread 线程进行调用 DiscoveryClient.refreshRegistry() 该方法的主要作用就是在拉取注册表前后进行一些操作。 void refreshRegistry () { try { boolean isFetchingRemoteRegionRegistries = isFetchingRemoteRegionRegistries (); ​ boolean remoteRegionsModified = false ; // 确保对远程区域进行动态更改以获取数据。 String latestRemoteRegions = clientConfig . fetchRegistryForRemoteRegions (); if ( null != latestRemoteRegions ) { String currentRemoteRegions =

20.QT-Qpixmap实现图片鼠标缩放,鼠标拖动示例(详解)

别来无恙 提交于 2020-08-19 09:55:46
通过 QPainter 绘画实现,以本地图片985*740为例 如下图所示: 效果如下所示: 实现原理 主要通过以下函数实现: void QPainter::drawTiledPixmap ( int x, int y, int w int h const QPixmap & pixmap, int sx = 0 , int sy = 0 );        // 平铺显示pixmap        // x y w h :表示绘画区域        // sx sy :表示Qpixmap绘画起始位置 只要算出x y w h sx sy就能实现超出窗口不显示的效果 举个例子,如下图所示,居中显示 1200*1200 时: 当图片左偏移600时,也就是 offset=-600 时,则只能在窗口上 显示一半 的图片: 代码实现 widget.h: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QtGui> class Widget : public QWidget { Q_OBJECT private : QPixmap * pix; int action; // 动作(放大,缩小,移动...) int pixW; // 图片宽 int pixH; // 图片高 QRect Paint; // 绘画区域