当前位置: 首页 > wzjs >正文

职业生涯规划用什么网站做测试西安做网站

职业生涯规划用什么网站做测试,西安做网站,南宁党员两学一做网站,ecs做网站【1】引言 回归就是找出散点的最佳拟合曲线; 逻辑回归是在找出散点的最佳拟合曲线之后,还要做一下分类。 【2】基本定义 【2.1】基本量定义 对于变量X{x1,x2,...,xn},假定每个元素xi的取值都只有0和1两种可能,其实这就是二项…

【1】引言

回归就是找出散点的最佳拟合曲线;

逻辑回归是在找出散点的最佳拟合曲线之后,还要做一下分类。

【2】基本定义

【2.1】基本量定义

对于变量X={x1,x2,...,xn},假定每个元素xi的取值都只有0和1两种可能,其实这就是二项分布(伯努利分布),相关文章链接为:

神经网络|(八)概率论基础知识-二项分布及python仿真-CSDN博客

p(x=1|X)=s(x)=sigmoid(\omega ^{T}x+b)=sigmoid(z^i)  (1)

式(1)中,\omega代表x对应的权重,b代表偏置。实际上这里是用线性的方式尝试拟合曲线。sigmoid()函数就是深度学习中经常使用的S型激活函数,它可以表征非线性的影响力。

sigmoid()函数的定义式为:

sigmoid(t)=\frac{1}{1+e^{-t}}  (2)

要想了解更多关于常见激活函数的内容,可通过下述文章回忆:

神经网络|(十二)|常见激活函数_各个激活函数代码-CSDN博客

逻辑回归常用的损失函数为交叉熵函数:

L(y^{i},h^{i})=-y^{i}log(h^{i})-(1-(y^{i}))log(1-(h^{i}))  (3)

式(3)中,y^{i},h^{i}分别是真实值和预测值。预测值根据sigmoid()函数计算得到。

在决策树学习中,曾了解信息熵的定义为:

Shonnentropy(y^{i})=-y^{i}log_{2}(y^{i})  (4)

如想回忆决策树的学习,可通过链接直达:

python学智能算法(八)|决策树-CSDN博客

python学智能算法(九)|决策树深入理解-CSDN博客

【2.2】梯度变化

在高等数学中,梯度往往用来寻找最快增长或者最快下降的方向。

判断拟合曲线是否最佳的方法是,计算预测值(拟合值)和真实值的偏差,也就是定义损失函数。对损失函数引入梯度,可以让这个偏差按照最大的速率下降到最小。

逻辑回归分析中,确认最佳拟合曲线其实就是找出两个关键参数:\omegab

因此,需要对损失函数分别对这两个参数求导,找出这两个参数的变化方向,再反复修正参数,最后才能获得最佳的拟合曲线。

损失函数求导计算前,为体现整体影响,需要先求整体的平均损失:

J(w,b)=\frac{1}{n}\sum_{1}^{n}L(y^{i},h^{i}) (5)

【2.2.1】偏置梯度

然后对b求导:

\frac{\partial J(w,b)}{\partial b}=\frac{\partial J(w,b)}{\partial h^i}\frac{\partial h^i}{\partial (z^i)}\frac{\partial (z^i)}{\partial b}  (6)

式(6)按照链式法则拆开了,需要逐步计算每一个环节:

\frac{\partial J(w,b)}{\partial h^i}=(\frac{1}{n})\frac{\partial \sum_{1}^{n}L(y^{i},h^{i}) }{\partial h^i}=(\frac{1}{n})\sum_{1}^{n}\frac{h^i-y^i}{h^i(1-h^i)}  (7)

\frac{\partial h^i}{\partial (z^i)}=s(z^i)(1-s(z^i))=h^i(1-h^i)  (8)

\frac{\partial (z^i)}{\partial b}=1  (9)

此时有:

\frac{\partial J(w,b)}{\partial b}=(\frac{1}{n})\sum_{1}^{n}(h^i-y^i)  (10)

实际上,式(10)回到了我们熟悉的模样,因为这个公式看上去就是预测值-真实值取了一个平均值,但实际上这个公式的获得经历了严格的推导。

仔细观察式(7)和式(8)可以看到,式(7)分式的分母和式(8)相同,定义sigmoid()函数的巧妙之处体现出来了。这也是促成式(10)体现出“直接定义预测值-真实值取一个平均值”表象的直接原因。

【2.2.2】权重梯度

\frac{\partial J(w,b)}{\partial \omega }=\frac{\partial J(w,b)}{\partial h^i}\frac{\partial h^i}{ \partial (z^i)}\frac{\partial (z^i)}{\partial \omega}  (11)

式(11)按照链式法则拆开了,需要逐步计算每一个环节。式(7)和式(8)已经计算完成,此时只需要计算最后一环:

\frac{\partial (z^i)}{\partial \omega}=x^i  (12)

此时有:

\frac{\partial J(w,b)}{\partial \omega}=(\frac{1}{n})\sum_{1}^{n}(h^i-y^i)x^i  (13)

综上所述,损失函数对权重\omega,偏置b的梯度分别如式(10)和(11)所示。

【3】代码测试

为掌握逻辑回归的运算规则,使用python编写代码,这里直接给出完整代码:

