企业网站优化怎么提高关键词排名,公司备案证查询网站查询网站查询,北京建站模板源码,网站上线注意问题逻辑回归的数学模型
基本模型
逻辑回归主要用于处理二分类问题。二分类问题对于模型的输出包含 0 和 1#xff0c;是一个不连续的值。分类问题的结果一般不能由线性函数求出。这里就需要一个特别的函数来求解#xff0c;这里引入一个新的函数 Sigmoid 函数#xff0c;也成…逻辑回归的数学模型
基本模型
逻辑回归主要用于处理二分类问题。二分类问题对于模型的输出包含 0 和 1是一个不连续的值。分类问题的结果一般不能由线性函数求出。这里就需要一个特别的函数来求解这里引入一个新的函数 Sigmoid 函数也成为逻辑函数。 h θ ( x ) g ( θ T x ) z θ T x g ( z ) 1 1 e − z h_\theta(x) g(\theta^Tx) \\ z \theta^Tx \\ g(z) \frac{1}{1 e^{-z}} hθ(x)g(θTx)zθTxg(z)1e−z1 这里函数 g ( z ) g(z) g(z) 将任何实数映射到了 ( 0 , 1 ) (0, 1) (0,1) 区间中从而将任何值函数转换为适合分类的函数。这里我们将线性回归模型函数插入到这个函数中形成新的逻辑回归模型。 图 1 Sigmoid 函数 如图所示转换后可以看到在 x 0 x 0 x0 处有一个明显的变化两边的函数值无限接近于 0 和 1而中间的交界处则根据输出来判断如何分类例如 h θ ( x ) 0.7 h_\theta(x) 0.7 hθ(x)0.7 则表示有 70% 的概率输出为 1。
决策边界
决策边界Decision boundary即为输出的分界点。二分类问题的输出是离散的零一分类也就是说 h θ ( x ) ≥ 0.5 → y 1 h θ ( x ) 0.5 → y 0 h_\theta(x) \ge 0.5 \rarr y 1 \\ h_\theta(x) 0.5 \rarr y 0 hθ(x)≥0.5→y1hθ(x)0.5→y0 那么此处由 Sigmoid 函数的性质可以得到 θ T x ≥ 0 ⇒ y 1 θ T x 0 ⇒ y 0 \theta^T x \ge 0 \Rightarrow y 1 \\ \theta^T x 0 \Rightarrow y 0 θTx≥0⇒y1θTx0⇒y0 那么此处根据输入 x x x 来判断输出从当前值跳变到另一个值的边界即为决策边界。在上面 Sigmoid 函数的实例图中假设输入函数仅是简单的 z x z x zx并且认为当 h θ ( x ) ≥ 0.5 h_\theta(x) \ge 0.5 hθ(x)≥0.5 时输出 y 1 y 1 y1那么可以看到 x 0 x 0 x0 即为其决策边界。
在更复杂的情况下假设 θ T x θ 0 θ 1 x 1 θ 2 x 2 \theta^T x \theta_0 \theta_1 x_1 \theta_2 x_2 θTxθ0θ1x1θ2x2
那么通过变形可得到 θ 0 θ 1 ⋅ x − θ 2 ⋅ y y θ 0 θ 1 ⋅ x θ 2 \theta_0 \theta_1 \cdot x - \theta_2 \cdot y \\ y \frac{\theta_0 \theta_1 \cdot x}{\theta_2} θ0θ1⋅x−θ2⋅yyθ2θ0θ1⋅x
代价函数
根据模型的代价函数Cost function即可根据对当前参数的评估最后找到最优解逻辑回归的代价函数定义为 J ( θ ) 1 m ∑ i 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) ) C o s t ( h θ ( x ) , y ) − log ( h θ ( x ) ) if y 1 C o s t ( h θ ( x ) , y ) − log ( 1 − h θ ( x ) ) if y 0 J(\theta) \frac{1}{m}\sum^m_{i 1}\mathrm{Cost}(h_\theta(x^{(i)}), y^{(i)}) \\ \begin{align} \mathrm{Cost}(h_\theta(x), y) -\log(h_\theta(x)) \text{ if } y 1 \\ \mathrm{Cost}(h_\theta(x), y) -\log(1 - h_\theta(x)) \text{ if } y 0 \\ \end{align} J(θ)m1i1∑mCost(hθ(x(i)),y(i))Cost(hθ(x),y)−log(hθ(x))Cost(hθ(x),y)−log(1−hθ(x)) if y1 if y0
图 2 Sigmoid 的损失函数 这里可以看出当 y 1 and h θ ( x ) → 0 y 1 \text{ and } h_\theta(x) \rarr 0 y1 and hθ(x)→0 时损失函数的值会趋向于无穷可以直观看到损失函数对模型预测与实际值的差距评估。机器学习的主要目标就是要将损失函数降到最低以求得最优模型。
梯度下降
通过梯度下降Gradient descent找到最优解首先将代价函数转化为如下形式。不难看出在某一情况时另一种情况会被化为 0这样做的目的是方便编程 C o s t ( h θ ( x ) , y ) − y log ( θ ( x ) ) − ( 1 − y ) log ( 1 − h θ ( x ) ) \mathrm{Cost}(h_\theta(x), y) - y \log(\theta(x)) - (1 - y) \log(1 - h_\theta(x)) Cost(hθ(x),y)−ylog(θ(x))−(1−y)log(1−hθ(x)) 那么整个代价函数如下 J ( θ ) − 1 m ∑ i 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] J(\theta) -\frac{1}{m}\sum_{i 1}^{m}[y^{(i)}\log(h_\theta(x^{(i)})) (1 - y^{(i)}) \log(1 - h\theta(x^{(i)}))] J(θ)−m1i1∑m[y(i)log(hθ(x(i)))(1−y(i))log(1−hθ(x(i)))] 则可以求出梯度下降迭代的步骤 θ j : θ j − α ∂ J ( θ ) ∂ θ j 即 θ j : θ j − α m ∑ i 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j : \theta_j - \alpha\frac{\partial{J(\theta)}}{\partial{\theta_j}} \\ \text{即 } \theta_j : \theta_j - \frac{\alpha}{m}\sum^m_{i 1}(h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} θj:θj−α∂θj∂J(θ)即 θj:θj−mαi1∑m(hθ(x(i))−y(i))xj(i)
Sklearn 逻辑回归模型
数据整理
假设有一份学生的成绩单和大学录取的名单学生们通过两门考试的两门分数来被决定是否被录取。这是一个两个特征的二分类问题首先整理一下数据。
data pd.read_csv(ex2data1.txt, names[exam1, exam2, is_admitted])
print(data.head())# 将数据拆分成是否录取的两批绘制散点
positive data[data[is_admitted] 1]
negative data[data[is_admitted] 0]fig, ax plt.subplots(figsize(12, 8))
ax.scatter(positive[exam1], positive[exam2], s50, cb, alpha0.5, labelAdmitted)
ax.scatter(negative[exam1], negative[exam2], s50, cr, alpha0.5, labelNot Admitted)
ax.legend()
ax.set_xlabel(Exam 1 Score)
ax.set_ylabel(Exam 2 Score)
plt.show()exam1 exam2 admitted
0 34.623660 78.024693 0
1 30.286711 43.894998 0
2 35.847409 72.902198 0
3 60.182599 86.308552 1
4 79.032736 75.344376 1图 3 数据预览 逻辑回归模型
这里将从上面读取的数据传递给定义的逻辑回归的模型并训练得到模型参数。
X data[[exam1, exam2]].values
Y data[is_admitted].values# 定义并训练模型
model LogisticRegression()
model.fit(X, Y)print(Model Coefficients:, model.coef_)
print(Intercept:, model.intercept_)Model Coefficients: [[0.20535491 0.2005838 ]]
Intercept: [-25.05219314]验证
验证模型的准确性首先从模型中取出相关参数即为 θ \theta θ 。这里需要说明一下数学模型中与 Sklearn 逻辑回归模型的属性首先求出决策边界 y θ 0 θ 1 ⋅ x θ 2 y \frac{\theta_0 \theta_1 \cdot x}{\theta_2} yθ2θ0θ1⋅x 这里 θ 0 \theta_0 θ0 为偏置 θ 1 \theta_1 θ1 和 θ 2 \theta_2 θ2 是每个特征的系数。两者分别对应了两个属性。
coef model.coef_[0]
intercept model.intercept_[0]
x np.linspace(30, 100, 1000)
y -(coef[0] * x intercept) / coef[1]fig, ax plt.subplots(figsize(12, 8))
ax.scatter(positive[exam1], positive[exam2], s50, cb, alpha0.5, labelAdmitted)
ax.scatter(negative[exam1], negative[exam2], s50, cr, alpha0.5, labelNot Admitted)
ax.plot(x, y, labelDecision Boundary, cgrey)
ax.legend()
ax.set_xlabel(Exam 1 Score)
ax.set_ylabel(Exam 2 Score)
plt.show()最后可以看出决策边界较好的分割了两类点集。 图 4 决策边界