第七周:逻辑回归模型

最大似然估计log likelihood log likelihood——对数似然函数值 在参数估计中有一类方法叫做“最大似然估计”,因为涉及到的估计函数往往是是指数型族,取对数后不影响它的单调性但会让计算过程变得简单,所以就采用了似然函数的对数,称“对数似然函数”.根据涉及的模型不同,对数函数会不尽相同,但是原理是一样的,都是从因变量的密度函数的到来,并涉及到对随机干扰项分布的假设. 最大似然估计法的基本思想 极大似然原理 阅读详情

目录

1. 学习内容

2. 用逻辑回归解决分类问题

2.1 为什么不能用线性回归解决分类问题

2.2 什么是逻辑回归

3. 逻辑回归的目标函数

3.1 从线性回归到逻辑回归

3.2 从极大似然到逻辑回归

4. 利用梯度下降法求解参数

5. 逻辑回归的实现及应用

6. 逻辑回归的决策边界及多项式

7. 逻辑回归的正则化

8. 参考文献

1. 学习内容

1. 逻辑回归本质及其数学推导

2. 逻辑回归代码实现与调用

3. 逻辑回归中的决策边界、多项式以及正则化

2. 用逻辑回归解决分类问题

2.1 为什么不能用线性回归解决分类问题

线性回归的使用是基于很多假设的,其中包括:数据特征与标签之间存在线性关系、数据特征与误差相互独立和误差服从正态分布等。理论上说,任何数据放在任何模型里都会得到相应的参数估计,进而通过得到的参数来建立模型最后对数据进行预测。由于不同模型自身条件的限制,模型的效果未必会得到保证,甚至出现“错且无用”的情况[1]。因此,才需要根据数据自身的特点来选择合适的模型。

显然,分类问题的数据未必会满足线性回归的基本假设。因此,对于分类问题的数据,线性回归模型就是一种“错且无用”的模型。

不过,逻辑回归模型有很多地方是与线性回归模型相似的。因此,可以类比线性回归模型来学习逻辑回归。

2.2 什么是逻辑回归

先回忆一下线性回归的作用:线性回归会返回一个标签的预测值。这个值往往是具有具体意义的,例如房价预测返回的就是预测的房屋价格。而对于分类问题而言,虽然模型最后会返回一个表示类别的数值,但是整个预测的过程却是对概率的预测,即判断数据属于此类别的概率有多大。

最简单的分类问题是二分类问题,我们可以人为规定预测的概率大于某一个阈值时将预测结果确定为某一个类别,反之则确定为另一个类别。逻辑回归,就是实现以上过程的模型。实际上,逻辑回归模型本身就是一种专门用来解决二分类问题的模型,如果要解决多分类问题,要么在逻辑回归的基础上进行进一步的处理,要么去使用其他模型。

3. 逻辑回归的目标函数

下面将介绍两种逻辑回归的推导方式。

3.1 从线性回归到逻辑回归

用逻辑回归解决分类问题时,前面的步骤与线性回归十分类似,也是通过各个特征建立关系得到一个预测值。就像是在线性回归中我们规定\hat{y}=w^{T}x+b一样。只不过由于逻辑回归需要计算数据输入此样本的概率,既然是概率,那么其取值必然在0与1之间。而类似线性回归中的预测值很难会保证这一点。因此,我们必须通过一些手段将预测值进行变换将其转化为一个在0与1之间的值。

我们可以考虑这样一个连续函数\sigma(x)=\frac{1}{1+e^{-x}}。如果画出它的图像可以发现,它的定义域为全体实数,而值域则是(0, 1)。因此,这个函数\sigma(x)(也叫做sigmoid函数)常常用来完成我们需要的转换工作。

因此,我们需要预测的概率的表达式就是

\begin{aligned} P(y|x)&=\sigma(w^{T}x+b) \\ &=\begin{cases} P(y=1|x,w,b)=\frac{1}{1+e^{-(w^{T}x+b)}} \\ P(y=0|x,w,b)=\frac{e^{-(w^{T}x+b)}}{1+e^{-(w^{T}x+b)}} \end{cases} \end{aligned}

