逻辑斯谛回归模型( Logistic Regression,LR) 最大熵模型(Max Entropy,ME)

文章目录

    • 1. Logistic Regression 模型
      • 1.1 logistic 分布
      • 1.2 二项逻辑斯谛回归模型
      • 1.3 模型参数估计
      • 1.4 多项逻辑斯谛回归
      • 1.5 Python代码
    • 2. Maximum Entropy 模型
      • 2.1 最大熵原理
      • 2.2 最大熵模型的定义
      • 2.3 最大熵模型的学习
      • 2.4 例题
    • 3. 模型学习的最优化算法
    • 4. 鸢尾花LR分类实践

1. Logistic Regression 模型

1.1 logistic 分布

定义:设 XXX 是连续随机变量, XXX 服从 logistic 分布是指 XXX 具有下列分布函数和密度函数:

F(x)=P(X≤x)=11+e−(x−μ)/γF(x) = P(X \leq x) = \frac{1}{1+e^{{-(x-\mu)} / \gamma}}F(x)=P(Xx)=1+e(xμ)/γ1

f(x)=F′(x)=e−(x−μ)/γγ(1+e−(x−μ)/γ)2f(x)=F'(x)= \frac {e^{{-(x-\mu)} / \gamma}}{\gamma {(1+e^{{-(x-\mu)}/\gamma})}^2}f(x)=F(x)=γ(1+e(xμ)/γ)2e(xμ)/γ

式中 μ\muμ 为位置参数,γ>0\gamma > 0γ>0 为形状参数

在这里插入图片描述
分布函数 F(x)F(x)F(x) 是一条S形曲线 sigmoid curve,曲线以点 (μ,12)(\mu, \frac{1}{2})(μ,21) 为中心对称,即满足:F(−x+μ)−12=−F(x+μ)+12F(-x+\mu)-\frac{1}{2} = -F(x+\mu)+\frac{1}{2}F(x+μ)21=F(x+μ)+21

形状参数 γ\gammaγ 的值越小,曲线在中心附近增长越快

1.2 二项逻辑斯谛回归模型

binomial logistic regression model 是一种分类模型,由条件概率分布 P(Y∣X)P(Y|X)P(YX) 表示, 形式为参数化的逻辑斯谛分布。这里,随机变量 XXX 的取值为实数,随机变量 YYY 取值为 1 或者 0。用监督学习的方法来估计模型参数。

二项逻辑斯谛回归模型具有下面条件概率分布:

P(Y=1∣x)=exp⁡(wx+b)1+exp⁡(ωx+b)P(Y=1|x) = \frac{\exp(wx+b)}{1+\exp(\omega x+b)}P(Y=1x)=1+exp(ωx+b)exp(wx+b)

P(Y=0∣x)=11+exp⁡(ωx+b)P(Y=0|x) = \frac{1}{1+\exp(\omega x+b)}P(Y=0x)=1+exp(ωx+b)1

ω\omegaω 是权值向量,bbb 是偏置,ω⋅x\omega· xωxω\omegaωxxx 的内积(内积,对应位置相乘,再加总)

按照上面式子,可以求得 P(Y=1∣x)P(Y=1|x)P(Y=1x)P(Y=0∣x)P(Y=0|x)P(Y=0x),LR模型将实例 xxx 分到概率较大的那一类。

事件的几率(odds)是指该事件发生的概率 ppp 比上 不发生的概率 1−p1-p1p,该事件的对数几率即 log⁡it(p)=log⁡p1−p\log it(p) = \log\frac{p}{1-p}logit(p)=log1pp

对于LR来讲,log⁡P(Y=1∣x)1−P(Y=1∣x)=w⋅x\log \frac{P(Y=1|x)}{1-P(Y=1|x)} = w· xlog1P(Y=1x)P(Y=1x)=wx,就是说, Y=1Y=1Y=1 的对数几率是输入 xxx 的线性函数

1.3 模型参数估计

LR模型学习时,对于给定的训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)}, 其中,xi∈Rn,yi∈{0,1}x_i \in R^n, \quad y_i \in \{0,1\}xiRn,yi{0,1}, 应用极大似然估计,得到 LR 模型

假设:P(Y=1∣x)=π(x),P(Y=0∣x)=1−π(x)P(Y=1|x)=\pi(x), \quad\quad P(Y=0|x)=1-\pi(x)P(Y=1x)=π(x),P(Y=0x)=1π(x)

似然函数为:∏i=1N[π(xi)]yi[1−π(xi)]1−yi\prod\limits_{i=1}^N [\pi(x_i)]^{y_i} [1-\pi(x_i)]^{1-y_i}i=1N[π(xi)]yi[1π(xi)]1yi

