神经网络入门:对数几率回归算法
什么是回归?
回归是损失函数的一种说法,在本文中的对数几率回归的损失函数可以表示为
ylna+(1-y)ln(1-a);其中a为激活函数输出,y为真实值;
意义:当a趋近于0时且y趋近于0时,预测与实际一致,损失函数值为0;
当a趋近于1时且y趋近于1时,预测与实际一致,损失函数值为0;
这与上述函数所描述的现象一致;
为什么要回归?
回归(即损失函数)表征了模型输出值与真实值之间的差距,而模型的学习训练就是为了不断减小这个差距;
怎么利用代码实现?
该篇算法与感知机雷同,再构造一个类后,都是构造四个方法,分别为初始化__init__(),predict(), updatewb(), fit(); 不同的地方时,在predict时,由于不像感知机,在对数回归模型加入了激活函数的概念(即在线性模型(wx + b)后再加上一个非线性模型),这个激活函数可以使sigmod()、Relu、sign()、tanh();激活函数是的输出结果不再是1、0,而是1和0之间的任意实数,所以在predict时,只能将概率大于50%的算为1,不大于50%的算为0;梯度的表示方法为dL(a,y)/dz = dL(a,y)/da*(da/dz) = dL(a,y)/da*(d(激活函数)/dz);在该对数几率回归算法中,以sigmod()为激活函数,我们将算出 其梯度 为a-y;其中a为激活函数输出(有的地方也称为y'),z为线性函数输出,y为真实标签值;
下面给出对数回归算法类的构造代码:
import numpy as np
from sklearn import datasetsclass LOGBACK:def __init__(self, learnrate = 0.1, epoch = 10, modelw = [0.1, 0.1], modelb = 0):self.learnrate = learnrateself.epoch = epochself.modelw = modelwself.modelb = modelbdef activate(self,x):z = (np.dot(self.modelw,x) + self.modelb)return 1/(1 + np.exp(-z))def predict(self, x):if self.activate(x) >= 0.5:return 1else:return 0def loss(self, x, xlabel):a = self.activate(x)y = xlabelreturn y*np.log(a+0.000001) + (1-y)*np.log(1-a+0.0000001)def updatawb(self, x,xlabel):l = self.loss(x,xlabel)dz = self.activate(x) - xlabelself.modelw += -1*self.learnrate*dz*xself.modelb += -1*self.learnrate*dzprint(self.modelw,self.modelb,l)def fit(self, x, xlabel):m = len(x)loss = 0for i in range(self.epoch):correct = 0for j in range(m):if self.predict(x[j]) == xlabel[j]:correct += 1else:self.updatawb(x[j],xlabel[j]);if correct == m:print(self.epoch)breakprint(i)return (self.modelw, self.modelb)yangben1 = np.array([[1.9, 0.4], [1.6, 0.6]])
yangben2 = np.array([[3, 1.1]])
x = np.concatenate((yangben1,yangben2),axis = 0)
xlabel = [-1,-1,1]model = LOGBACK(0.6, 10, [1,1], 0)
print(model.modelw, model.modelb)
model.fit(x,xlabel)iris = datasets.load_iris()
x = iris.data[:100]
xlabel = iris.target[:100]
print(xlabel.shape)from sklearn.model_selection import train_test_split
(train, test,trainlabel,testlabel) = train_test_split(x,xlabel, test_size = 0.1,random_state = 1)
print(trainlabel.shape)model = LOGBACK(0.6, 100, [0.1,0.1,0.1,0.1], 0)
print(model.modelw, model.modelb)
(w,b) = model.fit(train,trainlabel) correct = 0
for i in range(len(testlabel)):if model.predict(test[i]) == testlabel[i]:correct += 1;
acc = correct/len(testlabel)
print(model.modelw)
print(model.modelb)
acc
神经网络入门:对数几率回归算法相关推荐
- 入门级对数几率回归算法
入门级对数几率回归算法(matlab实现) 对数几率回归模型是处理分类问题的算法,常用于垃圾邮件分类,天气预测等,很多文献也将其称为"逻辑回归".这里我采用西瓜书的西瓜数据集3.0 ...
- 机器学习入门学习笔记:(2.3)对数几率回归推导
理论推导 在以前的博客(机器学习入门学习笔记:(2.1)线性回归理论推导 )中推导了单元线性回归和多元线性回归的模型. 将线性回归模型简写为:y=ωTx+by = \omega^Tx+b: ...
- 机器学习-对数几率回归(逻辑回归)算法
文章目录 简介 激活函数 损失函数 优化算法 代码 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站. 简介 对数几率回归(Logistic Regre ...
- 个人总结:从 线性回归 到 逻辑回归 为什么逻辑回归又叫对数几率回归?
逻辑回归不是回归算法,是分类算法,可以处理二元分类以及多元分类. 线性回归 线性回归的模型是求出特征向量Y和输入样本矩阵X之间的线性关系系数θ,满足Y = Xθ.此时Y是连续的,所以是回归模型. 对应 ...
- 机器学习之逻辑回归(对数几率回归)
机器学习算法之逻辑回归(对数几率回归)- 做分类的 一.概述: 逻辑(logistic)回归, 又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域 ...
- 对数几率回归(Logistic Regression)总结
对数几率回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问题:预测一个连续的输出. 分类问题:离散输出,比如二分类问 ...
- 机器学习教程 之 线性模型:线性回归、对数几率回归、线性判别分析
常用的三个线性模型的原理及python实现--线性回归(Linear Regression).对数几率回归(Logostic Regression).线性判别分析(Linear Discriminan ...
- 机器学习-对数几率回归
目录 前言 一.对数几率回归的机器学习三要素 二.对数几率回归 2.1 算法原理 2.1.1 广义线性模型 2.1.2 对数几率回归 2.2 利用极大似然估计推导损失函数 2.2.1 确定概率密度(质 ...
- 对数几率回归原理和代码实现--机器学习
对数几率回归Logistic Regression 原理 代码实现 原理 对数几率回归,有的也叫逻辑回归,虽然带有回归二字,但本质是做分类任务的,也是线性模型的一种. 之前介绍过线性回归,就是用最简单 ...
最新文章
- 设计模式 之 《备忘录模式》
- 天使投资乱象频出 熟人元素何时剔除
- python3 三角函数
- 二维数组递归算法c语言,C语言课程设计--二维数组的按行求和及递归函数的编写简单家庭财务管理程序的设计.doc...
- 使用Websocket框架之GatewayWorker开发电商平台买家与卖家实时通讯
- Atitit 2019技术趋势与没落技术 目录 1.1. abcdAtitit 技术领域趋势 abcd研究总结AI(人工智能)BlockChain(区块链)、Cloud(云)、和Data(大数据)
- 流畅的Python(1)- 一摞Python风格的纸牌
- 华为星环大数据_星环大数据平台介绍,盘点星环大数据和华为大数据
- 计算机制图作品答辩,工程制图(第一章)答辩.ppt
- Spring Thymeleaf无法显示图片
- SpringCloud Gateway gatewayRequestUrl is missing
- 区块链:从理论走向实践--高盛公司(Glodman Sachs)发布过的报告
- NVIDIA TAO 工具包 (TAO Toolkit) 的部署和应用【LDR、LPR】
- 数据库学习7 — 嵌套查询
- mac系统恢复服务器上的安装器损坏,Mac提示App已损坏你应该将它移到废纸篓的解决方案-mac无法安装软件解决教程 - 河东软件园...
- 微信小程序开发之实现一个弹幕评论
- 电网负荷调度三维组态软件V2.0
- 阿里云邮箱短信验证和阿里云手机短信发送
- java运行时加音乐_Java运行窗体/程序添加自定义背景音乐
- zabbix监控第一台服务器