| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 机器学习实验2 - 逻辑回归 -> 正文阅读 |
|
[人工智能]机器学习实验2 - 逻辑回归 |
一、实验原理1.什么是逻辑回归 (LogisticRegression)? ? ? ? 逻辑回归实际上是一种分类模型,往往用来解决二分类问题(0 or 1)。比如某用户购买某商品的可能性,某病人患有某种疾病的可能性。 Logistic 回归的本质是:假设数据服从某种分布,然后使用极大似然估计做参数的估计。
2.如何得到模型的函数逻辑回归模型的数学形式确定后,剩下就是如何去求解模型中的参数。 在统计学中,常常使用极大似然估计法来求解,即找到一组参数,使得在这组参数下,我们的数据的似然度(概率)最大。
为了更方便求解,我们对等式两边同取对数,写成对数似然函数: ? ?找到令l(w)最大的w,就是我们要找的模型 ?在l(w)公式上加个负号,得到的损失函数表示 ?我们发现交叉熵公式跟之前的逻辑回归损失函数完全一致,也就是说逻辑回归的损失函数其实就是交叉熵 ?3.如何求解最小化代价函数求得代价函数后,接下来的任务就是最小化代价函数,常见的方法就是梯度下降法, 梯度公式推导如下: 对似然函数求导得到梯度 ? ?所以梯度下降时候的迭代式子为: 为了防止过拟合加入正则项后为: ?? ?二、实验过程1.生成数据:首先我们要生成测试数据,分别是高斯分布的正例数据和反例数据 此方法需要用到的函数: ①生成一个多元正态(高斯)分布矩阵:
②list和numpy数组的“:”操作
?正例数据在前,反例数据在后
? 2.梯度下降法使用实验1中接触到的梯度下降法最小化代价函数 输入训练集x,训练集真实类别y, param eta: 学习率 param penality_lambda: 正则项系数 当前梯度与步长迭代后会使得损失函数下降后 更新θ 直到梯度变成一个极小值或者迭代到一定次数后退出迭代 3.计算正确率计算ω ? x 的值,与0比较,若大于或者等于零预测为1;小于0预测为0.统计预测正确的样本数correct_count ,计算预测的正确率correct_count / train_size 4.读取实际数据采用了 UCI 网站上找到 Skin_NonSkin.txt 文件进行测试,由于每一个数据都是三维的,所以画了三维的图来显式地表示分类情况。
读取数据时,由于样本数量过于庞大,采取500的步长选取数据,并对样本点x值进行100的坐标平移便于显示 ? ? load_data = np.loadtxt('./Skin_NonSkin.txt', dtype=np.int32) ? ? train_data = load_data[:load_data_size, :] ?# 训练集数据 ? ? train_x = train_x[::step] ? ? train_x = train_x - 100 ?# 对样本点进行坐标平移 三、实验结果与分析1.有惩罚项,满足朴素贝叶斯假设?===============================>有无正则项 #生成两组组均值分别是[?2,?2],[2,2],方差为2,协方差为0,正则项权重为0 的高斯分布样本点,用梯度下降法进行迭代求解的结果: 无正则项: 有正则项=0.001 (表现最好的正则值) 2.不满足/满足朴素贝叶斯假设===========================>是否符合朴素贝叶斯 Gaussian_test(100, [-2, -2], [2, 2], 3, 0.5, 0.001, 1000000, 10) ? ?#93%(cov=0.5) ? ?Gaussian_test(100, [-2, -2], [2, 2], 3, 2, 0.001, 1000000, 10) ? ? ?#89.5%(cov=2) ? ? ?Gaussian_test(100, [-2, -2], [2, 2], 3, 5, 0.001, 1000000, 10) ? ? ?#83%(cov=5) 通过以上的测试可以看出, 在二维条件下,是否有惩罚项对分类影响不大,但当减小训练集时,所得到的判别函数确实存在过拟合现象,加入正则项可以预防此现象的发生。? 逻辑回归分类器在在满足朴素贝叶斯假设时分类良好,在不满足朴素贝叶斯假设时且协方差较小时,分类效果也与满足时相差并不大,可能是由于数据维度只有二维,不会发生较大的偏差。不过cov过大时正确率会存在下降。 3.真实skin数据集测试1)Skin_NonSkin.txtaccuracy rate: 94.09% ?2)Iris3Txt由于是多维数据没有做图,accuracy rate: 96.67% ?在UCI数据的表现大致相同,判别准确率在90%~95%,在一些数据很差的数据集中准确率有所下降(比如正例反例数量不均等) ? ?四、结论1.逻辑回归并没有对数据的分布进行建模,也就是说,逻辑回归模型并不知道数据的具体分布,而是直接根据已有的数据求解分类超平面。 5.在 UCI 上找的数据以及自己的生成数据上的准确率基本都在 90% 以上,说明逻辑回归是一个比较不错的线性分类模型。但数据本身的分布对实验结果影响较大,需要满足数据本身就是线性可分的,否则正确率下降严重 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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 8:37:21- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |