机器学习笔记(三):线性回归大解剖(原理部分)

进入机器学习,线性回归自然就是一道开胃菜。虽说简单,但对于入门来说还是有些难度的。代码部分见下一篇,代码对于程序员还是能能够帮助理解那些公式的。

(本文用的一些课件来自唐宇迪的机器学习,大家可以取网易云课堂看他的视频,很棒)
1.线性回归的一些要点
先说我理解的线性回归是什么意思吧,机器学习往小了说就是找规律,而线性回归就是找线性规律。举个例子, 给你一组数(x,y),(1,2) (2,4) (3, 6)小学生都能找到其中的规律就是y = 2x , 这就是线性回归的目的 一开始就假设 y = θ x,通过对数据进行分析,建模,最终得到θ = 2。

再说说几个重要名词
先定义一个前提,现在要求我们从 【身高,长相】 预测 一个人【是否有女朋友】

1.数据  ,  顾名思义  就是已经有的数据 ,如【身高,长相】两个特征
2.目标 ,  预测 【是否有女朋友】 (标签)
3.参数    这个就是我们要求的了,因为我们需要的是一个线性公式:
 θ1身高  + θ2长相 + θ0(误差) =  是否有女朋友
其中  θ0 θ1 θ2 就是我们要求的参数

线性回归,就是在一堆数据点当中,找到一个平面能够拟合(就是包含)这些数据点
机器学习笔记(三):线性回归大解剖(原理部分)

偏置项就可以理解为 误差 也就是中学函数中 y = kx + b 的那个 b

还有一个概念要知道,那就是

误差

真实值 和 预测值 之间肯定是存在差异的,这种差异是一定存在的 用ε表示
误差 ε 是[独立同分布的(https://baike.baidu.com/item/独立同分布/6715110?fr=aladdin) 并且服从 均值0 方差为 σ^2 的高斯分布(就是正态分布)

所谓 独立 就是说 ε 误差集合中的 {ε1,ε2,ε3,ε4} 相互之间不会有影响
同分布是说,他们虽然不会碰到,但是他们是在一条路上走的可以理解为平行时空,你在这,我也在这,但是我们隔了100年1个世纪。

高斯分布:{ε1,ε2,ε3,ε4} 中的值可能打可能小,但是绝大多数情况下,这个浮动不会太大,极小情况下浮动会比较大,符合正常情况
机器学习笔记(三):线性回归大解剖(原理部分)

线性回归参数

最开始讲到了 θ1身高 + θ2长相 + θ0(误差) = 是否有女朋友 其中,身高长相的数据是有的,我们需要因此推导出这个人是不是有女朋友。要让我们的这个公式能够起作用,首先需要解决的就是这几个参数θ2,θ1,θ0的求解,有了这几个参数,往公式里一代,就so easy了。
关键是怎么求呢。请你跟我这样做。

首先把 身高, 长相,等等的这些特征 写作 集合x = {长相,身高},然后把参数写成集合θ。 就可以写作 公式(1) ,始终记住,我们的任务是求 θ
目前已知的只有 误差遵循 高斯分布,高斯分布的公式我们是能写出来的,误差我们也能用数据和参数表示,所以就能得到下面的推导过程:

机器学习笔记(三):线性回归大解剖(原理部分)

当我们得到上式后,怎么求θ呢,首先你要知道什么是似然函数,什么是最大似然估计

这俩货我都是真的不好解释,首先说似然函数吧,首先他不是个值,他是个函数,就拿最简单的丢硬币来说,假如你现在不知道丢硬币的概率,然后你扔了2次,2次都是正面,这时候你就可以画一个关于正面的概率 的似然函数了
正面概率为 0.5的概率是1/4 正面概率为1的概率为 1 。。。 把正面的概率(0.5,1)做x , y为(1/4,1)这玩意就是似然函数

而最大似然估计就是说,当x取值为多少时,能够让这个似然函数的y取最大值,很明显概率不可能大于1,所以如上面说的丢硬币 正面的概率的最大似然估计就是1.

我只是粗讲,有需要的可以点进连接自己看看,这两篇我觉得讲的都不错。
有一句话很重要:一个似然函数乘以一个正的常数之后仍然是似然函数

然后我们就可以列出似然函数了:再强调一下,我们的任务是求 θ , 而且是要求最能满足 公式的θ, 也就是 最大似然估计 的 θ
机器学习笔记(三):线性回归大解剖(原理部分)

如何得到最大似然估计呢:一般是下面几步

1) 写出似然函数;2) 对似然函数取对数,并整理 3) 求导数 ;4) 解似然方程

现在有了似然函数,下一步就是对似然函数两边加对数
机器学习笔记(三):线性回归大解剖(原理部分)

整理一下得到:

log ( L(θ) ) =

机器学习笔记(三):线性回归大解剖(原理部分)

然后对它求导,让他 =0,再解方程就OK

在计算之前,我们要知道我们求的最大似然估计其实就是找一个 能够让似然函数最大的 θ 值,在看上面那个整理后的式子,左边明显是个常数,所以只要右边越小似然函数就会越大 ,把左边单独拎出来,就是
机器学习笔记(三):线性回归大解剖(原理部分)
这个函数J(θ ) 是超级重要的,因为让似然函数最大,就是让J(θ )最小,所以J(θ )可以作为整个优化过程的目标函数,即损失函数,这个后面会说。

接下来就是求导了。

机器学习笔记(三):线性回归大解剖(原理部分)

这一步,我一直有些恍惚,第一个等号右边是很好理解的,就是用hθ(x(i)) 表示Xθ 第二个等号就玄乎了,听到一种说法是矩阵的平方等于矩阵的转置乘自身,不过我一直没看到这种官方说法,希望看到这里,也有答案的官人,给我说一下。

