决策边界

机器学习之支持向量机算法(二)

怎甘沉沦 提交于 2021-02-17 16:21:05
五、SVM求解实例   上面其实已经得出最终的表达式了,下面我们会根据一些具体的点来求解α的值。数据:3个点,其中正例 X 1 (3,3) ,X 2 (4,3) ,负例X 3 (1,1) 如下图所示       我们需要求解下式的极小值       注意约束条件(在这里不要忘记了 y i 代表的是数据的类别,+1代表正例,-1代表负例 )       代入数据,通过化简可以得到如下约束条件的表达式。       将数据代入上式得到       由于α 1 +α 2 -α 3 =0 -> α 1 +α 2 =α 3 : 化简可得:      分别对α 1 和α 2 求偏导,偏导等于0可得: α 1 =1.5,α 2 =-1(并不满足约束条件α i >= 0,i=1,2,3 )所以这时求出来的α的值是无效的,那这个时候 α的解应在边界上 ,也就是说要么α 1 =0,要么α 2 =0,再代入上式然后求偏导看下       (这儿经过我的计算发现α 2 似乎等于正的2/13,应该是教程有些小问题,猜测可能是上式由α 1 +α 2 =α 3 化简这儿出了点小问题,但是对于答案似乎影响不大) ,所以经过计算最小值在(0.25,0,0.25)处取得 。       上面的平面方程其实就是代表直线方程,也就是 决策边界的方程 。 六、支持向量机?   为什么会取支持向量机这样一个名字呢?    

机器学习|支持向量机参数求解

孤人 提交于 2021-02-17 06:30:12
01 — 支持向量机 支持向量机的简称为SVM,能在已知样本点很少情况下,获得很好的分类效果。 02 — SVM分类两个点 已知两个样本点,如果用SVM模型,决策边界就是线g,它的斜率为已知两个样本点斜率的垂直方向,并经过两个点的中点。 这条线g就是SVM认为的分类两个样本点的最好边界线。 03 — SVM分类多个点 添加更多的样本点,但是有意识地让它们符合上面的分布,此时的最佳决策边界发生变化了吗?没有。 样本点虽然多了,但是SVM认为起到支持作用的还是那两个点,support vector就是它们,名字得来了,当然因此决策边界也未变。 以上这些都是直接观察出来的,计算机是如何做这个事的? 04 — 启发 03节还启发我们,SVM建立决策边界时,只关心距离决策边界最近的那两个样本点,然后取距离它们都最远的决策边g ,认为g就是最佳决策边界。 05 — 趁热打铁:SVM目标函数 有了以上基础,SVM目标函数的结构差不多就知道了:max ( min() ),SVM添加了一个约束,得到的好处是目标函数更精简了: arg max 1/||w|| s.t., y*f(x)>=1 注意,这个更精简的目标函数,必须满足上面的约束,它们是共生关系,缺一不可。 06 — 最大值转化为求最小值 机器学习中,遇到目标函数求最大值的,都会转化为求最小值,常规套路,SVM也不例外。 它也很简单,分母最小

【论文阅读】Between-class Learning for Image Classification

北城以北 提交于 2021-02-02 12:22:58
文章:Between-class Learning for Image Classification 链接:https://arxiv.org/pdf/1711.10284.pdf CVPR2018 作者尝试了将在音频上的方法用在图像上的,并提出了一种将图像作为波形处理的混合方法(作者认为图形波长融合人类没法识别,但对机器而言却是有意义的信息)。cnns有将输入数据作为波形处理的操作,作者提出的BC learning 其实就是将两个不同类的图像混合,并训练模型输出混合比,靠近哪个就分为哪类。 一、 Between-Class learning (BC learning) 在分类问题的标准学习中,从数据集中选取一个单一的训练示例并输入到模型中。然后,该模型被训练为输出一个热标签。相比之下,在bc学习中,从数据集中选取了属于不同类的两个训练示例,并与随机比例混合。然后,将混合数据输入到模型中,并对模型进行了输出各类混合比的训练。模型的输出和比例标签之间KL-divergence(散度)作为损失函数,而不是通常的交叉熵损失。注意在测试阶段不进行混合。 BC learning旨在通过解决预测两个不同类的混合比例的问题来学习分类问题。它们通过将属于不同类的两个声音以随机比例混合在一起,生成了类之间的例子。然后将混合声音输入模型,并训练模型输出每个类的混合比。对特征分布施加限制

对抗样本机器学习_cleverhans_FGSM/JSMA