这里我们人为规定y=1时的概率为\frac{1}{1+e^{-(w^{T}x+b)}},y=0时的概率为\frac{e^{-(w^{T}x+b)}}{1+e^{-(w^{T}x+b)}},反过来定义也可以。

接下来我们需要将两个式子合并成一个式子

P(y|x)=P(y=1|x,w,b)^{y}\cdot (1-P(y=1|x,w,b))^{1-y}

由于这个式子既存在指数又存在乘积,因此需要取对数从而方便后续的优化工作,因此可得

ln(P(y|x))=yln(P(y=1|x,w,b))+(1-y)ln((1-P(y=1|x,w,b)))

最后,将所有数据的预测概率统一到一起可得

\sum_{i=1}^{n}y_{i}ln(P(y_{i}=1|x_{i},w,b))+(1-y_{i})ln((1-P(y_{i}=1|x_{i},w,b)))

由于目标函数需要越小越好,而这个式子意味着值越大效果越好。为了调和这种矛盾,需要在这个式子之前添加一个负号。最后,目标函数的表达式为

L(w,b)=-\sum_{i=1}^{n}y_{i}ln(P(y_{i}=1|x_{i},w,b))+(1-y_{i})ln((1-P(y_{i}=1|x_{i},w,b)))

3.2 从极大似然到逻辑回归

逻辑回归的损失函数当然不是凭空出现的,而是根据逻辑回归本身式子中系数的极大似然估计推导而来的。极大似然估计就是通过已知结果去反推最大概率导致该结果的参数。

极大似然估计是概率论在统计学中的应用,它提供了一种给定观察数据来评估模型参数的方法,即 “模型已定,参数未知”。更具体一点,就是通过若干次试验,观察其结果,利用实验结果计算得到的使实验结果出现的概率最大的参数的取值。

逻辑回归是一种监督式学习,是有训练标签的,就是有已知结果的。根据极大似然,从这个已知的结果入手,去推导能获得最大概率的结果参数。只要我们得出了这个参数,那模型就可以很准确的预测未知的数据了[2]。

跟线性回归一样,如果想要利用极大似然推导逻辑回归的目标函数,同样需要数据满足基本假设:样本彼此间相互独立。在这种情况下,可以得出

\begin{aligned} P(y_{1}, y_{2}, ..., y_{n}|x_{i},w,b)&=\prod_{i = 1}^{n}P(y_{i}|x_{i},w,b)\\ &=\prod_{i=1}^{n}P(y_{i}=1|x_{i},w,b)^{y_{i}}\cdot (1-P(y_{i}=1|x_{i},w,b))^{1-y_{i}} \end{aligned}

因此,我们现在就是需要找出合适的参数w和b来使得上式的值最大,即

\begin{aligned} \hat{w}_{MLE}, \hat{b}_{MLE}&=\underset{w,b}{argmax}\prod_{i=1}^{n}P(y_{i}=1|x_{i},w,b)^{y_{i}}\cdot (1-P(y_{i}=1|x_{i},w,b))^{1-y_{i}}\\ &=\underset{w,b}{argmax}\log\prod_{i=1}^{n}P(y_{i}=1|x_{i},w,b)^{y_{i}}\cdot (1-P(y_{i}=1|x_{i},w,b))^{1-y_{i}}\\ &=\underset{w,b}{argmax}\sum_{i=1}^{n}(y_{i}logP(y_{i}=1|x_{i},w,b)+(1-y_{i})log(1-P(y_{i}=1|x_{i},w,b)))\\ &=\underset{w,b}{argmin}-\sum_{i=1}^{n}(y_{i}logP(y_{i}=1|x_{i},w,b)+(1-y_{i})log(1-P(y_{i}=1|x_{i},w,b)))\\ \end{aligned}

可以发现该结果与上面从线性回归得到的结果是一致的。

4. 利用梯度下降法求解参数

同线性回归,这里我们也可以使用梯度下降法来求得最佳参数(逻辑回归的目标函数一定是凸函数)。具体推导过程可参考[2]。这里直接展示结果,如下所示

