博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习02_逻辑回归作业(附加)
阅读量:4604 次
发布时间:2019-06-09

本文共 1580 字,大约阅读时间需要 5 分钟。

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


I.综述

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

1342687-20190125105612405-775535510.png

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


II.数据可视化

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

1342687-20190125112127453-1775522825.png


III.编写costFunctionReg.m函数

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

1342687-20190125113022264-1984219139.png
1342687-20190125113036574-1913089217.png
1342687-20190125113049794-523415887.png

function [J, grad] = costFunctionReg(theta, X, y, lambda)% Initialize some useful valuesm = length(y); % number of training examplesn = 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 parametersinitial_theta = zeros(size(X, 2), 1);% Set regularization parameter lambda to 1 (you should vary this)lambda = 1;%第一次%lambda = 0;  第二次%lambda = 100; 第三次% Set Optionsoptions = 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 (拟合最好)

1342687-20190125113933050-1733482574.png

lambda = 0 (过渡拟合)

1342687-20190125113948421-1568100062.png

lambda = 100 (欠拟合)

1342687-20190125114008166-1315455823.png

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

转载于:https://www.cnblogs.com/yichaoShare/p/10318796.html

你可能感兴趣的文章
微信小程序中的组件使用2
查看>>
sql多列合并成一列
查看>>
HPC高性能计算知识: 异构并行计算
查看>>
PHP归档phar性能測试
查看>>
【蓝桥杯单片机12】实时时钟DS1302的基本操作
查看>>
hive配置
查看>>
小练习-把MySQL数据库中的数据存入redis
查看>>
标题栏title前添加logo
查看>>
1_bg
查看>>
android studio java lib不能直接运行
查看>>
nyoj 540 奇怪的排序(细心啦)
查看>>
搭建Visual Studio 2013 + FFMpeg环境
查看>>
java: ant 脚本示例
查看>>
关于tomcat的闪退问题
查看>>
邮件功能
查看>>
转:SRIO错误侦测和管理机制
查看>>
《你不知道的javascript上卷》读书笔记(kyle simpson 著,赵望野、梁译)
查看>>
Socket实例
查看>>
项目测试总结
查看>>
mybatis generator.xml 配置 自动生成model,dao,mapping
查看>>