我整理了《BAT常见机器学习算法面试题1000题》,供大家学习和参考。资源获取方式:
(1)打开v搜索:1号程序员,并关注。
(2)在对话框中输入:E001,即可获取资源地址。
逻辑回归基本原理
逻辑回归模型通过使用一个称为S型函数的函数,将线性回归函数的连续值输出转换为分类值输出,将任何实值独立变量输入映射为0到1之间的值。这个函数被称为逻辑函数。
逻辑回归的输入特征为:
标签为:
然后将多元线性函数应用于输入变量X:
这里,Xi是第i个样本,wi是模型权重,b是偏差项/截距。多元线性函数可以简写为:
Sigmoid函数
接着,我们使用Sigmoid函数,其中,输入是z,输出是介于0和1之间的概率,即预测的y。
如上所示,Sigmoid函数将连续变量数据转换为介于0和1之间的概率。
其中,属于一个类别的概率可以表示为:
逻辑回归方程
几率是某事发生与某事不发生的比率。它不同于概率,因为概率是某事发生与一切可能发生的事情之比。几率计算公式为:
对几率应用自然对数,那么对数几率将是:
然后,最终的逻辑回归方程是:
逻辑回归的似然函数
正样本的预测概率为:p(X;b,w) = p(x)
负样本的预测概率为:1-p(X;b,w) = 1-p(x)
似然函数为:
对上式两边取自然对数:
对数似然函数的梯度:
为了找到最大似然估计值,我们对w进行微分,
逻辑回归的python实现:
# import the necessary libraries
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# load the breast cancer dataset
X, y = load_breast_cancer(return_X_y=True)
# split the train and test dataset
X_train, X_test, y_train, y_test = train_test_split(X, y,
test_size=0.20,
random_state=23)
# LogisticRegression
clf = LogisticRegression(random_state=0)
clf.fit(X_train, y_train)
# Prediction
y_pred = clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print("Logistic Regression model accuracy (in %):", acc*100)
逻辑回归建模步骤
定义问题:确定因变量和自变量,并确定问题是否属于二元分类问题。
数据准备:清理和预处理数据,确保数据适合用于逻辑回归建模。
探索性数据分析(EDA):可视化因变量和自变量之间的关系,并在数据中识别任何离群值或异常值。
特征选择:选择与因变量有显著关系的自变量,并移除多余或不相关的特征。
模型构建:在选定的自变量上训练逻辑回归模型,并估算模型的系数。
模型评估:使用准确率、精确度、召回率、F1-分数或AUC-ROC等适当的指标评估逻辑回归模型的性能。
模型改进:根据评估结果,通过调整自变量、添加新特征或使用正则化技术来减少过拟合,进一步优化模型。
模型部署:将逻辑回归模型部署到实际场景中,并在新数据上进行预测。
逻辑回归模型的阈值设定
逻辑回归只有在引入决策阈值时才成为一种分类技术。阈值值的设置是逻辑回归的一个非常重要的方面,它取决于分类问题本身。
阈值值的决定主要受到精确度和召回率的影响。理想情况下,我们希望精确度和召回率都为1,但这很少发生。在精确度和召回率之间存在权衡的情况下,我们使用以下参数来决定阈值:
低精确度/高召回率:在我们希望减少假阴性的应用中,而不一定减少假阳性的情况下,我们选择具有低精确度或高召回率值的决策值。例如,在癌症诊断应用中,我们不希望任何患病的患者被错误地分类为未患病,而不太关心是否错误地诊断为癌症。这是因为不存在癌症可以通过进一步的医学检查来检测,但已经被排除的候选人中无法检测到疾病的存在。
高精确度/低召回率:在我们希望减少假阳性的应用中,而不一定减少假阴性的情况下,我们选择具有高精确度或低召回率值的决策值。例如,如果我们要将客户分类为对个性化广告的反应是积极的还是消极的,我们希望非常确定客户对广告的反应是积极的,否则,消极的反应可能会导致失去客户的潜在销售机会。