9  Week 9: 机器学习概览

9.1 引言:从编程到学习

在传统的计算机编程(Traditional Programming)中,人类将输入数据(Input)和规则(Rules)交给计算机,计算机产出答案。例如,我们编写一个程序来计算平均分:规则 = 总分 / 人数

而在机器学习(Machine Learning, ML)中,这一范式发生了逆转。我们将数据(Input)和预期的答案(Output)交给计算机,让计算机自己去“学习”出规则。

Arthur Samuel (1959): “Machine Learning is the field of study that gives computers the ability to learn without being explicitly programmed.”

对于新闻与传播学的学生而言,理解 ML 不是为了手写底层算法,而是为了理解“决策是如何被自动化的”

9.2 机器学习的核心范式

机器学习算法浩如烟海,但通常可以归纳为三大类。为了更直观地理解,我们将通过最小化的 Python 代码来演示其核心逻辑。

9.2.1 监督学习 (Supervised Learning)

这是目前应用最广泛的范式。就像学生在老师的指导下学习,数据既有“题目”(特征),也有“标准答案”(标签)。

  • 分类 (Classification): 预测离散的类别。
    • 案例:垃圾邮件过滤器(标签:垃圾/非垃圾)、新闻情感分析(标签:正面/负面/中立)。
  • 回归 (Regression): 预测连续的数值。
    • 案例:预测明天的气温、预测一篇文章的预期阅读量。

💻 最小化代码演示:新闻标题分类(标题党 vs 严肃新闻)

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB

# 1. 准备数据 (Input + Output)
# 训练数据:告诉机器什么是“标题党”,什么是“严肃新闻”
train_titles = ["震惊!这个秘密只有1%的人知道", "某市发布最新GDP数据", "惊爆眼球的真相", "财政部召开新闻发布会"]
train_labels = ["标题党", "严肃新闻", "标题党", "严肃新闻"]

# 2. 数据转换 (文字 -> 机器能懂的数字)
vectorizer = CountVectorizer()
X_train = vectorizer.fit_transform(train_titles)

# 3. 训练模型 (Learning)
# 机器在这里寻找词汇与标签之间的概率关系(例如:“震惊”常对应“标题党”)
clf = MultinomialNB()
clf.fit(X_train, train_labels)

# 4. 预测 (Prediction)
new_title = ["震惊!昨天发生了这件事"]
X_new = vectorizer.transform(new_title)
print(f"输入: {new_title[0]}")
print(f"预测结果: {clf.predict(X_new)[0]}")
输入: 震惊!昨天发生了这件事
预测结果: 标题党

9.2.2 无监督学习 (Unsupervised Learning)

数据只有“题目”,没有“答案”。算法需要自己从数据中发现结构或模式。

  • 聚类 (Clustering): 将相似的数据归为一组。
    • 案例:受众细分(Audience Segmentation)。算法分析读者的阅读历史,自动将读者分为“体育迷”、“科技极客”、“时政关注者”等群体,而无需人工预先定义这些标签。

💻 最小化代码演示:用户阅读习惯聚类

from sklearn.cluster import KMeans
import numpy as np

# 1. 准备数据 (只有 Input,没有标签)
# 假设数据代表:[平均阅读时长(分钟), 平均点赞率(%)]
# 前两个用户是“快餐式用户”,后两个是“深度用户”,但机器不知道
user_behavior = np.array([
    [1, 5],   # 用户A: 读1分钟, 点赞率5%
    [2, 5],   # 用户B: 读2分钟, 点赞率5%
    [10, 80], # 用户C: 读10分钟, 点赞率80%
    [12, 90]  # 用户D: 读12分钟, 点赞率90%
])

# 2. 训练模型 (自动发现结构)
# 我们告诉机器:请把这些人分成 2 类
kmeans = KMeans(n_clusters=2, random_state=0)
kmeans.fit(user_behavior)

# 3. 查看分组结果
print(f"分组结果: {kmeans.labels_}")
# 输出可能为 [1 1 0 0] 或 [0 0 1 1],表示前两人一组,后两人一组
分组结果: [1 1 0 0]

9.2.3 强化学习 (Reinforcement Learning)

通过“试错”来学习。智能体(Agent)在环境(Environment)中采取行动,根据反馈(Reward/Punishment)调整策略。

  • 案例:AlphaGo 下围棋、抖音/TikTok 的推荐算法(根据你的停留时长作为 Reward 调整推荐策略)。

💻 最小化代码演示:简化的“试错”推荐

import random

# 场景:系统有两个标题版本,不知道哪个点击率更高
titles = ["标题A (平庸)", "标题B (爆款)"]
# 上帝视角的真实点击率(机器一开始不知道)
true_ctr = {"标题A (平庸)": 0.1, "标题B (爆款)": 0.8}

# 机器的策略:Epsilon-Greedy (探索 vs 利用)
def choose_title(epsilon=0.2):
    # 20% 的概率“探索”:随机瞎蒙,为了发现新机会
    if random.random() < epsilon:
        return random.choice(titles)
    # 80% 的概率“利用”:选当前认为最好的(此处简化为假设机器已经觉得B好)
    else:
        return "标题B (爆款)"

# 模拟一次推荐过程
selected_title = choose_title()
# 模拟用户反馈:如果随机数小于点击率,则算点击(Reward=1)
user_clicked = 1 if random.random() < true_ctr[selected_title] else 0

print(f"机器选择: {selected_title}")
print(f"用户反馈: {'点击' if user_clicked else '滑走'}")
# 强化学习的核心:机器会根据这个反馈更新对标题价值的判断
机器选择: 标题B (爆款)
用户反馈: 滑走

9.3 算法是如何“猜”你喜欢的?——推荐系统

推荐系统(Recommendation Systems)是机器学习在传媒领域最直接的应用。

9.3.1 基于内容的过滤 (Content-Based Filtering)

逻辑:“如果你喜欢 A,你应该也会喜欢和 A 相似的 B。”

系统分析文章的元数据(关键词、标签、作者)。如果你阅读了大量关于“人工智能”的文章,系统就会推荐更多包含“人工智能”标签的文章。

  • 优点:不需要其他用户的数据,冷启动容易。
  • 缺点:容易导致信息茧房 (Filter Bubble),你只能看到你已经感兴趣的内容。

9.3.2 协同过滤 (Collaborative Filtering)

逻辑:“和你口味相似的人喜欢 B,所以你应该也喜欢 B。”

系统不再关心文章的内容,而是关心用户之间的关系

  1. 用户-用户协同 (User-User CF): 找到和你阅读历史相似的用户群,推荐他们看过但你没看过的文章。
  2. 物品-物品协同 (Item-Item CF): 发现经常被同一群人一起阅读的文章对。

9.3.3 混合模型 (Hybrid Models)

现代推荐系统(如 Netflix, YouTube, 今日头条)通常结合了上述多种方法,并引入深度学习模型来处理海量特征。

💻 最小化代码演示:协同过滤 (猜你喜欢)

import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity

# 1. 模拟用户阅读记录 (0=没读过, 1=读过)
# 我们有4位用户,User_A 是我们要推荐的目标
data = {
    'Article_Tech': [1, 1, 0, 0],  # 科技文章
    'Article_AI':   [1, 1, 0, 0],  # AI文章
    'Article_Star': [0, 0, 1, 1],  # 娱乐文章
    'Article_Movie': [0, 0, 1, 1]   # 电影文章
}
users = ['User_A', 'User_B', 'User_C', 'User_D']
df = pd.DataFrame(data, index=users)

# 2. 计算用户相似度 (数学魔法:余弦相似度)
# 机器计算谁跟 User_A 的阅读口味最像
user_similarity = cosine_similarity(df)
user_sim_df = pd.DataFrame(user_similarity, index=users, columns=users)

# 3. 找到最相似的“邻居”
target_user = 'User_A'
# 排序,找到相似度最高的(排除自己)
similar_users = user_sim_df[target_user].sort_values(ascending=False)

print("用户阅读矩阵 (机器眼中的世界):")
print(df)
print(f"\n谁跟 {target_user} 最像?")
print(similar_users[1:2]) 
# 结果应该是 User_B (相似度1.0),因为他们读的一模一样
# 系统随后会把 User_B 读过但 User_A 没读过的文章推荐给 User_A
用户阅读矩阵 (机器眼中的世界):
        Article_Tech  Article_AI  Article_Star  Article_Movie
User_A             1           1             0              0
User_B             1           1             0              0
User_C             0           0             1              1
User_D             0           0             1              1

谁跟 User_A 最像?
User_B    1.0
Name: User_A, dtype: float64

9.4 批判性视角:算法统治下的新闻业

作为未来的媒体从业者,理解算法原理只是第一步。更重要的是,我们需要审视算法权力 (Algorithmic Power) 对新闻专业主义和社会公义的深远影响。

9.4.1 数据偏见 (Data Bias) —— 算法不是中立的

算法是历史数据的镜像。如果训练数据本身就充满了人类社会的偏见,算法不仅会继承,甚至会放大这些偏见。

  • 案例:亚马逊曾开发过一个 AI 简历筛选系统,结果发现它歧视女性求职者。原因是系统使用的训练数据是过去 10 年的简历,而科技行业过去 10 年主要是男性主导。AI 学到的“规则”是:“男性”这个特征与“录用”强相关。
  • 新闻启示:当我们使用 AI 辅助报道时,要警惕它是否会边缘化少数群体的声音。

9.4.2 信息茧房与回声室 (Echo Chambers)

商业推荐系统的核心指标通常是 点击率 (CTR)停留时长 (Time Spent)

  • 机制:为了让你多看几眼,算法倾向于推荐那些能引起你强烈情绪反应(愤怒、恐惧、兴奋)的内容,或者完全符合你既有价值观的内容。
  • 后果
    • 极化:左派更左,右派更右,社会共识难以达成。
    • 假新闻泛滥:耸人听闻的假新闻往往比枯燥的真相更具传播力。

9.4.3 把关人的让位 (Gatekeeping)

传统新闻业中,“把关人”是编辑部;在算法时代,“把关人”变成了代码。

  • 挑战:算法没有新闻伦理观念。它不知道什么是“公共利益”,它只知道什么是“高点击”。
  • 思考:作为新闻人,我们如何通过“人机协作”,在利用算法分发效率的同时,重新夺回“价值判断”的主导权?

9.5 课后思考

在你的日常数字生活中(微博、抖音、淘宝),你是否感受到了算法对你选择的引导?试着通过“反向操作”(例如故意点击你不感兴趣的内容)来测试算法的反应。

9.6 延伸阅读与参考文献

9.6.1 📚 推荐书籍

  1. 《算法霸权》 (Weapons of Math Destruction) - Cathy O’Neil
    • 推荐语:必读。书中详细揭示了大数据模型如何加剧社会不公,特别是在教育、信贷和就业领域。
  2. 《过滤泡:互联网对我们的隐秘操纵》 (The Filter Bubble) - Eli Pariser
    • 推荐语:最早提出“信息茧房”概念的经典之作,探讨了个性化推荐如何窄化我们的视野。
  3. 《人机平台:新经济的核心》 (Machine, Platform, Crowd) - Andrew McAfee & Erik Brynjolfsson
    • 推荐语:理解 AI 如何重塑商业和媒体生态的宏观读物。

9.6.2 📄 学术论文与深度报道

  1. ProPublica: “Machine Bias” (2016)
    • 链接Machine Bias
    • 简介:普利策奖入围报道,揭露了美国法院使用的 COMPAS 算法在预测罪犯再犯率时存在严重的种族偏见。
  2. “Echo Chambers, Filter Bubbles, and Polarization: A Literature Review”
    • 简介:综述了关于算法推荐与政治极化的学术研究成果,适合想做相关学术研究的同学。

9.6.3 📺 视频资源

  • Netflix 纪录片:《监视资本主义:智能陷阱》 (The Social Dilemma)
    • 简介:采访了 Google, Facebook 等巨头的前高管,揭秘推荐算法如何通过操控多巴胺来“黑”进人类大脑。

9.6.4 中国语境下的算法反思

我们身边的真实案例与本土研究:

  1. 深度报道:《外卖骑手,困在系统里》 (2020, 《人物》杂志)
    • 简介:这是中国互联网报道的里程碑之作。文章揭示了外卖平台的算法如何通过不断压缩配送时间,将骑手变成高危职业。它让我们看到,算法不仅影响我们看什么新闻,还直接控制着劳动者的身体与生命安全。
  2. 学术论文:彭兰《算法社会的“囚徒”风险》 (2021, 《全球传媒学刊》)
    • 简介:中国人民大学彭兰教授指出,在算法社会,我们面临成为“数字囚徒”的风险——我们的认知、判断甚至社会地位都可能被算法隐形禁锢。
  3. 政策法规:《互联网信息服务算法推荐管理规定》 (2022)
    • 关键点:中国是全球最早对算法推荐进行立法的国家之一。规定明确要求:App 必须提供“关闭算法推荐”的选项
    • 行动:你可以现在打开抖音、微信或淘宝的设置,搜索“个性化推荐”,试着找到并关闭它,体验一下没有算法“猜你喜欢”的世界是什么样。