\begin{aligned} \frac{\partial L}{\partial w}&=\sum_{i=1}^{n}(\sigma(w^Tx_{i}+b)-y_{i})x_{i}\\ &=X^T(\sigma(w^Tx+b)-y) \end{aligned}

\begin{aligned} \frac{\partial L}{\partial b}&=\sum_{i=1}^{n}(\sigma(w^Tx_{i}+b)-y_{i}) \end{aligned}

5. 逻辑回归的实现及应用

具体代码如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression

# 随机生成二分类的样本数据,每一类5000个样本数据
np.random.seed(12)
num_observations = 5000

x1 = np.random.multivariate_normal([0, 0], \
                                  [[1, .75], [.75, 1]], \
                                  num_observations)
x2 = np.random.multivariate_normal([1, 4], \
                                  [[1, .75], [.75, 1]], \
                                  num_observations)

# 这里采用了不同于之前的数组拼接方法
# np.vstack()会纵向拼接
# np.hstack()会横向拼接,一维数组除外
X = np.vstack([x1, x2]).astype(np.float32)
y = np.hstack([np.zeros(num_observations), \
              np.ones(num_observations)])

print(X.shape, y.shape)

# 数据可视化
plt.figure(figsize = (12, 8))
plt.scatter(X[:, 0], X[:, 1], c = y, alpha = .4)

# 实现sigmoid函数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# 计算log likelihood
def log_likelihood(X, y, w, b):
    '''
    针对所有样本数据,计算负的log likelihood
    也叫做cross-entropy loss,越小越好
    X:训练数据(特征向量),大小为N * D
    y:训练数据(标签),一维向量,长度为D
    w:模型参数,一维向量,长度为D
    b:模型偏移量,标量
    '''
    
    # 按标签提取样本下标
    index_pos, index_neg = np.where(y == 1), np.where(y == 0)
    
    # 对正样本计算loss
    pos_sum = np.sum(np.log(sigmoid(np.dot(X[index_pos], w) + b)))
    neg_sum = np.sum(np.log(1 - sigmoid(np.dot(X[index_neg], w) + b)))
    return -(pos_sum + neg_sum)

# 实现逻辑回归模型
def logistic_regression(X, y, num_steps, learning_rate):
    '''
    基于梯度下降算法实现逻辑回归模型
    X:训练数据(特征向量),大小为N * D
    y:训练数据(标签),一维向量,长度为D
    num_steps:迭代次数
    learning_rate;学习率
    '''
    # 初始化w和b,注意w是一个向量,维数为N
    w, b = np.zeros(X.shape[1]), 0
    for step in range(num_steps):
        # 预测值与真实值之间的误差
        error = sigmoid(np.dot(X, w) + b) - y
        
        # 梯度计算
        grad_w = np.matmul(X.T, error)
        grad_b = np.sum(error.T)
        
        # 梯度更新
        w = w - learning_rate * grad_w
        b = b - learning_rate * grad_b
        
        # 每隔一段时间,计算log likelihood的变化情况
        # 正常情况下应慢慢变小最后收敛
        if step % 10000 == 0:
            print(w, b, log_likelihood(X, y, w, b))
    return w, b

w, b = logistic_regression(X, y, 100000, 5e-5)
print(w, b)

# 使用sklearn自带的模型
# 截距设置为存在,C是正则化系数的倒数,这里设置这么大意味着不想加入正则
clf = LogisticRegression(fit_intercept = True, C = 1e15, solver = 'liblinear')
clf.fit(X, y)
print(clf.coef_, clf.intercept_)

x = X[:, 0]
y1 = -(b + w[0] * x) / w[1]
y2 = -(clf.intercept_[0] + clf.coef_[0][0] * x) / clf.coef_[0][1]

plt.plot(x, y1, c = 'r')
plt.plot(x, y2, c = 'b')

plt.show()

输出结果如下:

