zoukankan      html  css  js  c++  java
  • 机器学习02_逻辑回归作业(附加)

    机器学习_02逻辑回归(附加)


    I.综述

    附加问题是在逻辑回归中,我们对题目中所给数据的过度拟合问题。虽然在数据可视化问题上看出了,求得的拟合函数最大可能的走过每一个已知点,但是拟合的效果并非理想,如下图所示。显然蓝色的拟合函数不如粉红色的拟合函数更为“实用”。

    蓝色的拟合函数都是我们加入过多的变量导致。举一个简单的例子。例如在预测房子的价格中,我们把房子的面积、离市区的距离、客厅的面积、厨房的面积作为参数变量来预测房子的价格。显然房子的面积、距离市区的距离为决定因素。客厅的面积和厨房的面积与房子的总价格关系不大。所以我们强行加上这两个变量就没有什么太大的意义。有两种方法可以解决这类问题:
    1.人为的去掉变量中意义较小的变量。
    2.由于意义较小的变量对预测函数的造成了很大的影响,所以根据影响程度对其进行惩罚(正则化)。

    对于(2)来说惩罚就是在意义较小的变量前乘上一个较大的常数值。意义越小常数值越大。因为在自定义的最小代价算法中,为了确定变量的值,每一项都会接近零(最优解),那么由于变量所乘的常数值越大则变量就会越小,即theta值越小。所以其意义在代价函数中变体现出来。


    II.数据可视化

    将ex2data2.txt里的数据load到Octave中,然后利用上篇博客中写好的poltData.m函数在二维表中显示出来。


    III.编写costFunctionReg.m函数

    根据下图公式写出代价函数。


    function [J, grad] = costFunctionReg(theta, X, y, lambda)
    
    % Initialize some useful values
    m = length(y); % number of training examples
    n = size(theta);
    % You need to return the following variables correctly 
    theta_t = theta(2:n);
    X1 = X(:, 1);
    X_t = X(:, 2:n);
    H = sigmoid(X*theta);
    J = -(y'*log(H) + (1-y)'*log(1-H)) / m + lambda * theta_t' * theta_t / (2*m);
    grad = (X_t'*(H-y) + lambda * theta_t) ./ m;
    grad1 = X1'*(H-y) / m;
    grad = [grad1; grad];
    
    end
    

    IV.拟合实现

    % Initialize fitting parameters
    initial_theta = zeros(size(X, 2), 1);
    
    % Set regularization parameter lambda to 1 (you should vary this)
    lambda = 1;%第一次
    %lambda = 0;  第二次
    %lambda = 100; 第三次
    % Set Options
    options = optimset('GradObj', 'on', 'MaxIter', 400);
    
    % Optimize
    [theta, J, exit_flag] =
    	fminunc(@(t)(costFunctionReg(t, X, y, lambda)), initial_theta, options);
    

    经过对lambda的初始化分别为1,0,100的拟合函数。



    lambda = 1 (拟合最好)

    lambda = 0 (过渡拟合)

    lambda = 100 (欠拟合)

    综上机器学习的第二次作业逻辑回归部分全部做完。

  • 相关阅读:
    TP5框架 《防sql注入、防xss攻击》
    jsonp跨域的原理
    PHP程序发送HTTP请求代码
    encodeURI()和encodeURIComponent() 区别
    密码存储中MD5的安全问题与替代方案
    获取用户Ip地址通用方法常见安全隐患(HTTP_X_FORWARDED_FOR)
    PHP中的调试工具 --Xdebug安装与使用
    手机端页面自适应解决方案—rem布局(进阶版,附源码示例)
    thinkphp 微信授权登录 以及微信实现分享
    PHP中使用CURL之php curl详细解析和常见大坑
  • 原文地址:https://www.cnblogs.com/yichaoShare/p/10318796.html
Copyright © 2011-2022 走看看