blog | 逍遥郡


  • Home

  • Archives

  • Tags

  • Search

百度网盟广告相关技术

Posted on 2016-06-20 |
[TOC] 视频:http://www.chuanke.com/v2889565-173289-848527.html 笔记:http://www.yittoo.com/blog/index.php/2016/05/13/large-scale-ml-ctr-prediction/ 笔记:http://www.doesbetter.com/638/ 广告系统流程 广告位展现 广告候选:初选,简单规则,触发 点击率预估:对初选集合进行预估,机器学习方法 竞价排序:auction机制 维度约简 离散到离散 hashing:10000x1000dim (q,u)vector -> 1000dim hash table (有collision) 离散到统计 statistics:10000x1000dim (q,u)vector -> historic ctr, historic impr 关键是减少信息的损失 分布式计算架构 数据并行:每台机器存储部分数据、所有参数,适合图像数据 模型并行:每台机器存储 ...
Read more »

配置树莓派作为家庭网关

Posted on 2016-03-25 |
硬件:树莓派3-B 系统:ubuntu-mate 作用: 网关 Airplay GFW 破解iptv 网关 配置网络 编辑 /etc/network/interfaces 来配置eth和wlan设备: # The loopback network interface auto lo iface lo inet loopback ### eth auto enxb827eb9e24e2 iface enxb827eb9e24e2 inet static address 192.168.1.2 gateway 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 ### wlan auto wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa.conf 对wifi网络,需要额外借助wpa工具来产生网络配置: wpa_passphrase "YOUR_E ...
Read more »

实现一个简单的分层实验系统

Posted on 2015-10-14 |
前言 所谓一次实验(这里都是指网络实验),即是在一次请求中,应用若干参数,产生某种结果的过程。 而一组实验,即是在若干次请求(流量),进行若干次实验。 而一组对照实验,一般包括一个对照组实验(或控制组control)和若干处理组实验(treatment)。 所以,常见的实验,包括这样一些要素: 流量,其实就是样本 参数,通常是策略优化的对象 结果,映射到用户的行为,我们需分析的日志 当创建一个实验,我们一般会考虑这些问题: 起止时间,实验应该开启多长时间,某些实验是否有周期性,这是个权衡 流量大小,这个和我们关注的指标敏感度以及置信区间有关,这也是个权衡 分配方式(diversion),就是采样方式,按uuid、userid还是随机分配 分配条件(condition),只采用一部分流量,可能按地域、按浏览器类型 流量偏置,会和哪些模块有耦合关系,应该如何分配参数 针对这些问题,分散的实验常常会踩到一些坑: 流量饥渴,这是最容易碰到的。因为我们是在用样本估计,那么显然样本越多越好,我们做ab test,各取50%流量是理想情 ...
Read more »

Avro序列化方法

Posted on 2015-05-20 |
最近负责日志系统和数据平台的建设,需要选型一种序列化方法。国内大公司都用pb,也有一套完整的支持工具,但经过省略若干字的讨论,我们选用了avro。主要是考虑到Apache的支持,avro和Hadoop生态系统结合得很好,而使用pb的话会增加不少开发成本。此外,avro序列化性能也不错,基本和pb在一个水平。 Protobuf vs Avro 关于PB和Avro序列化的详细对比可以参考下文链接,这里给出两个示例。关键留意一下Schema Evolution时,不同序列化方法是如何处理的。 Protobuf PB使用IDL schema定义: message Person { required string user_name = 1; optional int64 favourite_number = 2; repeated string interests = 3; } PB序列化后的二进制格式如下: PB每个field都有唯一的tag作为标识符,可以看到序列化后的文件里,实际记录的也是该tag和对应的值。因此, ...
Read more »

利用cmake构建C++项目

Posted on 2015-04-30 |
最近出来创业,没法用鹅厂的构建工具了,只能钻研一下开源的build工具,发觉cmake至少用来构建一个中小型项目还是挺方便的,通过写一些辅助脚本,也可以具备一定的自动化能力。 cmake支持外部编译,即在源码包外额外创建一个build目录,好处是不会污染整个源码目录,比较优雅。 $ mkdir build $ cd build $ cmake .. $ make 基础功能 简单示例 先给一个CMakeLists.txt的例子 PROJECT(app) ADD_EXECUTABLE(myapp main.cc classA.cc ) TARGET_LINK_LIBRARIES(myapp sqlite my_ilb ) ADD_SUBDIRECTORY(lib) # lib/CMakeLists.txt ADD_LIBRARY(my_lib my_lib.c ) 常用命令 隐式变量 <project_name>_SOURCE_DIR 工程代码路径,基本等同于CMAKE_SOURCE_DIR和PROJECT_SOURCE_DIR &l ...
Read more »

