机器学习—线性回归模型(Linear regression)和逻辑回归模型(Logistics regression)

线性回归算法是基于连续变量预测特定结果的监督学习算法;Logistic回归专门用来预测离散值。

1. 线性回归模型(Linear regression)

线性回归模型是属于监督学习中的回归模型,也算是我学习过的模型中最简单的一个模型,其主要目的就是为了通过训练得到一个函数表达式来近似拟合平面内的所有离散的数据点,从而在新的数据输入进来时,能够给出预测值。

1.1 假设定义

h_{\theta}(x)=\theta_{0}x_{0}+\theta_{1}x_{1}+\cdots +\theta_{n}x_{n}

其中h_{\theta}(x)表示最终的预测值,\theta是权重,x表示数据或者特征,n表示的是输入数据的维度。x_{0}要始终为1,这样\theta_{0}x_{0}=\theta_{0}就是表示偏置值,我看吴恩达的机器学习视频的写法是这样,我认为这样做的目的是为了方便以后的矩阵运算。

以预测房价这个问题为例子,我们需要根据房子的面积,户型,位置,交通等等因素来预测房子的价格。那么对应上式,房子的价格就是h_{\theta}(x),面积,户型,位置,交通就是我们的特征,分别对应x_{1},x_{2},x_{3},x_{4}

1.2 Cost Function

关于Cost function的详细内容请看我以前的博客。(Cost function

假设输入数据只有2个维度,则Cost Function如下

J(\theta_{0},\theta_{1})=\frac{1}{2m}\sum_{i=1}^m(h_{\theta}(x_{i} ) - y_{i})^{2}

其中J(\theta_{0}, \theta_{1})表示的是Cost值,h_{\theta}(x_{i})表示的是在当前参数下,对于第i组数据的预测值,y_{i}表示的是第i组数据的实际值,m表示训练数据的个数。

1.3 目的

得到表达式和Cost Function之后,我们现在的目的就是不断的迭代更新\theta,使得J越来越小,J越来越小就表示h_{\theta}(x)能够越来越好的拟合所有的数据点。然后在测试数据输入进来时,利用h_{\theta}(x)计算得到预测值。

1.4 示例

上面都是一些纯理论知识,现在我将使用一个经典的例子来给大家实例化一下。

我们现在有一个需求就是要预测房价,为了表示简单,只有一个特征,即房子的面积。这时,根据上面的几个公式,我们用这几个符号表示数据:

  • x_{1}表示房子的面积,x_{0}始终为1(为了使\theta_{0}x_{0}=\theta_{0}来表示偏置)
  • y表示房子的真实价格
  • h_{\theta}(x)表示房子的预测价格

我们将所有的测试数据画在图上得到如下所示的图

 我们现在的目的就是得到公式h_{\theta}(x)=\theta_{0}x_{0}+\theta_{1}x_{1}来拟合上面的点,我们选用不同的参数会得到不同的直线

 由上图所示,选用三种不同的参数会得到三条不同的公式,从中很容易看出来黄色的线拟合数据的结果是最好的,至于怎么更新参数来得到最好的拟合效果,我在参数更新这篇博客中有详细介绍。

 

2 逻辑回归模型(Logistics regression)

针对分类问题,在之前提到的线性回归模型看来,可以将预测的结果映射到一个[0,1]区间内,大于0.5的结果可以看成(是),小于0.5的结果可以看成0(否)。但这通常效果不是很好,因为分类问题本来就不是一个线性问题。这就引出了逻辑回归模型。

所以这次我主要以二分类问题为例子来介绍一下逻辑回归。

2.1 数据格式和含义

我们还是以(x,y)来表示数据,x是特征与线性回归模型中的x是相同的;y是结果,与线性回归模型不同的是,这里的y不在是一个值,而是一个取值只能是0或1的变量(针对二分类问题),分别代表属于哪个类别。(如果要扩展到多分类问题,y可以取值0,1,2,3......,即有多少个类别就有多少个值)。

针对y的取值,我举个例子:当我们要设计一个区分一个物体是否是水果的系统,这是y的取值只能是0或1,分别代表“不是水果”和“是水果”这两个结果。

y也可以叫做训练数据的标签。

2.2 假设定义

每个模型针对不同的功能都要定义一个hypothesis来实现功能,上一次的线性回归模型的定义是                                                                                                             h_{\theta}(x)=\theta_{0}x_{0}+\theta_{1}x_{1}+\cdots +\theta_{n}x_{n}=\theta^{T}X

h_{\theta}(x)最后求得的是一个确切的值,比如在预测房价问题中,其值代表的就是预测的房价。

针对分类问题,我们使用sigmoid函数来将h_{\theta}(x)的结果映射在(0,1)区间内,其公式为:g(z)=\frac{1}{1+e^{-z}}sigmoid函数图像如下图所示:

从上图我们可以看到,y的取值范围一直是(0,1)。因此逻辑回归的hypothesis就是                                                                                                                                 h_{\theta}(x)=g(\theta_{0}x_{0}+\theta_{1}x_{1}+\cdots +\theta_{n}x_{n})=g(\theta^{T}X)

这里h_{\theta}(x)的意义就是结果为1的概率是多少。比如h_{\theta}(x)=0.7就是指结果为1的概率是70%。同时h_{\theta}(x)满足以下公式

                                                        h_{\theta}(x)=P(y=1|x;\theta)=1-P(y=1|x;\theta)

                                                        P(y=1|x;\theta)+1-P(y=1|x;\theta)=1

2.3 决策边界(Decision boundary)

为了实现二分类问题,我们可以将hypothesis解释如下

                                                                          h_{\theta}(x)\geqslant 0.5\rightarrow y=1

                                                                          h_{\theta}(x)< 0.5\rightarrow y=0

2.4 Cost function

我们定义逻辑回归的Cost function如下:

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

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

                                                    Cost(h_{\theta}(x),y)=-log(1 - h_{\theta}(x))                if y = 0

将上面三条式子整合起来就可得到下面这条总的Cost function的式子

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

参数的更新方法也是利用梯度下降算法。具体内容可以参考我之前写的参数更新方法,这里就不再赘述。

2.5 多分类问题(Multiclass classification)

上面所有的东西都是基于二分类的问题,然而从二分类扩展到多分类问题是很简单的。

在多分类问题中,y的取值不再只是0和1,而可以表达为y\in {​{0,1,2,...,n}}。然后我们再重定义一下hypothesis。

                                                                          h_{\theta}^{i}(x)=P(y=i|x;\theta)

h_{\theta}^{i}(x)表示的是属于第i个结果的概率是多少。那么多分类问题就可以化解为多个二分类问题,即对每个类别做一次逻辑回归,得到属于该类别的概率,然后在n个类别中选择概率最大的那个类别来作为最后的结果。表达式为

                                                                          result=max(h_{\theta}^{i}(x))

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值