别再给我推明星八卦了!——大数据视角下,个性化新闻推荐的“人间真实”优化指南

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,1000CU*H 3个月
简介: 别再给我推明星八卦了!——大数据视角下,个性化新闻推荐的“人间真实”优化指南

别再给我推明星八卦了!——大数据视角下,个性化新闻推荐的“人间真实”优化指南

作者:Echo_Wish(一个写代码也爱看新闻的自媒体人)


大家有没有这种体验:
你只是随手点了一个“猫咪可爱小视频”,结果隔天你的新闻流变成了大型吸猫现场;
你点了一个科技新闻,平台立刻以为你是“科技圈铁粉”,每天给你推 30 条芯片产业链分析……

平台的推荐算法有时候就像“热心但迷糊的老大哥”,一点信息就能自动脑补一整套兴趣画像
但问题来了:“我今天想看财经,不代表我以后永远只想看财经啊!”

那怎么让个性化推荐更准、更懂你、更有温度?
今天我们就从大数据工程视角,实打实聊聊:如何用数据把新闻推荐做到更贴心、更不打扰、更懂人心。


一、推荐算法不准?其实根源大概率出在“数据没吃透”

很多公司做推荐,只做了两件事:

  1. 埋点:用户点了什么
  2. 打标签:这个新闻属于财经/科技/娱乐

然后就简单协同过滤或者基于标签做推荐。

说白了,就是用“你点啥我猜你喜欢啥”。

但问题是:

  • 用户兴趣是动态的,不是静态标签
  • 用户行为是多维度的,不是“点击”一个动作
  • 新闻内容本身有时效性,三天后的热点就是冷饭

所以我们用的数据越“粗糙”,推荐就越不准。

要想推荐准——就得把数据“吃深”“吃细”

接下来逐步拆解。


二、第一步:构建多维用户画像(别再只看点击!)

用户在平台上的行为至少包括:

  • 浏览时长
  • 点击行为
  • 停留深度
  • 是否分享
  • 是否收藏
  • 是否评论
  • 是否反感(如“不喜欢这类内容”)

如果我们把这些行为的“权重”设计出来,推荐就能更精准。

例如用 Python 写一个简单的用户行为权重模型:

import numpy as np

# 用户行为权重(可根据业务不断调整或训练)
weights = {
   
    "click": 1.0,
    "view_time": 0.001,
    "share": 3.0,
    "favorite": 2.5,
    "comment": 2.0,
    "dislike": -3.0
}

# 用户行为记录
user_actions = {
   
    "click": 12,
    "view_time": 530,
    "share": 1,
    "favorite": 0,
    "comment": 2,
    "dislike": 1
}

def calc_interest_score(actions, weights):
    return sum(actions[action] * weights[action] for action in actions)

print("用户兴趣得分:", calc_interest_score(user_actions, weights))

这段代码虽简单,但体现了一个关键观点:
推荐系统不是靠一个“点击”就能判断兴趣,而是多个行为共同构成兴趣强度。

这么搞之后,平台至少不会因为你今天随手点了个娱乐新闻,就把你当“娱乐爱好者”。


三、第二步:内容理解要更深,不能靠“标签分类”了

传统做法:
新闻 → 分类模型 → 贴标签(财经/娱乐/体育)

现在不够用了。

要做更好的个性化推荐,需要:

✓ NLP 主题建模

比如用 LDA 或更先进的 BERTopic 抽取文章的“隐含主题”

✓ 文本向量化(embedding)

比如用 sentence-transformers 或 Milvus 做向量检索

下面是一个简单示例,用句向量(embedding)理解新闻内容:

from sentence_transformers import SentenceTransformer

model = SentenceTransformer('all-MiniLM-L6-v2')

news_list = [
    "美股收盘大涨,科技板块领涨",
    "英超联赛最新战报,曼市德比引爆话题",
    "华为发布最新AI芯片,加速大模型训练"
]

embeddings = model.encode(news_list)

print(embeddings.shape)  # (3, 384)

这波 embedding 就能让“科技新闻”和“芯片新闻”更接近,而不是仅靠粗糙的“科技”标签。


四、第三步:推荐模型要考虑“时间衰减”

新闻是时效性最强的内容之一,昨天的热点今天可能已经没人关心。

所以我们需要“时间衰减因子”,让越新的新闻得分越高。

示例代码:

import math
import datetime

def time_decay(publish_time, alpha=0.1):
    hours = (datetime.datetime.now() - publish_time).total_seconds() / 3600
    return math.exp(-alpha * hours)

# 示例:一篇12小时之前的新闻
publish_time = datetime.datetime.now() - datetime.timedelta(hours=12)
print(time_decay(publish_time))

这能避免平台向用户推“昨天看过的旧闻”,提升体验。


五、第四步:融合推荐(别押宝单一算法)

个性化推荐其实不是一个模型能搞定的,最强的系统通常都是:

协同过滤 + 内容理解 + 热点因素 + 用户画像 + 探索机制(冷启动)

最终推荐可以这样融合:

