机器学习-吴恩达笔记3

主要讲解的内容包含:

  • 逻辑回归
  • 代价函数
  • 线性回归和逻辑回归的比较
  • 正则化问题

一、逻辑回归

分类问题

假设预测的变量y是离散的值,需要使用逻辑回归Logistic Regression,LR的算法,实际上它是一种分类算法

二元分类问题
  • 将因变量(dependent variable)可能属于的两个类分别称为负向类(negative class)和正向类(positive class
  • 因变量y的取值只能在0和1之间,其中0表示负类,1表示正类

假说表示Hypothesis Representation

分类器的输出值在0,1之间,因此,希望找出一个满足某个性质的假设函数,这个性质是它的预测值要在0和1之间。

MxjlVK.png
Mxj7RJ.png

引入一个新的模型:逻辑回归。该模型的输出变量范围始终在0和1之间。 逻辑回归模型的假设是:
h(\theta) = g(\theta^TX)
其中X代表的是特征向量g的逻辑函数,常用的S型函数(上图的右边,sigmoid function)公式为

g(z)= \frac{1}{1+e^{-z}}

Python代码实现sigmod激活函数:

import numpy as np

def sigmod(z):
  return 1 / (1 + np.exp(-z))

h_\theta(x)=g(z)= \frac{1}{1+e^{-\theta^TX}}

h_{\theta}(x)作用是对于给定的输入变量,根据选择的参数计算输出变量=1的可能性,即:h_{\theta}(x)=P(y=1|x;\theta)

例如:对于给定的x,通过已经确定的参数计算得出h_{\theta}(x)=0.7,则表示有70%的几率y属于正类

决策边界decision boundary

解释逻辑回归
  1. 在逻辑回归中​预测​;反之y=0

  2. 在激活函数​中:

当​z \geq0,则g(z) \geq 0.5

当​z < 0,则​g(z) < 0.5

  1. 又因为​z=\theta^Tx,则​当\theta^Tx \geq 0,y=1;反之y=0
实例demo

在下图的中实例中,参数​满足[-3,1,1],当​-3+x_1+x_2 \geq0,即x_1+x_2\geq3​时,模型预测y=1;说明此时:直线​x_1+x_2=3就是决策边界

MzSvXd.png

复杂的模型边界问题

MzpIgg.png

二、代价函数Cost Function

如何拟合LR模型的参数​\theta

Mz9yGT.png

1. 线性模型中代价函数是模型误差的平方和

J(\theta)=\frac{1}{2m}\sum^m_{i=1}(h_{\theta}(x^{(i)})-y^{(i)})^2

如果直接使用线性模型中的代价函数,即误差平方和,得到的代价函数是个"非凸函数",但是实际上我们期望看的是凸函数(右边)

MzkHrF.png
  1. 重新定义逻辑回归的代价函数
    h_\theta(x)=g(\theta^TX)= \frac{1}{1+e^{-\theta^TX}}

J(\theta)=\frac{1}{m}\sum^m_{i=1}Cost(h_\theta(x^{(i)}),y^{(i)})

Cost(h_\theta(x), y) = \begin{cases}-\log(h_\theta(x)), & \text{y=1} \\-\log(1-h_\theta(x)), & \text{y=0} \\\end{cases}
将上面的两个式子进行合并:
Cost(h_\theta(x), y)=-y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x))

MzVxGn.png
  1. h_\theta(x)Cost(h_\theta(x),y)之间的关系

根据y的不同取值来进行分别判断,同时需要注意的是:假设函数h的取值只在[0,1]之间

MzZFZF.png

y=1的情形

MzPSB9.png

y=0的情形

MzP8gS.png

Python代码实现代价函数

利用Python实现下面的代价函数

  • first 表示的是右边第一项

  • second 表示的是右边第二项

Cost(h_\theta(x), y)=-y\log(h_\theta(x))-(1-y)\log(1-h_\theta(x))

import numpy as np

def cost(theta, X, y):
  # 实现代价函数
  
  theta=np.matrix(theta)
  X = np.matrix(X)
  y = np.matrxi(y)
  
  first = np.multiply(-y, np.log(sigmod(X * theta.T)))
  second = np.multiply((1 - y), np.log(1-sigmod(X * theta.T)))
  
  return np.sum(first - second) / (len(X))

利用梯度下降来求解LR最小参数

LR中的代价函数是

J(\theta)=-\frac{1}{m}\sum^m_{i=1}[-y^{(i)}\log(h_\theta(x^{(i)}))-(1-y^{(i)})\log(1-h_\theta(x^{i}))]

最终结果

\frac{\partial J(\theta)}{\partial \theta_j}=\frac{1}{m}\sum^m_{i=1}[h_\theta(x^{(i)})-y^{(i)}]x_j^{(i)}

具体过程

MzyOw6.png

不断地迭代更新​\theta_{j}

\theta_{j} := \theta_j-\alpha\frac{\partial J(\theta)}{\partial \theta_j}

\theta_{j} := \theta_j-\alpha\frac{1}{m}\sum^m_{i=1}[h_\theta(x^{(i)})-y^{(i)}]x_j^{(i)}

如果存在n个特征,也就是\theta=[\theta_0,\theta_1,…,\theta_n]^T​。那么就需要根据上面的式子从0-n来更新所有的​\theta

