��UԴ��
二分类问题的结果有四种:
逻辑在于,你的假U源码预测是positive-1和negative-0,true和false描述你本次预测的假U源码对错
true positive-TP:预测为1,预测正确即实际1
false positive-FP:预测为1,假U源码预测错误即实际0
true negative-TN:预测为0,假U源码预测正确即实际0
false negative-FN:预测为0,假U源码14天溯源码预测错误即实际1
混淆矩阵
直观呈现以上四种情况的假U源码样本数
准确率accuracy
正确分类的样本/总样本:(TP+TN)/(ALL)
在不平衡分类问题中难以准确度量:比如%的正样本只需全部预测为正即可获得%准确率
精确率查准率precision
TP/(TP+FP):在你预测为1的样本中实际为1的概率
查准率在检索系统中:检出的相关文献与检出的全部文献的百分比,衡量检索的假U源码信噪比
召回率查全率recall
TP/(TP+FN):在实际为1的样本中你预测为1的概率
查全率在检索系统中:检出的相关文献与全部相关文献的百分比,衡量检索的假U源码覆盖率
实际的二分类中,positive-1标签可以代表健康也可以代表生病,假U源码但一般作为positive-1的假U源码指标指的是你更关注的样本表现,比如“是假U源码垃圾邮件”“是阳性肿瘤”“将要发生地震”。
因此在肿瘤判断和地震预测等场景:
要求模型有更高的假U源码召回率recall,是假U源码个地震你就都得给我揪出来不能放过
在垃圾邮件判断等场景:
要求模型有更高的精确率precision,你给我放进回收站里的假U源码可都得确定是垃圾,千万不能有正常邮件啊
ROC
常被用来评价一个二值分类器的优劣
ROC曲线的横坐标为false positive rate(FPR):FP/(FP+TN)
假阳性率,即实际无病,但根据筛检被判为有病的百分比。
在实际为0的样本中你预测为1的概率
纵坐标为true positive rate(TPR):TP/(TP+FN)
真阳性率,即实际有病,但根据筛检被判为有病的百分比。
在实际为1的样本中你预测为1的概率,此处即召回率查全率recall
接下来我们考虑ROC曲线图中的四个点和一条线。
第一个点,(0,1),即FPR=0,TPR=1,这意味着无病的没有被误判,有病的都全部检测到,这是一个完美的分类器,它将所有的企鹅竞猜源码样本都正确分类。
第二个点,(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。
第三个点,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true positive)=0,没病的没有被误判但有病的全都没被检测到,即全部选0
类似的,第四个点(1,1),分类器实际上预测所有的样本都为1。
经过以上的分析可得到:ROC曲线越接近左上角,该分类器的性能越好。
ROC是如何画出来的
分类器有概率输出,%常被作为阈值点,但基于不同的场景,可以通过控制概率输出的阈值来改变预测的标签,这样不同的阈值会得到不同的FPR和TPR。
从0%-%之间选取任意细度的阈值分别获得FPR和TPR,对应在图中,得到的ROC曲线,阈值的细度控制了曲线的阶梯程度或平滑程度。
一个没有过拟合的二分类器的ROC应该是梯度均匀的,如图紫线
ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。而Precision-Recall曲线会变化剧烈,自动骂人源码故ROC经常被使用。
AUC
AUC(Area Under Curve)被定义为ROC曲线下的面积,完全随机的二分类器的AUC为0.5,虽然在不同的阈值下有不同的FPR和TPR,但相对面积更大,更靠近左上角的曲线代表着一个更加稳健的二分类器。
同时针对每一个分类器的ROC曲线,又能找到一个最佳的概率切分点使得自己关注的指标达到最佳水平。
AUC的排序本质
大部分分类器的输出是概率输出,如果要计算准确率,需要先把概率转化成类别,就需要手动设置一个阈值,而这个超参数的确定会对优化指标的计算产生过于敏感的影响
AUC从Mann–Whitney U statistic的角度来解释:随机从标签为1和标签为0的样本集中分别随机选择两个样本,同时分类器会输出两样本为1的概率,那么我们认为分类器对“标签1样本的预测概率>对标签0样本的预测概率 ”的概率等价于AUC。
因而AUC反应的是分类器对样本的排序能力,这样也可以理解AUC对不平衡样本不敏感的原因了。
作为优化目标的各类指标
最常用的分类器优化及评价指标是AUC和logloss,最主要的原因是:不同于accuracy,precision等,这两个指标不需要将概率输出转化为类别,而是可以直接使用概率进行计算。
顺便贴上logloss的公式
F1
F1兼顾了分类模型的准确率和召回率,可以看作是模型准确率和召回率的调和平均数,最大值是1,最小值是0。
额外补充AUC为优化目标的模型融合手段rank_avg:
在拍拍贷风控比赛中,印象中一个前排队伍基于AUC的排序本质,使用rank_avg融合了最后的站长社源码几个基础模型。
rank_avg这种融合方法适合排序评估指标,比如auc之类的
其中weight_i为该模型权重,权重为1表示平均融合
rank_i表示样本的升序排名 ,也就是越靠前的样本融合后也越靠前
能较快的利用排名融合多个模型之间的差异,而不用去加权样本的概率值融合
贴一段源码:
M为正类样本的数目,N为负类样本的数目,rank为分类器给出的排名。
可以发现整个计算过程中连直接的概率输出值都不需要,仅关心相对排名,所以只要保证submit的那一组输出的rank是有意义的即可,并不一定需要必须输出概率。
mixmatch理解
在年5月的一篇论文中,我关注到了mixup在半监督学习中的应用,这个方法显得颇具创新。这里主要介绍下其基本思路和操作过程。
首先,我们有标记数据x和无标记数据U,以及一些超参数如K(无标签数据增强次数)、[公式](mixup参数)和T(sharpen参数)。基本步骤是这样的:
通过mixmatch算法,我们计算出增强后的有标签数据X'和无标签数据U'。对于有标签的X,交叉熵损失用于训练;而对于无标签的U,采用一致性正则化,即利用模型预测的假标签q(通过mixmatch生成)与实际预测值的l2距离进行优化,目标是使两者趋于一致。
无标签数据的假标签是如何获取的呢?首先,对U进行k次随机增强,然后通过网络预测,nodejs module源码再通过平均和sharpen处理,使其接近one-hot格式。sharpen的计算方式以T=0.5为例。
整体来看,mixmatch算法的流程涉及两个batch输入的混合,对有标签数据X进行增强,无标签数据U经过多次增强并生成假标签,然后将二者混合,形成最终的X'和U'。这个过程虽然看似复杂,但实际上通过可视化和理解,可以简化操作。
论文中将多种方法巧妙结合,仅需少量标记数据就能达到接近监督学习的预测精度,实现在多个数据集上的state-of-the-art表现。作者讲解清晰,提及了Consistency Regularization、熵最小化和weight decay等技术。尽管论文简洁,但深入理解可能还需阅读源代码以发掘更多细节。
雷达币是什么?能靠谱吗?
雷达币是传销用的一种货币吧,如果投资应该是不可靠的,也可以咨询一下相关专业人士。网上已经有大量把雷达币底裤扒光的资料,只是深陷其中的投机者不愿意去面对而已,基本面上,雷达币是央视曝光过的假区块链山寨币。
技术面上,雷达币的开源程序是公开的,稍有编程知识的人,一看便知是假开源,因为它公布的源代码只公布了一部分说明性质的代码,而这段公布的代码还是抄袭瑞波币的。
打个比方,肯德基的广告人员偷懒,从麦当劳偷了广告词说是自己的,那你好歹把也把麦当劳这三个字改成肯德基啊,这都忘记改,真是蔑视客户智商。
但话又说回来,即使有这么多公开的漏洞,炒币的人在乎么?我同学也是算IT从业人员,卖和修电脑的,不也被洗脑了么,和完全不懂电脑的大爷大妈一样。
V宝币很狡猾,明明是个中心化的虚拟币,总发行量后台控制完全不是象比特币之类的算法恒定,V宝是可以无限投放的。但是开始对外发行的时候,它先发行一点点,块发行价,然后迅速炒高到, ,趁韭菜们被暴力迷惑加大投入,就开始无限制的甩货增加供给。
最后实在忽悠不下去了,干脆把V宝币改个名字叫雷达币,继续忽悠。
本质来说, 比特币是区块链技术加总量有限供给的虚拟币。 瑞波币和很多其它币是山寨比特币,也用了区块链和总量有限供给,但因为不是原创,群众基础弱,加上总量比比特币多, 炒作价格没法追上比特币。 而V宝币,后来的雷达币等等几百种虚拟币,是虚假宣传说自己是总量有限,其实是无限供给的数字币,本质是一种游戏币技术加上传销宣传。
如何用 Blazor 实现 Ant Design 组件库(二)
前言
在前两周,我们探讨了如何将 Ant Design 组件库与 Blazor 框架结合使用,得到了许多朋友的支持与参与。在直播中,我们介绍了 AntBlazor 项目的概览,并分享了 Blazor 框架的基础知识。通过直播,我们展示了如何利用 Blazor 实现二维码多端登录,但这次直播没有深入细节,时间长达4小时。直播录播地址为:bilibili.com/video/BV1u...,同时,您也可以在钉钉群中观看回放。
在清明假期的最后一天,我们将再次进行直播,但时长将更合理,不会占用大家太多时间。请在观看直播前准备好您的问题。直播将在钉钉群和B站同时进行,并提供录播。
本篇内容将着重讨论开发 Blazor 项目的价值以及 AntBlazor 项目带来的益处。
Blazor 项目是否值得投入?
Blazor 是一个新颖的框架,目前仍处于 WebAssembly 的预览阶段,将于5月日的 Build 大会发布正式版。因此,许多人在推广 AntBlazor 项目时提出了质疑:现在投入精力开发组件库是否值得?是否会像 Webform 一样只有微软自己使用,最终被放弃?是否应该等到成熟后再了解?
需要了解的是,Blazor 是一个全能框架,具备了如路由、依赖注入、状态管理、国际化/本地化、权限控制、GC、调试工具等组件,这些在已有前端框架中几乎是全功能的。尽管在生态上仍存在发展空间,但其潜力巨大。作为受欢迎的开源项目,自然会吸引开发者丰富其生态,特别是在前端领域,生态发展更容易。
围绕现有核心组件,我们可以通过实践为 Blazor 生态做出补充。AntBlazor 项目正是致力于丰富 Blazor 生态的开源项目之一。
开发 Blazor 项目的价值
AntBlazor 项目不仅为开源实践提供了一个平台,还帮助开发者学习 Blazor 及其他技能。项目自 Blazor WebAssembly 3.1 preview 阶段创建,实验性开发组件和基于 WebAssembly 的文档项目。随着每个 preview 版本的发布,项目尽量集成最新特性。
除了官方发布的特性,项目还创造性地增强其“前端气息”,运用 Blazor 进行更多实践。
路由组件优化
路由组件是最基础的组件,官方实现基本功能如路由表和导航。通过分析源码,我们对路由组件进行了改进,具体分析将在后续的文章中提供。
多语言支持
当前版本尚未集成官方的全球化/本地化功能,项目中实现了多语言服务,动态切换语言。这一过程也加深了我们对状态刷新的理解,后续直播中将分享更多细节。
文档构建改进
项目使用 Blazor WebAssembly 构建静态文档站点。为了兼顾 .NET 项目与开放性,源文件放置在项目目录外,通过 MSBuild Tasks 进行文件拷贝和 Node.js 调用。最近,我们正在用 .NET Core 开发一个 CLI 工具,用于生成文档所需的元数据,以减少对 Node.js 的依赖。
持续优化 CI 流程
优化 CI 流程,让开发者更容易参与项目,集中精力于组件开发。通过优化,我们提升了项目的可持续发展能力,获得了丰富的 Github Actions 使用经验和 shell 脚本技巧。
总结
通过实践,我们不仅学习了更多技能,也培养了更通用的能力。每一项有意义的改进都成为丰富 Blazor 生态的重要元素。AntBlazor 项目的成功展示了 Blazor 能够促进开源的 .NET 技能,使开发者能够利用 .NET 进行前端开发。
欢迎关注 Blazor,参与 AntBlazor 项目,加入 Blazor 中文社区。如果您对 Blazor 感兴趣,或者想为开源项目贡献自己的力量,请加入我们,共同推动 Blazor 生态的发展。
2024-11-30 15:16
2024-11-30 13:40
2024-11-30 13:33
2024-11-30 13:19
2024-11-30 12:55