一,机器学习基础
机器学习(Machine Learning, ML)是让机器具备学习能力的过程,其核心在于使机器能够自动寻找并应用复杂的函数,以解决各种任务如语音识别、图像识别和策略决策(如AlphaGo)。这些任务可分为三大类:回归、分类和结构化学习。回归用于预测连续数值,如预测未来PM2.5数值;分类则是让机器从预设的选项中选择最合适的答案,如判断邮件是否为垃圾邮件或AlphaGo在围棋棋盘上选择落子位置;而结构化学习则更为复杂,要求机器生成具有结构的输出,如图像或文本创作。机器学习尤其是深度学习(Deep Learning, DL)技术的进步,使得解决这些复杂问题成为可能。
1.1、机器学习的运作过程
在视频点击次数预测的案例中,机器学习运作过程可以归纳为以下三个主要步骤:
第一步:定义模型
- 写出带有未知参数的函数:
- 假设函数形式为
y = b + w*x1
,其中y
是预测的观看次数,x1
是前一天的观看次数,b
和w
是未知的参数(分别称为偏置和权重)。 - 这个带有未知参数的函数称为模型。
- 假设函数形式为
第二步:定义损失函数
- 损失函数的定义:
- 损失函数
L(b, w)
用于衡量当前参数b
和w
的好坏,通过计算预测值y_hat
与实际值y
之间的差距来得到。 - 常见的差距计算方法包括平均绝对误差(MAE)和均方误差(MSE)。
- 使用历史数据(如过去三年的观看次数)作为训练数据,计算每一天的预测误差,并取平均作为整体损失。
- 损失函数
- 绘制误差表面:
- 通过调整不同的
b
和w
值,计算相应的损失,并绘制成等高线图(误差表面)。图中颜色深浅表示损失大小,蓝色区域代表损失较小,红色区域代表损失较大。
- 通过调整不同的
第三步:优化求解
- 梯度下降法:
- 目的是找到一组参数
w*
和b*
,使得损失函数L(b, w)
的值最小。 - 从随机选取的初始参数值开始,计算损失函数对参数的偏导数(即梯度)。
- 根据梯度的方向和大小,以及设定的学习率
η
,更新参数值,逐步逼近最优解。 - 重复上述过程,直至达到停止条件(如达到最大迭代次数或梯度接近零)。
- 目的是找到一组参数
- 处理结果:
- 最终找到的最优参数
w*
和b*
使得预测误差最小。 - 在这个案例中,通过梯度下降法找到的最优参数
w* = 0.97
和b* = 100
,使得平均预测误差约为480次观看。
- 最终找到的最优参数
1.2、线性模型
初始线性模型
- 模型形式:最初使用简单的线性模型 y=b+wx1,其中 x1 是前一天的观看人次,w 和 b 是通过训练数据找到的参数,使得在训练数据上的损失达到480。
- 预测效果:使用该模型预测未来(2021年)的观看人次,发现平均误差较大,约为580人。
问题观察与模型改进
- 数据周期性:观察到真实数据具有周期性,每隔7天观看人次会有显著变化(周五和周六较低)。
- 改进模型:为了捕捉这种周期性,将模型改进为考虑前7天的观看人次,即
- 效果提升:新模型在训练数据上的损失降低到380,在未见过的数据(2021年数据)上的平均误差也降低到490。
进一步优化
- 考虑更多天数:尝试将模型扩展到考虑前28天(一个月)和56天的观看人次,模型形式分别为和。
- 效果评估:在训练数据上,考虑28天和56天的模型损失分别为330和320,但在未见过的数据上,损失均为460,表明增加天数并未进一步降低预测误差。
线性模型定义
- 定义:上述所有模型均属于线性模型,因为它们都是将输入特征 x 乘以相应的权重 w,再加上偏置 b 来得到预测结果。
参考文章:Datawhale (linklearner.com)