分类算法之逻辑回归(Logistic Regression

分类算法之逻辑回归(Logistic Regression)

1.二分类问题

如今有一家医院,想要对病人的病情进行分析,其中有一项就是关于良性\恶性肿瘤的判断,如今有一批数据集是关于肿瘤大小的,任务就是根据肿瘤的大小来断定是良性仍是恶性。这就是一个很典型的二分类问题,即输出的结果只有两个值----良性和恶性(一般用数字0和1表示)。如图1所示,咱们能够作一个直观的断定肿瘤大小大于5,即为恶心肿瘤(输出为1);小于等于5,即为良性肿瘤(输出为0)。html

图1

2.分类问题的本质

分类问题本质上属于有监督学习,给定一个已知分类的数据集,而后经过分类算法来让计算机对数据集进行学习,这样计算机就能够对数据进行预测。以肿瘤的例子来讲,已有数据集如图1所示,如今要对一个病人的病情进行诊断,那么计算机只须要将该病人的肿瘤大小和5进行比较,而后就能够推断出是恶性仍是良性。分类问题和回归问题有必定的类似性,都是经过对数据集的学习来对未知结果进行预测,区别在于输出值不一样。回归问题的输出值是连续值(例如房子的价格),分类问题的输出值是离散值(例如恶性或者良性)。既然分类问题和回归问题有必定的类似性,那么咱们能不能在回归的基础上进行分类呢?答案是能够的。一种可行的思路是,先用线性拟合,而后对线性拟合的预测结果值进行量化,即将连续值量化为离散值。算法

3.分类问题的假设函数

分类问题虽然和回归问题有必定的相似,可是咱们并不能直接使用回归问题中的假设函数做为分类问题的假设函数。仍是以图1的例子为例,若是咱们采用一元线性函数(即\(h(x) = \theta_0+\theta_1x\))去进行拟合的话,结果多是这样子的:$h_\theta(x) = \dfrac{5}{33}x-\frac{1}{3} $,体如今图片中就是:函数

图2

这样,你可能会作这样的一个判断:对于这个线性拟合的假设函数,给定一个肿瘤的大小,只要将其带入假设函数,并将其输出值和0.5进行比较,若是大于0.5,就输出1;小于0.5,就输出0。在图1的数据集中,这种方法确实能够。可是若是将数据集更改一下,如图3所示,此时线性拟合的结果就会有所不一样:学习

图3

若是采用相同的方法,那么就会把大小为6的状况进行误判为良好。因此,咱们不能单纯地经过将线性拟合的输出值与某一个阈值进行比较这种方式来进行量化。对于逻辑回归,咱们的量化函数为Sigmoid函数(也称Logistic函数,S函数)。其数学表达式为:\(S(x) = \dfrac{1}{1+e^{-x}}\) ,其图像如图4:spa

图4

能够看到S函数的输出值就是0和1,在逻辑回归中,咱们采用S函数来对线性拟合的输出值进行量化,因此逻辑回归的假设函数为:.net

\[h_\theta(x)=\dfrac{1}{1+e^{-\theta^Tx}}=\dfrac{1}{1+e^{-\sum_{i=0}^n\theta_ix_i}} \tag{3.1}\]htm

其中,\(x\)为增广特征向量(1*(n+1)维),\(\theta\)为增广权向量(1*(n+1)维)。这个假设函数所表示的数学含义是:对于特定的样本\(x\)与参数矩阵\(\theta\),分类为1的几率(假设y只有0和1两类),也就即\(h_\theta(x) = P(y=1|x;\theta)\)。根据其数学意义,咱们能够这样认为:若是\(h_\theta(x)>0.5\),则断定y = 1;若是\(h_\theta(x)<0.5\),则断定y = 0。blog

4.逻辑回归的代价函数(Cost Function)

代价函数(成本函数),也就是损失函数。在逻辑回归中,代价函数并非采用均方偏差(主要缘由是,逻辑回归的均方偏差并非一个凸函数,并不方便使用梯度降低法),而是经过极大似然法求解出来的一个函数,其数学表达式为:图片

\[J(\theta)= \dfrac{1}{m}\sum_{i=1}^m[-yln(h_\theta(x))-(1-y)ln(1-h_\theta(x))] \tag{4.1}\]get

这个函数看起来有点复杂,咱们将它一步步进行拆分来理解,咱们将每一个样本点与假设函数之间的偏差记为\(Cost(h_\theta(x),y)=-yln(h_\theta(x))-(1-y)ln(1-h_\theta(x))\),这样代价函数就能够理解为偏差的均值。下面咱们再详细看一下这个偏差函数,因为y的取值只能是0或者1,咱们能够将偏差函数写成分段函数的形式:

\[Cost(h_\theta(x),y)=\begin{cases} -ln(h_\theta(x)),\quad &y = 1 \\ -(1-y)ln(1-h_\theta(x)), &y=0 \end{cases} \tag{4.2}\]

4.2式和4.1式是等价的,依据4.2式,不可贵出:当y=1时,若是断定为y=1(即\(h_\theta(x) = 1\)),偏差为0;若是误判为y=0(\(即h_\theta(x) = 0\)),偏差将会是正无穷大。当y=0时,若是断定为y=0(即\(h_\theta(x) = 0\)),偏差为0;若是误判为y=1(即\(h_\theta(x) = 1\)),偏差将会是正无穷大。(注意:\(h_\theta(x) = 1\)表示y等于1的几率为1,等价于认为y=1;\(h_\theta(x) = 0\)表示y等于1的几率为0,等价于认为y=0)

若是用矩阵来表示代价函数,就是:

\[J(\theta)=-\dfrac{1}{m}Y^Tln(h_\theta(X))-(E-Y)^Tln(E-h_\theta(X)) \tag{4.3}\]

其中\(Y\)为样本真实值组成的列向量(m*1维),\(X\)为增广样本矩阵((1+n)*m维),E为全1列向量(m*1维)。

5.逻辑回归使用梯度降低法

逻辑回归的代价函数和线性回归的损失函数同样,都是凸函数,因此咱们能够采用梯度降低法来求参数矩阵\(\theta\)使得代价函数\(J(\theta)\)取得最小值。其具体算法与线性回归中的梯度降低法(能够参考个人另外一篇博客线性回归之梯度降低法)并无太大区别,只是对应的偏导有所不一样。逻辑回归的代价函数的偏导为:

\[\dfrac{\partial J(\theta)}{\theta_i} = \dfrac{1}{m}\sum_{j=1}^m(h_\theta(x^{(j)})-y^{(j)})x_i^{(j)} = \dfrac{1}{m}\sum_{j=1}^m(\dfrac{1}{1+e^{-\sum_{i=0}^n\theta_ix_i^{(j)}}}-y^{(j)})x_i^{(j)}\quad (i=0,1,\dots,n)\tag{5.1}\]

对应的参数更新规则为:

\[\theta_i = \theta_i-\alpha\dfrac{\partial J(\theta)}{\theta_i} = \theta_i-\alpha\dfrac{1}{m}\sum_{j=1}^m(h_\theta(x^{(j)})-y^{(j)})x_i^{(j)}\quad (i=0,1,\dots,n)\tag{5.2}\]

若是用矩阵表示就是:

\[\dfrac{\partial J(\theta)}{\theta} = \dfrac{1}{m}X^T(h_\theta(X)-Y),\quad \theta=\theta-\alpha\dfrac{1}{m}X^T(h_\theta(X)-Y) \tag{5.3}\]

其中,\(\alpha\)为迭代步长。

6.多元逻辑回归

对于多元逻辑回归,一种可行的思路是将其简化为二元。例如,若是数据集的分类包含1,2,3这三个类别。若是如今要判断一个样本是否是类1,咱们能够将数据集看做是两类----即1类和非1类(将类2和类3),这样咱们就能够求得针对类1的假设函数\(h^{(1)}_\theta(x)\),同理还有\(h^{(2)}_\theta(x)\)\(h^{(3)}_\theta(x)\)。这样咱们的断定规则就变为:

\[if \quad max\{h^{(i)}_\theta(x)\} = h^{(j)}_\theta(x), then \quad y = j\quad(i,j=1,2,3) \tag{6.1}\]

7.小结

虽然逻辑回归中带有“回归”二字,但其实它是一个分类算法。逻辑回归的思想和模式识别中的判别函数很是类似,二者能够结合起来进行学习。

参考连接:

逻辑回归原理小结

相关文章
相关标签/搜索