自行车与模型:梯度下降法拟合数据
在数据建模过程中,我们常常会遇到如何选择合适模型参数的问题。本文将围绕这一问题展开,介绍如何使用梯度下降法来寻找最优参数,以实现对数据的最佳拟合。
1. 寻找低成本模型
在建模时,我们发现已有的模型并不完全适合数据。此时,我们面临的新问题是如何为参数 Theta 选取“合适”的值。我们的目标是找到一条最贴合数据的曲线,也就是使预测值与实际观测值之间误差最小的曲线,这等价于找到与真实数据距离最小的曲线。
为了实现这一目标,我们采用欧几里得距离来衡量预测曲线与实际曲线之间的差异。选择欧几里得距离有两个原因:一是从建模角度考虑,它通过对误差平方来惩罚误差,使得较大误差的惩罚远大于较小误差,有助于我们在最小化距离时主要关注避免大误差;二是从技术角度看,它能让数学计算更加简单。
下面我们来计算两个模型的成本:
type Model = Obs -> float
let cost (data:Obs seq) (m:Model) =
data
|> Seq.sumBy (fun x -> pown (float x.Cnt - m x) 2)
|> sqrt
let overallCost = cost data
overallCost model0 |> printfn "Cost model0: %.0f"
overallCost model1 |> printfn "Cost model1: %.0f"
计算结果如下:
| 模型 | 成本 |
超级会员免费看
订阅专栏 解锁全文
19

被折叠的 条评论
为什么被折叠?



