<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[杨旭东的专栏]]></title><description><![CDATA[坚持学习和分享]]></description><link>https://blog.youkuaiyun.com/yangxudong</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yangxudong]]></copyright><item><title><![CDATA[在Dataworks调度里检查上游表的分区是否已经产出]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/139652249</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/139652249</guid><author>yangxudong</author><pubDate>Thu, 13 Jun 2024 13:52:50 +0800</pubDate><description><![CDATA[【代码】在Dataworks调度里检查上游表的分区是否已经产出。]]></description><category></category></item><item><title><![CDATA[【召回评估】hitrate]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/139070937</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/139070937</guid><author>yangxudong</author><pubDate>Mon, 20 May 2024 17:44:55 +0800</pubDate><description><![CDATA[【代码】【召回评估】hitrate。]]></description><category></category></item><item><title><![CDATA[wm_concat_sort]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/137808500</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/137808500</guid><author>yangxudong</author><pubDate>Tue, 16 Apr 2024 09:07:31 +0800</pubDate><description><![CDATA[odps udaf wm_concat_sort]]></description><category></category></item><item><title><![CDATA[使用Spark SQL读取阿里云OSS的数据]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/134455827</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/134455827</guid><author>yangxudong</author><pubDate>Fri, 17 Nov 2023 09:50:34 +0800</pubDate><description><![CDATA[如何使用spark sql读写阿里云OSS上的Parquet数据？]]></description><category></category></item><item><title><![CDATA[模型效果上限预估、分类模型Bad Case分析方法]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/127128303</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/127128303</guid><author>yangxudong</author><pubDate>Fri, 30 Sep 2022 19:31:36 +0800</pubDate><description><![CDATA[模型效果上限预估、分类模型Bad Case分析方法
给定训练和测试数据集，训练某个二分类模型（如，GBDT算法），我们通过交叉验证的方法得到了一组最优超参数以及对应的最优模型，但在测试集上这个模型仍有一定的误差率，也就说模型的预测结果存在一定数量的bad case。那么，目前的模型逼近了效果的上限了吗？ 这些bad case有可能被解决吗？如果可以，该如何解决呢？
回答这些问题的前提条件是样本和特征已经固定下来，本文不讨论那些数据集本身还在迭代变化的情况。
一、两类Bad Case

