学习笔记--逻辑回归
1. 模型
回归是用一个函数来描述两个变量之间的关系,我们最常见和最常用的是线性函数,也就是线性回归,但是对于一些情况,简单粗暴的用线性函数是显然不对的,但是可以考虑用广义线性函数来描述两个变量之间的关系,即将G(Y)表示为X的线性函数,其中G( )是一个已知的函数。
对一个二分类问题,输出变量Y是二值的,我们想要的是P(Y|X),或者说是P=P(Y=1|x),但是如果简单将其表示为x的线性函数显然是不行的,首先一个问题就是对于一个概率P,它只能在0-1之间取值,而一个一般的线性回归的取值范围是R。
由于这个取值区间的限制,我们考虑用一个函数将R映射到[0,1],一个熟知的可以达到这个目的的函数就是逻辑函数,因此我们令
logit(P)=wx+b
其中
logit(P) = log[P/(1-P)]
故可以解得
P=P(Y=1|x)=exp(wx+b)/[1+exp(wx+b)]
1-P=P(Y=0|x)=1/[1+exp(wx+b)]
此即为逻辑回归模型
2. 策略
用极大似然法将问题转化为无约束条件的最优化问题
3. 算法
对一个无约束条件的最优化问题,常用的迭代方法有改进的尺度迭代法,牛顿法,拟牛顿法,梯度上升法,牛顿法/拟牛顿法收敛速度更快
4. 适用场景
一个分类模型当然适用于分类场景,最常用于二分类,也可用于多分类。
我们通过理论知识可以建立出一些分类模型,但是对于一个具体的分类场景哪个分类器更适用,大部分情况下是要根据经验来判断或者试的吧。
5. 优点
简单,好理解,易于实现
6. 缺点
大样本情况下效果更好,容易欠拟合,分类精度可能不够高
7. 适用数据类型
数值型和标称型
8. 逻辑回归与感知机
都是在找一个决策平面wx+b=0,在逻辑回归中,当wx+b>0时,P>0.5,y=1,当wx+b<0时,P<0.5,y=0,但是两者的学习策略不同,在逻辑回归中用的是极大似然估计,即找使随机变量在观测值附近出现的可能性最大的参数,而感知机的学习策略是找使得误分类点到决策面的总距离最小的参数
9. 一个例子
#导入模块
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
import numpy as np
from sklearn.metrics import accuracy_score
#导入数据和标签
iris = datasets.load_iris()
iris_X = iris.data
iris_y = iris.target
#划分为训练集和测试集数据
X_train, X_test, y_train, y_test = train_test_split(iris_X, iris_y, test_size=0.3)
#训练模型
lr = LogisticRegression(C=1000.0, random_state=0)
lr.fit(X_train,y_train)
y_pred = lr.predict(X_test)
print(lr.predict(X_test))
print(y_test)
print(accuracy_score(y_test, y_pred))