机器学习(一):线性回归
首先在简单得了解了下什么是机器学习后 小c 开始愉快(满眼泪水)地学习机器学习啦。
那么一开始接触机器学习的 小c 接触到的是线性回归
什么是“线性回归”
ok,那么什么是线性回归呢?
在统计学中,线性回归(英语:linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归(multivariate linear regression)。(来自维基)
当然上述的解释过于官方,对于 小c 这种小白来说实在是太不友好了。
所以在查阅各种博客,我尝试用我所理解的来解释一下:
说到底线性回归求的就是一个值,在机器学习中我们所期望的就是扔一堆数据给机器,让机器自己学习得到一个模型(我们不想要去了解这个模型是怎么产生的)然后用这个模型去帮助我们解决显示问题。而对于回归模型来说最后我们预期想要的就是一个值。
当然我这种说法也比较随意,不过我相信当你慢慢学习下去你就会理解什么是线性回归啦。
“线性回归”需要了解什么
那么再简单的了解下什么是线性回归后
我们在来讲讲一些基本的术语
回归:在机器学习中我们大致可以把算法分为两类:回归和分类
简单说回归就是你给一个模型数据,然后它返回一个值,而分类就是返回一个分类类别。
数据:数据就是我们要给模型的东西,这东西可是很重要的。
特征:我们可以理解为数据中带的属性值,例如我们在判断一个学生总成绩是否合格时,我们会传入这么一串数据“name:pan-c,math:80,eng:60,cha:60,sci:70,grade:B” 这串数据中像name,math,eng,cha,sci啊都可以称为特征,而grade可以看作是分类结果。
拟合:我们用一个模型时需要拿数据去训练它,训练出符合这串数据的“完美模型”,这个过程可以称为拟合。
推导
终于到这个激动人心(残忍)的时刻了
假设:现在我没有
x
1
x_1
x1,
x
2
x_2
x2
设:
θ
1
\theta_1
θ1 为
x
1
x_1
x1的参数,
θ
2
\theta_2
θ2为
x
2
x_2
x2 的参数
拟合平面:
h
θ
h_\theta
hθ(x) =
θ
0
\theta_0
θ0 +
θ
1
\theta_1
θ1
x
1
x_1
x1+
θ
2
\theta_2
θ2
x
2
x_2
x2
其中(
θ
0
\theta_0
θ0 为偏置项)
当x 有多个时,即:有多个特征时
h
θ
\theta
θ(x) =
∑
i
=
0
n
\sum_{i=0}^n
∑i=0n
θ
\theta
θi xi (用到线性代数和矩阵的知识)
(我要吐槽!! 为了打出这个公式花了我好长时间啊,天知道我是怎么坚持下来的)
∑
i
=
0
n
\sum_{i=0}^n
∑i=0n
θ
i
\theta_i
θi
x
i
x_i
xi =
θ
0
\theta_0
θ0
x
0
x_0
x0 +
θ
1
\theta_1
θ1
x
1
x_1
x1 +
θ
2
\theta_2
θ2
x
2
x_2
x2 +
θ
3
\theta_3
θ3
x
3
x_3
x3 + … +
θ
n
\theta_n
θn
x
n
x_n
xn
( 其中x0 默认为1,而数据中的特征从x1 开始记 所以
θ
0
\theta0
θ0x0 =
θ
0
\theta0
θ0)
∑
i
=
0
n
\sum_{i=0}^n
∑i=0n
θ
i
\theta_i
θi
x
i
x_i
xi = (
θ
T
\theta ^T
θT)X (theta 的转置乘以 X ,其中都有n+1 项)
所以 :
h
θ
h_\theta
hθ(x) = (
θ
T
\theta^T
θT)X
拟合预测后,真实值(也就是我们样本集中给出的结果)与预测值(
h
θ
h_\theta
hθ(x) 返回的值)肯定会存在差异,在这边我没用
ϵ
\epsilon
ϵ 来表示 误差
对于每个样本我们初步假设:
(一式) y i y^i yi = θ T \theta ^T θT X i X^i Xi + ϵ i \epsilon ^i ϵi
线性回归中我们所引入的误差 ϵ i \epsilon ^i ϵi 是独立并且具有相同的分布,还有一点就是它符合均值为0,方差为 θ 2 \theta ^2 θ2 的 高斯分布(标准正态)
解释误差的分布
在我刚接触线性回归时,提到误差需要符合标准正态分布,我实在不知道为什么,后来在接下去的学习后才发现了原因,在这边我就先行解释一下:在这标准正态分布就是误差为1,均值为0的钟型分布的曲线,你可以查看它的曲线分布,很容易就观察到 误差 满足大概率在 0 附近,小概率偏离0,这就很符合我们的期望。
我们当然希望我们的误差值无限小,小到无限接近 0 ,这就正好满足标准正态分布。
在解释了误差的分布后我们继续来推导我们的线性回归
我们知道了误差满足高斯分布用数学表达式来表示就是:
(二式) p(
ϵ
i
\epsilon ^i
ϵi) =
1
2
π
σ
e
x
p
−
(
ϵ
i
)
2
2
σ
2
\frac 1 {\sqrt{2\pi } \sigma} exp^{\frac {-(\epsilon ^i)^2} {2 \sigma ^2}}
2πσ1exp2σ2−(ϵi)2
将 一式 和 二式 连列 求得:
(汇总)
p
(
y
i
∣
x
i
;
θ
)
p(y^i|x^i ; \theta)
p(yi∣xi;θ) =
1
2
π
σ
e
x
p
−
[
(
y
i
)
2
−
(
θ
T
x
i
)
]
2
2
σ
2
\frac 1 {\sqrt{2\pi }\sigma} exp^{\frac {-[(y ^i)^2 - (\theta^Tx^i)]^2} {2 \sigma ^2}}
2πσ1exp2σ2−[(yi)2−(θTxi)]2
接着就是似然函数出场的时刻了
似然函数
刚开始看到似然这个词语的时候是一脸懵,这玩意是什么啊?
经过我的不懈度娘后我终于知道了这是个啥子东西了
似然 : 是 likelihood 的 贴近文言文的发明翻译,在现代汉语中可以看为“可能”的意思
同样对应的似然函数,等会会出现一个叫做 极大似然函数 的东东,同样对于 极大似然 我们可以简单理解为“最大可能性估计”
(再次吐槽,机器学习中有很多的翻译遗留问题,就像逻辑回归,作为一个经典的分类算法居然叫回归也是够了)
似然函数 :就是通过数据来推导参数,因为我们在学习过程中想要得到一个“完美的模型”,就是可以看作求出一组“完美的参数”,以使得 ϵ \epsilon ϵ 无限接近 0 。
上面显示的 (汇总) 公式我们可以看做是单个样本的概率,而在机器学习中在样本的海洋中光参考一个样本就草率得出结论(那你怕是.。。)是不够的,所以为了尽可能的使得所有样本匹配我们就引入了极大似然。
极大似然函数(数学公式):
将所有单事件概率想乘取最大概率事件下的参数。
L
(
θ
)
L(\theta)
L(θ) =
∏
i
=
1
m
p
(
y
i
∣
x
i
;
θ
)
\prod_{i=1}^m p(y^i|x^i ; \theta)
∏i=1mp(yi∣xi;θ)
=
∏
i
=
1
m
\prod_{i=1}^m
∏i=1m
1
2
π
σ
e
x
p
−
[
(
y
i
)
2
−
(
θ
T
x
i
)
]
2
2
σ
2
\frac 1 {\sqrt{2\pi } \sigma} exp^{\frac {-[(y ^i)^2 - (\theta^Tx^i)]^2} {2 \sigma ^2}}
2πσ1exp2σ2−[(yi)2−(θTxi)]2
第一次看到极大似然函数后我就想这东西可怎么求啊(怀疑人生)
(难以想象我刚开始学的时候是怎么在那么多问题下坚持下来的(估计这就是爱吧))
但是学习还得继续(生命不止,学习不休)
当然人类的智慧是无限的(特别是数学家),在出现极大似然后,总有大佬想到解决办法,那就是取对数(没错就是那么简单)
对数似然函数(数学公式):
l
o
g
L
(
θ
)
log L(\theta)
logL(θ) =
∏
i
=
1
m
p
(
y
i
∣
x
i
;
θ
)
\prod_{i=1}^m p(y^i|x^i ; \theta)
∏i=1mp(yi∣xi;θ)
=
l
o
g
∏
i
=
1
m
log \prod_{i=1}^m
log∏i=1m
1
2
π
σ
e
x
p
−
[
(
y
i
)
2
−
(
θ
T
x
i
)
]
2
2
σ
2
\frac 1 {\sqrt{2\pi } \sigma} exp^{\frac {-[(y ^i)^2 - (\theta^Tx^i)]^2} {2 \sigma ^2}}
2πσ1exp2σ2−[(yi)2−(θTxi)]2
=
∑
i
=
1
m
\sum_{i=1} ^{m}
∑i=1m
1
2
π
σ
e
x
p
−
[
(
y
i
)
2
−
(
θ
T
x
i
)
]
2
2
σ
2
\frac 1 {\sqrt{2\pi } \sigma} exp^{\frac {-[(y ^i)^2 - (\theta^Tx^i)]^2} {2 \sigma ^2}}
2πσ1exp2σ2−[(yi)2−(θTxi)]2
=
m
l
o
g
m log
mlog
1
2
π
σ
−
1
2
σ
2
∑
i
=
1
m
(
y
i
−
θ
T
x
i
)
2
\frac 1 {\sqrt{2\pi } \sigma} -\frac 1{2\sigma^2} \sum_{i=1}^{m} (y^i - \theta^Tx^i)^2
2πσ1−2σ21∑i=1m(yi−θTxi)2
(大呼一口气)
啦啦啦,让我们继续往下学习吧(如果你能看到这,那你真是优秀啊,奖你一朵小红花,哈哈哈)
我们接下来对对数似然展开分为两部分
(第一部分):
m
l
o
g
m log
mlog
1
2
π
σ
\frac 1 {\sqrt{2\pi } \sigma}
2πσ1
(第二部分):
−
1
2
σ
2
∑
i
=
1
m
(
y
i
−
θ
T
x
i
)
2
-\frac 1{2\sigma^2}\sum_{i=1}^{m}(y^i-\theta^Tx^i)^2
−2σ21∑i=1m(yi−θTxi)2
我们所需要的是将误差无限趋近于 0 ,所以我们需要对数似然越大越好,而:
第一部分 为常数 且 恒大与0(>0)
第二部分 是一个负数 (<0)
那么对于第二部分来说要越大越好(因为带负号)
那么:
:
−
1
2
∑
i
=
1
m
(
y
i
−
θ
T
x
i
)
2
-\frac 1{2}\sum_{i=1}^{m}(y^i-\theta^Tx^i)^2
−21∑i=1m(yi−θTxi)2 (越小越好)
so:
(目标函数):
J
(
θ
)
J(\theta)
J(θ) =
1
2
∑
i
=
1
m
(
y
i
−
θ
T
x
i
)
2
\frac 12\sum_{i=1}^{m}(y^i-\theta^Tx^i)^2
21∑i=1m(yi−θTxi)2
那么我们将问题最后简化为只需将目标函数越小越好,然后再去求
θ
\theta
θ
ps:这边的目标函数就是我们所说的最小二乘法
说真的我本来没想到我能写到这边(暗暗夸一下自己)
然而革命还未成功,同志仍须努力
我们已经将问题简化为在目标函数的前提下求
θ
\theta
θ
求偏导
我们观察一下
J
(
θ
)
J(\theta)
J(θ)
J
(
θ
)
J(\theta)
J(θ) =
1
2
∑
i
=
1
m
(
y
i
−
θ
T
x
i
)
2
\frac 12\sum_{i=1}^{m}(y^i-\theta^Tx^i)^2
21∑i=1m(yi−θTxi)2
=
1
2
(
X
θ
)
T
(
X
θ
−
Y
)
\frac 12(X\theta)^T(X\theta-Y)
21(Xθ)T(Xθ−Y)
我还傻乎乎的去了解了一下这个1/2为什么会在,结果证明只是为了方便求解
求偏导
∂
θ
J
(
θ
)
\partial_\theta J(\theta)
∂θJ(θ) =
∂
θ
(
1
2
(
X
θ
−
Y
)
T
(
X
θ
−
Y
)
)
\partial_\theta (\frac 12(X\theta - Y)^T(X\theta-Y))
∂θ(21(Xθ−Y)T(Xθ−Y))
=
∂
θ
(
1
2
(
θ
T
X
T
X
θ
−
θ
T
X
T
Y
−
Y
T
X
θ
+
Y
T
Y
)
)
\partial_\theta(\frac 12(\theta^TX^TX\theta-\theta^TX^TY-Y^TX\theta + Y^TY))
∂θ(21(θTXTXθ−θTXTY−YTXθ+YTY))
=
1
2
(
2
X
T
X
θ
−
X
T
Y
−
(
Y
T
X
)
T
)
\frac 12(2X^TX\theta-X^TY-(Y^TX)^T)
21(2XTXθ−XTY−(YTX)T)
=
X
T
X
θ
−
X
T
Y
X^TX\theta-X^TY
XTXθ−XTY
其中的化简步骤牵扯到了转置矩阵的求偏导(这可折磨了我好长时间)
贴上公式:
化简完目标函数后我们可以想象一下一般情况下什么时候能满足
θ
\theta
θ 越小越好
答案就是在偏导等于0 (
∂
θ
\partial \theta
∂θ=0)的时候
也就是:
X
T
X
θ
−
X
T
Y
=
0
X^TX\theta - X^TY = 0
XTXθ−XTY=0
X
X
X
θ
=
X
T
Y
X^XX\theta = X^TY
XXXθ=XTY
θ
=
[
X
T
X
]
−
1
X
T
Y
\theta = [X^TX]^{-1}X^TY
θ=[XTX]−1XTY
(X 为特征, y 为值)
在这我们终于是求出来一组参数了。然后我们就可以拿着这组
θ
\theta
θ 放入模型进行计算啦
温馨提示:在这里我们推导了是用矩阵来计算的,但不是每个问题都能算出矩阵的逆,所以接下来小c 会介绍一下 梯度下降 以及 逻辑回归
那么下篇博客见啦。