Git submodule实战

Posted on 2015-04-25 |
使用git管理的项目开发中,如果碰到公共库和基础工具,可以用submodule来管理。 常用操作 例如, 公共库是 lib.git,地址:git@github.com:lib.git; 需要使用公共库的项目是 proj.git,地址:git@github.com:proj.git。 添加 为项目proj.git添加submodule,先进到相应的目录下,然后执行如下命令: git submodule add git@github.com:lib.git <local path> 其中,<local path>是你期望的目录名。 该命令实际会做三件事情:首先,clone lib.git到本地;然后,创建一个 .gitsubmodule 文件标记submodule的具体信息;同时,更新.git/config文件,增加submodule的地址: [submodule "lib"] url = git@github.com:lib.git 删除 首先,需要删除 .git/config 和 .gitsubmodle 文件里su ...
Read more »

Tornado开发技巧

Posted on 2014-12-16 |
Tornado框架算是很轻量级的 单线程 异步 编程框架,只是额外加了很基础的模板、HEADER、COOKIE、路由等的WEB相关的支持(都定义在web.py里),它的大部分代码是在封装nonblocking socket、epoll、event loop等基础的异步编程模块。所以,在使用tornado之前一定要先了解这个框架的定位,它不单能够用于WEB服务编程,也非常适用于需要异步编程的后台服务。 tornado框架 Tornado框架的编码水准很高,虽然不了解tornado源码不妨碍使用,但深入了解一下还是有助于提高自己的PYTHON水平的,这里有一份源码详解。 从这个框架图也能看出,tornado 完整地实现了HTTP服务器和客户端,在此基础上提供WEB服务。它可以分为四层: 最底层的EVENT层处理IO事件(ioloop.py 和 iostream.py,以及platform相关); TCP层实现了TCP服务器,负责数据传输(tcpserver.py); HTTP/HTTPS层基于HTTP协议实现了HTTP服务器和客户端(httpserver.py); ...
Read more »

FTRL算法学习

Posted on 2014-10-10 |
[TOC] 要解决的问题:在Online Learning中L1也不能保证参数的稀疏性。 Online不同于Batch,Online中每次参数的更新并不是沿着全局梯度进行下降,而是沿着某个样本的产生的梯度方向下降,整个寻优过程变得像是一个“随机”查找的过程(SGD中Stochastic的来历),这样Online最优化求解即使采用L1正则化的方式,也很难产生稀疏解。 之前的工作:简单截断、TG、FOBOS、RDA。 FTRL:训练精度 + 稀疏性,都最佳。 简单截断 最intuitive的方法,直接设定一个阈值,当参数某一维度的系数小于该阈值时,则设置为0。 Cons:实际中,如OGD,参数的某个系数比较小也可能是因为训练样本不足(尤其训练刚开始时),简单截断会造成这部分特征的丢失。 算法:每训练$k$个数据对参数做一次截断置零: \[f(w_i)=T_0\left(w_i-\eta \nabla L(w_i,z_i),\theta \right) \\ T_0(v_j,\theta )=\left\{\begin{matrix} 0 & \text{if} \l ...
Read more »

Linux性能调优工具

Posted on 2014-09-26 |
Brendan D. Gregg 维护了一份Linux性能调优工具的蓝图Linux Performance Tools,针对Linux系统的各个组件都有相应的分析工具,一目了然。
Read more »

Ranklib源码阅读

Posted on 2014-07-13 |
建议参考RankLib v2.1,后面的版本代码感觉有些乱: svn co http://svn.code.sf.net/p/lemur/code/RankLib/tags/release-2.1/ Ranklib-v2.1 数据结构 Sample -> DataPoint Query -> RankList LambdaMART.java void init() 展开RankList,初始化四个数组: martSamples = new DataPoint[dpCount]; // 保存所有的sample modelScores = new float[dpCount]; // 所有sample的得分 pseudoResponses = new float[dpCount]; // 所有sample的lambda值 sortedIdx = new int[features.length][]; // 临时的二维数组,保存按feature值排序后的sample id 把所有sample按照feature值排序,得到一个 ...
Read more »
1 2 3 … 19
Julian Qian

Julian Qian

记录编程、Hack和自娱自乐的一些玩意。

189 posts
60 tags
RSS
Creative Commons
© 2024 Julian Qian
Powered by Jekyll
Theme - NexT.Mist