import numpy as np# 生成示例数据
def generate_data(n_samples=1000, n_features=10):# 生成特征矩阵 X,从标准正态分布中采样# 特征分布 X 为(n_samples行, n_features列)的数组X = np.random.randn(n_samples, n_features)# 真实的权重向量,随机生成# true_weights是一个n_features列的一维数组true_weights = np.random.randn(n_features)# 计算线性组合# 这里采用了矩阵点乘# X 为(n_samples行, n_features列)的数组,因为true_weights在右侧,所以true_weights是(n_feature行,1列)的一维数组# 点乘结果linear_combination是(n_samples行, 1)的数组linear_combination = np.dot(X, true_weights)# 使用sigmoid函数将线性组合转换为概率# sigmoid函数会对linear_combination数组中的每一个元素都进行转化probabilities = 1 / (1 + np.exp(-linear_combination))# 根据概率生成标签 y,以概率决定标签为 1 或 0# y是一个伯努利试验的结果,每个元素都只有一次试验机会,取到1的概率就是probabilities# probabilities是一个n_samples行, 1列)的数组,各个位置取到1的概率和这个位置的probabilities大小有关y = np.random.binomial(1, probabilities)return X, y# 定义sigmoid函数
def sigmoid(z):# sigmoid函数公式,将输入转换为 0 到 1 之间的概率值return 1 / (1 + np.exp(-z))# 定义逻辑回归模型的训练函数
def logistic_regression(X, y, learning_rate=0.01, num_iterations=1000):# 获取样本数量 n 和特征数量 m# 获得的 n是X的行数,m是X 的列数n, m = X.shape# 初始化权重向量,全部设为 0# 定义一个1行m列的纯0矩阵weights = np.zeros(m)# 初始化偏置项为 0bias = 0# for循环的次数num_iterations在函数定义的时候当做已知参数传入for _ in range(num_iterations):# 计算线性组合# 这里的X和 weights按照点乘的形式计算,也获得了(n_samples行, 1列)的数组# bias会自动广播,生成和np.dot(X, weights)形状相同,但每个位置的元素都相等的数组linear_combination = np.dot(X, weights) + bias# 通过sigmoid函数得到预测概率# y_pred也是(n_samples行, 1列)的数组y_pred = sigmoid(linear_combination)# 计算权重的梯度dw = (1 / n) * np.dot(X.T, (y_pred - y))# 计算偏置的梯度db = (1 / n) * np.sum(y_pred - y)# 使用梯度下降更新权重weights -= learning_rate * dw# 使用梯度下降更新偏置bias -= learning_rate * dbreturn weights, bias# 定义预测函数
def predict(X, weights, bias):# 计算线性组合linear_combination = np.dot(X, weights) + bias# 通过sigmoid函数得到预测概率probabilities = sigmoid(linear_combination)# 根据概率将预测结果转换为 0 或 1predictions = (probabilities >= 0.5).astype(int)return predictions# 定义计算准确率的函数
def accuracy(y_true, y_pred):# 计算预测正确的比例return np.mean(y_true == y_pred)# 生成数据
X, y = generate_data()# 划分训练集和测试集,这里简单地取前 80% 作为训练集,后 20% 作为测试集
train_size = int(0.8 * len(X))
X_train, X_test = X[:train_size], X[train_size:]
y_train, y_test = y[:train_size], y[train_size:]# 训练逻辑回归模型
weights, bias = logistic_regression(X_train, y_train)# 进行预测
y_pred = predict(X_test, weights, bias)# 计算准确率
acc = accuracy(y_test, y_pred)
print(f"模型的准确率为: {acc}")

代码中定义梯度的部分为:

# 计算权重的梯度
dw = (1 / n) * np.dot(X.T, (y_pred - y))
# 计算偏置的梯度
db = (1 / n) * np.sum(y_pred - y)

经过第二节的分析,这两行代码看上去有些“大道至简”。

对代码的详细解读将在下一篇文章进行。

【4】细节说明

定义交叉熵损失函数时,未指定对数函数的底数。追溯第二节的分析可以发现,底数几乎没有用处,因为核心的梯度计算结果均和底数无关。

【5】总结

学习了逻辑回归的基础知识。

http://www.dtcms.com/wzjs/531232.html

相关文章:

  • 用帝国cms系统怎么做网站安装百度到手机桌面
  • 找外地的做网站宣传软文是什么
  • iis 网站显示建设中软文写作公司
  • 洞头网站建设网站关键字优化公司
  • wordpress 特色图上海百度seo网站优化
  • 杭州市政府门户网站建设排名前十的大学
  • 泉州做网站优化价格江阴网站优化公司
  • 山东省住房和城乡建设厅官方网站关键词优化推广策略
  • 桐城做网站的公司培训学校网站
  • 网页隐藏网站代码怎样做app推广
  • 哈尔滨建立网站公司广州seo诊断
  • 全国今日疫情最新消息优化站点
  • 侧边栏wordpress主题优化技术基础
  • 做网站生成二维码怎么进行seo
  • 分工做网站如何全自动引流推广软件下载
  • 多城市网站如何做seo网站点击快速排名
  • 公司网站公众号维护怎么做百度推广客户端怎么登陆
  • 青岛网站建设电话广州网站优化工具
  • 企业数据湖南关键词优化排名推广
  • 甘肃建设厅执业资格注册中心网站百度指数的搜索指数
  • 两人做性视频网站百度竞价排名价格查询
  • 用微信公众平台做分类广告网站新乡seo推广
  • 建立一个网站如何开通账号抖音排名优化
  • 网站怎么发内容优化模板网站
  • 网站建设合同的验收表软文写作实训总结
  • 做按摩网站优化天津北京seo公司公司
  • 站长工具网站备案查询百度收录时间
  • 网站建设公司业务国内5大搜索引擎
  • 门户定制网站建设公司中国目前最好的搜索引擎
  • 网站界面设计教程悟空建站seo服务