final_score = (
    0.4 * user_interest_score + 
    0.3 * content_similarity_score + 
    0.2 * popularity_score + 
    0.1 * time_decay_score
)

比例可根据业务不断 A/B test 调整。


六、第五步:别忘了“多样性”与“惊喜感”

只推荐用户喜欢的,会让推荐系统陷入“信息茧房”。

算法应该:

  • 90% 推你“常看的”
  • 10% 推你“可能喜欢但没看过的”

这叫 Serendipity(惊喜度推荐)

简单示例:

import random

def inject_serendipity(recommend_list, candidate_pool, ratio=0.1):
    k = int(len(recommend_list) * ratio)
    surprise_items = random.sample(candidate_pool, k)
    return recommend_list[:-k] + surprise_items

这样新闻推荐更“有人味”,不至于像机械喂饲料。


七、整套推荐架构长啥样?

下面是我常用的一个架构思路:

用户行为 → 行为埋点 → 用户画像层(行为加权+兴趣向量)
新闻内容 → NLP处理 → 内容向量库(Milvus/FAISS)

用户兴趣向量 ↘
                 → 向量检索 + 协同过滤 + 热点融合 → 结果融合(加权)
新闻向量     ↗

最终推荐 → 多样性增强 → 去重 → 排序 → 输出

这套下来,就是一个成熟新闻推荐引擎的大体结构。


八、写到最后:技术是冷的,但推荐应该是暖的

我做推荐系统这么多年,越做越觉得:

好推荐不是“聪明”,而是“体贴”。

不骚扰、不打扰、不强迫、不绑架,而是:

  • 你累的时候推一点轻松内容
  • 你专注的时候推深度文章
  • 你临时想了解财经热点,它立刻切换频道
  • 它懂得你有多面
  • 懂得你今天可能不是昨天的你
目录
相关文章
|
19天前
|
数据采集 人工智能 监控
[数据集]作弊行为检测数据集(1100张图片已划分)[目标检测]
基于视觉 AI 的作弊行为检测正逐渐走向成熟,从简单的屏幕监控、人工复查逐步迈向自动化、实时化与精准识别。本数据集的构建,旨在为研究者与开发者提供一套轻量但高价值的训练数据,使智能监考系统能更好地识别作弊动作,尤其是使用手机等严重违规行为。
197 49
[数据集]作弊行为检测数据集(1100张图片已划分)[目标检测]
|
10天前
|
数据采集 SQL 自然语言处理
脏数据不脏心:大数据平台的数据质量(DQ)入门实战与自动修复心法
脏数据不脏心:大数据平台的数据质量(DQ)入门实战与自动修复心法
107 20
|
25天前
|
SQL 数据可视化 大数据
我是谁?我从哪来?我要到哪去?——聊聊数据血缘分析的“前世今生”
我是谁?我从哪来?我要到哪去?——聊聊数据血缘分析的“前世今生”
180 11
|
12天前
|
存储 缓存 运维
别等系统报警了才想起 Trace!——分布式事务可观测性的那些坑与优化套路
别等系统报警了才想起 Trace!——分布式事务可观测性的那些坑与优化套路
136 17
|
10天前
|
监控 Kubernetes 安全
边界已死,信任重构:零信任架构的真相与落地心法
边界已死,信任重构:零信任架构的真相与落地心法
85 17
|
11天前
|
存储 分布式计算 数据库
ETL vs ELT:到底谁更牛?别被名字骗了,这俩是两种世界观
ETL vs ELT:到底谁更牛?别被名字骗了,这俩是两种世界观
97 12
|
24天前
|
SQL JSON 分布式计算
【跨国数仓迁移最佳实践6】MaxCompute SQL语法及函数功能增强,10万条SQL转写顺利迁移
本系列文章将围绕东南亚头部科技集团的真实迁移历程展开,逐步拆解 BigQuery 迁移至 MaxCompute 过程中的关键挑战与技术创新。本篇为第六篇,MaxCompute SQL语法及函数功能增强。 注:客户背景为东南亚头部科技集团,文中用 GoTerra 表示。
232 20
|
12天前
|
弹性计算 运维 API
用错工具比没工具更可怕:Ansible vs Terraform 实战对比,用最接地气的方式讲清楚
用错工具比没工具更可怕:Ansible vs Terraform 实战对比,用最接地气的方式讲清楚
135 22
|
6天前
|
存储 人工智能 自然语言处理
Gemini 2.5 Flash / Nano Banana 系统提示词泄露:全文解读+安全隐患分析
本文揭示了Nano Banana的内部系统指令,展示其如何通过“描绘不等于认可”原则,将图像生成请求无条件传递给下游模型,禁止自身进行内容审查。该机制凸显“先生成、后过滤”的安全架构,引发对生成边界与伦理的深层思考。
94 6
Gemini 2.5 Flash / Nano Banana 系统提示词泄露:全文解读+安全隐患分析
|
3天前
|
算法 安全 量子技术
量子来了,RSA要凉?聊聊后量子加密的未来与现实(含代码!)
量子来了,RSA要凉?聊聊后量子加密的未来与现实(含代码!)
65 11