《机器学习》学习笔记:线性回归逻辑回归

jude_python jude_python     2022-11-11     231

关键词:

《机器学习》学习笔记(一):线性回归、逻辑回归

    本笔记主要记录学习《机器学习》的总结体会。如有理解不到位的地方,欢迎大家指出,我会努力改正。

    在学习《机器学习》时,我主要是通过Andrew Ng教授在mooc上提供的《Machine Learning》课程,不得不说Andrew Ng老师在讲授这门课程时,真的很用心,特别是编程练习,这门课真的很nice,在此谢谢Andrew Ng老师的付出。同时也谢过告知这个平台的小伙伴。本文在写的过程中,多有借鉴Andrew Ng教授在mooc提供的资料,再次感谢。

    转载请注明出处:http://blog.csdn.net/u010278305

    什么是机器学习?我认为机器学习就是,给定一定的信息(如一间房子的面子,一幅图片每个点的像素值等等),通过对这些信息进行“学习”,得出一个“学习模型“,这个模型可以在有该类型的信息输入时,输出我们感兴趣的结果。好比我们如果要进行手写数字的识别,已经给定了一些已知信息(一些图片和这些图片上的手写数字是多少),我们可以按以下步骤进行学习:

    1、将这些图片每个点的像素值与每个图片的手写数字值输入”学习系统“。

    2、通过”学习过程“,我们得到一个”学习模型“,这个模型可以在有新的手写数字的图片输入时,给出这张图片对应手写数字的合理估计。

    什么是线性回归?我的理解就是,用一个线性函数对提供的已知数据进行拟合,最终得到一个线性函数,使这个函数满足我们的要求(如具有最小平方差,随后我们将定义一个代价函数,使这个目标量化),之后我们可以利用这个函数,对给定的输入进行预测(例如,给定房屋面积,我们预测这个房屋的价格)。如下图所示:

假设我们最终要的得到的假设函数具有如下形式:

                                                        

其中,x是我们的输入,theta是我们要求得的参数。

代价函数如下:

                                                          

我们的目标是使得此代价函数具有最小值。

为此,我们还需要求得代价函数关于参量theta的导数,即梯度,具有如下形式:

                                              

有了这些信息之后,我们就可以用梯度下降算法来求得theta参数。过程如下:

                                           

其实,为了求得theta参数,有更多更好的算法可以选择,我们可以通过调用matlab的fminunc函数实现,而我们只需求出代价与梯度,供该函数调用即可。

根据以上公式,我们给出代价函数的具体实现:

 

function J = computeCostMulti(X, y, theta)
%COMPUTECOSTMULTI Compute cost for linear regression with multiple variables
%   J = COMPUTECOSTMULTI(X, y, theta) computes the cost of using theta as the
%   parameter for linear regression to fit the data points in X and y

% Initialize some useful values
m = length(y); % number of training examples

% You need to return the following variables correctly 
J = 0;

% Instructions: Compute the cost of a particular choice of theta
%               You should set J to the cost.
hThetaX=X*theta;
J=1/(2*m)*sum((hThetaX-y).^2);

end

    什么是逻辑回归?相比于线性回归,逻辑回归只会输出一些离散的特定值(例如判定一封邮件是否为垃圾邮件,输出只有0和1),而且对假设函数进行了处理,使得输出只在0和1之间。

 

假设函数如下:

                                                                                       

代价函数如下:

                                

 

梯度函数如下,观察可知,形式与线性回归时一样:

                                              

有了这些信息,我们就可以通过fminunc求出最优的theta参数,我们只需给出代价与梯度的计算方式,代码如下:

function [J, grad] = costFunction(theta, X, y)
%COSTFUNCTION Compute cost and gradient for logistic regression
%   J = COSTFUNCTION(theta, X, y) computes the cost of using theta as the
%   parameter for logistic regression and the gradient of the cost
%   w.r.t. to the parameters.

% Initialize some useful values
m = length(y); % number of training examples

% You need to return the following variables correctly 
J = 0;
grad = zeros(size(theta));

