目录
1 概述
2 极大似然估计
3 逻辑回归核心思想
3.1 对数似然损失(Log-likelihood Loss)
4 分类问题的评估方法
4.1 混淆矩阵(Confusion Matrix):
4.2 准确率(Accuracy)
4.3 精确率(Precision)和召回率(Recall)
4.3.1 精确率(Precision)
4.3.2召回率(Recall)
4.3.3 精确率和召回率的关系
4.4 ROC曲线(Receiver Operating Characteristic Curve)和AUC(Area Under the Curve)
4.4.1 ROC曲线描述
4.4.2 ROC 曲线图像中,4 个特殊点的含义
4.4.3 AUC(Area Under the Curve)
4.4.4 API
4.5 F1-score
5 逻辑回归API
6 案例
1 概述
逻辑回归(Logistic Regression)是一种广泛应用于分类问题的统计学习方法,尤其在二元分类问题上表现出色。
逻辑回归通过构建一个逻辑函数(也称为Sigmoid函数),将线性模型的输出转化为一个介于0和1之间的概率值,这个概率值表示了给定样本属于某个类别的可能性。这使得逻辑回归非常适合用于分类预测任务,例如预测用户是否会购买某商品、病人是否患有某种疾病或广告是否会被用户点击等。
逻辑回归的优点之一是其解释性强。通过查看逻辑回归模型的系数,可以了解不同特征对分类结果的影响程度。这使得逻辑回归不仅可以提供分类预测,还可以用于特征选择,帮助识别出对分类结果有显著影响的特征。
此外,逻辑回归还具有计算效率高、易于实现的特点。这使得它适用于大规模数据集和实时预测场景。在经济学、商业、医疗等领域,逻辑回归被广泛应用于预测分析、风险评估和决策支持等方面。
逻辑回归虽然主要用于二元分类问题,但也可以通过一些策略(如一对多、一对一等)扩展到多分类问题中。同时,逻辑回归还可以处理线性和非线性数据,并可以通过特征转换或使用非线性模型来处理非线性关系的数据。
2 极大似然估计
极大似然估计(Maximum Likelihood Estimate,MLE),也称为最大概似估计或最大似然估计,是一种求估计的统计学方法。它的核心思想是在一次抽样中,样本出现的概率是关于某个参数θ的函数。当给定一组观测值x1,x2,...,xn时,极大似然估计法会选择参数θ的一个估计值,使得当θ等于这个估计值时,样本出现的概率达到最大。
极大似然估计的原理建立在极大似然原理之上,即如果某一事件在多次重复试验中出现的概率最大,则可以认为该事件最有可能发生。例如,在两个箱子中抽取黑球的问题中,如果从一个箱子中抽取黑球的概率远大于从另一个箱子中抽取的概率,那么可以认为这个黑球更可能来自第一个箱子。
极大似然估计的具体求解步骤通常包括:
- 写出似然函数,即样本观测值的联合概率密度函数或概率质量函数。
- 对似然函数取对数,并整理得到对数似然函数。
- 对对数似然函数求导数,并令其等于零,解出参数θ的极大似然估计值。
极大似然估计方法具有广泛的应用,尤其在参数估计和统计推断领域。它不仅可以用于离散型随机变量,也可以用于连续型随机变量。同时,极大似然估计方法还具有一些重要的性质,如一致性、渐进正态性、渐进有效性等。
3 逻辑回归核心思想
逻辑回归的核心思想是利用线性回归模型(虽然名为“回归”,但逻辑回归实际上是一种分类算法)的预测结果,通过Sigmoid函数将其转化为概率值,从而进行分类。
3.1 对数似然损失(Log-likelihood Loss)
对数似然损失通过惩罚错误的分类,实现对分类器的准确度的量化。为了计算对数损失,分类器必须提供对输入的每个类别的概率值,而不仅仅是最可能的类别。在二分类问题中,预测值(模型的输出)和实际标签(真实值)都是二元的,通常取值为0或1。对于每个样本,对数似然损失函数会计算预测概率的对数值与实际标签的差值,然后取负值(因为对数函数在0到1之间是负的)。
公式:
4 分类问题的评估方法
分类问题的评估方法多种多样,每种方法都有其特定的应用场景和优点。以下是一些常用的评估方法及对应的API(以Python的scikit-learn库为例):
4.1 混淆矩阵(Confusion Matrix):
混淆矩阵(Confusion Matrix)是分类问题中常用的一种评估工具,主要用于衡量分类器(或模型)的分类性能。混淆矩阵以表格的形式记录了分类器对样本的实际分类和预测分类之间的信息,通过它可以清晰地了解分类器在各类别上的表现。
混淆矩阵的每一行代表一个实际类别,每一列代表一个预测类别。对于二分类问题,混淆矩阵通常包含四个元素:
- 真正例(True Positives, TP):实际为正例,预测也为正例的样本数。
- 假正例(False Positives, FP):实际为负例,预测为正例的样本数(误报)。
- 真反例(True Negatives, TN):实际为负例,预测也为负例的样本数。
- 假反例(False Negatives, FN):实际为正例,预测为负例的样本数(漏报)。
对于多分类问题,混淆矩阵会扩展到更多的行和列,以涵盖所有可能的类别组合。
API:sklearn.metrics.confusion_matrix(y_true, y_pred)
4.2 准确率(Accuracy)
- 定义:分类正确的样本数占总样本数的比例。
- API:
sklearn.metrics.accuracy_score(y_true, y_pred)
4.3 精确率(Precision)和召回率(Recall)
4.3.1 精确率(Precision)
精确率定义为真正例(True Positives, TP)占所有被预测为正例(包括真正例TP和假正例FP)的样本的比例。计算公式为:
精确率越高,说明分类器预测为正例的样本中真正为正例的比例越高,也就是预测为正例的可靠性越高。
API:sklearn.metrics.precision_score(y_true, y_pred)
4.3.2召回率(Recall)
召回率定义为真正例(True Positives, TP)占所有真正例(包括真正例TP和假反例FN)的样本的比例。计算公式为:
召回率越高,说明分类器找出所有真正例的能力越强,也就是对正例的覆盖能力越强。
API: sklearn.metrics.recall_score(y_true, y_pred)
4.3.3 精确率和召回率的关系
精确率和召回率是一对矛盾的指标。提高精确率可能会导致召回率下降,因为分类器可能变得更为谨慎,只将那些非常确信为正例的样本预测为正例;而提高召回率可能会导致精确率下降,因为分类器可能变得更为宽松,将更多的样本预测为正例,其中也包括了更多的误报。
在实际应用中,需要根据具体的需求和场景来平衡这两个指标。例如,在垃圾邮件过滤系统中,可能更关注精确率,以避免误将正常邮件标记为垃圾邮件;而在医疗诊断中,可能更关注召回率,以尽量不遗漏任何可能的病患。
4.4 ROC曲线(Receiver Operating Characteristic Curve)和AUC(Area Under the Curve)
4.4.1 ROC曲线描述
ROC曲线(Receiver Operating Characteristic Curve)又称受试者工作特征曲线,是通过改变二分类器的判定阈值,绘制出不同阈值下真正例率(True Positive Rate, TPR)与假正例率(False Positive Rate, FPR)的关系曲线。其中,TPR是指正确分类为正例的样本占所有正例样本的比例,FPR是指错误分类为正例的样本占所有负例样本的比例。
ROC曲线的横坐标为FPR,纵坐标为TPR,因此ROC曲线可以用一个二维平面上的点序列来表示,点的个数取决于分类器所取的阈值数目。ROC曲线能够反映分类算法在不同阈值下的性能表现。
4.4.2 ROC 曲线图像中,4 个特殊点的含义
4.4.3 AUC(Area Under the Curve)
AUC(Area Under the Curve)被定义为ROC曲线下与坐标轴围成的面积,其值范围在0到1之间。AUC越接近1.0,表示分类算法的性能越好;等于0.5时,则性能最低,无应用价值。AUC值常被用作评价模型优劣的一种性能指标,尤其是在ROC曲线不能清晰区分不同分类器性能时,AUC值的大小能更直接地反映模型的性能。
4.4.4 API
API:sklearn.metrics.roc_curve(y_true, y_score)
和 sklearn.metrics.roc_auc_score(y_true, y_score)
注意,在使用这些API时,y_true
通常是真实的标签,y_pred
是分类器预测的标签(对于精确率、召回率和F1 Score),而y_score
是分类器为每个样本分配的概率或置信度分数(对于ROC曲线和AUC)。
4.5 F1-score
F1-score(也称为F1分数或F-measure)是统计学中用来衡量二分类模型精确度的一种指标,它同时考虑了分类模型的精确率(Precision)和召回率(Recall)。F1-score可以看作是精确率和召回率的调和平均数,用于平衡这两个指标,其计算公式为:
F1 = 2 * (Precision * Recall) / (Precision + Recall)
F1-score的最大值为1,表示模型在精确率和召回率上都达到了最优;最小值为0,表示模型性能最差。当精确率和召回率接近时,F1-score会较高,说明模型在正负样本上的表现都相对较好。
F1-score在二进制分类问题中具有广泛的应用场景,例如垃圾邮件过滤、欺诈检测、疾病诊断等。在这些场景下,精确率和召回率的平衡非常重要,因为过高的精确率可能会导致召回率过低,从而漏掉一些重要的正例;而过高的召回率可能会导致精确率过低,从而引入过多的误报。
API:sklearn.metrics.f1_score(y_true, y_score)
此外,sklearn.metrics
还提供了许多其他有用的分类评估方法,如classification_report
(可以显示每个类别的精确率、召回率、F1 Score和支持数)和matthews_corrcoef
(用于计算Matthews相关系数,一种衡量二分类问题的平衡度量)等。你可以根据自己的需求选择适合的评估方法。
5 逻辑回归API
sklearn.linear_model.LogisticRegression()
6 案例
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# 1.导入数据
cancer_data = pd.read_csv('data/breast-cancer-wisconsin.csv')
# 2.数据基本处理
# 2.1 缺失值处理
cancer_data = cancer_data.replace(to_replace='?',value=np.NAN)
cancer_data = cancer_data.dropna()
# 2.2 数据集划分
x_train,x_test,y_train,y_test = train_test_split(cancer_data.iloc[:,1:-1],cancer_data.iloc[:,-1],train_size=0.8,random_state=22)
# 3.特征预处理
transfor = StandardScaler()
x_train = transfor.fit_transform(x_train)
x_test = transfor.transform(x_test)
# 4。模型训练
lg = LogisticRegression()
lg.fit(x_train,y_train)
# 5.模型评估
print(lg.score(x_test, y_test))
# 6.模型预测
print(lg.predict(x_test))