美文网首页
a04.Andrew-ML03-分类、逻辑回归

a04.Andrew-ML03-分类、逻辑回归

作者: Xylia_Yang | 来源:发表于2018-08-06 15:15 被阅读11次

Classification and Representation


01.Classification

要尝试分类,一种方法是是使用线性回归,将所有<0.5的映射为0;>0.5的映射为1。
但由于分类不是一个线性函数,所以这种方法不能很好工作。

02.Hypothesis Representation

  • 在用线性回归算法通过x预测y的时候,hθ(x)的值在超出0-1范围内是没有意义的。故我们可以通过使用s函数来将范围锁定在0-1之间。
s函数表达式
s函数
  • hθ​(x) 将告诉我们输出为1的可能性。比如hθ​(x) =0.7:有70%的可能性输出为1.

hθ(x)=P(y=1|x;θ)=1−P(y=0|x;θ)
P(y=0|x;θ)+P(y=1|x;θ)=1

03.Decision Boundary

  • 为了得到离散的0、1分类,可以修改假设函数的输出为(y相当于训练标记,hθ(x)是实际输出结果):

hθ(x)≥0.5→y=1
hθ(x)<0.5→y=0

  • 相应的,输入对应输出则变为:

z=0,e0=1⇒g(z)=1/2
z→∞,e−∞→0⇒g(z)=1
z→−∞,e∞→∞⇒g(z)=0

  • 最终:


  • 决策边界(decision boundary):是将区域分为y=0和y=1的线,由假设函数决定

线性决策边界.png 非线性决策边界.png

Logistic Regression Model


01.Cost Function

  • 在逻辑回归模型中我们不能使用和线性回归相同的Cost Function.因为逻辑函数会导致输出不是一个光滑的凹函数,这会造成有许多局部最优解。


    逻辑函数的Cost Function.png
  • Cost Funtion图像:


    Cost(hθ(x),y)=−log⁡(hθ(x))
Cost(hθ(x),y)=−log⁡(1−hθ(x))

Cost(hθ(x),y)=0 if hθ(x)=y

02.Simplified Cost Function and Gradient Descent

  • 代价函数的统一表达形式:

Cost(hθ​(x),y)=−ylog(hθ​(x))−(1−y)log(1−hθ​(x))

  • 整个代价函数形式(我的理解是只是一个数据,下面是需要用的整个数据的平均值得形式):


    一般形式
向量表示形式
  • Grandient Descent:
  1. 梯度下降算法的表达式如下(在逻辑回归模式中和线性回归是一致的):


    一般而言
改写导数部分

03.Advanced Optimization

  • 有一些更好的算法来代替梯度下降法进行theta的优化,这些方法可以调用内置的octave函数


    costFunction

Multiclass Classification:One-vs-all


  • 分类的数据所属的类别有多种,预测y=每一种类别的概率.做法是不去纠结构造一个复杂的函数一次性分出3类,而是构造3个二分类器。最后选择一个概率最高的作为最后的结论。


    构造分类器过程
一般式

Solving the Problem of Overfitting


01.The Problem of Overfitting

  • 01图的线并没有很好的拟合训练数据点,叫做欠拟合(underfitting)。
    y=θ0+θ1x
    02图的线通过加入一些特征值如二次项之后能更好的拟合训练数据点。
    y=θ0+θ1x+θ2x^2
    03图像的线为了过分拟合训练数据而加入太多特征值,这会导致不能很好的进行预测,是没有必要的,叫过度拟合(overfitting)


    01 02 03
  • 解决overfitting的方法:

  1. 减少特征值得数量
    手动筛选或者使用一个选择模型算法
  2. Regularization(正规化)
    保持所有的特征,但是降低 θj的级数?

02.Cost Function

  • 如果过拟合,我们可以在代价函数中增加某些项的值来降低它 的权重(我的理解是代价函数要尽可能小,如果某些项太大,必然会导致他的参数减小,进而消除权重)。
    如:θ0​+θ1​x+θ2​x2+θ3​x3+θ4​x4
    在需要降低权重的项x3和x4之前乘上一个系数:



    进而使theta3和theta4的影响变小;

  • 一般化这个代价函数:


  • lambda,叫做正规化参数(regularization parameter),决定着theta的膨胀程度。如果取得太大,则会使theta趋向于0.曲线变得过于平滑,甚至欠拟合。

03.Regularized Linear Regression

  • 我们将修改梯度下降函数,使得theta0和其他因子分开,因为我们不想惩罚theta0.
    梯度函数修正规则
一般化规则

