| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> Logistic回归 -> 正文阅读 |
|
[人工智能]Logistic回归 |
一 .基于Logistic回归函数和Sigmoid函数的分类 在讨论Logistic函数前,我们不妨先来了解几个概念: 1.事件的几率:它是指某事件发生的概率和该事件不发生的概率的比值.无妨设事件发生的概率为p,那么显然 事件的几率 : ? 我们将该几率取对数,即可得到其对数几率: ? 我们想要的函数应该是,接受输入的特征,然后输出预测的类别,例如处理二分类问题,我们应该得到0或者1(你是不是想起了海维塞德阶跃函数???),然而此处我们并用不到它(因为其在跳跃点上瞬间从0跳跃到1),所以我们要寻求更好的选择: 我们把输入特征x时,分类为1的概率线性表示: ? 经过简单的取反运算我们就得到了Sigmoid函数: 其图像如图所示: ? 图1 当x=0时,Sigmoid函数的值为0.5,随着x的无限增大,函数值将逼近1,随着x的无限减小,函数值将无限逼近于0. 当横坐标足够大的时候,我们就可以将Sigmoid函数视为一个单位阶跃函数(如图1下). 那么问题来了,如何实现将横坐标放大呢? 那当然就是在每个特征上乘以一个系数(将之称为回归系数),然后将所有结果相加,将结果作为Sigmoid函数的输入,如此我们就得到了一个在(0,1)之间的输出结果.我们将大于0.5的数据归为1类,小于0.5的数据归为0类,这样就达到了分类的目的. 现在我们已经确定了分类函数,是不是就意味着我们可以进行分类了呢? 其实不然,事实上我们还没有确定最佳的回归系数 *二.最优化方法确定最佳回归系数 Sigmoid函数的输入记为 z 其中向量 X 是分类器的输入数据,w为我们所寻求的最佳回归系数 1.梯度上升法 (1).基本思想:要找到某个函数的最大值,我们只需要沿着函数的梯度方向移动,并循环迭代直到满足条件.(事实上这对函数有一定要求——在待计算的点,函数必须有定义且可微。 我们将梯度记 ? ,则函数f(x,y)的梯度如下表示: 这样每次沿 x 方向移动 梯度上升法的迭代公式如下: ? 下图为一个实例: 三.通过梯度上升法获取最佳回归系数
Sigmoid函数
下面我们进行可视化并画出决策边界:
得到结果如下图所示: 事实上分类效果还是不错的,但我们还需要注意该拟合函数是如何确定的呢?
对于这一步:事实上我们将Sigmoid函数设置为0,上面已经提到0是该二分类的的分界线,即 ?由此即可得到x1,x2的关系式 观察代码,我们可以发现每次更新回归系数时,都需要遍历整个数据集,时间复杂度是极高的,在处理成千上万的数据时,计算的复杂度非常之高,我们可以通过下面的随机梯度上升法来训练.
有兴趣的小伙伴可以对比学习一下二者的区别(笔者太懒)
四.分类器的构建(以疝气病症预测病马的死亡率为例)
结果如下:
坑外话:由于笔者水平太浅,如有错误敬请提出 数据集可到本人git上下载.地址:https://github.com/lei324/First-Repository |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 0:18:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |