- 博客(137)
- 资源 (4)
- 收藏
- 关注
原创 [Spark] 大纲
1、Spark任务提交流程2、SparkSQL执行流程2.1 RBO,基于规则的优化2.2 CBO,基于成本的优化3、Spark性能调优3.1 固定资源申请和动态资源分配3.2 数据倾斜常见解决方法3.3 小文件优化4、Spark 3.04.1 动态分区裁剪(Dynamic Partition Pruning, DPP)4.2 自适应查询执行(Adaptive Query Execution, AQE)
2023-07-26 21:37:34
14571
原创 [推荐系统] 手撕DeepFM模型
模型总体架构图设计动机在Wide & Deep模型中,Wide部分是一个简单的线性模型,交叉特征需要根据经验人工去挑选组合,而FM模型,可以自动学习交叉特征,所以自然而然想到,可以用FM模型来替换Wide & Deep模型的Wide部分,所以名字叫DeepFM。比较特别的是,FM部分和Deep部分会共享Embedding权重,根据论文的说法,这样可以同时学习到高阶和低阶的特征交互信息。FM部分图中,黑色线表示的是FM模型中的一次项,红色线表示的是二次项。Deep部分问题1:
2022-01-13 00:37:37
375
原创 [高效Mac] 多显示器快速切换鼠标焦点和移动窗口
多显示器快速切换鼠标焦点和移动窗口,使用免费的Hammerspoon步骤:1、下载Hammerspoon2、在【安全性与隐私】->【辅助功能】中开启控制权限3、在任务栏点击图标,选择Open Config,也就是打开/Users/gld/.hammerspoon/init.lua,填写以下代码并保存-- 使用【Option+Q】在不同屏幕之间移动鼠标hs.hotkey.bind({'option'}, 'Q', function() local screen = hs.mouse.
2021-12-31 21:22:42
94436
13
原创 搜索推荐评价指标Precision@k、Recall@k、F1@k、NDCG@k
假设对于一个查询,真实相关的结果是{A,C,E, Q},搜索模型得到5个结果{A, B, C, D, E},则其中只有A,C,E是相关的,标记为{1, 0, 1, 0, 1},1表示相关,0表示不相关。Precision@k即预测正确的相关结果占返回的所有结果的比例:Precision@k=TP@kTP@k+FP@kPrecision@k = \frac{TP@k}{TP@k+FP@k}Precision@k=TP@k+FP@kTP@k取值范围[0,1],越大越好。例子:Precision
2021-11-03 11:35:58
153819
7
原创 [深度学习] Recurrent Units详细计算过程——LSTM
文章大部分基于Christopher Olah的Understanding LSTM Networks。(题外话:不知道为什么,每次看到好论文或好文章,我都很喜欢“人肉”一下大牛的来历,结果查了下这篇文章的作者,从LinkedIn里看到简历,教育背景里写着University of Real Life Experience,难道是没上大学?目前他就职Google Brain作为Research
2021-10-16 23:01:40
1564
原创 [Spark] GraphX入门
目前,原生Spark的GraphX只有Scala接口,如果想要用Python,可以使用GraphFames。1、安装GraphFrames首先根据Spark版本到SparkPackages下载合适的版本,因为我使用的是Spark 2.2,所以我这里下载的是graphframes-0.6.0-spark2.2-s_2.11.jar。可以使用Maven来下载该包以及依赖包。新建pom.xml文件,从SparkPackages里复制模板并修改版本为你需要的版本:<?xml version="1.0
2021-09-15 15:03:14
1337
原创 [机器学习] 手撕XGBoost超参数
本文以XGBoost 1.4.2版本为例,以具体例子,详解XGBoost中超参数的含义以及用法。import osimport pandas as pdimport xgboost as xgbfrom sklearn.tree import export_graphvizcols = ['height', 'weight', 'chinese', 'math', 'english', 'gk']feature_names = ['height', 'weight', 'chinese',
2021-09-07 03:31:32
3119
原创 [机器学习] XGBoost和传统GBDT的区别
XGBoost(eXtreme Gradient Boosting)是GBDT方法的一种高效、灵活、便携的工程化实现。注意,XGBoost不是一种算法的名称,而是同属于GBDT框架下,一种Boosting的思想。另外,随着代码版本的迭代,很多新特性也被借鉴进来,比如LightGBM中的直方图方法,在2017年就被加入到了XGBoost中。相比传统的GBDT实现,XGBoost(以版本1.4.2为例)区别有以下几点:1、XGBoost损失函数使用二阶泰勒展开作为近似。2、支持自定义损失函数,需要函数一
2021-09-07 01:28:50
990
原创 [机器学习] 面试官:听说你对GBDT很熟?
直接看参考文章[1],简单易懂,给作者一个大大的赞。参考文章:[1] GBDT算法原理以及实例理解[2] 梯度提升树(GBDT)原理小结
2021-08-31 09:34:40
193
3
原创 [Spark] persist和checkpoint
了解Spark的缓存机制对提高作业的计算速度和可靠性具有非常大的帮助。persist和cachepersist和cache都是可以将数据(RDD)缓存到内存或持久化到磁盘的方法。虽然这两个方法都是惰性计算,但严格来说,persist和cache既不是转换算子,也不是行动算子,只是标记了当前RDD要进行缓存。cache是persist的特殊用法,即参数为MEMORY_ONLY。persist(storageLevel=StorageLevel(False, True, False, False, 1)
2021-08-30 00:25:33
356
原创 [推荐系统] SVD、FunkSVD、BiasSVD和SVD++
FunkSVDFunkSVD方法是Simon Funk在Netflix电影推荐比赛中使用并取得良好效果,因此得名。不同传统SVD分解成3个矩阵,FunkSVD为了简化运算,只分解为2个矩阵:Mm×n=Pm×kTQk×nM_{m \times n} = P_{m \times k}^T Q_{k \times n}Mm×n=Pm×kTQk×n那么怎么得到矩阵P和Q呢?这里巧妙地利用了优化的思想:假设函数:y=qjTpiy = q_j^Tp_iy=qjTpi损失函数:L=∑i,
2021-08-29 23:34:04
2068
原创 [Spark] 手撕Job、Stage、Task划分机制
Spark中:1、根据算子是否是行动(Action)算子,来划分Job;2、根据算子运算是否需要洗牌(Shuffle),来划分Stage;3、根据RDD的分区数,来划分Task。下面以例子来进行说明。首先启动一个Spark的Application:pyspark --queue gldDriver的核数和内存,Executor的实例数、核数和内存都是默认值,即–driver-cores=1, --driver-memory=1G, --num-executors=2, --executor-
2021-08-29 01:08:24
4288
原创 [推荐系统] Wide & Deep模型
模型总体架构Wide部分:Deep部分:模型本身的结构是非常简单的,但是需要根据具体问题决定哪些特征放在Wide部分,哪些放在Deep部分。Wide部分的特征,上图绿色部分输入是用户安装的App(User Installed App)和当前曝光App(Impression App)的交叉特征,这两个都是类别型特征(Categorical Feature),而且App的数量一般都是百万级别,因此这里维数会非常高Deep部分的特征,上图红色部分对于类别型特征(Categorical Featu
2021-08-05 04:24:36
253
原创 [推荐系统] 手撕FM模型
基本形式FM模型在线性模型的基础上,增加了一个二次项:y=w0+∑i=1nwixi+∑i=1n−1∑j=i+1nwijxixjy = w_0 + \sum^{n}_{i=1} w_i x_i + \sum^{n-1}_{i=1} \sum^{n}_{j=i+1} w_{ij} x_i x_jy=w0+i=1∑nwixi+i=1∑n−1j=i+1∑nwijxixjw0w_0w0 是常数项,这里有1个参数需要训练;∑i=1nwixi\sum^{n}_{i=1} w_i x_i∑i
2021-08-03 02:23:51
206
原创 [基础算法] 快速排序
def quick_sort(nums, left, right): pivot = nums[left] i = left j = right while i < j: while nums[j] >= pivot and j > i: j -= 1 if j > i: nums[i] = nums[j] i += 1 while
2021-06-22 14:32:06
192
原创 [Hive] Mapper和Reducer数量确定
一、Mapper数分为两种情况:Situation 1: 如果hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat,采用文件分割算法,即针对每一个输入文件做以下循环:1、 文件大小/splitSize>1.1,创建一个Map,这个Map的大小=splitSize,文件剩余大小=文件大小-splitSize2 、文件剩余大小/splitSize<1.1,剩余的部分作为一个Map从这里可以知道,Mapper数肯定大于或
2021-06-15 04:41:20
962
原创 [Spark] 固定资源申请和动态资源分配
本文假设Spark部署方式为YARN。一个Container包含一个Executor(即一个JVM进程)。
2021-06-15 01:27:50
2500
原创 [PMML] LightGBM模型保存为PMML文件,通过Java或者Python调用
LightGBM多分类import osimport lightgbm as lgbfrom sklearn import datasetsfrom sklearn.model_selection import train_test_splitiris = datasets.load_iris()X = iris.datay = iris.targetX_train, X_test, y_train, y_test = train_test_split(X, y, test_size
2021-06-01 20:00:36
4510
2
原创 Windows 10安装xLearn 0.44
准备工作:1、首先下载安装Visual Studio 2017,注意一定是2017版本,社区版都可以,注意选择C++开发环境,我这里用的就是社区版2、下载安装CMake,我用的版本是cmake-3.20.1-windows-x86_64.msi源码编译:$ git clone https://github.com/aksnzhy/xlearn.git # 从Git下载源码,当前是0.44版本$ cd xlearn # 切换到xlearn目录下$ mkdir build # 新建一个build目录
2021-05-13 19:49:13
292
原创 [Windows开发] 用C++创建第一个窗口程序
Win32 API(也称为Windows API)是Windows比较原生态的C++ API。#ifndef UNICODE#define UNICODE#endif#include <windows.h>LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR
2020-10-30 04:00:02
4576
原创 Stanford CoreNLP 3.6.0 使用入门
Stanford CoreNLP由Java语言开发,是斯坦福大学自然语言处理小组的研究成果。 包含自然语言处理的基本任务:分词、词性标注、依存句法分析、命名实体识别等等,支持多语言。项目地址:GitHub本文主要记录使用注意事项。Stage 1首先我们要下载 CoreNLP Java包。 然后在Eclipse里面的Classpath里面引入jar文件。如下图红色框所示: CoreNLP只需
2020-10-01 17:03:06
15534
5
原创 [TensorFlow 2.0] Keras三种搭建模型的方式——序列式、函数式、Model子类
数据集:# coding = utf-8import numpy as npimport tensorflow as tffrom tensorflow import keras# Prepare data X_train: ndarray,(60000, 28, 28) y_train: ndarray, (60000,)(X_train, y_train), (X_valid, y_valid) = keras.datasets.fashion_mnist.load_data()X_t
2020-05-31 18:55:18
2130
1
原创 B+树
MySQL中B+树和B树的不同之处:1、非叶节点如果有k个元素,则必有k个孩子节点;2、所有父节点元素都同时存在于子节点元素中,在子节点元素中是最大或最小的元素;3、所有的叶子节点包含了全部元素,且从小到大排序,节点间用指针链接起来。例子,下面是[1, 2, 3, 5, 6, 8, 9, 11, 13, 15]构成的一棵B+树:参考:[1] 漫画:什么是B+树?...
2020-02-13 18:52:33
419
原创 B树
MongoDB索引主要用的数据结构是B树。B树(Balance Tree,B-Tree),是一棵多路平衡查找树。一个m阶的B树具有如下几个特征:1、根节点包含的元素数量范围:1≤k≤m−11 \le k \le m-11≤k≤m−1;比如5阶B树,1≤k≤41 \le k \le 41≤k≤42、非根节点包含的元素数量范围:m/2≤k≤m−1m/2 \le k \le m-1m/2≤k≤m...
2020-02-13 18:11:35
588
原创 PuLP—线性规划高级例子
文章来自Optimization Modeling in Python: PuLP, Gurobi, and CPLEX,加入个人见解。问题:min∑i=1n∑j=1mcijxijs.t.∑i=1naijxij≤bj∀jxij≥lij∀i,jxij≤uij∀i,j\begin{aligned}& min& \quad \sum_{i=1}^{n} \sum_{j=1}^{...
2020-02-11 13:58:18
1516
1
原创 使用高斯混合模型进行聚类
如下图所示是600个数据点:生成模拟数据import numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom sklearn.mixture import GaussianMixturen_samples = 300# generate random sample, two componentsnp....
2020-01-20 19:19:03
1100
原创 随机森林可视化
环境:Windows 10,Python 3.7首先需要安装Graphviz,这里我们使用的是graphviz-2.38.msi,安装在D:\Program Files (x86)\Graphviz2.38。代码:import osfrom sklearn.datasets import load_irisfrom sklearn.ensemble import RandomForest...
2019-09-22 10:50:22
12180
3
原创 手撕随机森林的超参数
from sklearn.ensemble import RandomForestRegressor# 默认参数model = RandomForestRegressor(n_estimators=10, criterion="mse", max_depth=None, min_samples_split=2, min_...
2019-09-20 10:15:51
5886
原创 基于遗传算法的车辆路径规划问题
pointdemandxyn12.3-57n21.60-10.1n3n4n5n6n7n8n9总共有9个点,简单起见,我们编号为1、2、…、9,起点编号为0。一个方案就是一个个体(Individual),比如下面是三个个体:个体编码Individ...
2019-09-09 01:36:50
11883
8
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人