吴恩达机器学习:从单变量线性回归到Logistic回归

1. 单变量线性回归

1.1. 假设函数

h ( x ) = θ 0 + θ 1 x h(x) = θ_0 + θ_1x h(x)=θ0+θ1x
其中,x是特征,因为我们是单变量,所以只有一个特征
θ 0 θ_0 θ0 θ 1 θ_1 θ1是需要学习的参数,刚开始可以随机给两个值
h ( x ) h(x) h(x)是预测的结果

工作流程:根据特征x,通过这个模型,预测出 h ( x ) h(x) h(x)的结果

1.2. 目标函数

我们刚开始的 θ 0 θ_0 θ0 θ 1 θ_1 θ1是随机的,需要通过梯度下降来使我们的误差更小,这里的误差我们指的是平均均方误差
在这里插入图片描述
我们要通过梯度下降,最小化这个值。
m:一共有m个训练样本
h θ ( x i ) h_θ(x^i) hθ(xi):表示假设方程求出的预测值
i:表示第i个样本
y i y^i yi:表示第i个样本的真实值

简单来说,就算对每一个样本求出,预测值和真实值的误差的平方,再相加,乘以 1 / 2 m 1/2m 1/2m,我们要使得这个式子的值最小。
我们可以吧这个函数写成这样
在这里插入图片描述

1.3. 梯度下降

步骤:

  1. 随机设置 θ 向 量 θ向量 θ,我们通常把全部 θ i θ_i θi设置为0,以单变量线性回归为例,我们设置 θ 0 = 0 , θ 1 = 0 θ_0=0,θ_1=0 θ0=0,θ1=0
  2. 持续改变 θ i θ_i θi的值,直到收敛( θ i θ_i θi趋近于一个值,不再改变)

梯度下降公式:
在这里插入图片描述
学习率( α α α):每一次迈出多大的步子,当学习率过小,梯度下降会很慢,当学习率过大,梯度下降将无法收敛甚至发散
θ j θ_j θj减去代价函数求对 θ j θ_j θj求偏导乘以学习率( α α α)得到的值,把这个值赋值给 θ j θ_j θj,完成一次修改。

每一轮都要先把所有 θ i θ_i θi都修改了,所有 θ i θ_i θi都必须同时更新,才能进行下一轮修改,例如这样:
在这里插入图片描述

1.3.1. 手推偏导

在这里插入图片描述

1.4. sklearn实现

根据房屋住宅用地所占比例(ZN),预测房屋的价格

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn import metrics

boston = load_boston()
df = pd.DataFrame(boston.data,columns=boston.feature_names)['ZN']
x_train, x_test, y_train, y_test = train_test_split(df, boston.target, test_size=0.2)
x_train = pd.DataFrame(x_train)
y_train = pd.DataFrame(y_train)
x_test = pd.DataFrame(x_test)
y_test = pd.DataFrame(y_test)

linreg = LinearRegression()
linreg.fit(x_train,y_train)
y_pred = linreg.predict(x_test)

print('MSE:',metrics.mean_squared_error(y_test,y_pred))
print('RMSE:',np.sqrt(metrics.mean_squared_error(y_test,y_pred)))

2. 多元线性回归

2.1. 假设函数

假设我们有四个特征,那么线性回归方程是这样的
h ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 3 + θ 4 x 4 h(x)=θ_0 + θ_1x_1 + θ_2x_2 + θ_3x_3 + θ_4x_4 h(x)=θ0+θ1x1+θ2x2+θ3x3+θ4x4
在此基础上,我们可以添加一个特征 x 0 = 1 x_0=1 x0=1,这样我们的特征向量就是
x = [ x 0 , x 1 , x 2 , x 3 , x 4 ] x=[x_0,x_1,x_2,x_3,x_4] x=[x0,x1,x2,x3,x4]
参数向量就是
θ = [ θ 0 , θ 1 , θ 2 , θ 3 , θ 4 ] θ=[θ_0,θ_1,θ_2,θ_3,θ_4] θ=[θ0,θ1,θ2,θ3,θ4]
这样我们可以得到: h ( x ) = θ T x h(x) = θ^Tx h(x)=θTx