% Instructions: Compute the cost of a particular choice of theta.
%               You should set J to the cost.
%               Compute the partial derivatives and set grad to the partial
%               derivatives of the cost w.r.t. each parameter in theta
%
% Note: grad should have the same dimensions as theta
%
hThetaX=sigmoid(X * theta);
J=1/m*sum(-y.*log(hThetaX)-(1-y).*log(1-hThetaX));
grad=(1/m*(hThetaX-y)\'*X)\';

end

其中,sigmod函数如下:

function g = sigmoid(z)
%SIGMOID Compute sigmoid functoon
%   J = SIGMOID(z) computes the sigmoid of z.

% You need to return the following variables correctly 
g = zeros(size(z));

% Instructions: Compute the sigmoid of each value of z (z can be a matrix,
%               vector or scalar).
e=exp(1);
g=1./(1+e.^-z);

end

有时,会出现”过拟合“的情况,即求得的参数能够很好的拟合训练集中的数据,但在进行预测时,明显与趋势不符,好比下图所示:

此时,我们需要进行正则化处理,对参数进行惩罚,使得除theta(1)之外的theta值均保持较小值。

进行正则化之后的代价函数如下:

                               

进行正则化之后的梯度如下:

                          

下面给出正则化之后的代价与梯度值得代码:

function [J, grad] = costFunctionReg(theta, X, y, lambda)
%COSTFUNCTIONREG Compute cost and gradient for logistic regression with regularization
%   J = COSTFUNCTIONREG(theta, X, y, lambda) computes the cost of using
%   theta as the parameter for regularized logistic regression and the
%   gradient of the cost w.r.t. to the parameters. 

% Initialize some useful values
m = length(y); % number of training examples

% You need to return the following variables correctly 
J = 0;
grad = zeros(size(theta));

% Instructions: Compute the cost of a particular choice of theta.
%               You should set J to the cost.
%               Compute the partial derivatives and set grad to the partial
%               derivatives of the cost w.r.t. each parameter in theta
hThetaX=sigmoid(X * theta);
theta(1)=0;
J=1/m*sum(-y.*log(hThetaX)-(1-y).*log(1-hThetaX))+lambda/(2*m)*sum(theta.^2);
grad=(1/m*(hThetaX-y)\'*X)\' + lambda/m*theta;

end


对于线性回归,正则化的过程基本类似。

至于如何选择正则化时的常数lambda,我们可以将数据分为训练集、交叉验证集和测试集三部分,在不同lambda下,先用训练集求出参数theta,之后求出训练集与交叉验证集的代价,通过分析得出适合的lambda。如下图所示:

转载请注明出处:http://blog.csdn.net/u010278305

机器学习:算法与应用byxdu2022冬季课程笔记1:线性回归与逻辑回归

机器学习:[算法与应用byXDU2022冬季课程笔记集合]文章目录1.回顾与总览2.线性模型与线性回归(LinearRegression)3.逻辑回归(LogisticRegression)分类器4.总结1.回顾与总览上节课程概括了整个机器学习算法流程,... 查看详情

深度学习笔记

...ticsinmoid):将线性函数的输出压缩进区间(0,1)。逻辑回归机器学习算法与Python实践之(七)逻辑回归(LogisticRegression)Coursera公开课笔记:斯坦福大学机器学习第六课“逻辑回归(LogisticRegression)” 支持向量机(supportvectormachine... 查看详情

斯坦福吴恩达教授机器学习公开课第三讲笔记——局部加权回归/线性回归的概率解释/分类和逻辑回归

查看详情

[机器学习]courseraml笔记-逻辑回归(logisticregression)

引言 机器学习栏目记录我在学习MachineLearning过程的一些心得笔记,涵盖线性回归、逻辑回归、Softmax回归、神经网络和SVM等等,主要学习资料来自StandfordAndrewNg老师在Coursera的教程以及UFLDLTutorial,StanfordCS231n等在线课... 查看详情

机器学习:逻辑回归

...*****注:本系列博客是博主学习Stanford大学AndrewNg教授的《机器学习》课程笔记。博主深感学过课程后,不进行总结非常easy遗忘,依据课程加上自己对不明确问题的补充遂有此系列博客。本系列博客包含线性回归、逻辑回归、神... 查看详情

机器学习笔记:大话线性回归(代码片段)

大家好,我是东哥。线性回归作为监督学习中经典的回归模型之一,是初学者入门非常好的开始。宏观上考虑理解性的概念,我想我们在初中可能就接触过,y=ax,x为自变量,y为因变量,a为系数也是斜率。如果我们知道了a系数... 查看详情

机器学习——逻辑回归(logisticregression)

1前言  虽然该机器学习算法名字里面有“回归”,但是它其实是个分类算法。取名逻辑回归主要是因为是从线性回归转变而来的。  logistic回归,又叫对数几率回归。2logistic回归和线性回归的关系2.1线性回归模型  首先给... 查看详情

机器学习理论知识-逻辑回归

...回归。同样参照的资料斯坦福大学2014(吴恩达)机器学习教程中文笔记那本文的知识体系如下:基本知识点定义而线性回归yi=wi∗xi+by_i=w_i*x_i+byi​=wi​∗xi​+b,模型的范围是可以为$\\left-∞࿰... 查看详情

机器学习——线性回归分类与逻辑回归

http://antkillerfarm.github.io/序这是根据AndrewNg的《机器学习讲义》,编写的系列blog。http://www.cnblogs.com/jerrylead/archive/2012/05/08/2489725.html这是网友jerrylead翻译整理的版本,也是本文的一个重要的参考。http://www.tcse.cn/~xulijie/这是jerrylea 查看详情

机器学习——从线性回归到逻辑斯特回归

...行总结,其中图片多来自coursera课程上。线性回归是机器学习中很好理解的一种算法。我们以常见的房屋销售为例来进行简单分析:假设我们统计的一个房屋销售的数据如下:在此࿰ 查看详情

机器学习笔记

机器学习笔记(三)文章目录机器学习笔记(三)线性模型简介线性回归线性几率回归线性模型简介线性模型最简单的案例是最小二乘法:在机器学习的术语中,当预测值为连续值时,称为“回归问题... 查看详情

机器学习笔记

机器学习笔记(三)文章目录机器学习笔记(三)线性模型简介线性回归线性几率回归线性模型简介线性模型最简单的案例是最小二乘法:在机器学习的术语中,当预测值为连续值时,称为“回归问题... 查看详情

机器学习总结线性回归与逻辑回归

线性回归(LinearRegression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合(自变量都是一次方)。只有一个... 查看详情

机器学习逻辑回归和线性回归的区别?(面试回答)

逻辑回归和线性回归的区别?逻辑回归=线性回归+sigmoid函数逻辑回归引入了sigmoid函数,这是一个非线性函数,增加了模型的表达能力逻辑回归输出有限离散值,可以用来解决概率问题、分类问题等。两者使... 查看详情

斯坦福机器学习课程笔记

...模拟)---策略(风险函数)--算法(最优化方法)第一节:机器学习的基本概念和分类第二节:线性回归,最小二乘批梯度下降(bgd)和随机梯度下降(sgd)第三节:过拟合,欠拟合非参数学习算法:局部加权回归概率角度解释线性回归... 查看详情

机器学习—线性回归逻辑回归softmax回归的区别

1、什么是回归?   是一种监督学习方式,用于预测输入变量和输出变量之间的关系,等价于函数拟合,选择一条函数曲线使其更好的拟合已知数据且更好的预测未知数据。2、线性回归   代价函数(平方误差代价函... 查看详情

[机器学习]--逻辑回归总结

逻辑回归是一个分类算法,它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法。那为什么有“回归”这个误导性的词呢?个人认为,虽然逻辑回归是分类模型,但是它的原... 查看详情

机器学习100天(十五):015逻辑回归基本原理

机器学习100天,今天讲的是:逻辑回归基本原理一、线性回归与逻辑回归我们之前介绍过线性回归,我们知道线性回归用于数值预测,例如房屋价格预测、信用卡额度预测等。线性回归最重要的一点就是它的预测值,即因变量一... 查看详情