- 博客(59)
- 收藏
- 关注
原创 xgboost: Why not implement distributed XGBoost on top of spark
的代码可以使开发人员更容易理解和维护分布式版本的代码。由于大部分代码结构和逻辑与单机版相似,只是在分布式计算和通信方面进行了扩展,因此可以降低开发和维护的难度,减少出错的可能性。已经在算法和优化方面做了大量的工作,如采用了近似直方图算法、对目标函数进行二阶泰勒展开、实现了可并行的近似直方图算法、数据预先排序并以块的形式保存等,这些优化使得单机。通过在分布式版本中重用这些优化,可以充分利用已有的成果,减少开发和调优的工作量。高效的核心算法和优化策略:单机版的 XGBoost。
2024-12-31 11:19:55
1336
原创 xgboost 模型单调约束Monotonic Constraints
需要注意的是,在xgboost不同版本中,monotone_constraints的参数格式会有不同,最新版本是支持字典形式的:{“f0”: 1, “f2”: -1},我的版本是1.0.2,只支持str,也可直接设置为(0,-1,1)。mod_feature 中第1个特征不加约束;第2个特征约束为特征值越大,逾期概率就越低;第3个特征约束为特征值越大,逾期概率就越高。在风控模型中,由于业务考虑,特征会有非常强烈的先验,那么可以增加单调约束来提高模型的性能和可解释性,如。
2024-12-27 12:25:12
248
原创 Python模型上线pmml以及自定义函数转换(2)
常用特征转换有sklearn_pandas.DataFrameMapper、sklearn.compose.ColumnTransformer、sklearn.preprocessing.FunctionTransformer等,ColumnTransformer用法如下:2、能转换成pmml文件的特征转换但是functiontransformer在转换pmml的时候总是报Java错误,不支持自定义函数转换,因此目前函数转换主要是用到sklearn2pmml.preprocessing相关的特征预处理过
2023-11-28 18:58:53
1134
原创 LightGBM自定义损失函数
lightgbm建模,在其内置的比较少,如用于二分类的任务只有binary,最多再搭配class_weight来惩罚不同类别的损失函数。但我们可以自定义损失函数,只要损失函数可以求二阶导。
2022-10-18 18:09:17
4595
原创 Linux中grep,awk,sed,xargs
不同于grep、awk、sed等,大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数,所以就需要在管道命令’|'后面搭配。是一种处理文本文件的语言,是一个强大的文本分析工具。特点是处理灵活,功能强大。很简单就是正则表达式匹配,匹配含关键字‘jinxb’的进程,grep还有其他的option可以参见。如上例echo就不能直接使用管道传递过来的参数,需要和xargs 搭配。批量替换文件内容,用法s就是替换命令,g是全局替换。命令的作用,是将标准输入转为命令行参数。
2022-10-13 15:07:15
793
原创 深度学习库DeepCTR-Torch中deepFM
deepFM广泛应用于推荐等稀疏数据的场景,发现一个的三方库,用自有数据测试了下,但是数据集基本上都是连续数据,可能没有体现deepFM的优势。这个数据集的样本分布很均衡,比较容易训练,但最终效果auc不如树模型lgb,后续用其他数据集继续观察。
2022-09-29 20:14:58
1180
转载 清晰易懂,基于pytorch的DeepFM的完整实验代码
DeepFM延续了Wide&Deep的双模型组合的结构,改进之处就在于FM(因子分解机)替换了原来的Wide部分,加强浅层网络部分的特征组合能力。模型结构如下图所示(顶会发这么模糊的图有点不应该),左边的FM部分与右边的DNN共享相同的embedding层,左侧FM对不同特征域的Embedding进行两两交叉,也就是将Embedding向量当做FM中的特征隐向量。隐向量的做法,其实与矩阵分解用隐向量代表用户和物品的做法异曲同工,只是从单纯的用户、物品隐向量扩展到了所有特征上。此外,FM的二阶项可以通过。
2022-09-29 19:54:01
2486
原创 hive 导入导出csv文件
首先在hive中创建自己的table, 并且设置以逗号分隔。确定tmp.hb_label_C表的分布式文件路径。将CSV文件导入到hive数据库,具体操作如下,最后在linux命令行输入。
2022-09-14 12:19:25
7026
原创 Transformer算法理解(1)-位置编码
学习Transformer按照这个图从左到右,从encoder 到decoder逐层解析,首先一个序列输入inputs经过embeding词嵌入之后,加上了Positional Encoding。这是因为Transformer完全基于self-attention机制,不同于RNN,模型并没有捕捉顺序序列的能力,也就是说无论句子的结构怎么打乱,Transformer都会得到类似的结果。这么设计的原因是考虑到在NLP任务中,除了单词的绝对位置,单词的相对位置也非常重要。的编码可以表示为位置。
2022-09-07 17:33:57
1085
原创 Spark addFile()和hdfs上传文件对比
在用spark进行集群分布式模型打分等操作时。可以有两种方式上传文件sc.addFile和hdfs上。
2022-07-27 14:49:46
1191
转载 pyspark基于python虚拟环境运行
1.背景目前大数据使用的是Amazon EMR集群,该集群可根据计算需求变化灵活扩展或收缩集群,就会存在一个问题:当spark任务提交之后,EMR集群会根据计算的需求进行扩展,新扩展的机器上python环境各不相同,并且每次扩展的机器ip不相同(不是同一台机器),对某些第三方包,例如:pandas 还会依赖numpy,并且对版本还有一定要求,必须大于15.4;此时python依赖的冲突就会导致spark任务执行失败。2.解决方案鉴于以上问题,通过搭建独立的Python运行环境可以解决以上问题,同时还可
2022-05-26 15:05:25
1441
转载 Docker打包Python项目
1、项目结构如下docker_test├── Dockerfile├── myapps│ └── hello_world.py└── requirements.txtrequirements.txt是Python运行环境配置,可以在你当前目录下键入:pip freeze > requirements.txt即可导出相关库的信息myapps里面放你的程序我这里演示导入了numpy和pandas,如果能成功运行代表镜像创建成功,并且环境也导入了。2、创建一个Dockerfile
2022-05-09 17:00:21
2432
原创 Docker 安装 mysql并添加远程访问权限
#docker 中下载 最新版mysqldocker pull mysql#启动docker run --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql#进入容器docker exec -it mysql bash#登录mysqlmysql -u root -p123456#添加远程登录用户CREATE USER 'jinxb'@'%' IDENTIFIED WITH mysql_native
2022-05-07 11:50:57
1750
转载 xgboost4j报错:Check failed:preds.Size()==info.labels_.Size()
运行过程中报出以下错误:ml.dmlc.xgboost4j.java.XGBoostError: [14:15:26] D:\a\xgboost\xgboost\src\objective\regression_obj.cu:36: Check failed: info.labels.Size() == preds.Size() (51922 vs. 103844) : Invalid shape of labels.报错发生原因不清楚。解决方案是:xgboost的配置参数里,如果指定了“ob
2022-04-20 14:17:45
1726
1
原创 Sparksql行列转换
首先创建一个测试数据from pyspark import SparkConf, SparkContextfrom pyspark.sql import SparkSessionspark=SparkSession.builder.appName('TestAPP') .enableHiveSupport() .getOrCreate()df = spark.createDataFrame([('math','alice',88), ('chinese','alice',92
2022-04-12 14:26:45
3470
原创 ExcelWriter和StyleFrame批量生成图片到excel
import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom openpyxl import load_workbookfrom openpyxl.drawing.image import Imagedef get_scatter_plot(data_df, varname, location): mdata = data_df[data_df['var_name']==varname] f
2022-04-02 14:50:11
752
原创 Spark、Hive常见问题整理
1、sc.addFile() 、pyspark.SparkFiles.get()把文件分发到集群中每个worker节点,然后worker会把文件存放在临时目录下,spark的driver和executor可以通过pyspark.SparkFiles.get()方法来获取文件的路径,从而能够保证driver和每个worker都能正确访问到文件。......
2022-04-01 16:20:00
2481
转载 风控模型常见问题
1.数据驱动型金融场景下,风控模型的种类有哪些?获客阶段:用户响应模型,风险预筛选模型授信阶段:申请评分模型,反欺诈模型,风险定价模型,收益评分模型贷中阶段:行为评分模型,交易欺诈模型,客户流失模型贷后阶段:预催收模型,早期催收模型,晚期催收模型2.简单描述一些风控建模的流程?前期准备工作阶段:不同的模型针对不同的业务场景,在建模项目开始前需要对业务的逻辑和需求有清晰的理解,明确模型的业务目标和作用,项目周期时间和安排进度,以及模型效果的要求。模型设计阶段:包括模型的选择(评分卡亦或是集成
2021-10-26 10:25:23
847
原创 python变量衍生apply速度优化及改进
python数据分析生成衍生变量的时候,使用apply的方法速度很慢,尤其是遇到批量生成好几千变量,且数据量比较大的情况下。N = 10A_list = np.random.randint(1, 100, N)B_list = np.random.randint(1, 100, N)df = pd.DataFrame({'A': A_list, 'B': B_list})df.head()# A B# 0 78 50# 1 23 91# 2 55 62# 3 8
2021-08-13 17:28:08
959
原创 pytorch 中的gather函数
先看官方文档torch.gather(input, dim, index, *, sparse_grad=False, out=None) → TensorGathers values along an axis specified by dim.For a 3-D tensor the output is specified by:out[i][j][k] = input[index[i][j][k]][j][k] # if dim == 0out[i][j][k] = input[i][in
2021-07-15 15:56:56
430
原创 Python模型上线pmml以及自定义函数转换(1)
通常xgb或lgb模型通过pmml上线都比较简单,但是逻辑回归模型因为涉及到woe的转换,就要通过自定义转换函数的方式来实现。1、常规转换-模型训练好之后立即转换import joblibfrom sklearn2pmml import PMMLPipeline,sklearn2pmml# 保存模型 python可读入def dump(clf, fp='clf'): joblib.dump(feature_names_2, 'feature_' + fp +'.pkl') jo
2021-07-09 16:32:44
7710
8
转载 海量数据处理--使用sklearn进行增量学习
转载来自:https://blog.youkuaiyun.com/whiterbear/article/details/53120004问题实际处理和解决机器学习问题过程中,我们会遇到一些“大数据”问题,比如有上百万条数据,上千上万维特征,此时数据存储已经达到10G这种级别。这种情况下,如果还是直接使用传统的方式肯定行不通,比如当你想把数据load到内存中转成numpy数组,你会发现要么创建不了那么大的numpy矩阵,要么直接加载时报MemeryError。在这种情况下我了解了几种选择办法,对数据进行降维,
2020-08-28 16:31:06
578
原创 Python : statsmodels & sklearn LogisticRegression
python 逻辑回归 satasmodels 和 sklearn LogisticRegression结果系数总是不一致除了LogisticRegression要设置fit_intercept = False以外,会发现sklearn的各变量的系数都会比satasmodels 要小一些这说明sklearn中有正则化,但是satasmodels 的logit没有正则化,而且sklearn中的正则化无法取消。解决方法如下:如图所示可以对反正则化系数C设置一个极大值,结果就很接近了问题参考.
2020-06-04 15:28:19
1193
原创 xgboost的特征重要性feature_importance计算
https://www.cnblogs.com/RainLa/p/11929515.html
2020-05-13 15:24:25
6297
1
原创 Python变量分箱--woe值单调分箱
最近上传了一个变量分箱的方法到pypi,这个包的主要有以下说明:缺失值单独一箱,不论缺失的数量多少;生成的分箱woe值是单调的,后续有时间会迭代U型分箱的版本;会有分箱最小样本数占比,类似决策树的最小叶节点占比;分箱成功的变量才会保留,有可能失败的情况是找不出同时满足上述2和3的分箱;具体的变量分箱原理见之前的博客。可以通过pip install woe-linear-bin 安装...
2019-10-28 14:15:06
7616
11
原创 如何在PyPi发布自己的包
主要是参考下面几篇博客https://blog.youkuaiyun.com/mouday/article/details/80736312https://blog.youkuaiyun.com/mouday/article/details/79611454https://www.ucloud.cn/yun/38501.htmlhttps://www.cnblogs.com/yixianclove/p/77767...
2019-10-25 14:49:10
373
转载 转载 -- 携程金融大数据风控算法实践
「数据中台」模型亦是基于完善的技术平台的,携程金融数据中台可以抽象为三个层次,底层是基础数据层,中层业务抽象模型层,以及最上层的算法模型层。Fig . 2 携程金融大数据中台的抽象结构中台这个概念早期是由美军的作战体系演化而来的,技术上所说的“中台”主要是指学习这种高效、灵活和强大的指挥作战体系。比如电商领域,经过十几年的发展,组织庞大而复杂,业务不断细化拆分,也导致野蛮发展的系统越来越不...
2019-04-17 13:59:00
1397
原创 Tensorflow、Keras和Pytorch安装及应用问题
以下是用Anaconda安装tensorflow遇到的一些坑。一:安装tensorflow安装Tensorflow时,需要从Anaconda仓库中下载,一般默认链接的都是国外镜像地址,这里用国内清华镜像,需要改一下链接镜像的地址。这里,打开Anaconda中Anaconda Prompt,然后输入:conda config --add channels https://mirrors.tun...
2019-04-01 16:35:06
2763
原创 feature_importances_ - 从决策树到gbdt
在用sklearn的时候经常用到feature_importances_ 来做特征筛选,那这么属性到底是啥呢。分析gbdt的源码发现来源于每个base_estimator的决策树的feature_importances_由此发现计算逻辑来源于cython文件,这个文件可以在其github上查看源代码而在DecisionTreeRegressor和DecisionTreeClass...
2019-02-26 17:47:13
21514
4
原创 模型监控中的应用--Excel动态图表和VBA
在监控模型变量的有效性和稳定性时需要看woe变化以及iv变化,可以做成下面的动态图表,可以同时选择变量以及监控的指标。方法如下:准备数据:然后,插入数据透视表,行添加为‘state_date’,列添加为‘var_clus’,考察指标设置为求和项,注意:var_name此时不添加,对透视表添加‘切片器’,将var_name勾选。最后,对透视表插入折线图,并在当前sheet添加如下宏代码。...
2019-02-19 14:29:57
1475
原创 特征筛选(变量聚类proc varclus)
在模型筛选变量的时候,我们可以用varclus进行变量聚类分析来进行降维。提到降维我们会首先想到主成分分析,主成分实际上是正交主成分。而varclus是斜交主成分,其是在正交主成分的基础上再做了一些旋转。这样得到的主成分不仅能保留主成分的优点(主成分变量相关程度比较低)。另外一方面又能有很到的解释性,并且能达到对变量聚类的效果。综合说来就是,主成分分析是生成了新的主成分变量,用原始变量的线性关系...
2019-02-18 18:53:19
11104
4
原创 SVM--从感知机到间隔最大化再到核函数(待完善)
SVM并不是很好理解,到现在能完整梳理推导出全流程着实费了不少时间和精力。网上的教程也是很多很杂,但觉得讲解较好的还是李航的统计学习方法和这位大牛的博文。因此本文并不会 ...
2018-09-13 17:28:19
782
原创 浅谈线性变换、PCA和SVD
矩阵变换:先来看下几何意义,这些图来源于知乎 方阵和向量相乘,从几何意义上来讲,就是对向量作 旋转、伸缩 变换。 比如对角矩阵M作用在任何一个向量上 其几何意义为在水平x方向上方向上拉伸3倍,y方向保持不变的线性变换。换言之对角矩阵起到作用是将水平垂直网格作水平拉伸(或者反射后水平拉伸)的线性变换。 如果M不是对角矩阵,而是一个对称矩阵 那么,我们也总可以找到一组网格...
2018-09-11 13:28:09
1521
原创 matplotlib绘制热力图
以在sklearn的svm为例 plt.figure(figsize=(8, 6))plt.subplots_adjust(left=.2, right=0.95, bottom=0.15, top=0.95)#设置标注前后左右的距离plt.imshow(scores, interpolation='nearest', cmap=plt.cm.hot, norm=Mid...
2018-08-29 15:49:22
30622
1
原创 Python matplotlib应用
matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。 import matplotlib.pyplot as plt 1、plt.figure(figsize=(8, 6)) 设置初始图片的属性 2、 plt.xlabel(‘gamma’) plt.ylabel(‘C’) 设置x,y轴的名字 3、plt....
2018-08-29 15:13:04
491
原创 使用navicat+mysql 时遇到的一些问题
1、让别人的能连接到本地主机上的mysql: 操作如下:cd mysql安装目录\bin mysql -u root -p 123456; mysql GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION; mysql flush privileges; 其中12345...
2018-06-21 14:40:47
445
原创 logistic regression--sas逐步回归推导验证
1、逻辑回归定义事件发生的概率为 其中: 因此对于输入x分类结果为类别1和类别0的概率分别为: (1)式综合起来可以写成: 取似然函数为: 对数似然函数为: 实际求解中通常取 -2log L 求解变量系数就是使用梯度下降法求 -2log L 的最小值,sas logistic 采用牛顿法 和Fisher scoring法(默认)。先说几个概念1、似...
2018-06-12 19:01:38
6712
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人