决策边界

使用PyCaret构建机器学习模型

柔情痞子 提交于 2020-08-19 17:14:06
作者|LAKSHAY ARORA 编译|VK 来源|Analytics Vidhya 概述 PyCaret是一个超级有用的Python库,用于在短时间内执行多个机器学习任务 学习如何依赖PyCaret在几行代码中构建复杂的机器学习模型 介绍 我建立的第一个机器学习模型是一个相当麻烦的代码块。我仍然记得构建一个集成模型,它需要许多行代码,它十分需要一个向导来解开这些混乱的代码! 当涉及到构建可解释的机器学习模型时,尤其是在行业中,编写高效的代码是成功的关键。所以我强烈建议使用PyCaret库。 我希望PyCaret在我的刚学习机器学习的日子里出现!这是一个非常灵活和有用的库,我在最近几个月已经相当依赖。我坚信任何有志成为数据科学或分析专业人士的人都会从使用PyCaret中受益匪浅。 我们将看到PyCaret到底是什么,包括如何在你的机器上安装它,然后我们将深入研究如何使用PyCaret来构建可解释的机器学习模型,包括集成模型。 目录 什么是PyCaret?为什么要使用它? 安装PyCaret 熟悉PyCaret 使用PyCaret训练我们的机器学习模型 使用PyCaret构建集成模型 分析模型 做出预测 保存并加载模型 什么是PyCaret?为什么要使用它? PyCaret是Python中一个开源的机器学习库,它可以帮助你从数据准备到模型部署。它很容易使用

感知机:教程,实现和可视示例

半城伤御伤魂 提交于 2020-08-15 07:43:11
作者|Dorian Lazar 编译|VK 来源|Towards Data Science 感知器是人工神经网络的组成部分,它是大脑中生物神经元的简化模型。感知器是最简单的神经网络,仅由一个神经元组成。感知器算法由Frank Rosenblatt于1958年发明。 以下是生物神经元的图示: 经由树突接收到神经元的大部分输入信号。其他神经元与这些树突形成约1,000至10,000个连接。来自连接的信号称为突触,通过树突传播到细胞体内。细胞体内的电位增加,一旦达到阈值,神经元就会沿着轴突发出一个尖峰,该轴突通过轴突末端连接到大约100个其他神经元。 感知器是真实神经元的简化模型,它尝试通过以下过程来模仿它:接收输入信号,将它们称为x1,x2,…,xn,计算这些输入的加权和z,然后将其传递阈值函数ϕ并输出结果。 但将w0作为阈值和将w0作为偏置添加到和中并将阈值改为0是一样的。我们考虑一个始终设置为1的附加输入信号x0。 下面是一个感知器: 要使用向量表示法,我们可以将所有输入x0、x1、…、xn和所有权重w0、w1、…、wn放入向量x和w中,当它们的点积为正时输出1,否则输出-1。 以下是仅使用2个输入x1和x2的几何表示,以便我们可以在2维中绘制: 如上所示,具有2个输入的感知器的决策边界是一条直线。如果有3个输入,则决策边界为二维平面。一般来说,如果我们有n个输入

Circle Loss:从统一的相似性对的优化角度进行深度特征学习 | CVPR 2020 Oral

别等时光非礼了梦想. 提交于 2020-08-14 08:47:56
> 论文提出了Circle loss,不仅能够对类内优化和类间优化进行单独地处理,还能根据不同的相似度值调整对应的梯度。总体而言,Circle loss更灵活,而且优化目标更明确,在多个实验上都有较好的表现,个人认为是一个很好的工作   来源:晓飞的算法工程笔记 公众号 论文: Circle Loss: A Unified Perspective of Pair Similarity Optimization 论文地址: https://arxiv.org/abs/2002.10857 Introduction   论文认为两类基础的深度特征学习方法classification learning(比如softmax)和pair-wise learning(比如triplet loss)均是为了最小化类内相似度$s_n$和类间相似度$s_p$,理想是$(s_n=0, s_p = 1)$。而大部分常用的损失函数都是将$s_n$和$s_p$embed成相似度对,然后用各自研究的策略最小化$(s_n-s_p)$的值。这种策略提升$s_p$等同于下降$s_n$,但其实这种对称的优化方法很容易存在以下问题: 缺乏优化的灵活性。由于基于损失函数同时优化$s_n$和$s_p$,导致$s_n$和$s_p$的梯度的幅值是一样的。当$s_n$和$s_p$均很小时,依然会使用较大的梯度惩罚$s_n$

[斯坦福大学2014机器学习教程笔记]第六章-决策界限(decision boundary)

