老生常谈的话题分类问题和回归问题之间有一个重要的区别。从根本上说,分类是关于预测标签,回归是关于预测数量。
我经常看到这样的问题:
如何计算回归问题的准确度?
像这样的问题表明没有真正理解分类和回归之间的区别以及试图衡量的准确性。
预测建模 是使用历史数据开发模型以对我们没有答案的新数据进行预测的问题。
预测建模可以描述为从输入变量 (X) 到输出变量 (y) 逼近映射函数 (f) 的数学问题。这称为函数逼近问题。建模算法的工作是在给定可用时间和资源的情况下找到最佳映射函数。
一般来说,我们可以将所有的函数逼近任务分为分类任务和回归任务。
分类预测建模是从输入变量 (X) 到离散输出变量 (y) 逼近映射函数 (f) 的任务。
输出变量通常称为标签或类别。映射函数预测给定观察的类别或类别。
例如,一封文本电子邮件可以归类为属于以下两类之一:“垃圾邮件”和“非垃圾邮件”。
分类模型通常将连续值预测为给定示例属于每个输出类的概率。概率可以解释为属于每个类的给定示例的可能性或置信度。通过选择具有最高概率的类标签,可以将预测概率转换为类值。
例如,特定的文本电子邮件可能被指定为 0.1 为“垃圾邮件”的概率和 0.9 为“非垃圾邮件”的概率。我们可以通过选择“非垃圾邮件”标签将这些概率转换为类别标签,因为它具有最高的预测可能性。
有很多方法可以估计分类预测模型的技能,但最常见的方法可能是计算分类准确度。
分类准确率是所有预测中正确分类的示例的百分比。
例如,如果一个分类预测模型做出了 5 个预测,其中 3 个是正确的,2 个是错误的,那么仅基于这些预测的模型的分类精度将是:
accuracy = correct predictions / total predictions * 100
accuracy = 3 / 5 * 100
accuracy = 60%
能够学习分类预测模型的算法称为分类算法。
回归预测建模是将映射函数 (f) 从输入变量 (X) 逼近到连续输出变量 (y) 的任务。
连续输出变量是实数值,例如整数或浮点值。这些通常是数量,例如数量和大小。
例如,可以预测一所房子以特定的美元价值出售,可能在 200,000。
因为回归预测模型预测一个数量,所以模型的技能必须在这些预测中报告为错误。
有很多方法可以估计回归预测模型的技能,但最常见的方法可能是计算均方根误差,缩写为 RMSE。
例如,如果回归预测模型进行了 2 个预测,其中一个是 1.5,其中预期值为 1.0,另一个是 3.3,预期值为 3.0,则 RMSE 将为:
RMSE = sqrt(average(error^2))
RMSE = sqrt(((1.0 - 1.5)^2 + (3.0 - 3.3)^2) / 2)
RMSE = sqrt((0.25 + 0.09) / 2)
RMSE = sqrt(0.17)
RMSE = 0.412
RMSE 的一个好处是误差分数的单位与预测值的单位相同。
能够学习回归预测模型的算法称为回归算法。
一些算法的名称中带有“回归”一词,例如线性回归和逻辑回归,这可能会使事情变得混乱,因为线性回归是一种回归算法,而逻辑回归是一种分类算法。
分类预测建模问题不同于回归预测建模问题。
分类是预测离散类标签的任务。
回归是预测连续数量的任务。
分类和回归算法之间存在一些重叠;例如:
一些算法经过小的修改即可用于分类和回归,例如决策树和人工神经网络。某些算法不能或不能轻松用于这两种问题类型,例如用于回归预测建模的线性回归和用于分类预测建模的逻辑回归。
重要的是,我们评估分类和回归预测的方式各不相同并且不会重叠,例如:
在某些情况下,可以将回归问题转换为分类问题。例如,要预测的数量可以转换为离散的桶。
例如,金额在以下连续范围内 100 可以转换为 2 个类别:
class_type_1: 0-49
class_type_2: 50-100
这通常称为离散化,结果输出变量是一个分类,其中标签具有有序关系(称为序数)。
在某些情况下,分类问题可以转换为回归问题。例如,可以将标签转换为连续范围。
一些算法已经通过预测每个类别的概率来做到这一点,而这些概率又可以缩放到特定范围:
quantity = min + probability * range
或者,类值可以排序并映射到连续范围:
class_type_1: 0-49
class_type_2: 50-100
如果分类问题中的类标签没有自然的序数关系,从分类到回归的转换可能会导致令人惊讶或糟糕的性能,因为模型可能会学习到从输入到连续输出范围的错误或不存在的映射。
文章浏览阅读3.3k次。自己试了vxe-table的官方文档方法,没有成功。最后使用了原生的方法scrollTo()实现了,加入计时器效果更明显 setTimeout(() => { document .getElementsByClassName("vxe-table--body-wrapper")[0] .scrollTo(0, this.$refs.xTable2.tableHeight); }, 500);..._vxe-table 滚动到某一行
文章浏览阅读426次。Apk文件的格式Android application package文件。每个要安装到android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制代码、资源、配置文件等。apk文件实际是一个zip压缩包,可以通过解压缩工具解开。可以用zip解开*.apk文件,下面是一个helloword的apk示例文件。|– AndroidManifest.xml |– ME..._@ref/0x7f070000是什么意思
文章浏览阅读1w次,点赞8次,收藏3次。Python、unittest_python 测试套加载环境文件
文章浏览阅读725次。今天又一次搞Linux生产环境搭建。这是种步骤很多,很繁琐而且又不得不做的事情。虽然做过很多次,但还是有很多步骤、命令不记得,每一次到处找资料很麻烦,于是将一些步骤记下,以便查找。登录远程MySQLmysql -h 192.168.1.100 -u root -p给MySQl非root账户分配权限给账号user1 密码为123456 的用户testDB数据库的所有表的select,insert,u..._dt命令
文章浏览阅读85次。In computer science, aheapis a specialized tree-based data structure that satisfies the heap property: if P is a parent node of C, then the key (the value) of P is either greater than or equal to (i..._该数的立方分解为一串连续奇数的和 样例输入 13 样例输出 13*13*13=2197=157+159+
文章浏览阅读6.2k次,点赞4次,收藏15次。Linux ln(英文全拼:link files)命令是一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。如果文件被删除,则软链接文件失去指向,变为不可用如果文件被删除,由于硬链接文件直接指向内容,因此不受影响。_linux ln -s
文章浏览阅读1w次。NanoPi NEO3上手日记第二天——装个WiFi_rtl8811cu openwrt
文章浏览阅读852次。故事的开始一个咖啡劲儿已经消退了的午后,业务大大突然笑眯眯的对我说:"Presto insert Mysql 特别慢,跑了几十分钟了,一直 13% 左右, 你,帮忙看看?"。第一反应就是: "嗯?难道出大问题了?",老实讲,有一点点小兴奋。一顿操作猛如虎紧接着,大概进行了如下几个猛如虎的操作:Presto 监控看起来,嗯~有一个 Stage 很慢,但是又没有死,大概十几K Row/s 的速度在爬..._presto insert
文章浏览阅读5.3k次。用nvm安装的node使用很正常,突然有天npm报错npm -vnpm不存在node -vnode不存在_error: cannot find module 'e:\devtools\nodejs\node_modules\npm\bin\npm-cli.j
文章浏览阅读930次。由于系统总是偶然出问题,记录此文以便快速恢复环境。基本环境设置密码$ sudo passwd root$ sudo passwd 用户名更换源为清华源 or else系统更新$ apt update$ apt fullupgrade$ apt autoremove$ apt autoclean配置SSH$ apt install openssh-server$ /etc/init.d/ssh start支持32位$ dpkg --add-archite_ctf实验机的输入法换出来
文章浏览阅读2.7w次,点赞189次,收藏1.4k次。题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。_c语言代码
文章浏览阅读940次,点赞3次,收藏10次。输入的格式限定有待完善#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>using namespace std;const int inf=0x3f3f3f3f;#define OK 1#define ERROR 0typedef i..._链栈计算器