一:线性回归
1.线性回归的概念: 通俗的来讲线性回归就是对一系列数据进行拟合,并尽可能构建出一条可以拟合数据的数学模型,根据这个模型,可以通过输入测试数据来预测测试数据的结果。
例如房价问题,通过已知的房屋位置,房屋面积,和房价拟合出一条数据模型,并通过此数据模型,输入房屋位置,房屋面积等信息来预测房价。
2.线性回归的假设函数:线性回归的假设函数(θ是所求的参数,或者可以叫权重,x为所知的特征值)
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
…
+
θ
n
x
n
h_{\theta }\left( x\right) =\theta _{0}+\theta _{1}x_{1}+\ldots +\theta _{n}x_{n}
hθ(x)=θ0+θ1x1+…+θnxn
我们在代码中一般会将其矢量化,即:
h θ ( x ) = θ T x h_{\theta }\left( x\right) =\theta ^{T}x hθ(x)=θTx
3.线性回归的代价函数:
J ( θ 0 , θ , … θ n ) = 1 2 m ∑ i = 1 ( h θ ( x i ) − y i ) 2 J\left( \theta _{0},\theta ,\ldots \theta _{n}\right) =\dfrac {1}{2m}\sum _{i=1}\left( h_{\theta }\left( x^{i}\right) -y^{i}\right) ^{2} J(θ0,θ,…θn)=2m1i=1∑(hθ(xi)−yi)2
4.线性回归的优化:使用梯度下降使得求出θ代价函数 J(θ) 最小:
在数学上,求一个函数的最小值就是求导,并另导函数为0,以此求出未知数,但是这种计算方式在计算机中是复杂的,计算机更倾向使用大量但简单的计算方式,数学上的求导求极值方式计算量低但是逻辑对于计算机来说较为复杂。因此我们引入梯度下降方法。
step1:首先给 θ 0 , θ 1 . . . . θ j \theta _{0},\theta _{1}....\theta _{j} θ0,θ1....θj 这些变量一个初值
step2:分别求出J(
θ
0
,
θ
1
.
.
.
.
θ
j
\theta _{0},\theta _{1}....\theta _{j}
θ0,θ1....θj )关于
θ
0
,
θ
1
.
.
.
.
θ
n
\theta _{0},\theta _{1}....\theta _{n}
θ0,θ1....θn 的偏导数
∂
J
∂
θ
j
\dfrac {\partial J}{\partial \theta _{j}}
∂θj∂J
step3:将已被赋初值的
θ
0
,
θ
1
.
.
.
.
θ
j
\theta _{0},\theta _{1}....\theta _{j}
θ0,θ1....θj 代入到各个偏导数中
∂
J
∂
θ
j
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{j}}(\theta _{0},\theta _{1}....\theta _{j})
∂θj∂J(θ0,θ1....θj)中
step4:定义一个学习率a(a学习率决定了梯度下降的速度,一般不要太大,也不要太小,太大容易错过最低点),用a乘
∂
J
∂
θ
j
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{j}}(\theta _{0},\theta _{1}....\theta _{j})
∂θj∂J(θ0,θ1....θj)得到 a
∂
J
∂
θ
j
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{j}}(\theta _{0},\theta _{1}....\theta _{j})
∂θj∂J(θ0,θ1....θj)
step5:用已被赋初值的
θ
0
,
θ
1
.
.
.
.
θ
j
\theta _{0},\theta _{1}....\theta _{j}
θ0,θ1....θj 分别减去a
∂
J
∂
θ
j
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{j}}(\theta _{0},\theta _{1}....\theta _{j})
∂θj∂J(θ0,θ1....θj),即
θ
j
\theta _{j}
θj - a
∂
J
∂
θ
j
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{j}}(\theta _{0},\theta _{1}....\theta _{j})
∂θj∂J(θ0,θ1....θj)
例如:
θ
0
\theta _{0}
θ0 - a
∂
J
∂
θ
0
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{0}}(\theta _{0},\theta _{1}....\theta _{j})
∂θ0∂J(θ0,θ1....θj)
θ
1
\theta _{1}
θ1 - a
∂
J
∂
θ
1
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{1}}(\theta _{0},\theta _{1}....\theta _{j})
∂θ1∂J(θ0,θ1....θj)
。。。。。
step6:用得到的差值代替原来的
θ
0
,
θ
1
.
.
.
.
θ
j
\theta _{0},\theta _{1}....\theta _{j}
θ0,θ1....θj ,即
θ
j
\theta _{j}
θj:=
θ
j
\theta _{j}
θj - a
∂
J
∂
θ
j
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{j}}(\theta _{0},\theta _{1}....\theta _{j})
∂θj∂J(θ0,θ1....θj)
例如:
θ
0
\theta _{0}
θ0:=
θ
0
\theta _{0}
θ0 - a
∂
J
∂
θ
0
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{0}}(\theta _{0},\theta _{1}....\theta _{j})
∂θ0∂J(θ0,θ1....θj)
θ
1
\theta _{1}
θ1:=
θ
1
\theta _{1}
θ1 - a
∂
J
∂
θ
0
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{0}}(\theta _{0},\theta _{1}....\theta _{j})
∂θ0∂J(θ0,θ1....θj)
step7:进行多次循环,理想状态是,进行到某次循环使,
θ
j
\theta _{j}
θj 的值不在变化,即代价函数的导数为0,即代价函数已经到了最小,即误差最小。
二:逻辑回归
1.逻辑回归也可以被叫做分类回归,线性回归是为了通过数据建立一条拟合数据的模型,来预测未来某一数据的走向,逻辑回归则是建立模型将数据分为不同的类别,并预测某个数据的类别。
2. 逻辑回归假设函数:逻辑回归的假设函数不能使用线性回归那样的线性函数作为假设函数,因为像这种散点式的数据集也很难通过线性函数来模拟,这里我们使用sigmoid函数来作为假设函数,
g
(
x
)
=
1
1
+
e
−
x
g\left( x\right) =\dfrac {1}{1+e^{-x}}
g(x)=1+e−x1至于为什么使用sigmoid函数,这里浅显的说了一下(太复杂的原因我也不会啊啊qaq)https://blog.csdn.net/weixin_40489988/article/details/97619326
逻辑回归假设函数:
h
θ
(
x
)
=
g
(
θ
x
)
=
1
1
+
e
−
θ
T
x
h_{\theta }\left( x\right) =g(\theta x)=\dfrac {1}{1+e^{-\theta ^{T}x}}
hθ(x)=g(θx)=1+e−θTx1
这里的
θ
\theta
θ和x和线性回归里的是一样的。
3. 逻辑回归的代价函数:逻辑函数本质上是分类问题,一个物品是a类还是b类,按照计算机语言就是0,1问题,我们先看一下假设函数(sigmoid)的图像
横坐标趋于正无穷是,函数值趋于1,横坐标趋于负无穷时,函数值趋于0,除了二进制,还有一个与0,1相关的,就是概率。
于是我们将sigmoid函数与概率相结合,我们将纵坐标从0.5开始一分为二,若得到的函数值大于0.5,比如是0.7,我们认为这个数据趋向于1的概率大于0.5,趋向1的概率是0.7。
在实例中,我们假设0代表物品a类,1代表物品b类,即一个物品,百分之70的概率为b类,这些对于预测而言足够了,我们可以将这个物品分到b类。
根据这个理论,我们可以推测出代价函数,比如我们希望一个物品x(假设其为b类物品,反映在计算机中为1)通过算法,被准确的归到b类中,那我们希望根据sigmoid计算得到的x的值应该尽量接近于1,即它应该大概率的接近1(因为我们假设了物品x本身就是b类物品)。
换句话来说,这个本身属于b类物品的未知物品x,通过sigmoid计算出来的值,离1越近,它的误差越小,即代价函数的值越小,那么,有没有这样一种函数呢。
这个就是我们想要的函数,同时这个图片上面写了逻辑函数的代价函数(图片不是我的,是我百度的https://img-blog.csdnimg.cn/20190730181250377.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDQ4OTk4OA==,size_16,color_FFFFFF,t_70,这是地址)
如果一个样本是正样本,我们希望它尽可能靠近1,与1的差距越小越好,即代价函数为 -log(h
θ
\theta
θ(x))
如果一个样本是正样本,我们希望它尽可能靠近0,与0的差距越小越好,即代价函数为 -log(1-h
θ
\theta
θ(x))
我们将这俩个公式合并得到真正的代价函数:
c
o
s
t
(
h
θ
(
x
)
,
y
)
=
y
log
h
θ
(
x
)
+
(
1
−
y
)
l
o
g
(
1
−
h
θ
(
x
)
)
cost( h_{\theta }\left( x\right),y) = y\log h_{\theta }\left( x\right) +\left( 1-y\right) log(1-h_{\theta }\left( x\right))
cost(hθ(x),y)=yloghθ(x)+(1−y)log(1−hθ(x))
这个代价函数是对一个样本而言,假定样本与样本之间相互独立,那么整个样本集生成的概率即为所有样本生成概率的乘积,可以得到以下公式:
J
(
θ
)
=
−
1
m
∑
i
=
1
m
[
y
(
i
)
log
(
i
)
(
h
θ
(
x
i
)
)
+
(
1
−
y
(
i
)
)
log
(
1
−
h
θ
(
x
(
i
)
)
)
J(\theta) = -\dfrac {1 }{m}\sum ^{m}_{i=1}[ y^{\left( i\right) }\log ^{\left( i\right) }\left( h\theta \left( x^{i}\right) \right)+\left( 1-y^{(i)}\right) \log \left( 1-h_{\theta }\left( x^{(i)}\right) \right)
J(θ)=−m1i=1∑m[y(i)log(i)(hθ(xi))+(1−y(i))log(1−hθ(x(i)))
4.逻辑函数的优化:对J(
θ
\theta
θ)求偏导,得到
∂
J
∂
θ
j
=
−
1
m
[
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
⋅
x
j
i
]
\dfrac {\partial J}{\partial \theta _{j}}= -\dfrac {1 }{m}\left[ \sum ^{m}_{i=1}\left( h_{\theta }\left( x^{i}\right) -y^{i}\right) \cdot x^{i}_{j}\right]
∂θj∂J=−m1[i=1∑m(hθ(xi)−yi)⋅xji]
而
θ
j
\theta _{j}
θj:=
θ
j
\theta _{j}
θj - a
∂
J
∂
θ
j
(
θ
0
,
θ
1
.
.
.
.
θ
j
)
\dfrac {\partial J}{\partial \theta _{j}}(\theta _{0},\theta _{1}....\theta _{j})
∂θj∂J(θ0,θ1....θj)
即
θ
j
\theta _{j}
θj:=
θ
j
+
1
m
∑
i
=
1
m
α
(
h
θ
(
x
i
)
−
y
i
)
x
j
i
\theta _{j}+\dfrac {1 }{m}\sum ^{m}_{i=1}\alpha \left( h\theta \left( x^{i}\right) -y^{i}\right) x^{i}_{j}
θj+m1∑i=1mα(hθ(xi)−yi)xji
三:正则化:
θ
j
\theta _{j}
θj:=
θ
j
−
[
α
⋅
X
T
(
g
(
θ
x
)
−
y
→
)
+
λ
m
θ
j
]
\theta _{j}-[\alpha \cdot X^{T}\left( g\left( \theta x\right) -\overrightarrow {y}\right)+\dfrac {\lambda }{m}\theta _{j}]
θj−[α⋅XT(g(θx)−y)+mλθj]
即
θ
j
\theta _{j}
θj:=
θ
j
(
1
−
λ
m
)
−
a
m
(
h
θ
(
x
i
)
−
y
i
)
x
j
i
\theta _{j}\left( 1-\dfrac {\lambda }{m}\right)-\dfrac {a }{m} \left( h\theta \left( x^{i}\right) -y^{i}\right) x^{i}_{j}
θj(1−mλ)−ma(hθ(xi)−yi)xji
四:逻辑回归与线性回归的联系
逻辑回归其本质还是线性回归。它仅在线性回归的基础上,在特征到结果的映射中加入了一层sigmoid函数映射来达到拟合非线性数据的功能。
一、假设函数不同
1、逻辑函数的假设函数是sigmoid函数
2、线性回归的则是线性函数
二、性质不同
1、逻辑回归:是一种广义的线性回归分析模型。
2、线性回归:利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
三、应用不同
1、逻辑回归:常用于数据挖掘,疾病自动诊断,经济预测等领域。
2、线性回归:常运用于数学、金融、趋势线、经济学等领域。