跟風遠走 提交于 2020-08-14 05:24:23
这一节主要介绍的是 决策界限(decision boundary) 的概念,这个概念可以帮组我们更好地理解逻辑回归的假设函数在计算什么。 首先回忆一下上次写的公式。 现在让我们进一步了解这个假设函数在什么时候会将y预测为1,什么时候会将y预测为0。并且更好地理解假设函数的形状,特别是当我们的数据有多个特征值时。具体地说,这个假设函数输出的是给定x和参数θ时,y=1的估计概率。 所以,如果我们想预测y=1还是等于0。该假设函数输出y=1的概率大于等于0.5,此时预测的为y=1,小于0.5预测的就是y=0。(实际上,当输出概率为0.5时,可以预测为y=1,也可以预测为y=0) 仔细观察sigmoid函数图像,就可以发现只要z ≥ 0,g(z)就大于等于0.5,因此在曲线图的右半边,g的取值都是大于等于0.5的。 由于逻辑回归的假设函数h θ (x)=g(θ T x),所以只要θ T x ≥ 0,那么h θ (x)就会大于等于0.5,此时假设函数将会预测为y=1。同样,我们考虑假设函数预测为y=0的情况。当h θ (x) < 0.5的时候,就会预测y=0。而只要θ T x < 0,那么g(θ T x)就会小于0.5,即h θ (x)就会小于0.5。 对上述做个小结: 1.我们预测y=0还是y=1取决于输出的概率值。(概率大于等于0.5预测y=1,小于0.5预测y=0) 2.想要预测结果为

感知机(perceptron)原理总结

微笑、不失礼 提交于 2020-08-09 13:28:19
目录 1. 感知机原理 2. 损失函数 3. 优化方法 4. 感知机的原始算法 5. 感知机的对偶算法 6. 从图形中理解感知机的原始算法 7. 感知机算法(PLA)的收敛性 8. 应用场景与缺陷 9. 其他 10. 参考资料 1. 感知机原理 感知机是二分类的线性分类模型,本质上想找到一条直线或者分离超平面对数据进行线性划分 适用于线性可分的数据集,否则感知机不会收敛 假设有一个数据集 \(D = {(x_1, y_1), (x_2, y_2), ..., (x_N, y_N)}\) ,其中 \(x_i \in R^n\) ,即 \(x_i = (x_i^{(1)}, x_i^{(2)}, ...x_i^{(n)})\) 模型的输入为实例的特征向量 \(x_i\) ,输出为实例的类别,取值为+1(正例)或者-1(负例) 我们希望找到一个分离超平面 \(w^Tx + b = 0,其中w \in R^n\) ,使得有满足 \(w^Tx + b > 0\) 的实例所对应的类别为正例。而使得满足 \(w^Tx + b < 0\) 的实例所对应的类别为负例。 于是我们可以构建出感知机模型为: \(f(x) = sign(w^Tx + b)\) 2. 损失函数 定义损失函数一个很自然的想法是建立在误分类点的个数上,但是使用误分类点的个数来构造损失函数并不容易优化 因此使用

Python机器学习笔记:SVM(4)——sklearn实现

喜欢而已 提交于 2020-08-08 04:27:42
  上一节我学习了SVM的推导过程,下面学习如何实现SVM, 具体的参考链接都在第一篇文章中 ,SVM四篇笔记链接为: Python机器学习笔记:SVM(1)——SVM概述 Python机器学习笔记:SVM(2)——SVM核函数 Python机器学习笔记:SVM(3)——证明SVM Python机器学习笔记:SVM(4)——sklearn实现   对SVM的概念理清楚后,下面我们对其使用sklearn进行实现。 1,Sklearn支持向量机库概述   我们知道SVM相对感知器而言,它可以解决线性不可分的问题,那么它是如何解决的呢?其思想很简单就是对原始数据的维度变换,一般是扩维变换,使得原样本空间中的样本点线性不可分,但是在变维之后的空间中样本点是线性可分的,然后再变换后的高维空间中进行分类。   上面将SVM再赘述了一下,下面学习sklearn中的SVM方法,sklearn中SVM的算法库分为两类,一类是分类的算法库,主要包含LinearSVC,NuSVC和SVC三个类,另一类是回归算法库,包含SVR,NuSVR和LinearSVR三个类,相关模块都包裹在sklearn.svm模块中。   对于SVC,NuSVC和LinearSVC 三个分类的库,SVC和NuSVC差不多,区别仅仅在于对损失的度量方式不同,而LinearSVC从名字就可以看出,他是线性分类

使用PyCaret构建机器学习模型