删除回忆录丶 提交于 2021-01-23 01:18:46
对抗样本机器学习_Note1_机器学习 转载自: https://yq.aliyun.com/ziliao/292780   机器学习方法,如SVM,神经网络等,虽然在如图像分类等问题上已经outperform人类对同类问题的处理能力,但是也有其固有的缺陷,即我们的训练集喂的都是natural input,因此在正常情况下处理的比较好。然而如果我们想要对ML模型进行攻击的话,可以通过一定的手段生成对抗样本(adversarial examples),以图像为例,对抗样本在每个像素点只有微小的扰动(pertubations),因此对于人类的眼睛是无法分辨的,即生成前后我们人类还会将其归为同一类别。然而ML模型在面对这些对抗样本时会出现不鲁棒的特点,对它们会产生错分。对抗样本生成的基本思路是:在训练模型的过程中,我们把输入固定去调整参数,使得最后的结果能对应到相应的输入;而生成对抗样本时,我们将模型固定,通过调整输入,观察在哪个特征方向上只需要微小的扰动即可使得我们的模型给出我们想要的错分的分类结果。研究对抗样本机器学习的目的就是,希望我们的模型对于对抗样本更加robust。 上图可以说明对抗样本是如何工作的。Model decision boundary 是我们训练的模型的分类边界,这个边界可以较好的将两类样本分开,但是如果我们对标出来的两个Test point 做一个微小的扰动

逻辑回归(Logistic Regression)

江枫思渺然 提交于 2021-01-21 22:22:57
逻辑回归(Logistic Regression)是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性。比如某用户购买某商品的可能性,某病人患有某种疾病的可能性,以及某广告被用户点击的可能性等。  注意,这里用的是“可能性”,而非数学上的“概率”,logisitc回归的结果并非数学定义中的概率值,不可以直接当做概率值来用。该结果往往用于和其他特征值加权求和,而非直接相乘。 逻辑回归假设因变量 y 服从伯努利分布 (0-1分布); 而线性回归假设因变量 y 服从 正太分布(高斯分布)。 一个机器学习的模型,实际上是把 决策函数 限定在某一组条件下,这组 限定条件 就决定了 模型的假设空间 。当然,我们还希望这组限定条件简单而合理。 逻辑回归模型所做的假设是:      这里的 g(h) 是上边提到的 sigmoid 函数,相应的 决策函数 为:   决策边界(Decision Boundary)   决策边界,也称为决策面,是用于在N维空间,将不同类别样本分开的平面或曲面。  首先看Andrew Ng老师课程上的两张图:  线性决策边界:   在逻辑回归中, 假设函数(h=g(z))用于计算样本属于某类别的可能性; 决策函数(h=1(g(z)>0.5))用于计算(给出)样本的类别; 决策边界(θ^Tx=0)是一个方程,用于标识出分类函数(模型)的分类边界。

大一暑期CS231n网课笔记(1)

99封情书 提交于 2020-10-23 18:46:07
一周前我就已经在看CS231n的网课了,但是当时并没有很好的总结知识点,所以内容不免遗忘许多,开始review啦,一边复习前面的知识点,一边学习后面的知识点。人类的视觉系统是很强大的,尽管这些年在计算机视觉领域我们取得了巨大的进步,但是我们仍有很长的路需要走。 在课程的最开始,我们了解计算机视觉及其发展历史和关于本课程的描述,接下来我们需要深入了解这些算法,学习这些算法在实践中到底是如何工作的。 本课程的第一个重点是 图像分类 问题。 在图像分类中,让你的算法接收一张图作为输入,从固定的类别集合中选出该图像所属的类别,从而对图像分类。 当你在做图像分类的时候,系统接收一些输入图像,比如说可爱的猫咪,并且系统已经清楚一些确定了分类或标签的集合,这些标签可能是一只狗狗或者一只猫咪,也有可能是一辆卡车,亦或是一架飞机,还有一些固定的类别标签集合,那计算机的工作就是看图片并且给它分配其中一些固定的分类标签。 仔细思考,计算机看一张图片时看到的是什么,它肯定没有一只猫咪的整体概念,和我们所看的图片当然是不同的,计算机呈现图片的方式其实就是一大堆数字。所以图像可能就是一些像800乘以600的像素,每一个像素由三个数字表示,给出像素红、绿、蓝三个值,所以,对于计算机来说,这是一个巨大的数字阵列,这很难从中提取猫咪的特性,我们把这个问题定义为语义鸿沟

第10章 评价分类结果 学习笔记中

