判别模型:逻辑回归(logistic regression)
逻辑回归(Logistic Regression)是用于处理因变量为分类变量的回归问题,常见的是二分类或二项分布问题,也可以处理多分类问题,它实际上是属于一种分类方法。大致的流程就是用一个目标函数,通过优化算法,得到合适的参数值,算法就是求解过程。
一、线性回归
如果线性回归的结果输出是一个连续值,而值的范围是无法限定的(正无穷,负无穷),那是否可以把这个结果映射为(0, 1)上的概率值,帮助判断结果,所以逻辑回归就诞生了。
二、逻辑回归:逻辑回归其实仅为在线性回归的基础上,套用了一个逻辑函数
原始条件概率:P(Y|X) = W^T x+b (线性回归函数)
逻辑函数:g(x)=
![cf14981e701be88ff63e6140cca71d7f.png](https://i-blog.csdnimg.cn/blog_migrate/428ad24bd182abbb8802e914898665c6.png)
![aec2da1541cde676531e7bf2d8be86d3.png](https://i-blog.csdnimg.cn/blog_migrate/b399f553b1fdcece1269db4f2586b84a.jpeg)
三、决策边界
逻辑回归之所以能够解决分类问题,需要一个决策边界,决策边界可以理解为用以对不同类别数据分割的边界,边界两旁是不同类别的数据。例如下图中圆将红绿样本点分割开来,就是决策边界。判断是不是线性分类器,我们只要看它的决策边界是不是线性的
![cdac6c7d003c07eb2062255124360ebd.png](https://i-blog.csdnimg.cn/blog_migrate/91d043bcc88585da3aa7143b37b65843.jpeg)
四、目标函数(损失函数)和梯度下降
最大化目标函数:∏代表连乘,可以用log转化成连加。求最大化函数,我们可以在前面添加一个符号就变成求最小值。
![c24b9c7f46ce44f3e5023de18240f32d.png](https://i-blog.csdnimg.cn/blog_migrate/7b14592ca101ecd75f533409a0074ae7.jpeg)
化简之后变成关于寻找函数最小值的问题。寻找最优的参数w,b使得这个函数结果最小。如果函数不容易看出最优的参数值,可以用梯度下降法求参数w,b的值。
如果我们得到一个目标函数,我们一般先判断是凸函数还是非凸函数,之后再找全局最优解,这里有两个简单判断是不是凸函数的方法:1.当目标函数求导两次之后大于等于0。2.判断函数定义域是不是凸集合,不是凸集合肯定不是凸函数。
梯度下降:有一个函数f(w),最后得到的数值保持一个平衡的状态,一直处于这样的一个值,这个值就是参数w的取值
![522fb9ff8cbf17148c8cac55ef731643.png](https://i-blog.csdnimg.cn/blog_migrate/f78484acb64b75cb9536c93ac936b42b.jpeg)
逻辑回归的梯度下降法:先求导后梯度下降
![d63b6c635ca6ec17e65922310d850ef6.png](https://i-blog.csdnimg.cn/blog_migrate/e1360ff867fa077b0b5a8d947ebc8ed3.jpeg)
![e1693e55dce9d97b9faee5bf0aa3f996.png](https://i-blog.csdnimg.cn/blog_migrate/32349b536508689320a4801e8747f0c1.jpeg)
随机梯度下降法:每次通过一个样本的计算来更新参数W,因为是选择一个样本来计算,所以通常n都选的很小
![d41acaeef2efcedfdc5871b0c58afcc4.png](https://i-blog.csdnimg.cn/blog_migrate/c18b6a68592d929c2e65287c534e2e6f.jpeg)
防止过拟合流程:为了得到泛化能力强的模型--->防止过拟合---->控制模型复杂度-->1.减小参数 2.参数不要变太大w,b(L2正则) 3.增多样本数
在逻辑回归基础模型下加一个L2正则项,超参数
![fa502850590fa89719f96f35d0f18abc.png](https://i-blog.csdnimg.cn/blog_migrate/658361a6edd86b0fc4578802ac0ee457.jpeg)
模型的参数w,b 超参数λ(用交叉验证来求解)
总结这个流程:为了防止模型过拟合,通过使用L2正则使参数变小,在LR基础加上一个超参数(我们可以得到一个加了L2正则项的模型参数w,b更新),接下来的问题就是怎么选择一个超参数。
超参数和交叉验证一起使用 交叉验证就是把原来的训练数据分成训练数据和验证数据(这里做五次实验)k-fold交叉验证 设定超参数值,在训练数据集上训练模型,用验证数据验证,得到五次准确率,再把五次准确率做平均(找到超参数训练模型最高的准确率)
参考链接:sklearn学习-SVM例程总结3(网格搜索+交叉验证--寻找最优超参数) - sqiu_11的博客 - CSDN博客
![f467580ffce33b4b721b45084af7b2a4.png](https://i-blog.csdnimg.cn/blog_migrate/ca0fcb2f5c55a60bff42af22971515b1.jpeg)