(10000, 2) (10000,)
[0.12329042 0.50025684] 0.0 4346.264779152365
[-3.91805809  6.43642177] -10.875436740117019 148.70672276805348
[-4.40511595  7.22269483] -12.241383295773542 142.9649362310784
[-4.64892047  7.61927374] -12.929693005120427 141.54530307157364
[-4.79161626  7.85210758] -13.333633605973615 141.06031965930805
[-4.88097151  7.99814079] -13.586925681052564 140.8703158589161
[-4.93898319  8.09303712] -13.751498400161278 140.7902591275381
[-4.97745835  8.15601123] -13.86070057499041 140.75505002269912
[-5.00331896  8.19835395] -13.934121899487094 140.7391450318095
[-5.02085141  8.22706747] -13.983908547254233 140.73183498915876
[-5.03280465  8.24664683] -14.017856497489424
[[-5.02712572  8.23286799]] [-13.99400797]
图5.1 实验结果

通过结果可以发现由梯度下降法得到的分界线(决策边界)和调用sklearn中的相关类得到的分界线十分接近。

其他的项目可参考[3],基本上与以上代码是一致的。

6. 逻辑回归的决策边界及多项式

我们在规定逻辑回归的目标函数时默认以0.5为分界线,大于0.5的结果记为1,否则记为0。而所有恰好等于0.5的点构成的集合就是逻辑回归的决策边界。决策边界不是逻辑回归专属的概念,很多模型都可以有它的决策边界。

对于一个模型而言,它是否是一个线性模型取决于其决策边界是否是一个线性边界。由于逻辑回归模型的决策边界是一个线性的边界,因此逻辑回归属于线性模型。

既然有了线性决策边界,自然也存在非线性决策边界。下图的数据具有的就是一个典型的非线性决策边界。

图6.1 具有非线性决策边界的数据分布

我们假定该数据的决策边界是一个圆,那么边界满足的方程就是x_{1}^{2}+x_{2}^{2}-r^{2}=0,此时如果我们将每一项都当作一个一次项或者常数项的话,这个边界的方程就又变成了一个线性的方程。从而,就可以继续使用逻辑回归的方式来进行分类。手动实现的具体代码可参考[4]。这里提供用sklearn中的多项式回归处理的代码。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

np.random.seed(2020)
X = np.random.normal(0, 1, size = (200, 2))
y = np.array((X[:, 0] ** 2 + X[:, 1] ** 2) < 1.5, dtype = 'int')

# 为逻辑回归添加多项式项的管道
def PolynomialLogisticRegression(degree):
    return Pipeline([
        ('poly', PolynomialFeatures(degree = degree)),
        ('std_scaler', StandardScaler()),
        ('log_reg', LogisticRegression())
    ])

# 绘制决策边界的方法
def plot_decision_boundary(model, axis):
    x0, x1 = np.meshgrid(
        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),
        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),
    )
    X_new = np.c_[x0.ravel(), x1.ravel()]
    y_predict = model.predict(X_new)
    zz = y_predict.reshape(x0.shape)
    from matplotlib.colors import ListedColormap
    custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9']) 
    plt.contourf(x0, x1, zz, linewidth = 5, cmap = custom_cmap)

# 使用管道得到对象
poly_log_reg = PolynomialLogisticRegression(degree = 2)
poly_log_reg.fit(X, y)

poly_log_reg.score(X, y)

plot_decision_boundary(poly_log_reg, axis = [-4, 4, -4, 4])
plt.scatter(X[y == 0,0], X[y == 0,1])
plt.scatter(X[y == 1,0], X[y == 1,1])
plt.show()
图6.2 非线性决策边界的二分类

 

7. 逻辑回归的正则化

参考[5][6]和上面的代码,实际上逻辑回归也是存在欠拟合和过拟合的情况的。例如,还是上面的例子,如果将degree从2调整至20,那么就会得到下面的结果(为了让效果更明显,数据中掺杂了一些噪音)。

图7.1 多项式逻辑回归的过拟合

根据[6],在保持degree=20的情况下,通过加入正则可以消除过拟合的情况。具体代码如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

np.random.seed(2020)
X = np.random.normal(0, 1, size = (200, 2))
y = np.array((X[:, 0] ** 2 + X[:, 1] ** 2) < 1.5, dtype = 'int')
for i in range(20):
    y[np.random.randint(200)] = 1

