逻辑回归模型解析

逻辑回归是一种用于二元分类的统计模型,其名称来源于其底层技术与线性回归的相似性。本文将探讨逻辑回归的基础知识,包括模型方程的构建、解决异常值问题的方法、单调函数的使用以及正则化的必要性,并提供代码示例。

基础知识理解

假设面临的问题是垃圾邮件识别,希望将非垃圾邮件(Ham)保留在收件箱中,而将垃圾邮件发送到垃圾邮件文件夹。如图1所示,有两种类型的邮件:垃圾邮件和非垃圾邮件。关注垃圾邮件的不同特征,例如不友好的域名、“贷款”、“金额”等词汇的出现次数以及拼写错误。虽然还有其他许多特征,但目前只关注这些。如果在x轴上绘制邮件中“贷款”一词出现的次数,在y轴上绘制拼写错误的次数,可以得到一个相当不错的图表,其中垃圾邮件和非垃圾邮件可以通过一条线分隔开来。这就是逻辑回归的基本思想,希望数据能够线性分离成两个类别。

构建模型方程

<p>如果数据(即所有邮件)是线性可分的,那么一条线可以将数据点(每封邮件)分成两个类别(垃圾邮件和非垃圾邮件)。对于人类来说,在2D图表中绘制这条线很容易,但对于计算机来说,必须遵循一系列指令。</p> <p>因此,考虑将非垃圾邮件视为正类“+1”,垃圾邮件视为负类“-1”,有“n”个特征。</p> <p>在2D中,线的方程是:w1x1 + w2x2 + w0 = 0</p> <p>在3D中,平面的方程是:w1x1 + w2x2 + w3x3 + w0 = 0</p> <p>在nD中,超平面的方程是:w1x1 + w2x2 + w3x3 + …… + wnxn + w0 = 0</p> <p>如果将超平面通过原点,则w0变为0,方程变为:w1x1 + w2x2 + w3x3 + …… + wnxn = 0。现在任务是找到分隔数据点的超平面。</p>

解决异常值问题

单调函数的使用

正则化的必要性

<p>让了解逻辑回归的代码。使用逻辑回归,默认使用梯度下降。这里“lambda”是一个超参数。这里“lambda”是超参数C=1/lambda,随着C的增加,它将过拟合,随着C的减少,它将欠拟合。</p> <p>from sklearn.datasets import load_iris<br> from sklearn.linear_model import LogisticRegression<br> #导入逻辑回归和iris数据集<br> X, y = load_iris(return_X_y=True)<br> clf = LogisticRegression(C=0.01).fit(X, y)<br> #设置逻辑回归的超参数并训练模型<br> clf.predict(X[:2, :])<br> #预测数据点的类别<br> clf.predict_proba(X[:2, :])<br> #还可以预测类别的概率</p> <p>使用随机梯度下降<br> 通过简单地更改损失参数,可以轻松地在不同的分类器之间切换。对于逻辑回归,将使用损失=”log”,对于SVM,将使用“Hinge”等。<br> from sklearn.linear_model import SGDClassifier<br> #导入SGDClassifier<br> X = [[0., 0.], [1., 1.]]<br> y = [0, 1]<br> clf = SGDClassifier(loss="log")<br> #设置参数损失=”log”用于逻辑回归<br> clf.fit(X, y)<br> #训练模型<br> clf.predict([[2., 2.]])<br> #预测数据点的类别</p>
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485