1−αλ/m将一直小于1,所以每次迭代之后都会减少theta的值。

  • Normal Equation(一种非迭代的正规方程)
    如果m<n(样本数量<特征值),则XTX是不可逆的,XTX + λ⋅L 也是不可逆的。

04.Regularized Logistic Regression

  • 可以使用和规范线性回归相同的方式来规范逻辑回归。这样子就可以较好的避免过度拟合。


  • Cost Function
    通过在末尾增加一项来规范化逻辑回归,末尾的累加项意味着明确排除偏差项。


    图片.png
  • 在计算的时候可以通过更新一下两个式子:


    图片.png

编程作业


01.Q

假设你是一个学校校长,根据申请人两次考试成绩,来预测他们被录取的概率

02. plotdata.m

function plotData(X, y)
%按照y的不同取值对X进行分类,不同的画成不同形状显示在图中
figure; hold on;

pos = find(y==1); neg = find(y == 0);

% Plot Examples
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2, ...
'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y', ...
'MarkerSize', 7);

% =========================================================================

hold off;

end

03.sigmoid.m

function g = sigmoid(z)
%用S函数将数值映射在0-1之间
g = zeros(size(z));

g= 1./(1+exp(-z))

% =============================================================

end

04.costFunction.m

function [J, grad] = costFunction(theta, X, y)
%计算代价函数和梯度下降函数

% 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));

J=((-y' * log (sigmoid (Xtheta)))-(1-y)'log(1-sigmoid(Xtheta)))/m;
grad =(X'
(sigmoid(X*theta)-y))./m;

% =============================================================

end

05.predict

function p = predict(theta, X)
%对给定数据进行预测,看是否达到准确率
m = size(X, 1); % Number of training examples

% You need to return the following variables correctly
p = zeros(m, 1);

p = floor(sigmoid(X * theta) .* 2)

% =========================================================================

end

06.costFunction

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));

% ====================== YOUR CODE HERE ======================
% 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
J = ((-y' * log(sigmoid(X * theta))) - (1 - y)' * log(1 - sigmoid(X * theta))) / m + (sum(theta .^ 2) - theta(1) ^ 2) * lambda / (2 * m);

grad(1) = (X(:, 1)' * (sigmoid(X * theta) - y)) ./ m;
for i = 2 : size(theta)
grad(i) = (X(:, i)' * (sigmoid(X * theta) - y)) ./ m + lambda * theta(i) / m

% =============================================================

end

相关文章

  • a04.Andrew-ML03-分类、逻辑回归

    Classification and Representation 01.Classification 要尝试分类...

  • 逻辑回归(Logistic Regression)和SVM的比较

    逻辑回归不是回归,是做分类,只是用回归的思路做分类罢了。 逻辑回归是传统机器学习的一种分类方法。特点是简单,高效,...

  • 机器学习day7-逻辑回归问题

    逻辑回归 逻辑回归,是最常见最基础的模型。 逻辑回归与线性回归 逻辑回归处理的是分类问题,线性回归处理回归问题。两...

  • 机器学习100天-Day4-6逻辑回归

    逻辑回归(Logistic Regression) 什么是逻辑回归 逻辑回归被用于对不同问题进行分类。在这里,逻辑...

  • 逻辑回归

    逻辑回归是一种解决分类问题的机器学习算法。 逻辑回归可以视为回归算法也可以视为分类算法,但通常用于分类,#####...

  • 逻辑回归

    逻辑回归是一个分类算法,利用回归来做分类.它可以处理二元分类以及多元分类,逻辑回归与线性回归不同主要体现在以下两点...

  • 逻辑回归(Logistic Regression)

    重点事情说三遍!!! 逻辑回归虽然名字叫回归,但它是正经的分类方法!分类方法!分类方法! 1. 逻辑回归 假如我们...

  • 机器学习之逻辑回归

    逻辑回归 场景简介:使用逻辑回归实现对鸢尾花的分类预测。基于python基本库的实现 模型说明 逻辑回归是一个分类...

  • 逻辑斯蒂回归在二分类中的应用

    逻辑回归简介 逻辑斯蒂回归(logistic regression,又称“对数几率回归”)是经典的分类方法。逻辑斯...

  • 11. 分类算法-逻辑回归

    逻辑回归 逻辑回归是解决二分类问题的利器 逻辑回归公式 sklearn逻辑回归的API sklearn.linea...

网友评论

      本文标题:a04.Andrew-ML03-分类、逻辑回归

      本文链接:https://www.haomeiwen.com/subject/pampvftx.html