# 为逻辑回归添加多项式项的管道
def PolynomialLogisticRegression(degree, penalty = 'l2', C = 0.1):
    return Pipeline([
        ('poly', PolynomialFeatures(degree = degree)),
        ('std_scaler', StandardScaler()),
        ('log_reg', LogisticRegression(penalty = penalty, C = C))
    ])

# 绘制决策边界的方法
def plot_decision_boundary(model, axis):
    x0, x1 = np.meshgrid(
        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),
        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),
    )
    X_new = np.c_[x0.ravel(), x1.ravel()]
    y_predict = model.predict(X_new)
    zz = y_predict.reshape(x0.shape)
    from matplotlib.colors import ListedColormap
    custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9']) 
    plt.contourf(x0, x1, zz, linewidth = 5, cmap = custom_cmap)

# 使用管道得到对象
poly_log_reg = PolynomialLogisticRegression(degree = 20, penalty = 'l2', C = 0.01)
poly_log_reg.fit(X, y)

poly_log_reg.score(X, y)

plot_decision_boundary(poly_log_reg, axis = [-4, 4, -4, 4])
plt.scatter(X[y == 0,0], X[y == 0,1])
plt.scatter(X[y == 1,0], X[y == 1,1])
plt.show()
图7.2 L2正则化处理后的结果(C=0.01)

同样,调节相关参数可以得到L1正则化后的结果。

图7.3 L1正则化处理后的结果(C=0.1)

8. 参考文献

1. https://mp.weixin.qq.com/s/xfteESh2bs1PTuO2q39tbQ

2. https://mp.weixin.qq.com/s/nZoDjhqYcS4w2uGDtD1HFQ

3. https://mp.weixin.qq.com/s/ex7PXW9ihr9fLOjlo3ks4w

4. https://mp.weixin.qq.com/s/97CA-3KlOofJGaw9ukVq1A

5. https://mp.weixin.qq.com/s/BUDdj4najgR0QAHhtu8X9A

6. https://blog.youkuaiyun.com/Zee_Chao/article/details/105325392

统计学补充概念02-对数似然 在概率统计中,似然函数表示给定观测数据,关于模型参数的概率分布。对数似然则是似然函数取对数后的结果。模型选择: 对比不同模型的对数似然函数,可以评估哪个模型更好地拟合观测数据。需要注意的是,对数似然函数通常用于连续型数据,对于离散型数据,可能会使用类似的对数似然概念来进行模型参数估计和推断。参数估计: 通过最大化对数似然函数,可以找到使观测数据在模型中出现概率最大的参数值,从而对模型参数进行估计。正则化: 在正则化方法中,对数似然函数可以结合一个惩罚项,从而实现对模型参数的约束,防止过拟合。 阅读详情

相关推荐

【新手福利】对数似然(Log-Likelihood)详解

似然函数 L(θ∣X)L(θ∣X) 表示在给定参数 θθ 时,观测到数据 XX 的概率。:假设数据 X={x1,x2,...,xn}X={x1​,x2​,...,xn​} 服从某分布 P(x∣θ)P(x∣θ)。:对数似然是后验概率 ln⁡P(θ∣X)∝ℓ(θ)+ln⁡P(θ)lnP(θ∣X)∝ℓ(θ)+lnP(θ) 的核心部分。:KL(P∥Q)=−ℓ(Q)+ConstantKL(P∥Q)=−ℓ(Q)+Constant,其中 PP 为真实分布。:分类任务中,最小化交叉熵等价于最大化对数似然。

2403_86762465的博客 2549

模型中AIC和BIC以及loglikelihood的关系

asreml中,用于比较模型的LRT检验,会给出P值,但是这只能表示两个模型达到显著与否,而不能表示哪个模型优秀。常用的参数有AIC,BIC,loglikelihood,本篇介绍一下这几个参数的含义,以及是如何计算的 1. AIC的解释 赤池信息准则(Akaike Information Criterion,AIC) AIC是衡量统计模型拟合优良性的一种标准,由日本统计学家赤池弘次在1974年提出,它建立在熵的概念上,提供了权衡估计模型复杂度和拟合数据优良性的标准。 通常情况下,AIC定义为: AIC=−2