对数似然函数:
L(ω)=∑i=1N[yilog⁡π(xi)+(1−yi)log⁡(1−π(xi))]=∑i=1N[yilog⁡π(xi)1−π(xi)+log⁡(1−π(xi))]=∑i=1N[yi(ω•xi)−log⁡(1+exp⁡(ω•xi))]\begin{aligned} L(\omega) &= \sum_{i=1}^N [y_i\log\pi(x_i)+(1-y_i)\log(1-\pi(x_i))] \\ &= \sum_{i=1}^N[y_i\log \frac{\pi(x_i)}{1-\pi(x_i)}+\log(1-\pi(x_i))]\\ &=\sum_{i=1}^N[y_i(\omega•x_i)-\log(1+\exp(\omega•x_i))] \end{aligned} L(ω)=i=1N[yilogπ(xi)+(1yi)log(1π(xi))]=i=1N[yilog1π(xi)π(xi)+log(1π(xi))]=i=1N[yi(ωxi)log(1+exp(ωxi))]
L(ω)L(\omega)L(ω) 求极大值,得到 ω\omegaω 的估计值。

1.4 多项逻辑斯谛回归

上面介绍的是两类分类LR模型,可以推广到多类分类。

假设离散随机变量 YYY 的取值集合是 {1,2,...,K}\{1,2,...,K\}{1,2,...,K}, 那么多项LR模型是:

P(Y=k∣x)=exp⁡(ωk•x)1+∑k=1K−1exp⁡(ωk•x),k=1,2,...,K−1P(Y=k|x) = \frac{\exp(\omega_k•x)}{1+\sum\limits_{k=1}^{K-1}\exp(\omega_k•x)}, \quad k=1,2,...,K-1P(Y=kx)=1+k=1K1exp(ωkx)exp(ωkx),k=1,2,...,K1

P(Y=K∣x)=11+∑k=1K−1exp⁡(ωk•x)P(Y=K|x)=\frac{1}{1+\sum\limits_{k=1}^{K-1}\exp(\omega_k•x)}P(Y=Kx)=1+k=1K1exp(ωkx)1

这里,x∈Rn+1,ωk∈Rn+1x \in R^{n+1},\quad \omega_k \in R^{n+1}xRn+1,ωkRn+1 (把 ω•x+b\omega•x+bωx+b 合并写做 ω•x\omega•xωx,所以 nnn 维变成 n+1n+1n+1 维)

1.5 Python代码

sklearn.linear_model.LogisticRegression

# -*- coding:utf-8 -*-
# @Python Version: 3.7
# @Time: 2020/3/15 23:27
# @Author: Michael Ming
# @Website: https://michael.blog.csdn.net/
# @File: 6.LogisticRegression_MaxEntropy.py
# @Reference: https://github.com/fengdu78/lihang-codefrom math import exp
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_splitdef create_data():iris = load_iris()df = pd.DataFrame(iris.data, columns=iris.feature_names)df['label'] = iris.targetdata = np.array(df.iloc[:100, [0, 1, -1]])return data[:, :2], data[:, -1]X, y = create_data()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)class LRclassifier():def __init__(self, max_iter=200, learning_rate=0.01):self.max_iter = max_iterself.learning_rate = learning_rateself.weights = Nonedef sigmoid(self, x):return 1 / (1 + exp(-x))def data_matrix(self, X):data_mat = []for d in X:data_mat.append([1.0, *d])  # 数据加了一个截距项return data_matdef fit(self, X, y):data_mat = self.data_matrix(X)self.weights = np.zeros((len(data_mat[0]), 1), dtype=np.float32)for iter_ in range(self.max_iter):for i in range(len(X)):result = self.sigmoid(np.dot(data_mat[i], self.weights))  # w x 内积error = y[i] - resultself.weights += self.learning_rate * error * np.transpose([data_mat[i]])# 学习算法,更新 wprint('LR Model(learning_rate={},max_iter={})'.format(self.learning_rate, self.max_iter))def score(self, X_test, y_test):right = 0X_test = self.data_matrix(X_test)for x, y in zip(X_test, y_test):result = np.dot(x, self.weights)if (result > 0 and y == 1) or (result < 0 and y == 0):right += 1return right / len(X_test)def predict(self, X_test):result = np.dot(self.data_matrix(X_test), self.weights)if result > 0:return 1else:return 0lr_clf = LRclassifier()
lr_clf.fit(X_train, y_train)
print(lr_clf.score(X_test, y_test))x_points = np.arange(4, 8)
y_ = -(lr_clf.weights[1] * x_points + lr_clf.weights[0]) / lr_clf.weights[2]
plt.plot(x_points, y_)
plt.scatter(X[:50, 0], X[:50, 1], label='0')
plt.scatter(X[50:, 0], X[50:, 1], label='1')
plt.legend()
plt.show()# X_train, y_train = np.array([[3, 3, 3], [4, 3, 2], [2, 1, 2], [1, 1, 1], [-1, 0, 1], [2, -2, 1]]), np.array([1, 1, 1, 0, 0, 0])
# X_test = [[1, 2, -2]]
# lr_clf = LRclassifier()
# lr_clf.fit(X_train, y_train)
# print(lr_clf.predict(X_test))
# ---------sklearn--LR-----------------------
from sklearn.linear_model import LogisticRegressionclf = LogisticRegression(max_iter=200)
clf.fit(X_train, y_train)
print(clf.score(X_test, y_test))
print(clf.coef_, clf.intercept_)
x_ponits = np.arange(4, 8)
y_ = -(clf.coef_[0][0] * x_ponits + clf.intercept_) / clf.coef_[0][1]
plt.plot(x_ponits, y_)
plt.plot(X[:50, 0], X[:50, 1], 'bo', color='blue', label='0')
plt.plot(X[50:, 0], X[50:, 1], 'bo', color='orange', label='1')
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.legend()
plt.show()