本小妞迷上赌 提交于 2020-07-28 18:26:46
作者|LAKSHAY ARORA 编译|VK 来源|Analytics Vidhya 概述 PyCaret是一个超级有用的Python库,用于在短时间内执行多个机器学习任务 学习如何依赖PyCaret在几行代码中构建复杂的机器学习模型 介绍 我建立的第一个机器学习模型是一个相当麻烦的代码块。我仍然记得构建一个集成模型,它需要许多行代码,它十分需要一个向导来解开这些混乱的代码! 当涉及到构建可解释的机器学习模型时,尤其是在行业中,编写高效的代码是成功的关键。所以我强烈建议使用PyCaret库。 我希望PyCaret在我的刚学习机器学习的日子里出现!这是一个非常灵活和有用的库,我在最近几个月已经相当依赖。我坚信任何有志成为数据科学或分析专业人士的人都会从使用PyCaret中受益匪浅。 我们将看到PyCaret到底是什么,包括如何在你的机器上安装它,然后我们将深入研究如何使用PyCaret来构建可解释的机器学习模型,包括集成模型。 目录 什么是PyCaret?为什么要使用它? 安装PyCaret 熟悉PyCaret 使用PyCaret训练我们的机器学习模型 使用PyCaret构建集成模型 分析模型 做出预测 保存并加载模型 什么是PyCaret?为什么要使用它? PyCaret是Python中一个开源的机器学习库,它可以帮助你从数据准备到模型部署。它很容易使用

逻辑斯蒂(logistic)回归深入理解、阐述与实现

邮差的信 提交于 2020-07-26 19:33:58
第一节中说了,logistic 回归和线性回归的区别是:线性回归是根据样本X各个维度的Xi的线性叠加(线性叠加的权重系数wi就是模型的参数)来得到预测值的Y,然后最小化所有的样本预测值Y与真实值y'的误差来求得模型参数。我们看到这里的模型的值Y是样本X各个维度的Xi的线性叠加,是线性的。 Y=WX (假设W>0),Y的大小是随着X各个维度的叠加和的大小线性增加的,如图(x为了方便取1维): 然后再来看看我们这里的logistic 回归模型,模型公式是: ,这里假设W>0,Y与X各维度叠加和(这里都是线性叠加W)的图形关系,如图(x为了方便取1维): 我们看到Y的值大小不是随X叠加和的大小线性的变化了,而是一种平滑的变化,这种变化在x的叠加和为0附近的时候变化的很快,而在很大很大或很小很小的时候,X叠加和再大或再小,Y值的变化几乎就已经很小了。当X各维度叠加和取无穷大的时候,Y趋近于1,当X各维度叠加和取无穷小的时候,Y趋近于0. 这种变量与因变量的变化形式就叫做logistic变化。(注意不是说X各个维度和为无穷大的时候,Y值就趋近1,这是在基于W>0的基础上,(如果W<0,n那么Y趋近于0)而W是根据样本训练出来,可能是大于0,也可能是小0,还可能W1>0,W2<0…所以这个w值是样本自动训练出来的,也因此不是说你只要x1,x2,x3…各个维度都很大,那么Y值就趋近于1

线性模型

左心房为你撑大大i 提交于 2020-05-06 15:32:02
import numpy as np import matplotlib.pyplot as plt import pandas as pd import mglearn from sklearn.model_selection import train_test_split 1.用于回归的线性模型 对于回归问题,线性模型预测的一般公式如下: y = w[0] x[0]+w[1] x[1]+...+w[p]*x[p]+b 这里x[0]到x[p]表示单个数据点的特征(本例中特征个数为p+1),w和b是学习模型的参数,yᨈ是模型的预测结果。对于单一特征的数据集,公式如下: y = w[0]*x[0]+b 这就是高中数学里的直线方程。这里w[0]是斜率,b是y轴偏移。对于有更多特征的数据集,w包含沿沿每个特征坐标轴的斜率。也可以将预测的响应值看作输入特征的加权求和,权重由w的元素给出(可以取负值)。 下列代码可以在一维wave数据集上学习参数w[0]和b mglearn.plots.plot_linear_regression_wave() w[0]: 0.393906 b: -0.031804 用于回归的线性模型可以表示为这样的回归模型:对单一特征的预测结果是一条直线,两个特征时是一个平面,或者在更高维度(即更多特征)时是一个超平面 如果将直线的预测结果与 的预测结果相比较

k近邻

强颜欢笑 提交于 2020-05-05 16:09:56
import numpy as np import matplotlib.pyplot as plt import pandas as pd import mglearn k-NN算法是最简单的机器学习算法。构建模型只需要保存训练数据集即可。想要对新数据点进行预测,算法会在训练数据中找到最近的数据点,也就是它的“最近邻”。 k-NN算法最简单的版本只考虑一个最近邻,也就是与我们想要预测的点的数据点最近的训练数据点。预测结果就是这个训练数据点的已知输出。 mglearn.plots.plot_knn_classification(n_neighbors=1) 除了考虑最近邻,还可以考虑任意个(k个)邻居。这也是k近邻算法名字的来历。在考虑多于一个邻居的情况时,我们用投票法来指定标签。对于每个测试点,我们数一数多少个邻居分别属于什么类别,将出现次数多的邻居的类别(k个近邻中占多数的类别)作为预测结果。 mglearn.plots.plot_knn_classification(n_neighbors=3) # 使用scikit-learn实现k近邻算法 from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier X, y = mglearn