2.2. 代价函数

在这里插入图片描述

2.3. 目标函数

这是我们梯度下降的函数
在这里插入图片描述
x j i x_j^i xji表示第i个样本的第j个特征
梯度下降每一个 θ θ θ
在这里插入图片描述

2.4. 特征缩放

当样本中的不同特征的值相近的时候,梯度下降的速度会很快,所以我们可以用特征缩放来使得不同特征的值相近
例如我们有两个特征:
x 1 = 房 屋 面 积 ( 0 , 2000 ) m 2 x_1=房屋面积(0,2000)m^2 x1=0,2000m2
x 2 = 卧 室 的 个 数 ( 1 , , 5 ) 个 x_2=卧室的个数(1,,5)个 x2=1,,5

这个时候, J ( θ ) J(θ) J(θ)是一个关于 θ 0 , θ 1 , θ 2 θ_0,θ_1,θ_2 θ0,θ1,θ2的方程,但是我们现在忽略掉 θ 0 θ_0 θ0,我们画出 J ( θ ) J(θ) J(θ)关于 θ 1 , θ 2 方 程 的 图 像 θ_1,θ_2方程的图像 θ1,θ2
在这里插入图片描述
x 1 x_1 x1 x 2 x_2 x2的差值越大的时候,椭圆形越长,那么梯度下降想要降到中点所需要的时间就越多。

但是当我们改变一下,把特征的每一个值除以当前特征的最大值,那么特征间的差值就不会很大,这样的话我们得到的图形就很接近一个圆,梯度下降就会更快
在这里插入图片描述
在我们进行特征缩放的时候,通常把特征控制在 [ − 3 , + 3 ] [-3,+3] [3,+3]

2.5. 归一化

