zoukankan      html  css  js  c++  java
  • week 4 ridge regression

    coursera 上的 华盛顿大学 machine learning: regression 第四周笔记

    通常, 过拟合的一个表现是拟合模型的参数很大

    为了防止过拟合

    Total cost = measure of fit + measure of magnitude of coefficients

    前者描述训练集拟合程度,后者评估回归模型系数大小,小则不会过拟合。

    评估训练集拟合程度( measure of fit ):

        

      RSS(w) 越小,拟合程度越好。

    评估回归模型系数(measure of magnitude of coefficients):

    (1)系数绝对值之和 |w|, L1范数

    (2)系数平方和 ||w||2L2范数 

    岭回归计算回归系数时使( RSS(w)+λ||w||2 )最小

        其中λ为平衡训练集拟合程度 和 拟合系数大小 的调整参数。

    λ的选择上体现了 bias-variance tradeoff:

    对于大的λ:high bias, low variance

    对于小的λ:low bias, high variance

    如何确定 λ 大小

      理想条件下(数据集足够大):

            

      training set: 训练集用于拟合回归模型

      validation set: 检测系数大小,用于确定λ

      test set: 测试集,计算泛化误差(generalization error)

      

      实际情况下,数据集有限,常用方法有:

         K - fold cross validation

        步骤:

        对于每一个需要评估的 λ:

          将数据集分为training set test set

          将其中training set 打乱顺序(随机排序),分成 k 等分。

          k 次循环,每次将k等份中其中一份作为 validation set, 剩下部分作为 training set

          每次根据validation set 计算 error (λ), 结果为k次计算的平均值。

          average (error (λ))最小的为最合适的λ

    梯度下降法求回归系数:

    total cost = RSS(w)+λ||w||2

    Cost(w)= SUM[ (prediction - output)^2 ]+ l2_penalty*(w[0]^2 + w[1]^2 + ... + w[k]^2).

    导:

    derivative = 2*SUM[ error*[feature_i] ] + 2*l2_penalty*w[i].

    (其中没有2*l2_penalty*w[0]这一项)

    每次迭代:

     predictions = predict_output(feature_matrix, weights)
     errors = predictions - output
    for i in xrange(len(weights)): feature = feature_matrix[:, i] derivative = compute_derivative_ridge(errors, feature, weights[i], l2_penalty)
    weights[i]
    = weights[i] - step_size * derivative
  • 相关阅读:
    C#发送邮件的实现实例解析
    抄录一下别人的经验
    centos学习一
    关于百度地图API批量转换成坐标的方法
    js和PHP等脚本语言for循环和if语句里面定义变量的作用域
    关于js中去取数组中的重复字符串
    关于handler返回的数据处理
    通过定义任务委托的方法处理 action
    关于点击按钮图片左右切换的随笔
    关于网站内容分享到新浪微博等的代码
  • 原文地址:https://www.cnblogs.com/smartweed/p/8486059.html
Copyright © 2011-2022 走看看