自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

rover

干货铺

  • 博客(95)
  • 资源 (4)
  • 收藏
  • 关注

原创 经典论文阅读(六)--DeepFM

DeepFM来自哈工大深圳与华为诺亚方舟联合实验室2017年发表的论文。该模型借鉴了Wide & Deep模型的结构,将Wide部分替换为FM模型,不再需要人工特征工程;并很巧妙地在FM的二阶部分和神经网络的Embedding层共享权重,减少了大量参数,提高训练速度。在CTR预估中非常经典。1. Motivation和简介DeepFM在一种新的神经网络结构中结合了用于推荐的FM和用于特征学习的深度学习的能力。与谷歌最新的Wide & Deep模型相比,DeepFM在其“Wide”和“De

2020-06-18 12:01:57 512 1

原创 求数组中连续递增序列的区间范围

输入为排好序的正整数数组,找出数组的所有连续区间, 如果该连续空间只有一个数字,将该数字放入一个数组中,否则将该连续空间的首位数字计入一个数组中,输出所有这些数组组成的数组。输出->[[1,2], [4,5], [7,9], [11]] 7-8-9为连续空间,那么记为[7,9]给定一个已排序数组,数组中没有重复的元素,依次递增。将其表示为区间形式,例如。问题1 和 问题2 类似,是一个意思。输入->[1,2, 4,5, 7,8,9,11]

2023-09-25 18:13:25 159

原创 多边形内部水平方向近似最大矩形python实现

多边形内部水平方向近似最大矩形python实现。

2023-09-15 18:00:22 361

原创 Spark sql 读文件的源码分析

从spark jobs监控页面上经常看到这种job: Listing leaf files and directories for 100 paths:如图: 这其实是spark sql在读一大堆文件。最简单的demo语句,这样读文件: val df = session.read.json("path/to/your/resources/data.json")或者 session.read.parquet(file_path) 或者 session.read.c...

2021-08-17 23:34:15 1340

原创 流形学习降维code

# Refer:# https://leovan.me/cn/2018/03/manifold-learning/# https://github.com/lmcinnes/umap#import numpy as npimport pandas as pdfrom sklearn.cluster import KMeansfrom sklearn import manifold, datasets, metricsfrom sklearn.utils import check_rand.

2021-08-04 10:53:11 262

原创 pyspark环境使用dbscan聚类经纬度

DBSCAN on Spark我关注到的有三种实现https://github.com/alitouka/spark_dbscan scala写的。作者还带有两个R写的小工具,which will help you choose parameters of the DBSCAN algorithm。 https://github.com/irvingc/dbscan-on-spark 用scala写的,据说占用较大内存。 An Implementation of DBSCAN on PySpa...

2021-03-12 12:48:04 2345 4

转载 网络训练时loss不下降的原因

1. 网络训练时train loss与test loss的结果分析:(1) train loss不断下降,test loss不断下降 可能发生的原因: 网络还在学习中,loss在稳步下降。(2) train loss不断下降,test loss趋于不变 可能发生的原因: 网络出现过拟合的现象,因此在训练集上表现为网络仍在学习,但是test loss趋于不变说明网络泛化能力差。(3) train loss趋于不变,test loss不断下降 可能发生的原因: 数据集100%是...

2020-11-18 13:29:52 3420

原创 Hive SQL 计算AUC

前置条件: 数据表中已有正负样本标签,和预测分值。TRUE, 9FALSE, 8TRUE, 7FALSE, 6这四个样本对应的AUC是0.75。-- ########## 测试一:##########Lable为True / False.create table tmp.test_score_label( score int, label boolean);insert into tmp.test_score_label values (9,...

2020-09-01 11:11:02 3254

原创 常用SQL语句优化

11、用 left join 代替 not in 求:a有b没有,提高执行效率。SELECT a.carFROM idc_temp.temp_car_ly1 aLEFT JOIN idc.dw_zy_car_status bON a.car = b.car_codeWHERE b.car_code is NULL;-- 代替:SELECT b.carFROM idc_temp.temp_car_ly1 bWHERE b.car NOT IN ( SELECT a.car_code

2020-08-07 10:56:57 159

原创 判断二叉树是否左右对称

二叉树左右成镜像对称,不一定是满树。如图:code:struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(NULL), right(NULL) {}};// ========== 递归 ==========bool check(TreeNode *p, TreeNode *q) { if (!p && !q

2020-08-03 17:46:05 509

原创 jvm垃圾回收 -- ZGC

