南京做信息登记公司网站,怎么运营一个微信公众号,万江区仿做网站,长春新冠最新情况文章目录 前言回归和分类Logistic回归线性回归Sigmoid函数把回归变成分类Logistic回归算法的数学推导Sigmoid函数与其他激活函数的比较 Logistic回归实例1. 数据预处理2. 模型定义3. 训练模型4. 结果可视化 结语 前言
当谈论当论及机器学习中的回归和分类问题时#xff0c;很… 文章目录 前言回归和分类Logistic回归线性回归Sigmoid函数把回归变成分类Logistic回归算法的数学推导Sigmoid函数与其他激活函数的比较 Logistic回归实例1. 数据预处理2. 模型定义3. 训练模型4. 结果可视化 结语 前言
当谈论当论及机器学习中的回归和分类问题时很容易被“Logistic回归”中的“回归”一词所误导。尽管Logistic回归中有回归二字但它实际上是一种用于分类问题的算法而不是回归问题。在这篇博客中我们将深入研究Logistic回归讨论其背后的原理以及如何手动实现它。 回归和分类
在机器学习领域回归Regression 和 分类Classification 是两种主要的预测问题类型。回归和分类都属于监督学习但它们解决的问题不同。
回归问题 旨在预测一个连续值例如房屋价格、股票价格、销售额等。分类问题 关注对数据进行离散类别的预测将数据分为不同的类别比如预测一封电子邮件是否为垃圾邮件等。
左回归右分类 不要被Logistic回归的名字所欺骗Logistic回归虽然带有 “回归” 二字但实质上是一种用于二分类的算法。
Logistic回归
Logistic回归是一种基于概率的线性分类算法尤其适用于解决二分类问题。
与线性回归不同它通过将线性函数的输出映射到一个介于0和1之间的概率来实现分类。就这样把连续的预测值转换为概率输出的形式这个概率可以表示为样本属于某个类别的概率。
在Logistic回归中我们使用一个称为Sigmoid函数的特殊函数他叫Logistic逻辑函数也叫激活函数。
简单来说Logistic回归 线性回归 Sigmoid函数
线性回归
首先让我们回顾一下线性回归。
线性回归是一种用于建模自变量输入特征与因变量输出之间线性关系的模型。
线性回归的目标是找到一条直线或超平面最大程度地拟合输入数据。其数学表达式为 Y β 0 β 1 X 1 β 2 X 2 … β n X n ϵ Y \beta_0 \beta_1X_1 \beta_2X_2 \ldots \beta_nX_n \epsilon Yβ0β1X1β2X2…βnXnϵ
其中 Y Y Y 是预测值 β 0 \beta_0 β0 是截距 β 1 , β 2 , … , β n \beta_1, \beta_2, \ldots, \beta_n β1,β2,…,βn 是权重 X 1 , X 2 , … , X n X_1, X_2, \ldots, X_n X1,X2,…,Xn 是特征 ϵ \epsilon ϵ 是误差。
线性模型可以表示为 h ( x ) θ 0 θ 1 x 1 θ 2 x 2 . . . θ n x n h(x) \theta_0 \theta_1x_1 \theta_2x_2 ... \theta_nx_n h(x)θ0θ1x1θ2x2...θnxn
其中 h ( x ) h(x) h(x) 是预测值 θ 0 , θ 1 , . . . , θ n \theta_0, \theta_1, ..., \theta_n θ0,θ1,...,θn 是模型的参数。
Sigmoid函数
为了将线性回归转变为分类问题我们引入了Sigmoid函数。
Sigmoid函数是一种常用的激活函数其图像呈S形状。它的特点是在输入接近正无穷或负无穷时输出趋近于1或0而在接近零时输出约为0.5。
这种性质使得sigmoid函数在将线性输出映射到概率时非常有用。它的导数也相对简单这对于梯度下降等优化算法至关重要。
把回归变成分类
Sigmoid函数将任意实数值映射到一个范围在0和1之间的概率值。其表达式为 σ ( z ) 1 1 e − z \sigma(z) \frac{1}{1 e^{-z}} σ(z)1e−z1
这里 z z z 是线性模型的输出。将Sigmoid函数应用于线性模型的输出我们得到了Logistic回归的基本公式 h ( x ) σ ( θ 0 θ 1 x 1 θ 2 x 2 . . . θ n x n ) h(x) \sigma(\theta_0 \theta_1x_1 \theta_2x_2 ... \theta_nx_n) h(x)σ(θ0θ1x1θ2x2...θnxn)
通过这个转换我们可以将任意实数范围内的输出映射到 [ 0 , 1 ] [0, 1] [0,1]之间。
Logistic回归算法的数学推导
现在我们已经得知Logistic回归是一种分类算法它使用一个Sigmoid函数将输入映射到0和1之间的概率值。
假设我们有一个样本 x x x那么它属于类别1的概率可以表示为 P ( y 1 ∣ x ) 1 1 e − ( w T x b ) P(y1|x) \frac{1}{1e^{-(w^Tx b)}} P(y1∣x)1e−(wTxb)1
其中 w w w 是特征的权重向量 x x x 是输入特征向量 b b b是偏置项bias。我们可以将所有样本的预测结果表示为一个向量 y ^ σ ( X w b ) \hat{y} \sigma(Xwb) y^σ(Xwb)
其中 σ ( x ) \sigma(x) σ(x)是Sigmoid函数 σ ( x ) 1 1 e − x \sigma(x) \frac{1}{1e^{-x}} σ(x)1e−x1
我们的目标是最小化交叉熵损失函数 J ( w , b ) − 1 m ∑ i 1 m [ y ( i ) log ( y ^ ( i ) ) ( 1 − y ( i ) ) log ( 1 − y ^ ( i ) ) ] J(w,b) -\frac{1}{m}\sum_{i1}^{m}{[y^{(i)}\log(\hat{y}^{(i)})(1-y^{(i)})\log(1-\hat{y}^{(i)})]} J(w,b)−m1i1∑m[y(i)log(y^(i))(1−y(i))log(1−y^(i))]
其中 m m m是样本数量 y ( i ) y^{(i)} y(i)是第 i i i个样本的真实标签 y ^ ( i ) \hat{y}^{(i)} y^(i)是它的预测结果。我们可以使用梯度下降法来最小化损失函数。权重和偏置项的更新规则如下 w w − α ∂ J ( w , b ) ∂ w w w - \alpha\frac{\partial J(w,b)}{\partial w} ww−α∂w∂J(w,b) b b − α ∂ J ( w , b ) ∂ b b b - \alpha\frac{\partial J(w,b)}{\partial b} bb−α∂b∂J(w,b)
其中 α \alpha α是学习率。我们可以通过计算损失函数对权重和偏置项的偏导数来得到它们的梯度 ∂ J ( w , b ) ∂ w 1 m X T ( y ^ − y ) \frac{\partial J(w,b)}{\partial w} \frac{1}{m}X^T(\hat{y}-y) ∂w∂J(w,b)m1XT(y^−y) ∂ J ( w , b ) ∂ b 1 m ∑ i 1 m ( y ^ ( i ) − y ( i ) ) \frac{\partial J(w,b)}{\partial b} \frac{1}{m}\sum_{i1}^{m}{(\hat{y}^{(i)}-y^{(i)})} ∂b∂J(w,b)m1i1∑m(y^(i)−y(i))
Sigmoid函数与其他激活函数的比较
Sigmoid函数在Logistic回归中被广泛使用因为它能将输出转化为概率值。
除了sigmoid函数还有其他一些常用的激活函数比如ReLURectified Linear Unit函数。这些函数在神经网络和深度学习中扮演着重要的角色。
相比于Sigmoid函数ReLU的主要优势在于它的计算速度更快且更容易收敛并且在处理大规模数据和深层神经网络时表现更好。它解决了梯度消失问题并且能够更好地适应非线性关系。
每种激活函数都有自己的特点和适用范围在实际应用中选择使用哪种激活函数取决于具体的问题和数据集特征。如果需要将输出转化为概率值Logistic回归中的Sigmoid函数是一个不错的选择。如果需要处理更复杂的非线性关系深度学习中的ReLU函数可能更适合。 Logistic回归实例
1. 数据预处理
首先我们需要加载数据集数据使用Scikit-learn里的鸢尾花数据集Iris Dataset。在Scikit-learn中可以使用load_iris()函数来加载数据集。为了简化问题我们只使用两个特征萼片长度sepal length和花瓣长度petal length。同时我们只考虑两个类别山鸢尾Iris-setosa和变色鸢尾Iris-versicolor并将它们分别标记为0和1。
from sklearn.datasets import load_iris
import numpy as npiris load_iris()
X iris.data[:, [0, 2]]
y (iris.target ! 0) * 1print(Number of examples:, len(y))
print(Number of features:, X.shape[1])
print(Classes:, np.unique(y))输出
2. 模型定义
接下来我们定义Logistic回归模型。
def sigmoid(x):return 1 / (1 np.exp(-x))class LogisticRegression:def __init__(self, lr0.01, num_iter100000, fit_interceptTrue, verboseFalse):self.lr lrself.num_iter num_iterself.fit_intercept fit_interceptself.verbose verbosedef __add_intercept(self, X):intercept np.ones((X.shape[0], 1))return np.concatenate((intercept, X), axis1)def __loss(self, h, y):return (-y * np.log(h) - (1 - y) * np.log(1 - h)).mean()def fit(self, X, y):if self.fit_intercept:X self.__add_intercept(X)self.theta np.zeros(X.shape[1])for i in range(self.num_iter):z np.dot(X, self.theta)h sigmoid(z)gradient np.dot(X.T, (h - y)) / y.sizeself.theta - self.lr * gradientif self.verbose and i % 10000 0:z np.dot(X, self.theta)h sigmoid(z)print(loss: , self.__loss(h, y))def predict_prob(self, X):if self.fit_intercept:X self.__add_intercept(X)return sigmoid(np.dot(X, self.theta))def predict(self, X, threshold0.5):return self.predict_prob(X) threshold3. 训练模型
现在我们可以通过调用LogisticRegression类来训练模型。我们将样本分成训练集和测试集使用训练集来训练模型并使用测试集来评估模型性能。
from sklearn.model_selection import train_test_splitX_train, X_test, y_train, y_test train_test_split(X, y, test_size0.2, random_state42)model LogisticRegression(lr0.1, num_iter300000)
model.fit(X_train, y_train)print(Training accuracy:, (model.predict(X_train) y_train).mean())
print(Test accuracy:, (model.predict(X_test) y_test).mean())输出
4. 结果可视化
最后我们可以将模型的决策边界可视化。由于我们只使用了两个特征所以决策边界是一条直线。
import matplotlib.pyplot as pltplt.scatter(X[:, 0], X[:, 1], cy, s50, cmapviridis)x1_min, x1_max X[:, 0].min(), X[:, 0].max(),
x2_min, x2_max X[:, 1].min(), X[:, 1].max(),
xx1, xx2 np.meshgrid(np.linspace(x1_min, x1_max), np.linspace(x2_min, x2_max))
grid np.c_[xx1.ravel(), xx2.ravel()]
probs model.predict_prob(grid).reshape(xx1.shape)
plt.contour(xx1, xx2, probs, [0.5], linewidths1, colorsred)输出 这个实例展示了如何使用Logistic回归算法来解决二分类问题。通过加载鸢尾花数据集选择两个特征并标记两个类别我们定义了LogisticRegression类来训练和预测模型。在这个简单的示例中模型在训练集和测试集上都得到了100%的准确度说明模型具有很好的适应能力和泛化能力。 需要注意的是在实际应用中需要考虑更多的因素例如数据集的大小、特征的选择、模型的超参数等等。此外在使用Logistic回归模型时还需要进行特征缩放、正则化等处理以提高模型的性能和泛化能力。 结语
Logistic回归是一种简单而有效的二元分类算法它通过逻辑函数将线性回归的预测值转换为概率值。在实际应用中Logistic回归通常与其他算法(如决策树和随机森林)结合使用以提高分类的准确率。它也可以通过特征工程和正则化等方法进行改进以适应不同的数据集和问题。同时根据实际情况选择适当的激活函数在解决其他分类问题时也是非常重要的。
希望这篇博客对你有所帮助如果你有任何问题或疑惑欢迎在下方留言讨论。 文章转载自: http://www.morning.yunease.com.gov.cn.yunease.com http://www.morning.gmjkn.cn.gov.cn.gmjkn.cn http://www.morning.lcbgf.cn.gov.cn.lcbgf.cn http://www.morning.fgxr.cn.gov.cn.fgxr.cn http://www.morning.dxhdn.cn.gov.cn.dxhdn.cn http://www.morning.nrftd.cn.gov.cn.nrftd.cn http://www.morning.wkknm.cn.gov.cn.wkknm.cn http://www.morning.mqbsm.cn.gov.cn.mqbsm.cn http://www.morning.qpntn.cn.gov.cn.qpntn.cn http://www.morning.zyffq.cn.gov.cn.zyffq.cn http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn http://www.morning.fgxws.cn.gov.cn.fgxws.cn http://www.morning.zphlb.cn.gov.cn.zphlb.cn http://www.morning.xlmgq.cn.gov.cn.xlmgq.cn http://www.morning.gbqgr.cn.gov.cn.gbqgr.cn http://www.morning.nsrtvu.com.gov.cn.nsrtvu.com http://www.morning.tjndb.cn.gov.cn.tjndb.cn http://www.morning.jsphr.cn.gov.cn.jsphr.cn http://www.morning.sgfgz.cn.gov.cn.sgfgz.cn http://www.morning.npxht.cn.gov.cn.npxht.cn http://www.morning.syqtt.cn.gov.cn.syqtt.cn http://www.morning.rqsnl.cn.gov.cn.rqsnl.cn http://www.morning.prfrb.cn.gov.cn.prfrb.cn http://www.morning.jxfsm.cn.gov.cn.jxfsm.cn http://www.morning.gqbtw.cn.gov.cn.gqbtw.cn http://www.morning.bkcnq.cn.gov.cn.bkcnq.cn http://www.morning.mmsf.cn.gov.cn.mmsf.cn http://www.morning.dhbyj.cn.gov.cn.dhbyj.cn http://www.morning.ygmw.cn.gov.cn.ygmw.cn http://www.morning.lkthj.cn.gov.cn.lkthj.cn http://www.morning.gydsg.cn.gov.cn.gydsg.cn http://www.morning.sqmlw.cn.gov.cn.sqmlw.cn http://www.morning.nppml.cn.gov.cn.nppml.cn http://www.morning.nqfxq.cn.gov.cn.nqfxq.cn http://www.morning.jbfzx.cn.gov.cn.jbfzx.cn http://www.morning.gbrps.cn.gov.cn.gbrps.cn http://www.morning.tpnch.cn.gov.cn.tpnch.cn http://www.morning.hpxxq.cn.gov.cn.hpxxq.cn http://www.morning.bljcb.cn.gov.cn.bljcb.cn http://www.morning.yppln.cn.gov.cn.yppln.cn http://www.morning.ymmjx.cn.gov.cn.ymmjx.cn http://www.morning.yesidu.com.gov.cn.yesidu.com http://www.morning.qtkdn.cn.gov.cn.qtkdn.cn http://www.morning.rpjr.cn.gov.cn.rpjr.cn http://www.morning.yrctp.cn.gov.cn.yrctp.cn http://www.morning.wrcgy.cn.gov.cn.wrcgy.cn http://www.morning.nspzy.cn.gov.cn.nspzy.cn http://www.morning.bnpn.cn.gov.cn.bnpn.cn http://www.morning.wpcfm.cn.gov.cn.wpcfm.cn http://www.morning.zlnmm.cn.gov.cn.zlnmm.cn http://www.morning.qfzjn.cn.gov.cn.qfzjn.cn http://www.morning.qbtj.cn.gov.cn.qbtj.cn http://www.morning.bwxph.cn.gov.cn.bwxph.cn http://www.morning.ckcjq.cn.gov.cn.ckcjq.cn http://www.morning.ftync.cn.gov.cn.ftync.cn http://www.morning.gwwtm.cn.gov.cn.gwwtm.cn http://www.morning.qfgwx.cn.gov.cn.qfgwx.cn http://www.morning.zmlbq.cn.gov.cn.zmlbq.cn http://www.morning.gbhsz.cn.gov.cn.gbhsz.cn http://www.morning.xrwbc.cn.gov.cn.xrwbc.cn http://www.morning.fqmbt.cn.gov.cn.fqmbt.cn http://www.morning.sbwr.cn.gov.cn.sbwr.cn http://www.morning.bqpg.cn.gov.cn.bqpg.cn http://www.morning.prlgn.cn.gov.cn.prlgn.cn http://www.morning.kpwcx.cn.gov.cn.kpwcx.cn http://www.morning.lnnc.cn.gov.cn.lnnc.cn http://www.morning.bdfph.cn.gov.cn.bdfph.cn http://www.morning.ylqrc.cn.gov.cn.ylqrc.cn http://www.morning.pmjw.cn.gov.cn.pmjw.cn http://www.morning.rwlsr.cn.gov.cn.rwlsr.cn http://www.morning.dfbeer.com.gov.cn.dfbeer.com http://www.morning.spsqr.cn.gov.cn.spsqr.cn http://www.morning.lbxcc.cn.gov.cn.lbxcc.cn http://www.morning.htqrh.cn.gov.cn.htqrh.cn http://www.morning.btlsb.cn.gov.cn.btlsb.cn http://www.morning.sblgt.cn.gov.cn.sblgt.cn http://www.morning.zqfz.cn.gov.cn.zqfz.cn http://www.morning.hcqpc.cn.gov.cn.hcqpc.cn http://www.morning.fdmfn.cn.gov.cn.fdmfn.cn http://www.morning.mcjrf.cn.gov.cn.mcjrf.cn