逻辑回归算法

逻辑回归概述

  • 逻辑回归解决二分类问题,现在已经演变为求二分类问题与多分类问题,通过寻找最优参数来正确的分类原始数据
  • 通过已知自变量来预测一个离散型因变量的值.简单来说,就是通过拟合一个逻辑函数来预测一个时间发生的概率,输出值在0-1
  • 实际是一种分类方法
  • 常用于数据挖掘,疾病自动诊断,经济预测等

逻辑回归之分类

简历模型

输入: x→(x1,x2,x3,....,xn) x是特征

标记结果: y→{0,1} y是预测出来的概率

预测输出: 0<=h(x)<=1 h(x) 就是概率

if h(x) >0.5 , h(x) = 1 ; if h(x) <= 0.5 , h(x) = 0


image-20220714114849813

线性回归 h(x) 是连续类型的值

逻辑回归也会有线性回归 h(x) = g(wx+b) 的步骤

h(x)的范围其实属于(-∞,+∞),用一个sigmoid函数(就是g(x)等于后面那串),进行离散化处理,g(x)最后得到的结果在0-1之间

sigmoid函数的定义域属于(-∞,+∞),值域(0,1)



逻辑回归算法原理

逻辑回归(Logistic Regression,简称LR)。

其实是⼀个很有误导性的概念,虽然它的名字中带有 “回归” 两个字,但是它最擅⻓处理的却是分类问题。

image-20220714115417442

找到一条线,尽可能将数据’一分为二’

image-20220714115449318


逻辑回归案例

image-20220714122406664

公式解释:

假设: 要将邮件 分为 垃圾邮件与非垃圾邮件

非垃圾邮件为 h ,y=1

垃圾邮件为 1-h ,y=0

合并(将上面的分段函数合并成了一个函数): 当y=1时,1次幂的结果为本身,当y=0是,任何数的0次幂结果都为1

对数化 : h^y * (1-h)^(1-y) 针对这个函数求log, log h^y * (1-h)^(1-y) 数值会更大

在数学里面 : loga*b = loga * logb loga^n = n*loga

so logh^y * (1-h)^(1-y) = logh^y + log(1-h)^(1-y)

总体样本 : 又因为 loga^b = b * loga

so logh^y * (1-h)^(1-y) = logh^y + log(1-h)^(1-y) 变成了 y* logh+(1-y)*log(1-h)

这个算的是总体样本

image-20220714122931736

image-20220714123518799

对于逻辑回归,这样得到的损失函数为凸函数,可以求解得到全局最小值


逻辑回归算法原理总结

image-20220714123632336


逻辑回归算法原理拓展-正则化项

一定程度上防止过拟合.

image-20220714123733484 image-20220714123803635

逻辑回归与线性回归的区别

逻辑回归与线性回归最大的区别就在于它们的因变量(y)不同,其他的基本都差不多。

正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinearmodel)。

如果因变量(y)是连续的,就是线性回归,如房价走势;

如果因变量(y)是离散类型,就是逻辑回归,如信用评估。

回归问题的值域是(-∞, +∞),用线性回归可以进行预测。

而分类问题的值域是[0, 1],显然不可以直接用线性回归来预测这类问题。

如果把线性回归的输出结果外面再套一层Sigmoid函数,正好可以让值域落在0和1之间,这样的算法

就是逻辑回归。



逻辑回归优缺点

优点:

• 速度快,适合二分类问题

• 简单易于理解,直接看到各个特征的权重(θT)

• 能容易地更新模型吸收新的数据

缺点:

• 对数据和场景的适应能力有局限性,不如决策树算法适应性那么强

• 容易欠拟合,分类精度可能不高



逻辑回归代码实现

导入模块

from sklearn.linear_model import LogisticRegression as LR
class sklearn.linear_model.LogisticRegression(penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_interce
pt=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100,
multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression as LR

data = pd.read_csv('bankloan.csv')

data.info()

x_train, x_test, y_train, y_test = train_test_split(data.iloc[:, :-1], data['违约'], test_size=0.2)

lr = LR().fit(x_train, y_train)

y_p = lr.predict(x_test)

lr.score(x_test, y_test)
模型方法*

image-20220719211200563

image-20220719211241760

image-20220714124210191

image-20220714124214560

模型方法*

[外链图片转存中…(img-jaAbzq8i-1658305597514)]

[外链图片转存中…(img-KCrGQCED-1658305597516)]

[外链图片转存中…(img-HN5upMLm-1658305597518)]

[外链图片转存中…(img-sK4XKOiE-1658305597519)]

image-20220714124218683

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值