邓飞----育种数据分析之放飞自我 1万+

算法其实也不难,掰碎了喂给你,七个步骤带你学会逻辑回归算法&应用

什么是逻辑回归算法? 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,分类模型又有二分与多分类,逻辑回归通常用于二分类,用来完成 0/1 分类问题,逻辑一词也代表了是(1)和非(0)。 什么场景可以应用逻辑回归算法? 1 判断是否是垃圾邮件 2 判断是否是金融诈骗 3 判断是否患病 4 预测用户是否点击特定的商品 5 判断用户的性别 ………………. 逻辑回归算法应用实训 随着市场竞争环境越发激烈,某航空公司为了了解客户,获得更好的...

wenyusuran的专栏 7219

对数似然函数值/最大近然估计/log likelihood

对数似然函数值/最大近然估计/log likelihood   在参数估计中有一类方法叫做“最大似然估计”,因为涉及到的估计函数往往是是指数型族,取对数后不影响它的单调性但会让计算过程变得简单,所以就采用了似然函数的对数,称“对数似然函数”。   根据涉及的模型不同,对数函数会不尽相同,但是原理是一样的,都是从因变量的密度函数的到来,并涉及到对随机干扰项分布的假设。 最大似然估计法的基本思想   ...

wydbyxr的博客 9万+

Kaggle泰坦尼克之灾:逻辑回归模型实现笔记(一)

Kaggle泰坦尼克之灾:逻辑回归模型实现笔记(一)1、引言kaggle泰坦尼克之灾的介绍2、笔记用到的函数第一步:了解数据第二步:分析数据之间的关系第三步:补全缺失值第四步:特征因子化第五步:处理浮动较大的数值第六步:筛选数据第七步:数据建模第八步:测试集预处理第九步:结果预测3、总结 1、引言 这是第一次写博客,作为一个刚刚上路的小白,要学的东西很多。本来很多笔记都是以文本的形式储存在本地的,...

DimBottom的博客 2914

笔记:机器学习——吴恩达 第七周

课程目录第7周十二、支持向量机(Support Vector Machines)12.1 优化目标12.2 大边界的直观理解12.3 数学背后的大边界分类(选修)12.4 核函数112.5 核函数212.6 使用支持向量机笔记内容十二、支持向量机(Support Vector Machines) 12.1 优化目标 笔记内容到目前为止,你已经见过一系列不同的学习算法。在监督学习中,许多学习算法的性...

zhuangV587的博客 873

机器学习第七周 逻辑回归

机器学习第七周 逻辑回归 1 学习目标 知识点描述:应用广泛的二分类算法——逻辑回归 学习目标: 逻辑回归本质及其数学推导 逻辑回归代码实现与调用 逻辑回归中的决策边界、多项式以及正则化 2 学习内容 《出场率No.1的逻辑回归算法,是怎样“炼成”的?》 《逻辑回归的本质及其损失函数的推导、求解》 《逻辑回归代码实现与调用》 《逻辑回归的决策边界及多项式》 《sklearn中的逻辑回归中及正则...

long636的专栏 411

光电式烟雾传感器实战指南(一) 光迷宫设计与散射原理篇

本文深入解析了光电式烟雾传感器的核心部件——光迷宫的设计原理与光散射机制。文章详细阐述了如何通过精心设计的光学结构实现‘透气不透光’,并重点探讨了前向散射(尤其是135°角)在提升烟雾监测系统灵敏度与可靠性中的关键作用,为DIY爱好者提供了从理论到实践的完整指南。

weixin_29229055的博客 582

第七周打卡:逻辑回归

1、前言 在kaggle数据竞赛网站中,LR算法出场率最高。 除了应用广泛外,LR的建模过程还体现了数据建模中很重要的思想:对问题划分层次,并利用非线性变换和线性模型的组合,将未知的复杂问题分解为已知的简单问题 可以说:理解好逻辑回归的细节,就掌握了数据建模的精髓。 2、什么是逻辑回归 逻辑回归虽说名字带有回归,但却是分类算法。 其原理是将样本的特征和样本发生的概率联系起来,即预测的是样本发生的概...

