感知机是简单的线性分类模型 ,是二分类模型.其间用到随机梯度下降方法进行权值更新.参考他人代码,用matlab实现总结下. 权值求解过程通过Perceptron.m函数完成 function W = Perceptron(X,y,learnRate,maxStep) % Perceptron.m % Perception Learning Algorithm(感知机) % X一行为一个样本,y的取值{-1,+1} % learnRate:学习率 % maxStep:最大迭代次数 [n,m] =…
评价指标是针对同样的数据,输入不同的算法,或者输入相同的算法但参数不同而给出这个算法或者参数好坏的定量指标. 以下为了方便讲解,都以二分类问题为前提进行介绍,其实多分类问题下这些概念都可以得到推广. 准确率 准确率是最好理解的评价指标,它是一个比值: \[ 准确率 = \cfrac{算法分类正确的数据个数}{输入算法的数据的个数} \] 但是使用准确率评价算法有一个问题,就是在数据的类别不均衡,特别是有极偏的数据存在的情况下,准确率这个评价指标是不能客观评价算法的优劣的.例如下面这个例子: 我们…
OvO与OvR 前文书道,逻辑回归只能解决二分类问题,不过,可以对其进行改进,使其同样可以用于多分类问题,其改造方式可以对多种算法(几乎全部二分类算法)进行改造,其有两种,简写为OvO与OvR OvR one vs rest,即一对剩余所有,如字面意思,有的时候称为OvA,one vs all 假设有四个类别,对于这种分类问题,可以将一个类别选中以后,使其他三个类别合并为一个类别,即其它类别,这样就换变为二分类问题了,这种可以形成四种情况,选择预测概率高的,也就是说,有n个类别就进行n次分类,然…
0 - 算法描述 感知机算法是一类二分类算法,其问题描述为,给定一个训练数据集 $$T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\},$$ 其中$x_i\in \mathbb{R}^n,y_i\in\{-1,1\},i=1,2,\cdots,N$,求参数$w,b$,使得以下损失函数极小化问题的解 $$\min_{w,b}L(w,b)=\min -\sum_{x_i\in M}y_i(w\cdot x_i+b),$$ 其中$M$为误分类点的集合. 下一节给出损失…
转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885 CSDN−勿在浮沙筑高台 支持向量机(Support Vector Machine)以前在分类.回归问题中非常流行.支持向量机也称为最大间隔分类器,通过分离超平面把原始样本集划分成两部分. 首先考虑最简单的情况:线性可分支持向量机.即存在一个超平面能够把训练样本分开. 1.线性可分支持向量机 1.考虑一个线性二分类的问题:例如以下左图,在二维平面上有两种样本点x…
Alink漫谈(八) : 二分类评估 AUC.K-S.PRC.Precision.Recall.LiftChart 如何实现 目录 Alink漫谈(八) : 二分类评估 AUC.K-S.PRC.Precision.Recall.LiftChart 如何实现 0x00 摘要 0x01 相关概念 0x02 示例代码 2.1 主要思路 0x03 批处理 3.1 EvalBinaryClassBatchOp 3.2 BaseEvalClassBatchOp 3.2.0 调用关系综述 3.2.1 calL…
概述 在机器学习中,感知机(perceptron)是二分类的线性分类模型,属于监督学习算法.输入为实例的特征向量,输出为实例的类别(取+1和-1). 感知机对应于输入空间中将实例划分为两类的分离超平面.感知机旨在求出该超平面,为求得超平面导入了基于误分类的损失函数,利用梯度下降法 对损失函数进行最优化(最优化). 感知机的学习算法具有简单而易于实现的优点,分为原始形式和对偶形式.感知机预测是用学习得到的感知机模型对新的实例进行预测的,因此属于判别模型. 感知机由Rosenblatt于1957年提…
Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术的3.2.1节) 如果两个Random实例使用相同的种子,并且调用同样的函数,那么生成的sequence是相同的 也可以调用Math.random()生成随机数 Random实例是线程安全的,但是并发使用Random实例会影响效率,可以考虑使用ThreadLocalRandom变量. Random实…
knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法.注意,不是聚类算法.所以这种分类算法 必然包括了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒惰算法.它并非像其他的分类算法先通过训练建立分类模型.,而 是一种被动的分类过程.它是边测试边训练建立分类模型. 算法的一般描述过程如下: 1.首先计算每个测试样本点到其他每个点的距离.这个距离可以是欧氏距离,余弦距离等. 2.然后取出距离小于设定的距离阈值的点.这些点即为根据阈值环绕在测试样本最邻…
knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法. 注意,不是聚类算法.所以这样的分类算法必定包含了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒惰算法.它并不是 像其它的分类算法先通过训练建立分类模型.,而是一种被动的分类 过程.它是边測试边训练建立分类模型. 算法的一般描写叙述步骤例如以下: 1.首先计算每一个測试样本点到其它每一个点的距离. 这个距离能够是欧氏距离,余弦距离等. 2. 然后取出距离小于设定的距离阈值的点. 这些点即为依…
  一.什么是K近邻算法? 定义: 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 来源: KNN算法最早是由Cover和Hart提出的一种分类算法. 计算距离公式: 两个样本的距离可以通过如下公式计算,又叫欧式距离. 比如说,a(a1,a2,a3),b(b1,b2,b3)   欧式距离 二.K近邻算法的实现 sk-learn近邻算法API sklearn.neighbors.KNeighborsClassifier(n_nei…
0. 前言 1. MNIST 数据集 2. 二分类器 3. 效果评测 4. 多分类器与误差分析 5. Kaggle 实战 0. 前言 "尽管新技术新算法层出不穷,但是掌握好基础算法就能解决手头 90% 的机器学习问题." 本系列参考书 "Hands-on machine learning with scikit-learn and tensorflow"以及kaggle相关资料 1. MNIST 数据集 MNIST是最常用的用来实验分类模型的数据集,有7w多张手写0…
转https://www.cnblogs.com/litthorse/p/9332370.html 作为(曾)被认为两大最好的监督分类算法之一的adaboost元算法(另一个为前几节介绍过的SVM算法),该算法以其简单的思想解决复杂的分类问题,可谓是一种简单而强大的算法,本节主要简单介绍adaboost元算法,并以实例看看其效果如何. 该算法简单在于adaboost算法不需要什么高深的思想,它的基础就是一个个弱小的元结构(弱分类器),比如就是给一个阈值,大于阈值的一类,小于阈值的一类,这样的最简…
写这个系列是因为最近公司在搞技术分享,学习Spark,我的任务是讲PySpark的应用,因为我主要用Python,结合Spark,就讲PySpark了.然而我在学习的过程中发现,PySpark很鸡肋(至少现在我觉得我不会拿PySpark做开发).为什么呢?原因如下: 1.PySpark支持的算法太少了.我们看一下PySpark支持的算法:(参考官方文档) 前面两个pyspark.sql和pyspark.streaming是对sql和streaming的支持.主要是读取数据,和streaming处…
SparkMLlib分类算法之支持向量机 (一),概念 支持向量机(support vector machine)是一种分类算法,通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的.通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解.参考网址:http://www.cnblogs.com/end/p/384…
一.作业说明 给定训练集spam_train.csv,要求根据每个ID各种属性值来判断该ID对应角色是Winner还是Losser(0.1分类). 训练集介绍: (1)CSV文件,大小为4000行X59列; (2)4000行数据对应着4000个角色,ID编号从1到4001; (3)59列数据中, 第一列为角色ID,最后一列为分类结果,即label(0.1两种),中间的57列为角色对应的57种属性值. 二.思路分析及实现 2.1 思路分析 这是一个典型的二分类问题,结合课上所学内容,决定采用Log…
一.KNN算法概述 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表.Cover和Hart在1968年提出了最初的邻近算法.KNN是一种分类(classification)算法,它输入基于实例的学习(instance-based learning),属于懒惰学习(lazy learning)即KNN没有显式的学习过程,也就是说没有训练阶段,数据…
1决策树(Decision Trees)的优缺点 决策树的优点: 一. 决策树易于理解和解释.人们在通过解释后都有能力去理解决策树所表达的意义. 二. 对于决策树,数据的准备往往是简单或者是不必要的.其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性. 三. 能够同时处理数据型和常规型属性.其他的技术往往要求数据属性的单一. 四. 决策树是一个白盒模型.如果给定一个观察的模型,那么根据所产生的决策树很容易推出相应的逻辑表达式. 五. 易于通过静态测试来对模型进行评测.表示有可能测量该…
IMDB数据集下载速度慢,可以在我的repo库中找到下载,下载后放到~/.keras/datasets/目录下,即可正常运行.)中找到下载,下载后放到~/.keras/datasets/目录下,即可正常运行. 电影评论分类:二分类 二分类可能是机器学习最常解决的问题.我们将基于评论的内容将电影评论分类:正类和父类. IMDB数据集 IMDB数据集有5万条来自网络电影数据库的评论:其中2万5千条用来训练,2万5千条用来测试,每个部分正负评论各占50%. 划分训练集.测试集的必要性:不能在相同的数据…
决策树(Decision tree) 决策树是以实例为基础的归纳学习算法.     它从一组无次序.无规则的元组中推理出决策树表示形式的分类规则.它采用自顶向下的递归方式,在决策树的内部结点进行属性值的比较,并根据不同的属性值从 该结点向下分支,叶结点是要学习划分的类.从根到叶结点的一条路径就对应着一条合取规则,整个决策树就对应着一组析取表达式规则.1986年 Quinlan提出了著名的ID3算法.在ID3算法的基础上,1993年Quinlan又提出了C4.5算法.为了适应处理大规模数据集的需要…
一.LR分类器(Logistic Regression Classifier) 在分类情形下,经过学习后的LR分类器是一组权值w0,w1, -, wn,当测试样本的数据输入时,这组权值与测试数据按照线性加和得到x = w0+w1x1+w2x2+- wnxn,这里x1,x2, -xn是样本的n个特征. 之后按照sigmoid函数的形式求出f(x) = 1/(1+e^(-x)) 由于sigmoid函数的定义域为(-INF, INF),值域为(0, 1),因此最基本的LR分类器适合对两类目标进行分类.…
一.决策树 决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序.无规则的实例中 推理出以决策树表示的分类规则.构造决策树的目的是找出属性和类别间的关系,用它来预测将来未知类别的记录的类别.它采用自顶向下的递归方式,在决策树的 内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论. 主要的决策树算法有ID3.C4.5(C5.0).CART.PUBLIC.SLIQ和SPRINT算法等.它们在选择测试属性采用的技术.生…
支持向量机(Support Vector Machine ,SVM)的主要思想是:建立一个最优决策超平面,使得该平面两侧距离该平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力.对于一个多维的样本集,系统随机产生一个超平面并不断移动,对样本进行分类,直到训练样本中属于不同类别的样本点正好位于该超平面的两侧,满足该条件的超平面可能有很多个,SVM正式在保证分类精度的同时,寻找到这样一个超平面,使得超平面两侧的空白区域最大化,从而实现对线性可分样本的最优分类. 支持向量机中的支持向…
支持向量机(support vector machine, 以下简称 svm)是机器学习里的重要方法,特别适用于中小型样本.非线性.高维的分类和回归问题.本系列力图展现 svm 的核心思想和完整推导过程,以飨读者. 一.原理概述 机器学习的一大任务就是分类(Classification).如下图所示,假设一个二分类问题,给定一个数据集,里面所有的数据都事先被标记为两类,能很容易找到一个超平面(hyperplane)将其完美分类. 然而实际上可以找到无数个超平面将这两类分开,那么哪一个超平面是效果…
分类算法之逻辑回归(Logistic Regression) 1.二分类问题 现在有一家医院,想要对病人的病情进行分析,其中有一项就是关于良性\恶性肿瘤的判断,现在有一批数据集是关于肿瘤大小的,任务就是根据肿瘤的大小来判定是良性还是恶性.这就是一个很典型的二分类问题,即输出的结果只有两个值----良性和恶性(通常用数字0和1表示).如图1所示,我们可以做一个直观的判定肿瘤大小大于5,即为恶心肿瘤(输出为1):小于等于5,即为良性肿瘤(输出为0). 2.分类问题的本质 分类问题本质上属于有监督学习…
Logistic回归属于概率型的非线性回归,分为二分类和多分类的回归模型.这里只讲二分类. 对于二分类的Logistic回归,因变量y只有“是.否”两个取值,记为1和0.这种值为0/1的二值品质型变量,我们称其为二分类变量. 假设在自变量$x_{1}, x_{2}, \cdots, x_{p}$作用下,y取“是”的概率是p,则取“否”的概率是1-p,研究的是当y取“是”发生的模率p与自变量$x_{1}, x_{2}, \cdots, x_{p}$的关系. Logistic回归模型 ①Logit变…
liner classifiers 逻辑回归用在2分类问题上居多.它是一个非线性的回归模型,其最大的好处恰恰是可以解决二元类问题,目前在金融行业,基本都是使用Logistic回归来预判一个用户是否为好客户,因为它还弥补了其他黑盒模型(SVM.神经网络.随机森林等)不具解释性的缺点.知乎 1.logistic 逻辑回归其实是一个分类算法而不是回归算法.通常是利用已知的自变量来预测一个离散型因变量的值(像二进制值0/1,是/否,真/假).简单来说,它就是通过拟合一个逻辑函数(logit fuctio…
使用pytorch快速搭建神经网络实现二分类任务(包含示例) Introduce 上一篇学习笔记介绍了不使用pytorch包装好的神经网络框架实现logistic回归模型,并且根据autograd实现了神经网络参数更新. 本文介绍利用pytorch快速搭建神经网络.即利用torch.nn以及torch.optim库来快捷搭建一个简单的神经网络来实现二分类功能. 利用pytorch已经包装好的库(torch.nn)来快速搭建神经网络结构. 利用已经包装好的包含各种优化算法的库(torch.opti…
最近在github上看到一个很有趣的项目,通过文本训练可以让计算机写出特定风格的文章,有人就专门写了一个小项目生成汪峰风格的歌词.看完后有一些自己的小想法,也想做一个玩儿一玩儿.用到的原理是深度学习里的循环神经网络,无奈理论太艰深,只能从头开始开始慢慢看,因此产生写一个项目的想法,把机器学习和深度学习里关于分类的算法整理一下,按照原理写一些demo,方便自己也方便其他人.项目地址:https://github.com/LiuRoy/classfication_demo,目前实现了逻辑回归和神经网…