将每个特征值变成 ( x i − μ i ) / s i (x_i - μ_i)/s_i (xiμi)/si,这样的值要在 [ − 0.5 , 0.5 ] [-0.5,0.5] [0.5,0.5]
x i x_i xi:特征值
μ i μ_i μi:平均值
s i s_i si:标准差( 最 大 值 − 最 小 值 最大值-最小值
例如房子的面积平均是1000,卧室个数平均是2,可以得到这个式子
在这里插入图片描述

2.6. 学习率

学习率是为了梯度下降正常工作的,梯度下降是用来选择 θ θ θ,使得 J ( θ ) J(θ) J(θ)最小,我们画出随着梯度下降的迭代次数, J ( θ ) J(θ) J(θ)的值的图形
在这里插入图片描述
学习率过大会导致得到越来越糟糕的结果,画出图形是这样的
在这里插入图片描述
学习率过小,又会导致梯度下降的速度太慢

2.7. 正规方程

我们可以提供一个一次性就能找到 θ θ θ的值的方法,那就是让 J ( θ ) J(θ) J(θ)最小化,对 J ( θ ) J(θ) J(θ)求偏导,再把导数的值等于0,解出 θ θ θ的值就行了
在这里插入图片描述

3. Logistic回归

Logistic回归是一种用于二分类的算法,在面试题也会考到,所以手推Logistic回归,是很必要的

3.1. 假设函数

其实逻辑回归的假设函数就是线性回归的假设函数再加上一个sigmod函数
线性回归: h ( x ) = θ T x h(x)=θ^Tx h(x)=θTx
逻辑回归: h ( x ) = g ( θ T x ) h(x)=g(θ^Tx) h(x)=g(θTx)
g ( z ) 的 定 义 是 g(z)的定义是 g(z)
在这里插入图片描述
z > 0 z>0 z>0,从图像上看, g ( z ) > 0.5 g(z)>0.5 g(z)>0.5
画出 g ( z ) g(z) g(z),是这样的
在这里插入图片描述
从图中,我们可以看出,不管z取多少, g ( z ) g(z) g(z)的值都在 ( 0 , 1 ) (0,1) (0,1),大于0.5的时候,样本为正类,小于0.5的时候样本为父类

完整的Logistic回归的假设函数:
在这里插入图片描述
在给定x的条件下,y=1的概率,可以写成这样
在这里插入图片描述
我们有个这样的图
在这里插入图片描述
假设我们已经得到了 θ θ θ,并且 θ 0 = − 3 , θ 1 = 1 , θ 2 = 1 θ_0=-3,θ_1=1,θ_2=1 θ0=3,θ1=1,θ2=1,所以,我们可以写出假设函数
h θ ( x ) = g ( − 3 + x 1 + x 2 ) h_θ(x)=g(-3+x_1+x_2) hθ(x)=g(3+x1+x2)
− 3 + x 1 + x 2 > 0 -3+x_1+x_2>0 3+x1+x2>0时,我们预测为正类,这样我们就可以在图上画出分界线了
在这里插入图片描述
这条线被称为决策边界,其实决策边界说白了,就是 z = 0 z=0 z=0的这个函数

3.2. 目标函数

我们把线性回归代价函数换一种写法
在这里插入图片描述
但是这个代价函数不适用于Logistic回归,所以我们找到了另一个代价函数
在这里插入图片描述
我们画出前半部分的函数,当 y = 1 y=1 y=1,当预测值为1的时候,我们发现代价函数等于0,因为我们没有出现误差
在这里插入图片描述
我们画出后半部分的函数
在这里插入图片描述
为了避免把代价函数分成两个来写,我们可以把他们合并成这样一个函数
在这里插入图片描述
也就是这样

C o s t ( h θ , y ) Cost(h_θ,y) Cost(hθ,y)
= − y l o g ( h θ ( x ) ) − ( 1 − y ) l o g ( 1 − h θ ( x ) ) =-ylog(h_θ(x)) - (1-y)log(1-h_θ(x)) =ylog(hθ(x))(1y)log(1hθ(x))

我们现在可以写出完整的代价函数
在这里插入图片描述
为了减小这个误差,我们还是要用到梯度下降
在这里插入图片描述
在这里插入图片描述

3.3. 多元分类

Logistic回归是一个二分类的算法,那么如何用他来解决多分类问题呢?
在这里插入图片描述
我们可以用“一对多”的方法,也就是说把样本分成正类和其他类。这样的话,我们用三个Logistic回归就能区分这三个类别了。

4. 过拟合问题

4.1. 过拟合定义

在训练集上表现很好,在测试集上表现不好,模型过于复杂,并且只适用于训练集
在这里插入图片描述

4.2. 过拟合解决

我们的目的就是要让 J ( θ ) J(θ) J(θ)变小,那我们改变一下我们的 J ( θ ) J(θ) J(θ),在后面添加一些东西
在这里插入图片描述
当我们要最小化这个式子的时候, θ 3 θ_3 θ3 θ 4 θ_4 θ4就会很小很小,这样的话,他们对函数的影响也就会很小,但是不至于没有。
例如一个函数 h ( x ) = θ 0 + θ 1 x h(x)=θ_0+θ_1x h(x)=θ0+θ1x,当 θ θ θ接近0的时候,这个函数越接近 h ( x ) = 0 h(x)=0 h(x)=0的这条直线。

所以我们都要给代价函数增加一个正则项,用来减小所有 θ θ θ的值
在这里插入图片描述
但是若正则化参数 λ λ λ被设置的太大的话,那么所有 θ θ θ对函数的影响会很小,函数会是接近一条直线,,会是这样的效果
在这里插入图片描述
我们在梯度下降中,加上这个正则化
在这里插入图片描述
我们再把下面这个方程变形
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若能绽放光丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值