二分类评价指标
二分类评价指标
评价指标是针对同样的数据,输入不同的算法,或者输入相同的算法但参数不同 而给出这个算法或者参数好坏的定量指标。
本文将问题看成二分类问题,因此本文主 要用到的评价指标有准确度、召回率、ROC 曲线以及 AUC 面积,这些是在二分类问 题比较常见的指标。
混淆矩阵是 ROC 曲线绘制的基础,同时它也是衡量分类型模型 准确度中最基本、最直观、计算最简单的方法。以分类模型中的二分类为例,对于这 种问题,模型最终需要判断样本的结果是 0 还是 1,或者说是 Positive 还是 Negative。
因此,能得到这四个基础指标,可以看成是一级指标:
真实值是 Positive,模型认为 是 Positive 的数量(TP)。
真实值是 Positive,模型认为是 Negative 的数量(FN)。
真实值 是 Negative,模型认为是 Positive 的数量(FP)。
真实值是 Negative,模型认为是 Negative的数量(TN)。
将这四个指标一起呈现在表格中,就能得到如表 3 这样一个矩阵,称它 为混淆矩阵。预测性分类模型,是希望越准越好。在混淆矩阵中,TP ...
环境变量解析
什么是环境变量
主流的操作系统 Windows、Linux、MacOS 都有环境变量的概念。
打开 Windows 10 中的环境变量设置,如下图所示,
主流的操作系统 Windows、Linux、MacOS 都有环境变量的概念。
打开 Windows 10 中的环境变量设置,如下图所示,
这些环境变量本质上都是存储在 Windows 系统注册表里面的。
环境变量可以理解为 影响 程序运行的一些 信息配置项 。英文叫 Environment Variables,下文中,有时我会简称 env
每个环境变量都是一个配置项,提供一个信息。
看到这些环境变量,很容易对环境变量产生误解,以为它们就是用来配置路径的。
不一定都是这样!
环境变量可以用来配置路径,也可以用来配置其他,比如上图中的 NUMBER_OF_PROCESSORS,指明了系统中处理器核心是4个。
如何产生的
一部分是由程序创建、修改 的,
一部分是由人手工创建的。
程序可以通过操作系统编程接口 增加、读取、删除、修改 环境变量配置。
人也可以通过命令或者操作界面 增加、查看、删除、修改 环境变量配置。
有什么用?
主要是为应 ...
conda配置虚拟环境
一、检验当前conda的版本
1conda -V
二、查看已经有的虚拟环境
1conda env list
三、创建虚拟环境和删除虚拟环境
anaconda命令创建python版本为x.x,名字为env_name的虚拟环境。
env_name文件可以在Anaconda安装目录envs文件下找到。
1234# 创建conda create -n env_name python=x.x# 删除conda remove -n env_name --all
需要注意两点:
=的前后不要有空格,否则命令无法被正常解析。
不输入python版本号,虚拟环境也能新建成功,但是没有python解释器,不能直接使用!
四、激活虚拟环境和关闭虚拟环境
1234# 激活conda activate env_name# 关闭conda deactivate
五、对虚拟环境中安装和删除额外的包
如果没有进入到当前虚拟环境,使用-n env_name 的方式去指定对某个虚拟环境安装软件,命令如下:
1234567891011# 查看指定环境下已安装的packageconda list -n env_name ...
特征工程介绍
特征方程
1、特征方程是什么
是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。从本质上来讲,特征工程是一个表示和展现数据的过程。在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系
对于一个机器学习问题,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。
通过总结和归纳,人们认为特征工程包括以下方面:
特征处理是特征工程的核心部分,sklearn提供了较为完整的特征处理方法,包括数据预处理,特征选择,降维等。首次接触到sklearn,通常会被其丰富且方便的算法模型库吸引,但是这里介绍的特征处理库也十分强大!
2、数据预处理
通过特征提取,我们能得到未经处理的特征,这时的特征可能有以下问题:
作者:城东
链接:https://www.zhihu.com/question/29316149/answer/110159647
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
不属于同一量纲:即特征的规格不一样,不能够放在一起比较。无量纲化可以解决这一问题。
信息 ...
各类激活函数
激活函数
为什么要使用激活函数?
激活函数用来怎加非线性因素的,提高模型拟合能力。如果不存在激活函数,神经网络的每一层的输入都是对前面输入的线性变化,就算把网络加到很深也无法去拟合任意函数的。
激活函数具有的特性
虽然我们常用激活函数不是很多,那是否只有这些函数能作为激活函数呢?我们从神经网络的工作过程中看,激活函数具有什么样的性质能够更好的帮助神经网络的训练。
非线性:数,激活函数必须是非线性的。
计算简单:神经元都要经过激活运算的,在随着网络结构越来越庞大、参数量越来越多,激活函数如果计算量小就节约了大量的资源。
f ( x ) ≈ x:在向前传播时,如果参数的初始化是随机量的最小值,神经网络的训练很高效。在训练的时候不会出现输出的幅度随着不断训练发生倍数的增长,是网络更加的稳定,同时也使得梯度更容易回传。
可微:因为神经网络要通过反向传播来跟新参数,如果激活函数不可微,就无法根据损失函数对权重求偏导,也就无法更新权重。传统的激活函数如sigmoid等满足处处可微。对于分段线性函数比如ReLU,只满足几乎处处可微(即仅在有限个点处不可微)。对于SGD算法来说,由于几乎不可能收敛到 ...
各类损失函数
损失函数
损失函数loss function)是用来估量模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好。损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分。模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子:
损失函数、代价函数、目标函数之间的关系
常见的损失函数
均方差(Mean Squared Error,MSE)
均方差(Mean Squared Error,MSE)损失是机器学习、深度学习回归任务中最常用的一种损失函数,也称为 L2 Loss。其基本形式如下:
可以看到这个实际上就是均方差损失的形式。也就是说在模型输出与真实值的误差服从高斯分布的假设下,最小化均方差损失函数与极大似然估计本质上是一致的,因此在这个假设能被满足的场景中(比如回归),均方差损失是一个很好的损失函数选择;当这个假设没能被满足的场景中(比如分类),均方差损失不是一个好的选择
平均绝对误差损失(Mean Absolute Error Loss,MAE)
平均绝对误差(Mean Abso ...
认识神经网络
神经网络
什么是神经网络
人工神经网络:是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在工程与学术界也常直接简称为“神经网络”或类神经网络。(百度百科)
神经网络是一门重要的机器学习技术。它是目前最为火热的研究方向–深度学习的基础。
单层神经网络-感知器
两层神经网络-多层感知器
多层神经网络-深度学习
神经网络结构
这是一个包含三个层次的神经网络。红色的是输入层,绿色的是输出层,紫色的是中间层(也叫隐藏层)。输入层有3个输入单元,隐藏层有4个单元,输出层有2个单元。后文中,我们统一使用这种颜色来表达神经网络的结构。
神经网络结构图
1231、设计一个神经网络时,输入层与输出层的节点数往往是固定的,中间层则可以自由指定;2、神经网络结构图中的拓扑与箭头代表着预测过程时数据的流向,跟训练时的数据流有一定的区别;3、结构图里的关键不是圆圈(代表“神经元”),而是连接线(代表“神经元”之间的连接)。每个连接线对应一个不同的权重(其值称为权值),这是需要训练得到的。
除了从左到右的形式表达的结构图,还有一种常见的表达形式是从下到上来表示一个神经网络。这时候,输入层在图的最 ...
感知机
感知机(perceptron)
感知机是什么?
感知机:感知机是神经网络(深度学习)的起源算法,学习感知机的构造是通向神经网络和深度学习的一种重要思想。
感知机接收多个输入信号,输出一个信号。
这里所说的“信号”可以想 象成电流或河流那样具备“流动性”的东西。
像电流流过导线,向前方输送 电子一样,感知机的信号也会形成流,向前方输送信息。
但是,和实际的电 流不同的是,感知机的信号只有“流/不流”(1/0)两种取值。
0 对应“不传递信号”,1对应“传递信号”。
x 1 、x 2 是输入信号,
y 是输出信号,
w 1 、w 2 是权重 (w 是 weight 的首字母)。
图中的○称为“神 经元”或者“节点”。
输入信号被送往神经元时,会被分别乘以固定的权重(w 1 x 1 、w 2 x 2 )。
神经元会计算传送过来的信号的总和,只有当这个总和超过 了某个界限值时,才会输出1。
这也称为“神经元被激活”。这里将这个界限值称为阈值,用符号θ表示。
公式一:
感知机的多个输入信号都有各自固有的权重,这些权重发挥着控制各个 信号的重要性的作用。也就是说,权重越大,对应该权重的信 ...
正则化、离散化、归一化、标准化
正则化(regularization)
正则化的目的
正则化是为了防止过拟合, 进而增强泛化能力。
"泛化"指的是一个假设模型能够应用到新样本的能力。
L1 正则化和 L2 正则化的几何含义
L1 正则化通常称为 Lasso 正则化:
J(θ)=−∑i=1m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))+λm∑j=1n∣θj∣J(θ)=−∑i=1m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))+λm∑j=1n|θj|
J(θ)=−∑i=1m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))+λm∑j=1n∣θj∣
L2 正则化通常称为 Ridge 正则化:
J(θ)=−∑i=1m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))+λ2m∑j=1nθj2J(θ)=−∑i=1m(y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i))))+λ2m∑j=1nθj2
J(θ)=−∑i=1m(y(i) ...
推荐算法概述
1 推荐算法概述
推荐算法是非常古老的,在机器学习还没有兴起的时候就有需求和应用了。概括来说,可以分为以下5种:
基于内容的推荐:这一类一般依赖于自然语言处理NLP的一些知识,通过挖掘文本的TF-IDF特征向量,来得到用户的偏好,进而做推荐。这类推荐算法可以找到用户独特的小众喜好,而且还有较好的解释性。这一类由于需要NLP的基础,本文就不多讲,在后面专门讲NLP的时候再讨论。
协调过滤推荐:本文后面要专门讲的内容。协调过滤是推荐算法中目前最主流的种类,花样繁多,在工业界已经有了很多广泛的应用。它的优点是不需要太多特定领域的知识,可以通过基于统计的机器学习算法来得到较好的推荐效果。最大的优点是工程上容易实现,可以方便应用到产品中。目前绝大多数实际应用的推荐算法都是协同过滤推荐算法。
混合推荐:这个类似我们机器学习中的集成学习,博才众长,通过多个推荐算法的结合,得到一个更好的推荐算法,起到三个臭皮匠顶一个诸葛亮的作用。比如通过建立多个推荐算法的模型,最后用投票法决定最终的推荐结果。混合推荐理论上不会比单一任何一种推荐算法差,但是使用混合推荐,算法复杂度就提高了,在实际应用中有使用,但是并 ...