三、线性回归 VS 逻辑回归

  1. 假设的定义规则发生变化

线性回归:
h_{\theta}{(x)}=\theta^TX=\theta_0x_0+...+\theta_nx_n
逻辑回归:
h_\theta{(x)}= \frac{1}{1+e^{-\theta^TX}}

因此,即使更新参数的规则看起来基本相同,但由于假设的定义发生了变化,所以逻辑函数的梯度下降,跟线性回归的梯度下降实际上是两个完全不同的东西。

其他求解代价函数最小的算法

  • 共轭梯度conjugate gradient
  • 局部优化法Broyden fletcher goldfarb shann,BFGS
  • 有限内存局部优化法(LBFGS)

四、多类别分类one-vs-all

实际中的例子

假如现在需要一个学习算法能自动地将邮件归类到不同的文件夹里,或者说可以自动地加上标签,那么需要一些不同的文件夹,或者不同的标签来完成这件事,来区分开来自工作、朋友、家人或者有关兴趣爱好的邮件,那么,就有了这样一个分类问题:其类别有4个,分别用y=1,2,3,4 来代表。

Mz55HH.png
Mz55HH.png

五、正则化问题Regularization

正则化基础

正则化技术主要是为了解决过拟合的问题。过拟合指的是:对样本数据具有很好的判断能力,但是对新的数据预测能力很差。

MzINad.png
  • 第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集

  • 第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据

  • 中间的模型似乎最合适

如果是多项式拟合,x的次数越高,拟合的效果越好,但是相应的预测能力就可能变差。
对于过拟合的处理:

  1. 丢弃一些不能正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法,例如PCA

  2. 正则化。 保留所有的特征,但是减少参数的大小(magnitude

Mz78MV.png

加入正则化参数

在模型h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3+\theta_4x_4中,主要是高次项产生的过拟合问题:

MzL71s.png

加入正则化参数后能够防止过拟合问题,其中\lambda是正则化参数Regularization Parameter
J(\theta)=\frac{1}{2m}\sum^m_{i=1}(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda \sum^n_{j=1}\theta^2_{j}
Attention:一般地,不对\theta_0进行惩罚;加上正则化参数实际上是对参数\theta进行惩罚。经过正则化处理后的模型和原模型的对比:

MzHJSI.png
  • 如果\lambda过大,所有的参数最小化,模型变成了h_\theta(x)=\theta_0,造成了过拟合

正则化线性回归Regularized Linear Regression

正则化线性回归的代价函数
J(\theta)=\frac{1}{2m}\sum^m_{i=1}[(h_{\theta}(x^{(i)})-y^{(i)})^2+\lambda \sum^n_{j=1}\theta^2_{j}]

Attention:在线性回归中,不对\theta_0进行正则化
{\theta_0}:={\theta_0}-a\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{0}^{(i)}}
j=1,2,…,n
{\theta_j}:={\theta_j}-a[\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}}+\frac{\lambda }{m}{\theta_j}] ;j=1,2,...,n
调整下变成:
{\theta_j}:={\theta_j}(1-\frac{\lambda }{m})-a\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}}

正则化逻辑回归Regularized Logistic Regression

LR问题两种优化方法:

  • 梯度下降法
  • 更高级优化算法

加上正则惩罚项后的代价函数为:
J(\theta)=\frac{1}{m}\sum^m_{i=1}[-y^{(i)}\log(h_\theta(x^{(i)}))-(1-y^{(i)})\log(1-h_\theta(x^{i}))]+\frac{\lambda}{2m}\sum^n_{j=1}\theta^2_j

python代码实现

import numpy as np

# 实现代价函数
def costReg(theta, X, y, lr):
  theta= np.matrix(theta)
  X = np.matrix(X)
  y = np.matrix(y)
  
  first = np.multiply(-y, np.log(sigmoid(X * theta.T)))
  second = np.multiply((1 - y), np.log(1 - sigmoid(X * theta.T)))
  reg = (lr / (2 * len(X)) * np.sum(np.power(theta[:, 1:theta.shape[1]], 2))   # theta[:, 1:theta.shape[1]] 代表的是 \theta_j 
  return np.sum(first - second) / len((X)) + reg

通过求导,得到梯度下降算法,本质上就是对\theta的不断更新:
{\theta_0}:={\theta_0}-a\frac{1}{m}\sum\limits_{i=1}^{m}{(({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{0}^{(i)}})

{\theta_j}:={\theta_j}-a[\frac{1}{m}\sum\limits_{i=1}^{m}{({h_\theta}({{x}^{(i)}})-{{y}^{(i)}})x_{j}^{\left( i \right)}}+\frac{\lambda }{m}{\theta_j}] ; j=1,2,...,n

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 230,563评论 6 544
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,694评论 3 429
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 178,672评论 0 383
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,965评论 1 318
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,690评论 6 413
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 56,019评论 1 329
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 44,013评论 3 449
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 43,188评论 0 290
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,718评论 1 336
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,438评论 3 360
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,667评论 1 374
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 39,149评论 5 365
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,845评论 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 35,252评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,590评论 1 295
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,384评论 3 400
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,635评论 2 380