2. Maximum Entropy 模型

2.1 最大熵原理

  • 最大熵原理认为,学习概率模型时,在所有可能的概率模型(分布)中,熵最大的模型是最好的模型。

  • 通常用约束条件来确定概率模型的集合,所以,最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型。

假设离散随机变量 XXX 的概率分布是 P(X)P(X)P(X), 则其熵(熵介绍请点击)是:
H(P)=−∑xP(x)log⁡P(x)H(P) = -\sum\limits_{x}P(x)\log P(x)H(P)=xP(x)logP(x)

变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。
信息熵是信息论中用于度量信息量的一个概念。一个系统越是有序,信息熵就越低;
反之,一个系统越是混乱,信息熵就越高。

熵满足不等式: 0≤H(P)≤log⁡∣X∣0 \le H(P) \le \log|X|0H(P)logX
∣X∣|X|XXXX 的取值个数,当且仅当 XXX 均匀分布 时右边等号成立;XXX 均匀分布时(离散较大,混乱,不集中), 熵最大

最大熵原理认为,要选择的概率模型首先必须满足已有约束条件。在没有更多信息的情况下,那些不确定的部分都是“等可能的 ”。最大熵原理通过熵的最大化来表示等可能性

2.2 最大熵模型的定义

  • 假设分类模型是一个条件概率分布 P(Y∣X)P(Y|X)P(YX)
  • X∈X⊆RnX \in \mathcal{X} \subseteq R^nXXRn 表示输入
  • Y∈YY \in \mathcal{Y}YY 表示输出,X,Y\mathcal{X} , \mathcal{Y}X,Y 是输入、输出的集合
  • 模型:对给定的输入 XXX,以条件概率 P(Y∣X)P(Y|X)P(YX) 输出 YYY
  • 训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)}

模型应满足的条件,根据训练集,可以确定联合分布 P(X,Y)P(X,Y)P(X,Y) 的经验分布

  • P~(X=x,Y=y)=ν(X=x,Y=y)N\tilde P(X=x,Y=y) = \frac{\nu(X=x,Y=y)}{N}P~(X=x,Y=y)=Nν(X=x,Y=y)

边缘分布 P(X)P(X)P(X) 的经验分布

  • P~(X=x)=ν(X=x)N\tilde P(X=x)=\frac{\nu(X=x)}{N}P~(X=x)=Nν(X=x)ν\nuν 表示频数,NNN 表示样本容量