ZGC是从JDK11中引入的一种新的支持弹性伸缩和低延迟垃圾收集器,ZGC可以工作在KB~TB的内存之下,作为一种并发的垃圾收集器,ZGC保证应用延迟不会超过10毫秒(即便在堆内存很大的情况下),在JDK11中是以实验阶段的特性被发布出来的,到JDK13时,ZGC可以支持到16TB的堆内存,并且可以将未提交的内存归还给操作系统。Z垃圾收集器(ZGC)是可伸缩的低延迟垃圾收集器。ZGC可以同时执行所有昂贵的工作,而不会将应用程序线程的执行停止超过10ms,这使得它适合于要求低延迟和/或使用非常大堆(数TB

2020-08-02 23:34:41 280

原创 数组相关的算法题

// https://www.cnblogs.com/grandyang/category/625406.html快速排序void quickSort(int a[], int left, int right){ if(left < right) { int i = left, j = right; int x = a[left]; while(i < j) { while(i < j && a[j] >=

2020-08-02 23:16:51 323

原创 JVM中的对象

摘要:Java类加载链接初始化执行,以及对象的压缩指针。类加载器Class Loaders是JRE(Java Runtime Environment)的一部分,当JVM需要一个类的时候,Class Loader就会通过类的全名尝试定位到类文件(.class文件,字节码)的位置,并通过类文件定义成一个Java类(java.lang.Class的一个实例);另外的,ClassLoader还负责加载应用需要的资源,如配置文件,图片等等。All classloaders, with the exception

2020-07-27 19:47:24 133

原创 数据运营-用户行为分析

用户行为分析用户行为分析模型主要有:事件/留存/漏斗/路径1. 行为事件分析行为事件 是追踪或记录的用户行为或业务过程。事件是通过埋点记录,通过SDK上传的用户行为或业务过程记录。行为事件分析法来研究某行为事件的发生对企业组织价值的影响以及影响程度。企业借此来追踪或记录的用户行为或业务过程,如用户注册、浏览产品详情页、成功投资、提现等,通过研究与事件发生关联的所有因素来挖掘用户行为事件背后的原因、交互影响等。应用场景在日常工作中,运营、市场、产品、数据分析师根据实际工作情况而关注不同的事件指标。

2020-07-27 09:55:49 797

原创 数据运营-用户路径分析

1. 什么是用户路径分析用户行为分析是数据分析中非常重要的一项内容,在统计活跃用户,分析留存和转化率,改进产品体验、推动用户增长等领域有重要作用。单体洞察、用户分群、行为路径分析是用户行为数据分析的三大利器。用户路径分析,就是用户在APP或网站中的访问行为路径。用户行为路径分析是互联网行业特有的一类数据分析方法,它主要根据每位用户在App或网站中的点击行为日志,分析用户在App或网站中各个模块的流转规律与特点,挖掘用户的访问或点击模式,进而实现一些特定的业务用途,如App核心模块的到达率提升、特定用户群

2020-07-27 09:54:54 3606

原创 快速排序进阶

三月不练手生。翻出了以前写的快速排序、单链表快排和scala快排。老老实实写把基础版写对就足够。本文代码均经过测试。1,快速排序的C++写法:#include <iostream>#include <vector>#include <algorithm>using namespace std;int getPartition(int arr[], int low, int high){ int key = arr[low]; while(low &

2020-07-01 18:15:19 191

原创 Douglas–Peucker算法python实现

递归方式实现的Douglas–Peucker算法用于GPS轨迹压缩,参考的原文找不到了,把它封装成一个类。import mathclass Point(object): def __init__(self, id, x, y): self.id = id self.x = x self.y = yclass DPCompress(object): def __init__(self, pointList, tolerance):

2020-06-29 18:59:50 2121 2

原创 SVM训练后的模型参数中要保存支持向量?

svm模型学到的是什么?模型存储了哪些参数?为什么只需保存支持向量?高维映射和核方法?高维映射显然可以提高模型的拟合能力,也就是准确度。理论上做完高维映射以后的LR,准确度应该是跟SVM会是一样的。那我们为什么不把LR也高维映射一下呢?别忘了,做高维映射是有代价的,计算高维映射的过程太费时间了。你可能会说,我们不是还有核方法吗?对啊,确实可以用核方法避开高维映射计算,那对应也是有代价的,我们得保存下来所有训练样本。保存所有训练样本对于样本过大的时候,LR几乎是不可接受的。SVM强就强在,它根本不需要保

2020-06-27 15:51:22 2339

原创 node2vec随机游走源码

论文中的源码在 https://github.com/aditya-grover/node2vec/,python3的话main中的learn_embeddings()需要简单修改以下,然后就能跑通了。node2vec是基于word2vec的,难点在于Alias Method 抽样算法,其代码的实现比字符串匹配的kmp算法还难以捉摸。本文加了注释,有助于解析node2vec。先看使用node2vec的部分:def read_graph(): ''' Reads the input n

2020-06-20 17:51:34 1447 3

原创 新项目方案的提出

从技术管理者的角度,要提出一套新的技术方案或者一个新Project项目,大体要考虑以下几个方面。业务模型分析 业务应用场景 产品原型设计 实现技术路线 投入成本预估 量化效果评价这跟软件工程的流程基本一致:需求分析->概要设计->详细设计->开发测试->迭代运维。技术管理者最大的好处是有一些时间,可以不那么忙,更有利于技术精进,考虑问题也更全面了。思考是个好东西,希望坚持每天有两个小时的学习。...

2020-06-18 10:38:47 1060 2

原创 经典论文阅读(五)--Factorization Machines(FM)

Factorization Machines(FM)1. 摘要FM综合了SVM和factorization models的优势。FMs是一种适用于任何实值特征向量的通用预测器。与支持向量机相比,FMs使用因式分解的参数来建模变量之间的所有交互作用。因此,即使在支持向量机失效的情况下(比如推荐系统),它们也能够估计交互作用(interactions)。结果表明,FMs的模型方程可以在线性时间内计算,从而可以直接优化FMs。因此,与非线性SVM不同的是,不需要对偶形式的转换,可以直接估计模型参数,而不需

2020-06-17 18:03:20 500 1

原创 经典论文阅读(四)--ESMM(阿里Entire Space Multi-Task Model)

1. Motivation在诸如信息检索、推荐系统、在线广告投放系统等工业级的应用中准确预估转化率(post-click conversion rate,CVR)是至关重要的。例如,在电商平台的推荐系统中,最大化场景商品交易总额(GMV)是平台的重要目标之一,而GMV可以拆解为流量×点击率×转化率×客单价,可见转化率是优化目标的重要因子;从用户体验的角度来说准确预估的转换率被用来平衡用户的点击偏好与购买偏好。user actions follow a sequential pattern of impr

2020-06-16 17:31:11 888 1

原创 Alias Method: 非均匀随机抽样算法

在游戏中经常遇到按一定的掉落概率来随机掉落指定物品的情况,例如按照:钻石10%,金币20%,银币50%,饰品10%,装备10% 来计算掉落物品的类型。问题的抽象给定一个集合,要从中以给定的概率分布随机抽取其中的元素。给定一个离散型随机变量的概率分布P(X=i)=pi,i∈1,...N;  ∑i=1Npi=1.P(X=i)=p_i,\quad i\in 1,...N; \,\,\sum_{i=1}^{N} p_i = 1.P(X=i)=pi​,i∈1,...N;∑i=1N​pi​=1.,从离散集合中进行

2020-06-15 13:38:08 3021 1

原创 word2vec的参数选择及原理简介

node2vec中用到了word2vec,作为序列的embedding模型,word2vec不止用于NLP领域。官方文档见https://radimrehurek.com/gensim/models/word2vec.htmlclass gensim.models.word2vec.Word2Vec(  sentences=None, corpus_file=None, size=100, alpha=0.025, window=5, min_count=5,  max_vocab_size=N

2020-06-14 10:37:52 7677

原创 kafka源码阅读-Controller(四)Replica状态机

分区状态机有四种状态,replica状态机有七种状态,较为复杂。ReplicaStateMachine这个类代表副本集的状态机。它定义了一个副本所在的状态,以及将副本移动到另一个合法的状态的变迁。不同的状态如下:NewReplica: Controller可以在分配分区时创建新副本。在这个状态,一个副本只能请求成为follower。有效的前置状态是NonExistentReplica。OnlineReplica: replica一旦被启动,并且作为分配了partition的副本集的一部分,该副本就进

2020-06-13 10:13:17 345

原创 Kafka源码阅读-Controller(三)Partition状态机

再看onControllerFailover(),先调用partitionStateMachine和replicaStateMachine的registerListeners(),随后启动了replica状态机和partition状态机: def onControllerFailover() { if(isRunning) { ...... partitionStateMachine.registerListeners() replicaStateMachin

2020-06-11 01:08:49 321

原创 经典论文阅读(三)--MLR: mixed logistic regression

论文中为了严谨性使用LS-PLM: Large Scale Piecewise Linear Model 来命名MLR算法。1. Motivation:传统模型的不足:LR模型的优点是可以很容易的实现并行化,轻松的处理上亿条训练样本。LR是线性模型,它的学习能力有限,所以需要引入大量的领域知识来人为进行特征工程,构造交叉特征来间接补充算法的非线性拟合能力,迁移性不够友好。SVM kernel方法:复杂度太高。Facebook在2014年提出了GBDT+LR的模型。Tree-Based有效的解决了

2020-06-09 12:10:04 1040

原创 基于随机游走的PersonalRank

《推荐系统实战》中介绍了基于图的推荐算法,将用户行为数据表示成图的形式。Standford的Haveliwala于2002年在他《Topic-sensitive pagerank》一文中提出了PersonalRank算法。原理上与PageRank是很相似的,区别在于PageRank 中的链接是有向的,而PersonalRank中人于物品之间的连接是无向的,或者说是双向的。1.1 用户行为的二分图表示  假设用户行为数据是由一系列二元数组组成的,每个二元组(u, i)表示用户u对物品i产生过行为。这种数据

2020-06-08 15:22:46 1108

原创 Kafka源码阅读-Controller(二)管理brokers

上一篇kafka源码(一)correspond to/explain Kafka设计解析(二) 中的3.2、3.3。以前一直用kafka 0.8.2.x,那时候redis开始风靡,hadoop方兴未艾,一晃四五年过去了,终于老得可以读读源码。不得不说Kafka的代码风格比spark好多了。毕竟spark太庞大,相对来说kafka小而美吧。可能出于性能的考虑,以及ZooKeeper的机制,kafka大部分都是异步回调的事件机制。类似epoll对IO的处理。源码中几乎对每个回调函数都注释了该方法什么情况下

2020-06-07 17:33:08 226

原创 经典论文阅读(二)--DIN:深度兴趣网络

DIN(Deep Interest Network)是由阿里妈妈精准定向广告算法团队在KDD2018提出的针对电商场景深入理解用户兴趣的预估模型,也可适用于其他场景。主要贡献:指出了使用固定长度的向量来表达用户多样性的兴趣的局限性,设计了新颖的Deep Intrest Network,它引入了局部激活单元(local activation unit)来自适应地从给定广告的历史行为中学习用户兴趣的表达。开发了两种技术来训练工业级深度网络:i) mini-batch aware的正则化,避免了在NN的巨

2020-06-06 14:29:55 1162

原创 Kafka源码阅读-Controller(一)

引用 Kafka Controller Internals:In a Kafka cluster, one of the brokers serves as the controller, which is responsible for managing the states ofpartitions and replicas and for performing administrative tasks like reassigning partitions.集群中的broker尝试在Zook

2020-06-05 18:46:04 230

原创 TF-IDF原理及spark使用

TF-IDF(Term Frequency/Inverse Document Frequency,词频-逆文档频率)是一种统计方法,旨在反映关键词(Term)对集合或语料库中的文档的重要程度。它经常被用作搜索信息检索,文本挖掘和用户建模的加权因子。tf-idf值按比例增加一个单词出现在文档中的次数,并被包含该单词的语料库中的文档数量所抵消,这有助于调整某些单词在一般情况下更频繁出现的事实。搜索引擎经常使用tf-idf加权方案的变体作为在给定用户查询的情况下对文档的相关性进行评分和排序的中心工具。tf-idf

2020-06-04 18:54:29 446

原创 spark RDD和streaming的容错机制

RDD Lineage容错分布式系统中,常通过副本机制通过数据冗余,来提供高可用性HA。个人认为RDD主要是通过冗余计算的方式来容错的。RDD并不提供副本机制。RDD的分布式是指,一个RDD可以切分多个分区(partition),不同的分区可能在集群的不同节点上。RDD从HDFS读出前,或者写入到HDFS后,通过hadoop.dfs.replication实现数据冗余。RDD防止数据丢失的机制,是通过"血统重建"(lineage)实现的。spark在计算时,会对RDD应用不同的transforma

2020-06-02 13:45:17 1047

原创 HDFS架构设计和读写流程

HDFS是一种分布式文件系统,具有高度的容错能力,旨在部署在低成本硬件上。设计目标:考虑硬件故障,检测故障并快速、自动地从故障中恢复是HDFS的核心目标。HDFS设计用于批处理,而不是用户交互使用。重点在于数据访问的高吞吐量,而不是数据访问的低延迟。大数据集。它应该提供较高的聚合数据带宽,并可以扩展到单个群集中的数百个节点。简化了数据一致性模型。考虑应用场景出于简化设计和实现的目的,HDFS假设了一种 write-once-read-many 的文件访问模型。支持将内容追加到文件末尾,但不能在任

2020-06-01 17:22:14 467

原创 spark实现pagerank算法解析

网上有这样一个题目:PageRank是执行多次连接的一个迭代算法,因此它是RDD分区操作的一个很好的用例。算法会维护两个数据集:一个由(pageID,linkList)的元素组成,包含每个页面的相邻页面的列表;另一个由(pageID,rank)元素组成,包含每个页面的当前排序值。它按如下步骤进行计算。将每个页面的排序值初始化为1.0。在每次迭代中,对页面p,向其每个相邻页面(有直接链接的页面)发送一个值为rank§/numNeighbors§的贡献值。将每个页面的排序值设为0.15 + 0.85

2020-06-01 11:50:53 1130

原创 PageRank算法详解

搜索引擎的主要工作,是爬虫建立资料库,根据关键词快速查找(倒排索引)含有关键词的页面,将结果按照重要程度排序后呈现给用户。核心难题在于如何对海量检索结果排序(Rank, Not Sort)。1. PageRank和HITS互联网的超链接(hyperlink)构成了一个巨大的有向图,图中的结点代表网页,有向连接表示超链接,称**入链(inlink)为连入某页面的、指向结点的超链接,而出链(outlink)**就是结点出发的超链接。可以将超链接视为一种推荐,由我的主页指向你的主页的超链接,就是我对你的Ho

2020-05-31 20:10:10 3613

原创 深度协同过滤NCF实践

修改官网代码去掉了不方便直接引用的from official.utils.*代码,关键处理处添加了注释。从official.utils.flags扒出一个有用的小函数:def get_gpus_num(): """ 获取GPU个数 """ from tensorflow.python.client import device_lib local_device_protos = device_lib.list_local_devices() return sum([1 for d in

2020-05-30 16:06:41 1551

原创 经典论文阅读(一)--NCF: Neural Collaborative Filtering

NCF是神经网络版本的协同过滤,推荐算法的经典的方法之一。本文回顾一下NCF论文的要点。摘要(What)NCF是一种通用的框架,它可以表达和推广矩阵分解。为了提升NFC的非线性建模能力,我们提出了使用多层感知机去学习用户-项目之间交互函数(interaction function)。引言(Why)矩阵分解(MF):将用户和项目映射到共享潜在空间(shared latent space),使用潜在特征向量(latent features),用以表示用户或项目。这样一来,用户在项目上的交互就被建模为

2020-05-28 22:18:11 3007

原创 Delaunay三角剖分算法初探

Delaunay三角网在空间邻近分析上是一种较好的支持模型, 广泛应用于空间聚类、多边形群的合并、人像关键点提取、形态分析中。问题:一堆二维点中寻找一个与目标点最近(欧氏距离最小)的点。1. 三角剖分与Delaunay剖分的定义   如何把一个散点集合剖分成不均匀的三角形网格,这就是散点集的三角剖分问题,散点集的三角剖分,对数值分析以及图形学来说,都是极为重要的一项预处理技术。该问题图示如下:   1.1. 三角剖分定义  【定义】三角剖分:假设V是二维实数域上的有限点集,边e是由点集中的点作

2020-05-28 18:56:12 2706 1

原创 tensorflow提升树实践

以决策树为基函数的提升方法称为提升树(boosting tree)。提升树采用前向分步算法,根据每轮迭代的残差值,学习得到一个回归树,用加法模型得到提升树的结果。回归问题采用平方误差损失函数,分类问题用指数损失函数。指数损失通过最小化指数损失来逐步学习多个输出为1和−1的二值基函数{φj}j=1b\{\varphi_j\}^b_{j=1}{φj​}j=1b​的线性组合。对离群点、噪声非常敏感,常用在AdaBoost算法中。指数损失详解HIGGS 数据集包含有 11 million 个样本,具有 28

2020-05-26 11:48:13 492

Hive用户指南(Hive_user_guide)_中文版.pdf

Hive用户指南,使用手册,简明扼要。内容包括架构、基本操作、参数设置、UDF,以及优化及使用技巧等等。

2020-07-28

Effective C++ 中文版

Effective C++ 精简版,经典名著你懂的

2014-12-22

Windows程序设计(王艳萍).pdf

Windows程序设计(王艳萍).pdf 王老师精讲

2014-12-22

DebugHacks深入调试.pdf

DebugHacks深入调试.pdf 电子书

2014-12-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除