weixin_42749300的博客 335

高精度计算Π的值(C语言)

题目要求 限制使用双向链表作存储结构,请根据用户输入的一个整数(该整数表示精确到小数点后的位数,可能要求精确到小数点后500位),高精度计算PI值。可以利用反三角函数幂级展开式来进行计算。 输入5 输出3.14159 思路分析 反三角函数幂级展开式 由公式可以看出,只要计算出来每一个R(n)的值再相加取二倍就可以得到Π的值。 经过推算,要是令R(1)=2,只需要将每个R(n),相加即可。 因...

weixin_46251155的博客 8031

低电压高效率能源管理芯片BQ25570的基本用法及应用电路实例

BQ25570是一款低电压、高效率、集成了可编程功率追踪(MPPT)功能、BOOST升压功能和BUCK降压功能的综合型能源管理电路。冷启动工作电压为330mV,热启动工作电压为100mV。主要应用于温差发电片TEG、压电、摩擦发电和太阳能板的能量收集,也可以用于人体可穿戴自取能传感设备的能量管理。本文主要介绍了BQ25570相关参数计算、MPPT功能验证、工作逻辑和应用场景,并设计了一版测试电路,给出了不同应用需求的电路配置建议。

weixin_49213602的博客 3450

第七周:逻辑回归算法

学习目标 逻辑回归的本质及其数学推导 逻辑回归代码实现与调用 逻辑回归中的决策边界、多项式以及正则化 逻辑回归的本质及其数学推导 《出场率No.1的逻辑回归算法,是怎样“炼成”的?》 《逻辑回归的本质及其损失函数的推导、求解》 逻辑回归假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。 本节两篇引文需要多读几遍。 逻辑回归代码实现与调用 《逻辑回...

Clearspring_17的博客 241

Laravel 结合 jwt-auth 实现无状态 API 认证(实战解析)

本文详细解析了如何在Laravel框架中结合jwt-auth实现无状态API认证,包括JWT的优势、环境搭建、Token签发与刷新、API路由保护等实战内容。通过具体代码示例和优化技巧,帮助开发者高效解决跨域认证问题,提升系统安全性。

weixin_29315569的博客 209

逻辑回归算法学习(第七周周报)

这篇文章系统介绍了逻辑回归在二分类问题中的应用。首先,模型使用 Sigmoid 函数构建函数集,通过权重 w 和偏置 b 的线性组合输出中间值 z,并转化为条件概率 P(C1​∣x);当 P(C1​∣x)≥0.5 时预测类别 C1​,否则为 C2​。接着,训练过程通过最大化似然函数 L(w,b) 来评估参数的好坏,这等价于最小化负对数似然。优化步骤使用梯度下降法推导最优参数 w 和 b,公式化简后显示更新方向依赖特征误差乘积。

m0_62847106的博客 826

11 CO配置-控制-成本中心会计-定义分割结构(OKES-Define Splitting Structure)

业务背景:定义分割结构 事务码: OKES SPRO路径:SPRO->控制->成本中心会计->实际过账->期末结算->作业分配->划分->定义分割结构 第1步,SPRO路径进入 第2步,选择“新的条目”创建 分割结构 第3步,选择分割结构代码 点击“分割规则”进行下一个界面,点击“新条目”创建 分割结构规则 第4步,点击“为规则选择” 为分割结构规则创建版本并保存 第5步,选择“分配”,点击“新的条目” 输入分割结构分配

4367

MacOS多次踩坑后成功安装Homebrew

来一次性成功安装Homebrew吧 官网提供的安装脚本无法成功安装Homebrew,原因大家都懂的,故采用脚本安装的方式。 下载homebrew的安装脚本brew_install 在Download路径下执行如下脚本 curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install >> brew_install 修改brew_install脚本 修改brew_install脚本。如果你的脚本打开之后是如下

weixin_41847116的博客 1980

第七周:逻辑回归(Logistic Regression)