特征函数
f(x,y)={1,x与y满足某一事实0,否则f(x,y)=\left\{ \begin{aligned} 1, \quad x与y满足某一事实 \\ 0, \quad 否则\quad \quad \quad \quad \quad \quad \end{aligned} \right. f(x,y)={1,xy0,

特征函数 f(x,y)f(x,y)f(x,y) 关于经验分布 P~(X,Y)\tilde P(X,Y)P~(X,Y) 的期望值:
EP~(f)=∑x,yP~(x,y)f(x,y)E_{\tilde P}(f) = \sum\limits_{x,y} \tilde P(x,y)f(x,y)EP~(f)=x,yP~(x,y)f(x,y)

特征函数 f(x,y)f(x,y)f(x,y) 关于模型 P(Y∣X)P(Y|X)P(YX) 与经验分布 P~(X)\tilde P(X)P~(X) 的期望值:
EP(f)=∑x,yP~(x)P(y∣x)f(x,y)E_P(f) = \sum\limits_{x,y} \tilde P(x)P(y|x)f(x,y)EP(f)=x,yP~(x)P(yx)f(x,y)

如果模型能够获取训练数据中的信息,那么就可以假设这两个期望值相等,即
EP(f)=EP~(f)E_P(f) = E_{\tilde P}(f)EP(f)=EP~(f)
∑x,yP~(x)P(y∣x)f(x,y)=∑x,yP~(x,y)f(x,y)\sum\limits_{x,y} \tilde P(x)P(y|x)f(x,y) = \sum\limits_{x,y} \tilde P(x,y)f(x,y)x,yP~(x)P(yx)f(x,y)=x,yP~(x,y)f(x,y)

将上式作为模型学习的约束条件。如果有 nnn 个特征函数 fi(x,y)f_i(x,y)fi(x,y) ,就有 nnn 个约束条件。


最大熵模型(定义):

  • 假设满足所有约束条件的模型集合为:
    C≡{P∈P∣EP(fi)=EP~(fi),i=1,2,...,n}\mathcal{C} \equiv \{P \in \mathcal{P} | E_P(f_i)=E_{\tilde P}(f_i),i=1,2,...,n\}C{PPEP(fi)=EP~(fi),i=1,2,...,n}
  • 定义在条件概率分布 P(Y∣X)P(Y|X)P(YX) 上的条件熵为:
    H(P)=−∑x,yP~(x)P(y∣x)log⁡P(y∣x)H(P) = -\sum\limits_{x,y} \tilde P(x)P(y|x)\log P(y|x)H(P)=x,yP~(x)P(yx)logP(yx)
  • 则模型集合 C\mathcal{C}C 中条件熵 H(P)H(P)H(P) 最大的模型称为最大熵模型,对数为自然对数 eee

2.3 最大熵模型的学习

学习过程就是约束最优化问题。

对于给定的训练数据集 T={(x1,y1),(x2,y2),...,(xN,yN)}T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\}T={(x1,y1),(x2,y2),...,(xN,yN)},以及特征函数 fi(x,y),i=1,2,...,nf_i(x,y), i = 1,2,...,nfi(x,y),i=1,2,...,n,ME 模型的学习等价于约束最优化问题:

max⁡P∈CH(P)=−∑x,yP~(x)P(y∣x)log⁡P(y∣x)\max\limits_{P \in \mathcal C} \quad H(P) = - \sum\limits_{x,y} \tilde P(x)P(y|x) \log P(y|x)PCmaxH(P)=x,yP~(x)P(yx)logP(yx)
s.t.EP(fi)=EP~(fi),i=1,2,...,ns.t. \quad\quad E_P(f_i)=E_{\tilde P}(f_i),i=1,2,...,ns.t.EP(fi)=EP~(fi),i=1,2,...,n
∑yP(y∣x)=1\quad\quad\quad \sum\limits_y P(y|x) = 1yP(yx)=1

按照最优化的习惯,改为求最小值问题:

min⁡P∈C−H(P)=∑x,yP~(x)P(y∣x)log⁡P(y∣x)\color{red} \min\limits_{P \in \mathcal C} \quad -H(P) = \sum\limits_{x,y} \tilde P(x)P(y|x) \log P(y|x)PCminH(P)=x,yP~(x)P(yx)logP(yx)
s.t.EP(fi)−EP~(fi)=0,i=1,2,...,n\color{red}s.t. \quad\quad E_P(f_i)-E_{\tilde P}(f_i) = 0, i=1,2,...,ns.t.EP(fi)EP~(fi)=0,i=1,2,...,n
∑yP(y∣x)=1\color{red}\quad\quad\quad \sum\limits_y P(y|x) = 1yP(yx)=1


求解:

引进拉格朗日乘子 ω0,ω1,ω2,...,ωn\omega_0,\omega_1,\omega_2,...,\omega_nω0,ω1,ω2,...,ωn,定义拉格朗日函数 L(P,ω)L(P,\omega)L(P,ω)

L(P,ω)≡−H(P)+ω0(1−∑yP(y∣x))+∑i=1nωi(EP~(fi)−EP(fi))=∑x,yP~(x)P(y∣x)log⁡P(y∣x)+ω0(1−∑yP(y∣x))+∑i=1nωi(∑x,yP~(x,y)fi(x,y)−∑x,yP~(x)P(y∣x)fi(x,y))\begin{aligned} L(P,\omega) &\equiv -H(P) + \omega_0 \Bigg (1-\sum\limits_y P(y|x)\Bigg) + \sum\limits_{i=1}^n \omega_i(E_{\tilde P}(f_i)-E_{ P}(f_i))\\ &= \sum\limits_{x,y} \tilde P(x)P(y|x) \log P(y|x) + \omega_0 \Bigg (1-\sum\limits_y P(y|x)\Bigg) + \\ &\quad \sum\limits_{i=1}^n \omega_i\Bigg (\sum\limits_{x,y} \tilde P(x,y)f_i(x,y) - \sum\limits_{x,y} \tilde P(x)P(y|x)f_i(x,y) \Bigg ) \end{aligned} L(P,ω)H(P)+ω0(1yP(yx))+i=1nωi(EP~(fi)EP(fi))=x,yP~(x)P(yx)logP(yx)+ω0(1yP(yx))+i=1nωi(x,yP~(x,y)fi(x,y)x,yP~(x)P(yx)fi(x,y))
通过求解对偶问题求解原始问题。

最优化原始问题:min⁡P∈Cmax⁡ωL(P,ω)\min\limits_{P \in \mathcal {C} }\max\limits_{\omega} L(P,\omega)PCminωmaxL(P,ω)

对偶问题:max⁡ωmin⁡P∈CL(P,ω)\max\limits_{\omega} \min\limits_{P \in \mathcal {C} } L(P,\omega)ωmaxPCminL(P,ω)


先求对偶问题内部的极小化问题 min⁡P∈CL(P,ω)\min\limits_{P \in \mathcal {C} } L(P,\omega)PCminL(P,ω), min⁡P∈CL(P,ω)\min\limits_{P \in \mathcal {C} } L(P,\omega)PCminL(P,ω)ω\omegaω 的函数,记为:
Ψ(ω)=min⁡P∈CL(P,ω)=L(Pω,ω)\Psi(\omega) = \min\limits_{P \in \mathcal{C}}L(P,\omega) = L(P_\omega , \omega)Ψ(ω)=PCminL(P,ω)=L(Pω,ω), 称为对偶函数
对偶函数的解记为:Pω=arg min⁡P∈CL(P,ω)=Pω(y∣x)P_\omega = \argmin\limits_{P \in \mathcal {C} }L(P,\omega) = P_\omega(y|x)Pω=PCargminL(P,ω)=Pω(yx)

L(P,ω)L(P,\omega)L(P,ω)P(y∣x)P(y|x)P(yx) 求偏导数:

∂L(P,ω)∂P(y∣x)=∑x,yP~(x)(log⁡P(y∣x)+1)−∑yω0−∑x,y(P~(x)∑i=1nωifi(x,y))=∑x,yP~(x)(log⁡P(y∣x)+1−ω0−∑i=1nωifi(x,y))\begin{aligned} \frac{\partial L(P,\omega) }{\partial P(y|x)} &= \sum\limits_{x,y} \tilde P(x) (\log P(y|x)+1) - \sum\limits_y \omega_0 -\sum\limits_{x,y}\Bigg(\tilde P(x) \sum\limits_{i=1}^n \omega_if_i(x,y) \Bigg)\\ &= \sum\limits_{x,y} \tilde P(x) \Bigg(\log P(y|x) + 1 - \omega_0 - \sum\limits_{i=1}^n \omega_if_i(x,y) \Bigg) \end{aligned} P(yx)L(P,ω)=x,yP~(x)(logP(yx)+1)yω0x,y(P~(x)i=1nωifi(x,y))=x,yP~(x)(logP(yx)+1ω0i=1nωifi(x,y))

令偏导数等于0,在 P~(x)>0\tilde P(x) > 0P~(x)>0 的情况下,有

P(y∣x)=exp⁡(∑i=1nωifi(x,y)+ω0−1)=exp⁡(∑i=1nωifi(x,y))exp⁡(1−ω0)P(y|x) = \exp \Bigg( \sum\limits_{i=1}^n \omega_if_i(x,y) + \omega_0 -1 \Bigg) = \frac{\exp \Bigg( \sum\limits_{i=1}^n \omega_if_i(x,y) \Bigg)}{\exp (1- \omega_0)}P(yx)=exp(i=1nωifi(x,y)+ω01)=exp(1ω0)exp(i=1nωifi(x,y))

由于 ∑yP(y∣x)=1\sum\limits_y P(y|x) = 1yP(yx)=1, 得

Pω(y∣x)=1Zω(x)exp⁡(∑i=1nωifi(x,y)),其中Zω(x)=∑yexp⁡(∑i=1nωifi(x,y))\color{red} P_\omega(y|x) = \frac{1}{Z_\omega(x)} \exp \Bigg( \sum\limits_{i=1}^n \omega_if_i(x,y) \Bigg), 其中 Z_\omega(x) = \sum\limits_y\exp \Bigg( \sum\limits_{i=1}^n \omega_if_i(x,y) \Bigg)Pω(yx)=Zω(x)1exp(i=1nωifi(x,y)),Zω(x)=yexp(i=1nωifi(x,y))

Zω(x)Z_\omega(x)Zω(x) 是规范化因子; fi(x,y)f_i(x,y)fi(x,y) 是特征函数;ωi\omega_iωi 是特征的权值。
红色部分就是最大熵模型,ω\omegaω 是ME模型中的参数向量。


再求解对偶问题外部的极大化问题 max⁡ωΨ(ω)\max\limits_\omega \Psi(\omega)ωmaxΨ(ω)
其解记为 ω∗\omega^*ω, ω∗=arg max⁡ωΨ(ω)\omega^* = \argmax\limits_\omega \Psi(\omega)ω=ωargmaxΨ(ω)

应用最优化算法求对偶函数 Ψ(ω)\Psi(\omega)Ψ(ω) 的极大化, 得到 ω∗\omega^*ω, 用来表示 P∗∈CP^* \in \mathcal{C}PC, 这里 P∗=Pω∗=Pω∗(y∣x)P^* = P_{\omega^*} = P_{\omega^*}(y|x)P=Pω=Pω(yx) 是学习到的最优模型(最大熵模型)。

2.4 例题

假设随机变量 XXX 有5个取值 {A,B,C,D,E}\{A,B,C,D,E\}{A,B,C,D,E},要估计各个值的概率 P(A),P(B),P(C),P(D),P(E)P(A),P(B),P(C),P(D),P(E)P(A),P(B),P(C),P(D),P(E),其中 P(A)+P(B)=310P(A)+P(B) = \frac{3}{10}P(A)+P(B)=103,求最大熵模型。

解:

y1,y2,y3,y4,y5y_1,y_2,y_3,y_4,y_5y1,y2,y3,y4,y5 表示 A,B,C,D,EA,B,C,D,EA,B,C,D,E,最大熵模型学习的最优化问题是:

min⁡−H(P)=∑i=15P(yi)log⁡P(yi)\min \quad -H(P) = \sum\limits_{i=1}^5 P(y_i) \log P(y_i)minH(P)=i=15P(yi)logP(yi)
s.t.P(y1)+P(y2)=P~(y1)+P~(y2)=310s.t. \quad\quad P(y_1)+P(y_2) = \tilde P(y_1)+\tilde P(y_2) = \frac{3}{10}s.t.P(y1)+P(y2)=P~(y1)+P~(y2)=103
∑i=15P(yi)=∑i=15P~(yi)=1\quad\quad\quad \sum\limits_{i=1}^5 P(y_i) = \sum\limits_{i=1}^5 \tilde P(y_i) = 1i=15P(yi)=i=15P~(yi)=1

  • 引进拉格朗日乘子 ω0,ω1\omega_0, \omega_1ω0,ω1 , 定义拉格朗日函数:

L(P,ω)=∑i=15P(yi)log⁡P(yi)+ω1(P(y1)+P(y2)−310)+ω0(∑i=15P(yi)−1)L(P,\omega) = \sum\limits_{i=1}^5 P(y_i) \log P(y_i) + \omega_1 \Bigg(P(y_1)+P(y_2) - \frac{3}{10} \Bigg) + \omega_0 \Bigg( \sum\limits_{i=1}^5 P(y_i)-1 \Bigg)L(P,ω)=i=15P(yi)logP(yi)+ω1(P(y1)+P(y2)103)+ω0(i=15P(yi)1)

根据拉格朗日对偶性,可以通过求解对偶最优化问题得到原始最优化问题的解,所以求解:max⁡ωmin⁡PL(P,ω)\max\limits_\omega \min\limits_P L(P,\omega)ωmaxPminL(P,ω)

  • 求解 L(P,ω)L(P,\omega)L(P,ω) 关于 PPP 的极小化问题,求偏导:

∂L(P,ω)∂P(y1)=1+log⁡P(y1)+ω1+ω0∂L(P,ω)∂P(y2)=1+log⁡P(y2)+ω1+ω0∂L(P,ω)∂P(y3)=1+log⁡P(y3)+ω0∂L(P,ω)∂P(y4)=1+log⁡P(y4)+ω0∂L(P,ω)∂P(y5)=1+log⁡P(y5)+ω0\begin{aligned} \frac{\partial L(P,\omega)}{\partial P(y_1)} &= 1+\log P(y_1) + \omega_1 + \omega_0\\ \frac{\partial L(P,\omega)}{\partial P(y_2)} &= 1+\log P(y_2) + \omega_1 + \omega_0\\ \frac{\partial L(P,\omega)}{\partial P(y_3)} &= 1+\log P(y_3) + \omega_0\\ \frac{\partial L(P,\omega)}{\partial P(y_4)} &= 1+\log P(y_4) + \omega_0\\ \frac{\partial L(P,\omega)}{\partial P(y_5)} &= 1+\log P(y_5) + \omega_0\\ \end{aligned} P(y1)L(P,ω)P(y2)L(P,ω)P(y3)L(P,ω)P(y4)L(P,ω)P(y5)L(P,ω)=1+logP(y1)+ω1+ω0=1+logP(y2)+ω1+ω0=1+logP(y3)+ω0=1+logP(y4)+ω0=1+logP(y5)+ω0

  • 令各偏导数等于0,解得:
    P(y1)=P(y2)=e−ω1−ω0−1P(y3)=P(y4)=P(y5)=e−ω0−1\begin{aligned} P(y_1) &= P(y_2) = e^{-\omega_1-\omega_0-1}\\ P(y_3) &= P(y_4) = P(y_5) = e^{-\omega_0-1} \end{aligned} P(y1)P(y3)=P(y2)=eω1ω01=P(y4)=P(y5)=eω01

于是:
min⁡PL(P,ω)=L(Pω,ω)=−2e−ω1−ω0−1−3e−ω0−1−310ω1−ω0\min\limits_P L(P,\omega) = L(P_\omega,\omega) = -2e^{-\omega_1-\omega_0-1}-3e^{-\omega_0-1}-\frac{3}{10}\omega_1-\omega_0PminL(P,ω)=L(Pω,ω)=2eω1ω013eω01103ω1ω0

  • 再求解 L(Pω,ω)L(P_\omega,\omega)L(Pω,ω) 关于 ω\omegaω 的极大化问题:

max⁡ωL(Pω,ω)=−2e−ω1−ω0−1−3e−ω0−1−310ω1−ω0\max\limits_\omega L(P_\omega,\omega) = -2e^{-\omega_1-\omega_0-1}-3e^{-\omega_0-1}-\frac{3}{10}\omega_1-\omega_0ωmaxL(Pω,ω)=2eω1ω013eω01103ω1ω0
上式对 ω0,ω1\omega_0, \omega_1ω0,ω1求偏导数并令其等于0,有:
e−ω1−ω0−1=320e^{-\omega_1-\omega_0-1} = \frac{3}{20}eω1ω01=203
e−ω0−1=730e^{-\omega_0-1} = \frac{7}{30}eω01=307

于是求得概率分布:
P(y1)=P(y2)=320P(y3)=P(y4)=P(y5)=730\begin{aligned} P(y_1) &= P(y_2) = \frac{3}{20}\\ P(y_3) &= P(y_4) = P(y_5) = \frac{7}{30} \end{aligned} P(y1)P(y3)=P(y2)=203=P(y4)=P(y5)=307

3. 模型学习的最优化算法

常用的方法有 改进的迭代尺度法、梯度下降法、牛顿法或拟牛顿法。牛顿法或拟牛顿法一般收敛速度更快。
(略)

4. 鸢尾花LR分类实践

基于sklearn的LogisticRegression二分类实践

基于sklearn的LogisticRegression鸢尾花多类分类实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)【Dalston版】

已经有非常长的时间没有更新《Spring Cloud构建微服务架构》系列文章了&#xff0c;自从开始写Spring Cloud的专题内容开始就获得了不少的阅读量和认可&#xff0c;当然也有一些批评&#xff0c;其中也不乏一些很中肯的意见和深度的问题&#xff0c;对我来说也是进一步提高的契…

虚拟专辑丨知识图谱

虚 拟 专 辑 “武大学术期刊”的“虚拟专辑” 旨在将已发表在武汉大学科技期刊中心旗下期刊的论文以时下热点领域按主题重新组合&#xff0c;集中推送&#xff0c;以方便不同专业领域的读者集中查阅、追踪最新研究成果。此次推送的“知识图谱”虚拟专辑&#xff0c;为近几年发…

prompt你到底行不行?

文 | 马杀鸡三明治 源 | 知乎 很久之前老板下任务要试试prompt这个大风&#xff0c;但是玩完后发现太菜了所以连文章都没写&#xff0c;刚好今天工作比较闲就来写写了。 先上结论&#xff0c;连续prompt为运用大模型提供了一种思路&#xff0c;其实这种思路早就见过不少了。。。…

LeetCode 1323. 6 和 9 组成的最大数字

1. 题目 给你一个仅由数字 6 和 9 组成的正整数 num。 你最多只能翻转一位数字&#xff0c;将 6 变成 9&#xff0c;或者把 9 变成 6 。 请返回你可以得到的最大数字。 示例 1&#xff1a; 输入&#xff1a;num 9669 输出&#xff1a;9969 解释&#xff1a; 改变第一位数字…

Spring Cloud实战小贴士:Zuul统一异常处理(二)

在前几天发布的《Spring Cloud实战小贴士&#xff1a;Zuul统一异常处理&#xff08;一&#xff09;》一文中&#xff0c;我们详细说明了当Zuul的过滤器中抛出异常时会发生客户端没有返回任何内容的问题以及针对这个问题的两种解决方案&#xff1a;一种是通过在各个阶段的过滤器…

论文浅尝 | Explainable Link Prediction in Knowledge Hypergraphs

笔记整理&#xff1a;陈子睿&#xff0c;天津大学硕士论文链接&#xff1a;https://dl.acm.org/doi/10.1145/3511808.3557316动机知识超图链接预测已被认为是各种知识使能下游应用的关键问题。然而&#xff0c;大多数现有方法主要以黑盒方式执行链接预测&#xff0c;它们学习实…

吴恩达入驻知乎,涨粉秒过万!知乎首答:如何系统学习机器学习

文 | 卖萌酱大家好&#xff0c;我是卖萌酱。昨天在知乎timeline上刷到一个问题&#xff1a;虽然卖萌酱已经不需要系统学习机器学习了&#xff0c;但无意间发现最高赞的id竟然叫“吴恩达”&#xff1f;&#xff1f;好家伙&#xff0c;看了看回答日期&#xff0c;是4月8号。戳进去…

学术会议|第六届知识图谱论坛CNCC-知识图谱赋能大数据大算力

CNCC2022将于12月8日至10日在贵州省贵阳市国际生态会议中心举办&#xff0c;今年CNCC技术论坛数量达到122个&#xff0c;内容涵盖了“计算行业、人工智能、云计算、教育、安全”等30个方向。本文特别介绍将于12月9日举行的【第六届知识图谱论坛-知识图谱赋能大数据大算力】。报…

LeetCode 第 18 场双周赛(188/587,前32%)

文章目录1. 比赛结果2. 题目LeetCode 1331. 数组序号转换 easyLeetCode 1328. 破坏回文串 mediumLeetCode 1329. 将矩阵按对角线排序 mediumLeetCode 1330. 翻转子数组得到最大的数组值 hard1. 比赛结果 做出来了1, 2, 3题&#xff0c;第4题提交超时 2. 题目 LeetCode 1331.…

Spring Cloud实战小贴士:Zuul统一异常处理(一)

在上一篇《Spring Cloud源码分析&#xff08;四&#xff09;Zuul&#xff1a;核心过滤器》一文中&#xff0c;我们详细介绍了Spring Cloud Zuul中自己实现的一些核心过滤器&#xff0c;以及这些过滤器在请求生命周期中的不同作用。我们会发现在这些核心过滤器中并没有实现error…

ACL’22 | 为大模型定制的数据增强方法FlipDA,屠榜六大NLU 数据集

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

技术动态 | 面向可解释性的知识图谱推理研究

导读&#xff1a;本次演讲的主题是面向可解释性的知识图谱推理研究&#xff0c;报告分为以下 5 个部分&#xff1a;研究背景前沿进展研究动机近期研究研究展望分享嘉宾&#xff5c;万国佳 武汉大学 计算机学院 博士后编辑整理&#xff5c;xiaomei出品平台&#xff5c;DataFunTa…

LeetCode 1332. 删除回文子序列

1. 题目 给你一个字符串 s&#xff0c;它仅由字母 ‘a’ 和 ‘b’ 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。 返回删除给定字符串中所有字符&#xff08;字符串为空&#xff09;的最小删除次数。 「子序列」定义&#xff1a;如果一个字符串可以通过删除原字符…

Spring Cloud源码分析(四)Zuul:核心过滤器

通过之前发布的《Spring Cloud构建微服务架构&#xff08;五&#xff09;服务网关》一文&#xff0c;相信大家对于Spring Cloud Zuul已经有了一个基础的认识。通过前文的介绍&#xff0c;我们对于Zuul的第一印象通常是这样的&#xff1a;它包含了对请求的路由和过滤两个功能&am…

预训练再次跨界!百度提出ERNIE-GeoL,地理位置-语言联合预训练!

源 | 百度NLP本文介绍『文心大模型』的一项最新工作&#xff1a;“地理位置-语言”预训练模型ERNIE-GeoL。论文链接&#xff1a;https://arxiv.org/abs/2203.09127实践中的观察近年来&#xff0c;预训练模型在自然语言处理、视觉等多个领域都取得了显著效果。基于预训练模型&am…

LeetCode 1333. 餐厅过滤器(Lambda排序)

1. 题目 给你一个餐馆信息数组 restaurants&#xff0c;其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。 其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false&#xff0c;如果为 true …

Spring Cloud实战小贴士:Zuul处理Cookie和重定向

由于我们在之前所有的入门教程中&#xff0c;对于HTTP请求都采用了简单的接口实现。而实际使用过程中&#xff0c;我们的HTTP请求要复杂的多&#xff0c;比如当我们将Spring Cloud Zuul作为API网关接入网站类应用时&#xff0c;往往都会碰到下面这两个非常常见的问题&#xff1…

论文浅尝 | Language Models (Mostly) Know What They Know

笔记整理&#xff1a;程思源、梁孝转&#xff0c;浙江大学在读硕士&#xff0c;研究方向为知识图谱的表示学习&#xff0c;自然语言处理&#xff0c;预训练对于一个语言模型&#xff0c;我们最终希望得到一个“诚实”的人工智能系统&#xff0c;即语言模型需要准确并且忠实地评…

百度AI技术盛宴来了!大咖齐聚解读CV/NLP/跨模态大模型技术!

随着人工智能步入工业大生产阶段&#xff0c;AI大模型正在加速走出实验室&#xff0c;在全球范围内逐步实现产业落地应用的突破。自2020年至今&#xff0c;越来越多的科技巨头和科研机构参与其中。去年12月&#xff0c;百度发布了全球首个知识增强千亿级大模型——鹏城-百度文心…

Spring Cloud实战小贴士:健康检查

今天在博客的交流区收到一条不错的问题&#xff0c;拿出来给大家分享一下。具体问题如下&#xff1a; 因为项目里面用到了redis集群&#xff0c;但并不是用spring boot的配置方式&#xff0c;启动后项目健康检查老是检查redis的时候状态为down&#xff0c;导致注册到eureka后项…