因为这里的函数不是一元的,是多元的,就不是求导数了,这里叫偏导,殊途同归
机器学习笔记(三):线性回归大解剖(原理部分)

然后要让偏导等于0,这样就找到了最低点了
机器学习笔记(三):线性回归大解剖(原理部分)
当然明眼人一眼就看出来了,X矩阵只有满秩的情况下才有逆,什么时候满秩呢,就是有效样本数一定要大于等于特征数(不知这样理解有没有错)。所以这也就决定了这种方法不是万能的,也可以说除了线性回归这种特例基本不使用。那怎么办呢,这个时候就需要超级经典的一个方法来代替了。

梯度下降

推荐一篇我觉得很好的梯度下降文章: 点我

首先我们拿到我们的似然函数,然后让它平均一下(除以参数个数)至于为什么这么做,我也不是很清楚。然后拿到我们的目标函数
机器学习笔记(三):线性回归大解剖(原理部分)
接下来我们的任务就是,找到这个目标函数的最小值。
仔细看这个函数你会发现 这是个 θ集合做变量的函数,如何找到一个 θ 使J(θ)最小呢,现在自然不能像线性回归一样直接偏倒等于0 就行了,而是对θ集合中的每一元素 θi 进行求梯度,然后使 θ 往梯度的下降方向不断的接近,知道到达最低点。

而梯度下降这里有三种方式:
机器学习笔记(三):线性回归大解剖(原理部分)

机器学习笔记(三):线性回归大解剖(原理部分)

上图有个学习率还未提起,其实也就是个步长,真的推荐去推荐的梯度下降文章中好好看看。
机器学习笔记(三):线性回归大解剖(原理部分)

逻辑回归

有了梯度下降,就可以说说逻辑回归了。
首先要明确:逻辑回归是经典的二分类算法,是个分类算法。
逻辑回归主要做的是找到一条分界线,线的那头都是你的人,这头都是我的人。这条分界线可以是非线性的。

然后说一下 logistic regression,周志华的机器学习diss了这个名字,认为取这么个名字就是瞎搞,所以他坚持叫它对数几率回归。

逻辑回归的第一步需要先将 预测值和真实值联系起来,真实值的取值范围如果是0-1, 那么你设定的模型必定也只能是0-1的,这时候你就需要一个单调可微的函数使得 g (y) = WX

逻辑回归中就有一个非常适合做g() 的函数: 对数几率函数,它任意阶可导。
机器学习笔记(三):线性回归大解剖(原理部分)

他的图像为
机器学习笔记(三):线性回归大解剖(原理部分)

因为形状很S,所以这一类长的像S的图形也叫做Sigmoid函数。Sigmoid函数包括对数几率函数。
它将一个任意大的输入值Z转化成一个为0-1之间的数。我们在线性回归中可以得到一个预测值,再将该值映射到Sigmoid 函数中这样就完成了由值到概率的转换,也就是分类任务。
同时如果你的值是3-4 该怎么办呢,完全是不影响的,因为你要把他当成映射成概率而不是值,0.5以下是小的那个数,以上是other,这就OK

一般 0 ,1并不是代表一个值,代表的是一个类别,比如
身高= 180 屌长=180 有女朋友 =1
这时候你找到参数使 k1180 + k2180 = 1 几乎不可能,找到了也是不科学的,因为1其实就是个类别名称,叫10000也行,叫1完全是计算方便。

sigmoid( k1180 + k2180 ) = 1 就科学的多,因为这样不会因为类别的取值过分影响参数大小。

有了预测函数,我们就要用我们的数据作为输入了,数据就是
参数 * 数据
机器学习笔记(三):线性回归大解剖(原理部分)

预测函数并不进入优化的过程,但是却可以作为一个判断优化是否完美的依据。

下面开始逻辑回归:

我们可以假设:当y=1时,在参数为theta的情况下概率P = hθ (x)

为了保证概率相加=1,y=0时的概率就=1- hθ (x)机器学习笔记(三):线性回归大解剖(原理部分)

稍微动一下小脑袋瓜整合以下:
机器学习笔记(三):线性回归大解剖(原理部分)
还有一种方法是
y*hθ (x) + (1-y)*hθ (x) 异曲同工

机器学习笔记(三):线性回归大解剖(原理部分)

得到了 P ,就可以写出似然函数了,前两步和线性回归一样的。

机器学习笔记(三):线性回归大解剖(原理部分)

因为似然函数需要L(theta)越大越好,即它是凸函数,是让我们找最大值,不适合用梯度下降,这里我们机制的对它取负,这样就变成凹函数了,即让我们求最小值。

机器学习笔记(三):线性回归大解剖(原理部分)

接下来我们应该要做的是,先取一个随机的 θ,然后对这个θ求梯度,然后更新,然后再求梯度,反反复复。每次都求梯度太过麻烦,我们先求出梯度的通用表达式:

机器学习笔记(三):线性回归大解剖(原理部分)

这样我们更新后,只要把参数和数据代入就能轻轻松松得到梯度了。

得到梯度后就是更新了
机器学习笔记(三):线性回归大解剖(原理部分)
不要问我为什么,你把梯度当成导数,把theta当成x,然后在纸上画个 y = x^2 函数,接着随便找个x点(如x=4,x=-4),对这一点求倒数,一个是8,一个是-8,你用x - 步长*导数,把步长设置成0.1 你试一下看看,x 是不是越来越接近最低点的横坐标。

这就是知识点!

如果是多分类,也是能用逻辑回归的,日后再说,简单给张图
机器学习笔记(三):线性回归大解剖(原理部分)