标签正确的困难样本。模]]></description><category></category></item><item><title><![CDATA[机器学习模型交叉验证脚本]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/126938833</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/126938833</guid><author>yangxudong</author><pubDate>Mon, 19 Sep 2022 17:59:20 +0800</pubDate><description><![CDATA[机器学习模型交叉验证脚本
本文以阿里云机器学习平台上的 ps_smart （GBDT）算法为例，提供一个搜索最佳超参数的交叉验证任务的bash脚本。
机器学习模型超参数网格搜索脚本 提供了超参数网格搜索的能力。然而，当验证集的数量较少时，网格搜索的最优超参数非常容易过拟合，在实际的生产环境中，往往效果不如预期。为了缓解数据量少的问题，我们把网格搜索的Top N最优超参数保存下来，对这组超参数继续使用交叉验证的方式评估每组超参数对应的模型的实现效果指标。
本文提供的示例是一个LTV预测的回归任务，计算MAE、]]></description><category></category></item><item><title><![CDATA[推荐模型离线评测效果好，线上效果却不佳的原因]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/126684093</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/126684093</guid><author>yangxudong</author><pubDate>Mon, 05 Sep 2022 11:00:00 +0800</pubDate><description><![CDATA[在推荐算法领域，时常会出现模型离线评测效果好，比如AUC、准召等指标大涨，但上线后业务指标效果不佳，甚至下降的情况，比如线上CTR或CVR下跌。

本文尝试列举一些常见的原因，为大家排查问题提供一点思路。]]></description><category></category></item><item><title><![CDATA[推荐算法效果不佳时的检查清单]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/126683682</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/126683682</guid><author>yangxudong</author><pubDate>Sun, 04 Sep 2022 17:00:00 +0800</pubDate><description><![CDATA[有时候我们会遇到推荐算法上线之后，效果不如预期的情况。这种情况下，该如何改进呢？下面就尝试列出一些检查清单，按照重要性的顺序，建议从上往下依次检查。当然，这些清单还不全面，欢迎大家一起来补充！]]></description><category></category></item><item><title><![CDATA[推荐系统中的特征工程]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/126684382</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/126684382</guid><author>yangxudong</author><pubDate>Sat, 03 Sep 2022 23:50:16 +0800</pubDate><description><![CDATA[摘要：深度学习时期，与CV、语音、NLP领域不同，搜推广场景下特征工程仍然对业务效果具有很大的影响，并且占据了算法工程师的很多精力。数据决定了效果的上限，算法只能决定逼近上限的程度，而特征工程则是数据与算法之间的桥梁。本文尝试总结一些在推荐场景下做特征工程的常用套路，包括常用的特征变换算子、Bin-Counting技术以及特征查漏补缺的方法。
读者受益

深入理解常用的特征变换操作。了解优质特征工程的判断标准。掌握推荐场景下构建高质量特征的一般方法。
一、为什么要精做特征工程
在完整的机器学习流水线中，特征]]></description><category></category></item><item><title><![CDATA[推荐冷启动召回模型DropoutNet深度解析与改进]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/126680596</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/126680596</guid><author>yangxudong</author><pubDate>Sat, 03 Sep 2022 18:02:10 +0800</pubDate><description><![CDATA[通常推荐系统通过协同过滤、矩阵分解或是深度学习模型来生成推荐候选集，这些召回算法一般都依赖于用户-物品行为矩阵。在真实的推荐系统中，会有源源不断的新用户、新物品加入，这些新加入系统的用户和物品由于缺乏足够丰富的历史交互行为数据，常常不能获得准确的推荐内容，或被准确推荐给合适的用户。这就是所谓的推荐冷启动问题。冷启动对推荐系统来说是一个挑战，究其原因是因为现有的推荐算法，无论是召回、粗排还是精排模块，都对新用户、新物品不友好，它们往往过度依赖系统收集到的用户行为数据，而新用户和新物品的行为数据是很少的。这就导]]></description><category></category></item><item><title><![CDATA[多任务学习算法在推荐系统中的应用]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/126680158</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/126680158</guid><author>yangxudong</author><pubDate>Sat, 03 Sep 2022 17:30:03 +0800</pubDate><description><![CDATA[本文概要讲述了多任务学习的定义、动机和一般方法，概要介绍了目前主流的几种多目标排序模型。并结合电商平台商品详情页的业务场景具体介绍了如何构建样本，如何做特征工程。并且推荐基于开源的面向工业界的EasyRec推荐算法训练框架来构建做算法的训练和评估。至于模型服务的部署，每家公司的平台各不相同，就不详细介绍了。]]></description><category></category></item><item><title><![CDATA[【全网最浅显易懂】GBDT(xgboost)算法原理深入剖析]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/126679680</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/126679680</guid><author>yangxudong</author><pubDate>Sat, 03 Sep 2022 17:02:27 +0800</pubDate><description><![CDATA[梯度提升（Gradient boosting）是一种用于回归、分类和排序任务的技术，属于Boosting算法族的一部分。Boosting是一族可将弱学习器提升为强学习器的算法，属于集成学习（ensemble learning）的范畴。。通俗地说，就是“三个臭皮匠顶个诸葛亮”的道理。梯度提升同其他boosting方法一样，通过集成（ensemble）多个弱学习器，通常是决策树，来构建最终的预测模型。Boosting、bagging和stacking是集成学习的三种主要方法。]]></description><category></category></item><item><title><![CDATA[Hive 分段采样]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/80654847</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/80654847</guid><author>yangxudong</author><pubDate>Mon, 11 Jun 2018 17:04:35 +0800</pubDate><description><![CDATA[需求

从某Hive Table中按照某字段的值的排名（rank）分成N组，第1组为排名前 1/N的内容，第2组为排名前1/N ~ 2/N的内容，…，依次类推。然后每组内部随着采样M条记录。

案例

某搜索引擎的搜索日志中，按照每日搜索次数降序排列搜索关键词（query），按照排名分成10组，第1组为搜索次数排名前10%的记录；第2组为搜索次数排名前10%~20%之间的记录；第3组为搜索次数排名...]]></description><category></category></item><item><title><![CDATA[GBDT算法的特征重要度计算]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/53899260</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/53899260</guid><author>yangxudong</author><pubDate>Tue, 27 Dec 2016 21:22:59 +0800</pubDate><description><![CDATA[基于树的集成算法还有一个很好的特性，就是模型训练结束后可以输出模型所使用的特征的相对重要度，便于我们选择特征，理解哪些因素是对预测有关键影响，这在某些领域（如生物信息学、神经系统科学等）特别重要。本文主要介绍基于树的集成算法如何计算各特征的相对重要度。]]></description><category></category></item><item><title><![CDATA[GBDT算法原理深入解析]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/53872141</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/53872141</guid><author>yangxudong</author><pubDate>Sun, 25 Dec 2016 20:34:46 +0800</pubDate><description><![CDATA[本文对GBDT算法原理进行介绍，从机器学习的关键元素出发，一步一步推导出GBDT算法背后的理论基础，读者可以从这个过程中了解到GBDT算法的来龙去脉。对于该算法的工程实现，本文也有较好的指导意义，实际上对机器学习关键概念元素的区分对应了软件工程中的“开放封闭原则”的思想，基于此思想的实现将会具有很好的模块独立性和扩展性。]]></description><category></category></item><item><title><![CDATA[支持中文的基于词为基本粒度的前缀树（prefix trie）python实现]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/40538987</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/40538987</guid><author>yangxudong</author><pubDate>Tue, 28 Oct 2014 13:35:11 +0800</pubDate><description><![CDATA[Trie树，也叫字典树、前缀树。可用于”predictive text”和”autocompletion”，亦可用于统计词频（边插入Trie树边更新或添加词频）。

在计算机科学中，trie，又称前缀树或字典树，是一种有序树，用于保存关联数组，其中的键通常是字符串。与二叉查找树不同，键不是直接保存在节点中，而是由节点在树中的位置决定。一个节点的所有子孙都有相同的前缀，也就是这个节点对应的字符串]]></description><category></category></item><item><title><![CDATA[机器学习完整过程案例分布解析，python代码解析]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/26869841</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/26869841</guid><author>yangxudong</author><pubDate>Sat, 24 May 2014 21:34:09 +0800</pubDate><description><![CDATA[所谓学习问题，是指观察由n个样本组成的集合，并根据这些数据来预测未知数据的性质。

学习任务（一个二分类问题）：

区分一个普通的互联网检索Query是否具有某个垂直领域的意图。假设现在有一个O2O领域的垂直搜索引擎，专门为用户提供团购、优惠券的检索；同时存在一个通用的搜索引擎，比如百度，通用搜索引擎希望能够识别出一个Query是否具有O2O检索意图，如果有则调用O2O垂直搜索引擎，获取结]]></description><category></category></item><item><title><![CDATA[用hadoop实现SimRank++算法(1)----权值转移矩阵的计算]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/24824815</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/24824815</guid><author>yangxudong</author><pubDate>Thu, 01 May 2014 02:26:53 +0800</pubDate><description><![CDATA[本文主要针对广告检索领域的查询重写应用，根据查询-广告点击二部图，在MapReduce框架上实现SimRank++算法，关于SimRank++算法的背景和原理请参看前一篇文章《基于MapReduce的SimRank++算法研究与实现》。

SimRank++的矩阵形式的计算公式为：

算法主要步骤如下：
Step1: 计算权值矩阵，并获取最大Query编号和最大广告编号；
Step2:]]></description><category></category></item><item><title><![CDATA[基于MapReduce的SimRank++算法研究与实现]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/24788137</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/24788137</guid><author>yangxudong</author><pubDate>Wed, 30 Apr 2014 14:14:28 +0800</pubDate><description><![CDATA[一、算法应用背景


计算广告学(Computational Advertising)是一门广告营销科学，以追求广告投放的收益最大化为目标，重点解决用户与广告匹配的相关性和广告的竞价模型问题，涉及到自然语言处理、数据挖掘以及竞价营销、创意设计等诸多学科的融合。计算广告是根据给定的用户和网页内容，通过计算得到与之最匹配的广告并进行精准定向投放的一种广告投放机制，其目的是为用户提供最易于接受的优]]></description><category></category></item><item><title><![CDATA[UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理(c++实现）]]></title><link>https://blog.youkuaiyun.com/yangxudong/article/details/24267155</link><guid>https://blog.youkuaiyun.com/yangxudong/article/details/24267155</guid><author>yangxudong</author><pubDate>Mon, 21 Apr 2014 18:29:23 +0800</pubDate><description><![CDATA[一、字符编码简介
1. ASCII码
在计算机内部，所有的信息最终都表示为一个二进制的字符串。每一个二进制位（bit）有0和1两种状态，因此八个二进制位就可以组合出256种状态，这被称为一个字节（byte）。也就是说，一个字节一共可以用来表示256种不同的状态，每一个状态对应一个符号，就是256个符号，从0000000到11111111。
上个世纪60年代，美国制定了一套字符编码，对英语字符]]></description><category></category></item></channel></rss>