机器学习
文章平均质量分 84
littlely_ll
Strive for the best, and prepare for the worst.
展开
-
非平衡数据处理几个观点
1.使用正确的评价准则对于非平衡数据,准确率这种评价准则可能不能用了,比如1000个样本中,只有10个为正样本,如果全预测为负样本,则准确率为99%,但这种模型根本就没用。这种情况,可以使用其他准则:PrecisionRecallF1 scoreMCC: 观察和预测类别之间的相关系数AUC2.训练集重抽样2.1 欠采样2.2 过采样3.合理使用k折交叉验证需要注意在使...原创 2019-03-24 15:26:50 · 1718 阅读 · 0 评论 -
python实现各种排序算法
python排序算法# -*-encoding: utf-8 -*-# param: a a list which to be sortclass MultiSort(object): # 交换函数 def exch(self, a, i, j): temp = a[i] a[i] = a[j] a[j] = temp原创 2017-09-25 20:41:26 · 1635 阅读 · 0 评论 -
特征选择之支持向量机递归特征消除(SVM-RFE)
支持向量机递归特征消除(下文简称SVM-RFE)是由Guyon等人在对癌症分类时提出来的,最初只能对两类数据进行特征提取。它是一种基于Embedded方法。支持向量机支持向量机广泛用于模式识别,机器学习等领域,SVM采用结构风险最小化原则,同时最小化经验误差,以此提高学习的性能。详细的SVM介绍请看我的另一篇博文《 线性支持向量机》在这简单介绍一下SVM。 设训练集{(xi,yi)}Ni=1\{(原创 2017-05-15 14:01:14 · 59448 阅读 · 17 评论 -
特征选择之遗传算法
基于遗传算法的特征选择是一种wrapper方法,该算法是以支持向量机分类器的识别率作为特征选择的可分性判断依据。在遗传算法中,对所选择的特征用[0,1]二进制串来初始化,由于二进制数{0,1}是等概率出现的,所以最优特征个数的期望是原始特征个数的一半。要进一步减少特征个数,则可以让二进制数{0,1}以不等概率出现,以a个特征中选择b个特征为例,使得在a位二进制串中1出现的概率为b/ab/a。 对于原创 2017-05-22 12:21:54 · 18815 阅读 · 6 评论 -
遗传算法及其实现
遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法的一种。它是借鉴了生物进化学中的一些现象而发展起来的,这些现象包括遗传,突变,自然选择以及杂交等。遗传算法的思想遗传算法是模拟生物学种的进化论,物种朝着有利于自己的方向发展,这在遗传算法中表现为朝着最优化的方向发展。在进化过程中,遗传算法模拟基因的行为,首先选择有优势的基因,并对基因进行配对,然后等位基因进行交换,并有一定的概率进行基因变异,这原创 2017-05-19 10:45:38 · 3295 阅读 · 0 评论 -
牛顿、拟牛顿法以及其他优化方法的R实现
\quad牛顿法(Newton method)和拟牛顿法(quasi Newton method)是求解无约束最优化问题的常用方法,有收敛速度快的优点。1. 牛顿法考虑无约束最优化问题 minx∈Rnf(x)min_{x\in R^n} f(x) 其中x∗x^*为目标函数极小点。 假设f(x)f(x)有二阶连续偏导数,若第k次迭代值为x(k)x^{(k)},则可将f(x)f(x)在x(k)x^原创 2017-02-04 14:04:52 · 10122 阅读 · 3 评论 -
独立抽样(MCMC方法)
(一)独立抽样code# simulationswaisyxmmu.betasigma.betaprop.sbetaacc.probcurrent.betafor(t in 1:m){ prop.betacur.eta prop.etaloga u u if(ucurrent.betaacc.prob }原创 2017-02-04 21:26:12 · 1414 阅读 · 0 评论 -
线性支持向量机
支持向量机可以分为:线性可分支持向量机,线性支持向量机和非线性支持向量机,本次内容只讲述线性可分支持向量机和线性支持向量机。支持持向量机是一种强大的分类学习算法,即可以解决二分类也可以解决多分类问题,本次只讲述二分类的问题。线性可分支持向量机线性可分支持向量机是要学习一个超平面,而这个超平面能把正例和负例完全分开,但是这样的超平面可能有无数多个,线性可分支持向量机利用间隔最大化求分离超平面原创 2017-04-16 14:37:30 · 6255 阅读 · 0 评论 -
人工蜂群算法
人工蜂群算法是模仿蜜蜂行为提出的一种优化方法,是集群智能思想的一个具体应用,它的主要特点是不需要了解问题的特殊信息,只需要对问题进行优劣的比较,通过各人工蜂个体的局部寻优行为,最终在群体中使全局最优值突现出来,有着较快的收敛速度。为了解决多变量函数优化问题,Karaboga提出了人工蜂群算法ABC模型(artificial bee colony algorithm)。蜜蜂采蜜机理蜜蜂是一种群居昆虫,原创 2017-05-24 16:25:25 · 9620 阅读 · 0 评论 -
bp神经网络
bp神经网络也即误差后向传播神经网络,顾名思义,即误差是向后传播的。但是对于信号的传播是正向的。 bp神经网络由一个输入层,一个或多个隐含层和一个输出层组成,每层有一些单元组成,输入层的单元称为输入单元,隐层和输出层的单元称为神经节点或者输出单元,它们的网络是全连接的。 神经网络可以用于分类和数值预测,对于分类,一个输出单元可以用来表示两个类,如果多于两个类,则每个类使用一个输出单元。向前传播输原创 2017-05-13 12:53:06 · 1572 阅读 · 0 评论 -
SVM与Logistic回归的关系
合页损失函数[z]+={z,z>00,z≤0[z]_{+} = \{^{z, z >0}_{0, z\le 0}SVM的目标函数对于线性SVM,我们知道它的原始最优化问题为: minw,b,ξ1/2||w||2+CΣNi=1ξis.t.yi(w⋅xi+b)≥1−ξi,i=1,2,...,Nξi≥0,i=1,2,...,Nmin_{w,b,\xi} 1/2||w||^2 +C \Sigma_{i=1原创 2017-09-25 12:47:33 · 770 阅读 · 0 评论 -
K-Prototypes聚类的Python实现
k-prototypes聚类 前一篇讲述了K-Prototypes聚类的原理以及它的伪代码,本篇根据上一篇内容编写了实现K-Prototypes的Python代码。# -*- coding: utf-8 -*-import numpy as npimport randomfrom collections import Counterdef dist(x, y): retu...原创 2018-04-22 21:04:15 · 14333 阅读 · 21 评论 -
k-prototypes聚类
聚类有多种方法,常见的有k-means,DBSCAN,分层聚类等,但这些都是处理数值型数据的,而k-modes只是处理分类变量数据,但更多的数据是既含有数值型数据也含有分类数据,因此需要有一种能同时处理两种不同类型数据的聚类方法,而k-prototypes就是这样的一种方法。损失函数k-prototypes聚类的准则就是使用一个合适的损失函数去度量数值型和分类变量对原型的距离。假设X={X...原创 2018-04-17 22:26:40 · 9871 阅读 · 2 评论 -
数据挖掘资源汇总
文献库Cornell University Library citeseerxNIPS Proceedings数据挖掘个人网站Jiawei HanZhi-Hua ZhouJian PeiShirin’s playgRound, 她的新网站Shirin’s playgRoundMohammed J. ZakiTREVOR HASTIEPhilip S. Yu...原创 2018-02-14 22:30:14 · 443 阅读 · 0 评论 -
噪音对比估计(NCE)
噪音对比估计(NCE, Noise Contrastive Estimation)是一种新的统计模型估计方法,由Gutmann和Hyv¨arinen提出来,能够用来解决神经网络的复杂计算问题,因此在图像处理和自然语言处理中得到广泛应用。在介绍NCE之前,首先复习一些基础知识。全概率公式设实验E" role="presentation" style="position: relative原创 2018-02-04 12:52:40 · 20861 阅读 · 7 评论 -
最大熵模型实现文本分类
最大熵模型的理论部分可以参考李航的《统计学习方法》或皮果提的最大熵学习笔记,本次使用的训练算法为GIS(Generalized Iterative Scaling),这个Python代码主要是作为理解最大熵模型而用。# -*- coding: utf-8 -*-from collections import defaultdictimport mathclass MaxEnt(o原创 2018-01-17 10:57:10 · 3140 阅读 · 1 评论 -
pyspark.linalg模块学习
class pyspark.ml.linalg.Vector方法toArray(): 把vector转换为numpy.ndarrayclass pyspark.ml.linalg.DenseVector(ar)v = Vectors.dense([1.0, 2.0])u = Vectors.dense([3.0, 4.0])#可以进行加减乘除v + u #DenseVector([4.0,原创 2017-10-05 15:55:29 · 2710 阅读 · 0 评论 -
使用pyspark进行机器学习(回归问题)
DecisionTreeRegressorclass pyspark.ml.regression.DecisionTreeRegressor(self, featuresCol="features", labelCol="label", predictionCol="prediction", maxDepth=5, maxBins=32, minInstancesPerNode=1, minInfo原创 2017-10-05 15:47:13 · 6049 阅读 · 1 评论 -
使用pyspark进行机器学习(聚类问题)
BisectingKMeansclass pyspark.ml.clustering.BisectingKMeans(self, featuresCol="features", predictionCol="prediction", maxIter=20, seed=None, k=4, minDivisibleClusterSize=1.0)参数解释maxIter: 最大迭代次数K:聚类簇数m原创 2017-10-03 16:25:36 · 6613 阅读 · 0 评论 -
使用pyspark进行机器学习(分类问题)
LogisticRegressionclass pyspark.ml.classification.LogisticRegression(self, featuresCol="features", labelCol="label", predictionCol="prediction", maxIter=100, regParam=0.0, elasticNetParam=0.0, tol=1e-6原创 2017-10-02 18:31:03 · 9890 阅读 · 3 评论 -
特征选择之基于相关性的特征选择(CFS)
此为本人学习笔记,转载请劳烦告知!特征选择特征抽取整合原始特征,这样可能产生一些新的特征,而特征选择是去除无关紧要或庸余的特征,仍然还保留其他原始特征。特征提取主要用于图像分析,信号处理和信息检索领域,在这些领域,模型精确度比模型可解释性要重要;特征选择主要用于数据挖掘,像文本挖掘,基因分析和传感器数据处理。今天主要做的是特征选择。特征选择定义:检测相关特征,摒弃冗余特征,以获得特征子集,从而以最小原创 2017-05-10 16:28:01 · 43812 阅读 · 45 评论 -
特征选择之最小冗余最大相关性(mRMR)
最小冗余最大相关性(mRMR)是一种滤波式的特征选择方法,由Peng et.al提出。 用途:图像识别,机器学习等 一种常用的特征选择方法是最大化特征与分类变量之间的相关度,就是选择与分类变量拥有最高相关度的前k个变量。但是,在特征选择中,单个好的特征的组合并不能增加分类器的性能,因为有可能特征之间是高度相关的,这就导致了特征变量的冗余。这就是Peng et.al说的“the m best fe原创 2017-05-12 17:37:04 · 40286 阅读 · 40 评论 -
R语言 MCMC算法及其实现
Metropolis-Hasting算法:Step 1: 选择一个不可约Markov链转移概率q(i,j),i,j∈\inS.再从S={1,2,… ,m}中选择某个整数. Step 2: 令n=0以及x0=kx_0=k. Step 3: 产生一个随机变量X使得P{X=j}=q(Xn,j)P\{X=j\}=q(X_n,j), 再产生一个随机数U. Step 4: 如果U<π(X)q(X,Xn)π原创 2016-12-12 19:09:47 · 15043 阅读 · 6 评论 -
R语言 牛顿-拉夫森迭代法求方程组
R语言 牛顿-拉夫森迭代法求方程组牛顿-拉夫森迭代法: xk+1=xk−[f′(x)]−1f(x)x_{k+1}=x_{k}-{[f'(x)]^{-1}}f(x) 其中,f′(x)f'(x)为Jacobi矩阵。 例,设非线性方程组为: x2+y2=1,x^2+y^2=1, y2=2xy^2=2x 求方程组的解。 Jocabi行列式: R代码如下:fun <- function(x原创 2016-12-11 23:00:30 · 15708 阅读 · 3 评论 -
《机器学习实战》决策树
《机器学习实战》K近邻(KNN)分类 上一章写了K近邻分类(见上链接),本章将学习决策树的python实现,虽然K近邻在大多数的时候工作很好,但是没有一个直观的认识,而决策树可以将分类视觉化,使人们对其分类一目了然,当然,对于大型的决策树还是很难进行阅读的。本次的实现决策树只生成树,画出树图,不剪枝。python实现决策树##function to calculate the S原创 2017-01-10 20:43:30 · 377 阅读 · 0 评论 -
懒惰学习——使用近邻分类(KNN)
KNN算法优点:简单有效;对数据的分布没有要求;训练阶段很快。缺点:不产生模型,在发现特征之间的关系上的能力有限;分类阶段很慢;需要大量的内存;名义变量(特征)和缺失数据需要额外处理。之所以被称为懒惰学习算法,是因为从技术上说,没有抽象化的步骤。抽象过程与一般过程都被跳跃过去了。由于高度依赖训练案例,所以懒惰学习又称为机械学习。机械学习不会建立一个模型,所以该方法被归类为非参数学习方法原创 2017-02-04 21:26:55 · 5241 阅读 · 0 评论 -
朴素贝叶斯分类
朴素贝叶斯算法描述应用贝叶斯定理进行分类的一个简单应用。优点:简单、快速、有效;能处理好噪声数据和缺失数据;需要用来训练的例子相对较少,但同样能处理好大量的例子;很容易获得一个预测的估计概率值。缺点:依赖于一个常用的错误假设,即一样的重要性和独立特征;应用在含有大量数值特征的数据集时并不理想;概率的估计值相对于预测的类而言更加不可靠。贝叶斯分类器已应用于以下方面:文本分类;在计算原创 2017-02-04 21:27:00 · 1107 阅读 · 6 评论 -
《机器学习实战》K近邻(KNN)分类
R与Python在机器学习中的比较\quad最近开始用python实现机器学习算法,通过对比R与python实现机器学习算法,本人发现,用python实现算法比R实现算法更好理解。使用python能让你理解算法的每一步是怎样做的,而在R中,只有一个实现算法的函数和其中要设置的参数,虽然只要理解机器学习算法的内容就能知道参数所代表的含义进而设置其中的参数,但是R中的计算就像一个黑盒子,不知道过程是怎样原创 2017-01-09 16:49:23 · 566 阅读 · 0 评论 -
决策树(二)
分类与回归树(CART)CART树由特征选择、树的生成及树的剪枝组成,可用于分类,也可用于回归。CART假设决策树是二叉树,内部节点特征取值为“是”和“否”。CART算法由以下两步组成: (1)决策树生成: 基于训练数据集生成决策树,生成的决策树要尽量大; (2)决策树剪枝: 用验证数据集对已生成的树进行剪枝并选择最优子树,这时用损失函数最小作为剪枝的标准。最小二乘回归树生成算法输原创 2017-01-05 17:26:03 · 919 阅读 · 0 评论 -
朴素贝叶斯法及其R实现
1. 朴素贝叶斯基本方法1.1 贝叶斯分类法基本公式:P(Y=ck|X=x)=P(Y=ck)ΠjP(X(j)=x(j)|Y=ck)∑k(P(Y=ck)ΠjP(Xj=xj|Y=ck)),k=1,2,⋯,KP(Y=c_k|X=x)=\frac{P(Y=c_k)\Pi_jP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_k(P(Y=c_k)\Pi_jP(X^{j}=x^{j}|Y=c_k))}原创 2016-12-19 12:44:35 · 6180 阅读 · 0 评论 -
感知机及其R实现
感知机1. 感知机模型定义:假设输入空间(特征空间)是χ⊆Rn\chi\subseteq R^n,输出空间是Y={+1,−1}Y=\{+1,-1\}。输入x∈χx\in \chi表示实例的特征向量,对应于输入空间的点;输出y∈Yy\in Y表示实例的类别。由输入空间到输出空间的如下函数 f(x)=sign(w⋅x+b)f(x)=sign(w\cdot x+b) 称为感知机。其中,ww和bb为感知原创 2016-12-15 19:14:15 · 5459 阅读 · 1 评论 -
《机器学习实战》朴素贝叶斯(Naive Bayes)分类
1. 《机器学习实战》K近邻(KNN)分类 2. 《机器学习实战》决策树 \quad对于朴素贝叶斯理论分析可看朴素贝叶斯法及其R实现 ,对于这篇的R实现,只是在这种特殊情况,对于一般的情况并没有实现,所以,本篇文章使用python实现朴素贝叶斯分类的一般方法,并对垃圾邮件进行分类。##word list vector functiondef loadDataSet(): posti原创 2017-01-20 11:47:16 · 1036 阅读 · 0 评论 -
《机器学习实战》logistic回归
《机器学习实战》K近邻(KNN)分类《机器学习实战》决策树《机器学习实战》朴素贝叶斯(Naive Bayes)分类 \quad上一章学习了朴素贝叶斯分类器,贝叶斯分类器在文本分类方面表现很好,贝叶斯分类器是基于概率的分类器,而本章的logistic回归也可以说是基于概率的分类,虽然其名为带“回归”两字,其实是一种分类器。Logistic回归采用的是sigmoid函数,其取值在0~1之间。在分类原创 2017-01-23 21:44:31 · 422 阅读 · 0 评论 -
模拟退火算法
模拟退火算法(simulated annealing,SA)是一种概率算法,用来在一个大的搜索空间内找到命题的最优解。 模拟退火是来自冶金学的专有名词退火。退火是将材料加热后再经冷却,使得增大晶粒的体积,并减少晶格的缺陷。模拟退火的思想模拟退火是一种贪心算法,但在搜索过程中加入了随机因素,即在一定的概率下接受一个比当前解要差的解,这样就可能跳出局部最优解,可以证明,模拟退火以概率达到全局最优解。模原创 2017-05-23 15:54:20 · 3321 阅读 · 0 评论 -
特征选择之relief及reliefF算法
relief算法Relief算法最早由Kira提出,最初局限于两类数据的分类问题。Relief算法是一种特征权重算法(Feature weighting algorithms),根据各个特征和类别的相关性赋予特征不同的权重,权重小于某个阈值的特征将被移除。Relief算法中特征和类别的相关性是基于特征对近距离样本的区分能力。算法从训练集D中随机选择一个样本R,然后从和R同类的样本中寻找最近邻样本H,原创 2017-05-11 12:01:57 · 51085 阅读 · 12 评论 -
PCA原理及其R实现
主成分分析法主成分分析也称主分量分析,是揭示大样本、多变量数据或样本之间内在关系的一种方法,旨在利用降维的思想,把多指标转化为少数几个综合指标,降低观测空间的维数,以获取最主要的信息。 在统计学中,主成分分析(principal components analysis, PCA)是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐原创 2017-04-18 11:19:40 · 6471 阅读 · 0 评论 -
线性判别分析(LDA)
线性判别分析(LDA)是一种监督学习方法,和主成分分析(PCA)一样,其主要用来降维。有些资料也把LDA称为Fisher线性判别(FLD)。LDA在机器学习,图像识别,数据挖掘等领域有着广泛的应用。LDA的基本思想就是:给定训练样本集,设法将样本投影到一条直线上,使得同类样本的投影点尽可能地接近,异类样本的投影点尽可能远离,在对新样本进行分类时,将其投影到相同的这条直线上,再根据投影点的位置来确定新原创 2017-05-09 14:33:10 · 1305 阅读 · 0 评论 -
XGBoost算法原理及其实现
目标函数Obj(θ)=L(θ)+Ω(θ)Obj(\theta)=L(\theta)+\Omega(\theta) 其中,L(θ)L(\theta)表示模型拟合训练数据的程度,Ω(θ)\Omega(\theta)是正则化项,用来表示模型的复杂程度。一般,训练集的损失函数记为:L=Σni=1l(yi,yi^)L=\Sigma_{i=1}^nl(y_i,\hat{y_i}) - 平方损失函数:l(原创 2017-04-08 14:46:17 · 3884 阅读 · 3 评论 -
决策树(一)
1. 特征选择1.1 信息增益熵(entropy)是表示随机变量不确定性的度量,设x是一个取有限个值的离散随机变量,其概率分布为: P(X=xi)=pi,i=1,2,⋯,nP(X=x_i)=p_i,i=1,2,\cdots,n 则随机变量X的熵定义为 H(X)=−∑i=1npilogpiH(X)=-\sum_{i=1}^np_ilog p_i 熵只依赖于X的分布,与X的取值无关,所原创 2016-12-22 16:54:27 · 568 阅读 · 0 评论 -
AdaBoost算法
基本常用的几种提升方法 而本次所说的就为AdaBoost方法。AdaBoost方法基本思想AdaBoost方法是一种常用的统计学习方法,在分类问题中,它通过改变训练样本权重,学习多个分类器,并将这些分类器进行线性组合,以提高分类性能。实际上,这就是“三个臭皮匠顶个诸葛亮”的道理。 AdaBoost算法对于提升方法,主要有两个问题:一是在每一轮如何改变训练数据的权值或概率分布;而是如何将弱分类原创 2017-04-04 13:16:34 · 693 阅读 · 0 评论