逻辑回归(Logistic Regression)1 概述2 损失函数3 梯度下降4 决策边界和多项式5 正则化 1 概述 逻辑回归,是一种名为“回归”的线性分类器,其本质是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法,叫着“回归”的名背地里却做着“分类”的事,完美诠释“曲线救国”。 线性回归的任务,就是构造一个预测函数来映射输入的特征矩阵x和标签值y的线性关系,而构造预测函数的核...

铁血阿张 627

jetson orin nano 使用cuPCL

jetson开发板上使用pcl时,正常使用的是cpu,拖慢了整体的效率。cuPCL有一些库用于使用CUDA处理点云。

weixin_42256401的博客 1015

数据挖掘第七周周报

数据挖掘第七周周报 数据挖掘阶段性归纳总结 由于时间关系,第一阶段的数据挖掘进入到了最后一周,由于进度问题,还没有具体深入,所以在该阶段的最后一周还是对基础知识做一定的总结归纳为主 天池数据挖掘比赛主要分为以下几个步骤 1.赛题理解 主要是对赛题的背景进行一定的了解,然后对数据概况有个基本的认知,以及对评价指标有大概的认识。其有助于对竞赛全局的把握。通过赛题理解有助于对赛题的业务逻辑把握,对于后期的特征工程构建和模型选择都尤为重要。 2.数据分析 数据总体了解: 读取数据集并了解数据集大小,原始特征维度

Yang_chb的博客 407

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

第七章 逻辑回归 - 多元逻辑回归

第七章 逻辑回归 - 多元逻辑回归、一对多分类

喝醉酒的小白 5903

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【第七周】机器学习(逻辑回归)的学习笔记03

监督学习的分类,即输入一个或一组特征,预测离散的类别标签,输出结果为有限集合中的某个类别。逻辑回归虽然名为“回归”,但实际上是一种分类方法,机器学习中常用逻辑回归算法解决二元分类问题。逻辑回归算法的核心思想是线性回归+阈值。为了将线性回归中的阈值控制在0,1之间,从而便于得到预测结果,引入用于对连续值压缩变换的函数——Sigmoid函数。需要决策边界对样本进行区分的边界,主要有线性决策边界(linear decision boundaries)和非线性决策边界(non-linear decision bou

weixin_57124268的博客 1186

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

逻辑回归二分类算法python_机器学习第七周--二分类算法逻辑回归

一.Logistic分类算法逻辑回归(Logistic Regression, LR)是传统机器学习中的一种分类模型,由于算法的简单和高效,解释性好以及容易扩展等优点,被广泛应用于点击率预估(CTR)、计算广告(CA)以及推荐系统(RS)等任务中。逻辑回归虽然名字叫做回归,但实际上却是一种分类学习方法。主要用于两分类问题,利用Logistic函数(或称为Sigmoid函数),自变量取值范围为(-I...

weixin_39596090的博客 579

逻辑回归原理及实现

机器学习 第一章:机器学习基础 第二章:线性回归 第三章:逻辑回归 第四章:BP 神经网络 第五章:卷积神经网络 第六章:循环神经网络 第七章:决策树与随机森林 第八章:支持向量机 第九章:隐马尔科夫 第十章:聚类等算法 ... 逻辑回归机器学习前言一、基础概念二、构造损失函数三、[梯度下降法]()求解最小值四、逻辑回归(吴恩达练习)总结 基于吴恩达机器学习的习题 逻辑回归github地址 前言 机器学习是从人工智能中产生的一个重要学科分支,是实现智能化的关键 一、基础概念   逻辑回归也被称为

CltCj的博客 3809

第七周笔记

tyn_sky的博客 278

机器学习第七周打卡:逻辑回归

逻辑回归用处:用回归方法解决分类的问题。通过搭建模型后,计算发生某事件的概率,然后用阶梯函数判断成离散型变量。 逻辑回归函数本质理解: 首先,要将真实数值,与做完回归的预测进行一一对应,所以选取sigmoid函数作为关联,转化为0-1之间的数值,因为这是连续值,但是阶跃函数不连续所以无法选择。 损失函数: ...

macmurphy的博客 277
上一篇: 第六周:机器学习理论与实践的补充
下一篇: 第八周:决策树模型
Zee_Chao
博客等级 码龄11年 168粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值