梦想与她 提交于 2020-10-22 00:14:46
目录 精准率和召回率的取舍 F1 Score Precision-Recall的平稳 程序实现 精准率和召回率的取舍 F1 Score 只有两者都高,则结果都高 from sklearn import datasets digits = datasets.load_digits() X = digits.data y = digits.target.copy() y[digits.target==9] = 1 y[digits.target!=9] = 0 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=666) from sklearn.linear_model import LogisticRegression log_reg = LogisticRegression() log_reg.fit(X_train, y_train) log_reg.score(X_test, y_test) Precision-Recall的平稳 两者相矛盾 这样行吗? 大于则为一类,小于则另一类 引入了超参数,可以平移决策边界 0右边为1,五角星为1,圆圈为0 精准率增大时召回率降低 精准率高

推荐 :机器学习集成学习与模型融合!

无人久伴 提交于 2020-10-01 18:31:26
Datawhale干货 作者: 李祖贤,深圳大学,Datawhale高校群成员 对比过kaggle比赛上面的top10的模型,除了深度学习以外的模型基本上都是集成学习的产物。集成学习可谓是上分大杀器,今天就跟 大家分享在Kaggle或者阿里天池上面大杀四方的数据科学比赛利器---集成学习。 一、什么是集成学习 正所谓“三个臭皮匠赛过诸葛亮”的道理,在机器学习数据挖掘的工程项目中,使用单一决策的弱分类器显然不是一个明智的选择,因为各种分类器在设计的时候都有自己的优势和缺点,也就是说每个分类器都有自己工作偏向,那集成学习就是平衡各个分类器的优缺点,使得我们的分类任务完成的更加优秀。 在大多数情况下,这些基本模型本身的性能并不是非常好,这要么是因为它们具有较高的偏差(例如,低自由度模型),要么是因为他们的方差太大导致鲁棒性不强(例如,高自由度模型)。集成方法的思想是通过将这些弱学习器的偏差和/或方差结合起来,从而创建一个「强学习器」(或「集成模型」),从而获得更好的性能。 集成学习的方法: 1. 基于投票思想的多数票机制的集成分类器(MajorityVoteClassifier) 2. 于bagging思想的套袋集成技术(BaggingClassifier) 3. 基于boosting思想的自适应增强方法(Adaboost) 4. 分层模型集成框架stacking(叠加算法) 二

4.集成学习之3.Stacking

生来就可爱ヽ(ⅴ<●) 提交于 2020-09-30 10:44:10
分层模型集成框架stacking(叠加算法) Stacking集成算法可以理解为一个两层的集成,第一层含有一个分类器,把预测的结果(元特征)提供给第二层, 而第二层的分类器通常是逻辑回归,他把一层分类器的结果当做特征做拟合输出预测结果。过程如下图: 标准的Stacking,也叫Blending如下图: 但是,标准的Stacking会导致信息泄露,所以推荐以下Satcking算法: 1. 简单堆叠3折CV分类: ## 1. 简单堆叠3折CV分类 from sklearn import datasets iris = datasets . load_iris ( ) X , y = iris . data [ : , 1 : 3 ] , iris . target from sklearn . model_selection import cross_val_score from sklearn . linear_model import LogisticRegression from sklearn . neighbors import KNeighborsClassifier from sklearn . naive_bayes import GaussianNB from sklearn . ensemble import RandomForestClassifier from

4.集成学习之1.Bagging

巧了我就是萌 提交于 2020-09-29 11:23:35
基于bagging思想的套袋集成技术 套袋方法是由柳.布莱曼在1994年的技术报告中首先提出并证明了套袋方法可以提高不稳定模型的准确度的同时降低过拟合的程度(可降低方差)。 套袋方法的流程如下: 注意:套袋方法与投票方法的不同: 投票机制在训练每个分类器的时候都是用相同的全部样本,而Bagging方法则是使用全部样本的一个随机抽样,每个分类器都是使用不同的样本进行训练。其他都是跟投票方法一模一样! 对训练集随机采样 分别基于不同的样本集合训练n个弱分类器。 对每个弱分类器输出预测结果,并投票(如下图) 每个样本取投票数最多的那个预测为该样本最终分类预测。 我们使用葡萄酒数据集进行建模(数据处理): ## 我们使用葡萄酒数据集进行建模(数据处理) df_wine = pd . read_csv ( 'https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data' , header = None ) df_wine . columns = [ 'Class label' , 'Alcohol' , 'Malic acid' , 'Ash' , 'Alcalinity of ash' , 'Magnesium' , 'Total phenols' , 'Flavanoids' ,