算法人生(11):从“梯度提升树(GBDT)”看“2/8 时间管理法”
梯度提升树(Gradient Boosting Decision Trees, GBDT)是一种高效的机器学习算法,它通过迭代构建多个决策树并综合它们的预测结果来提高预测的准确率。GBDT 的核心思想在于,每一棵树都尝试对前一棵树留下的预测残差进行修正,在构建过程中,每个特征通过分裂节点的方式对模型性能的提升做出贡献,由此可以评估每个特征的重要性,步骤如下:
训练模型: 使用训练数据集训练一个梯度提升树模型,模型构建过程中会生成多棵决策树。使用 GBM 或其他支持特征重要性评估的模型进行训练,得到模型对训练数据集的拟合结果。
计算特征重要性: 从训练好的模型中提取各个特征的重要性得分。特征的重要性通过计算其在所有树中作为分裂节点时对损失函数减少的贡献来衡量。每个特征每次被选作分裂节点时,都会导致模型对训练数据拟合程度的提高,即损失函数的减小。损失函数减小的程度越大,表明该特征对模型性能的提升作用越大。
排序特征: 经过多棵树的构建后,汇总每个特征在整个模型中的重要性得分,即每个特征作为作为分裂节点时对损失函数减少的总和,累加起来得到该特征在整个 GBDT 模型中的总重要性得分。根据特征重要性得分对特征进行降序排序。
特征选择: 通过可视化图表展示特征的重要性,比如直方图、条形图等,以便直观地看到哪些特征对模型预测性能的贡献最大。按帕累托法则的思路,即少量特征贡献了大部分模型性能,那么就可以依据这些重要性得分,优先选择排名靠前的特征进行模型训练(根据具体情况调整比例)。
验证和优化: 使用选择后的特征子集重新训练模型,并通过交叉验证或其他评估方法验证模型性能,还可以通过逐步增加或减少特征的方式来微调特征选择的数量,以达到最优模型性能。
此外,其他特征选择方法如基于 L1 正则化的线性模型(如 Lasso)在压缩稀疏解的过程中也会体现类似帕累托法则的现象,即大量的特征被裁剪掉,而留下对模型预测至关重要的少数特征。
由以上的介绍,我们可以看出,GBDT(梯度提升树)中一个很重要的思想是“提取重要特征”,把模型训练的精力放在了“对结果产出有重大影响的特征上”,而不是“全面照顾所有特征”, 这样不仅可以节省了训练模型的精力,也可以有效地减少了模型的复杂度,提高了模型的可解释性。这个思路就是遵循了一个商业法则:2/8 法则。
2/8 法则,也被称为帕累托法则、80/20 法则或关键少数法则, 是指在许多情况下,80%的结果源于 20%的原因,或者说,20%的努力会产生 80%的产出。这个法则普遍存在于社会、经济、管理等多个领域。然而,不止是在商业思维上可以应用 2/8 法则的思路,在个人思维上也同样适用,比如“2/8 时间管理法”。
在时间管理中应用 2/8 法则,可以遵循以下步骤:
列出任务清单:首先,需要将个人目前的所有任务列出来,要确保全面、没有遗漏。此外,还要列出当前个人最需要完成的关键目标是什么。
评估任务的重要性:对每个任务进行评估,按照其对完成关键目标的重要性进行排序。 这一步非常关键,因为它决定了哪些任务是真正重要的,是需要优先处理的。
识别关键任务:识别出任务清单中关键的 20%的任务,这些任务往往是对关键目标影响最大的任务。 此时要学会一定的“断舍离”,也就是不能凭直觉地想“哪些任务对目标影响最大”,最好有可量化的数据来辅助自己识别。
比如当前的关键目标是“短期迅速提升英语口语能力”,那可以分类的任务有:背单词,上网课,跟读英语新闻等,那这时候你就要根据自己当前的状态,单词的词汇量基础,网课的具体内容等来具体分析,要在短期内提升英语口语水平最好的方式是什么。自己可以每一样都尝试并记录下对“口语提升”的影响度,然后再根据自身当前的状态和目标来定“要全力主攻哪一项来才能最快提升自己的英语口语”。笔者建议每次只定一个主要任务,等到这个任务完成再选次重要的任务(根据事情的性质,可自行调整,主要是尽可能“聚焦”, 有助于提效!)
分配时间块:将每天的工作时间分成若干个时间块 ,将这 20%的关键任务放在首位(比例随情况可调),优先分配时间和精力去处理, 确保这些任务得以高质量完成(尽量用一个大块的时间段来做重要的任务,长时间才更有利于进入“心流”,“进入心流”更有利完成效率的提升)。如果有多个关键任务需要处理,可以根据紧急性和重要性进行优先级的设置。对于剩余的 80%的任务(比例可调),合理分配时间,尽量避免在琐碎的事情上浪费过多时间,要优先确保关键任务得到优先处理。
消除干扰:在处理关键任务时,应尽量避免干扰。可以通过将手机静音、关闭社交媒体等方式,创造一个专注的工作环境。
下面我们用程序员的角色为例子来举例如何应用“2/8 时间管理法”:
关键任务分析和识别:面对众多的编程任务、bug 修复、代码审查、技术文档撰写等工作时,应用 2/8 法则意味着要找出那些对当前项目整体进度和产品质量影响最大的 20%的工作内容。
例如当前的主要目标是新产品尽快上线,让用户来使用验证产品的设想,那这时就可以一起讨论“让用户能尽快用起来的关键步骤是什么”,“完成这一关键步骤,必须有什么”,也就是这时候要一起讨论“省精力”,本着“抠”的原则,仔细讨论业务场景,尽量“抠着用精力”,让团队的“精力”花在最关键的步骤上。
当然这个关键任务的识别可能主要靠产品经理,但是在具体的技术实现方面,如果也能多“抠一抠”,多了解些具体的业务场景和背后的原因,有助于在需求讨论阶段或代码实现阶段,发现哪里可以更“省精力”。
产品设想需要市场、用户的验证,需要快速试错,每一个当下不必要的任务都会耗费研发团队的精力,尽可能地降低试错成本,识别关键任务以及关键任务的实现方式,才是让研发团队从疲劳开发中解脱出来的关键。 这需要整个研发团队的一起努力,从各自专业的角度多思考才能避免。
时间分配: 将一天中精力最为旺盛的 80%时间(比例可调,此处只是想说明主要的时间精力)投入到最重要的 20%的任务上,确保这些关键任务能够高效、准确地完成。同时,也要关注工作中频繁出问题的环节,针对性地优化和改进,可以极大提高整体的工作效率。
资源利用: 识别出工作中最常用的工具、资源和技能,对其加以精炼和提升, 因为它们可能带来了大部分的工作成果。现在 AIGC 类的产品很多,每家都各有优势,可以根据自己当前任务所需,多尝试每家的产品,看如何搭配使用,让自己从繁琐的工作琐事或自己不擅长但 AI 擅长的事情中解脱出来,从而让自己有更多精力集中在关键任务的处理上。
讲到 2/8 法则,最近有一部杨紫的剧《承欢记》正在播出,其中有一个桥段是杨紫管理的公寓中,有一户很难伺候的住客经常让杨紫去做些琐事,杨紫之所以愿意去做,也是因为只有服务好了这个住客,才可以让住客对公寓的服务质量改观,进而把物业费交了。这时,男主就提醒杨紫“要关注在这个住户最在意的事情上,不要让自己整天被遛狗、买奶茶之类的事情给折腾没有了精力”。 生活中所有的道理都是相通的,算法也好,工作也好,人与人的相处等,都可以运用“2/8 法则”来思考。
《楞严经》中有详细介绍佛陀众弟子如何修"六根"来破“六尘”, “眼、耳、鼻、舌、身、意 ”根根难修,根根缠绕,互为影响,千丝万缕让人难以下手。 佛陀的众弟子则是根据自己的“实践”,各自选了“一根”适合自己的来修,然后“一根通,六根皆通了”。 笔者想来,也是这点跟“2/8 法则”很类似,人的生命和精力都有限,凡事“抓大放小”,时间才能“多”一些,精力更聚焦,才能更好的解决问题。
版权声明: 本文为 InfoQ 作者【养心进行时】的原创文章。
原文链接:【http://xie.infoq.cn/article/6dd9ac3ca77a0bf2a31b8070a】。文章转载请联系作者。
评论