机器学习
文章平均质量分 89
slx_share
这个作者很懒,什么都没留下…
展开
-
生成对抗网络(GAN)简介以及Python实现
本篇博客简单介绍了生成对抗网络(Generative Adversarial Networks,GAN),并基于Keras实现GAN。以往的生成模型都是预先假设生成样本服从某一分布族,然后用深度网络学习分布族的参数,最后从学习到的分布中采样生成新的样本。例如变分自编码器就是构建生成样本的密度函数p(x∣z,θ)p(x|z,\theta)p(x∣z,θ),这种模型称为显示密度模型。GAN并不学习...原创 2019-06-30 20:22:03 · 15626 阅读 · 9 评论 -
ARIMA模型简介以及Python示例
设观测时间序列{Z1,Z2,Z3,...,Zn}\{Z_1, Z_2, Z_3, ..., Z_n\}{Z1,Z2,Z3,...,Zn}平稳过程序列满足三个条件:均值恒定。E(Zt)=μE(Z_t)=\muE(Zt)=μ方差恒定。Var(Zt)=σ2Var(Z_t)=\sigma^2Var(Zt)=σ2协方差仅与时滞k相关。即Cov(Zt,Zt+k)Cov(Z_t, Z_t...原创 2018-12-21 10:56:02 · 15240 阅读 · 9 评论 -
机器学习中的高斯过程简介
前面的博客有说到高斯混合模型,本质是用n(簇的个数)个高斯函数的线性组合拟合数据,然后用训练数据集学习各个高斯函数的参数以及线性组合系数,最后反过来更具学习到的模型P(y∣X)P(y|X)P(y∣X)对原数据集进行聚类。高斯过程(Gaussian Process, GP)同样采用高斯函数对训练数据集进行学习得到P(y∣X)P(y|X)P(y∣X)。不同的是,高斯过程采用一个高斯函数,并且基于核函...原创 2018-11-05 09:56:07 · 7090 阅读 · 1 评论 -
机器学习中损失函数的总结
统计机器学习的策略通常是最小化代价函数(目标函数),因此代价函数的选取对学习效果影响很大。损失函数与代价函数是一回事,但有的书籍定义损失函数指单个样本的损失(lll),而代价函数指损失函数之和或加上正则化项(LLL)。本文用lll表示单个样本的损失,LLL表示所有样本的平均损失,ypy^pyp表示预测值f(x)f(x)f(x)。分类模型损失函数分类模型的损失函数通常用yypyy^pyyp来表示...原创 2018-10-25 14:13:41 · 1039 阅读 · 1 评论 -
机器学习中集成学习方法的总结
BaggingBoostingStackingBlending原创 2018-10-22 11:27:36 · 1369 阅读 · 0 评论 -
XGBoost算法简介及Python实现
GB(梯度提升)算法就是用损失函数的梯度近似新一轮的残差。GBDT即采用决策树(通常为CART回归树)作为基本分类器的提升算法。GBDT算法是一种加法模型,即逐步添加树以使得目标函数(或称代价函数,即损失函数之和)值最大程度减小。此时的目标函数没有正则化项,仅仅是损失函数(通常是平方损失函数)值之和,这样容易造成过拟合,因为对于回归树一直细分下去损失函数一直减小,树的层数却越来越大。实质上决策...原创 2018-10-19 10:04:33 · 7770 阅读 · 3 评论 -
推荐——协同过滤算法以及Python实现
协同过滤算法(collaborative filtering)的目标是基于用户对物品的历史评价信息,向目标用户(active user)推荐其未购买的物品。协同过滤算法可分为基于物品的,基于用户的和基于矩阵分解,本文实现基于物品和基于矩阵分解的协同过滤算法。协同过滤算法总览输入数据:典型的协同过滤问题输入数据为m个用户list,n个物品list,同时每个用户有一个已评价的物品list。 ...原创 2018-05-08 17:09:34 · 31358 阅读 · 2 评论 -
标注——隐马尔科夫模型(HMM)以及Python实现
隐马尔可夫模型(HMM)是可用于标注问题的统计模型。关于HMM通常包含三类问题:1.概率计算 2.参数学习 3.预测状态。本博客简单罗列下HMM的知识点,给出代码。详细地参考李航《统计学习方法》。模型简介HMM描述先由隐藏的马尔可夫链生成状态序列,各个状态序列生成一个观测,组合成最终的观测序列。故整个模型包含三个要素: 1. 初始状态概率向量:生成第一个状态的概率 2. 状态转移概率矩...原创 2018-05-08 15:13:14 · 13310 阅读 · 5 评论 -
人工神经网络——反向传播算法(BP)以及Python实现
人工神经网络是模拟生物神经系统的。神经元之间是通过轴突、树突互相连接的,神经元收到刺激时,神经脉冲在神经元之间传播,同时反复的脉冲刺激,使得神经元之间的联系加强。受此启发,人工神经网络中神经元之间的联系(权值)也是通过反复的数据信息”刺激”而得到调整的。而反向传播(back propagation)算法就是用来调整权值的。核心思想训练误差逐层反向传播,每层神经元与下层神经元间权重通过误差最...原创 2018-05-08 10:40:23 · 14083 阅读 · 1 评论 -
关联分析——FP树增长算法以及Python实现
FP树增长算法是一种挖掘频繁项集的算法。Apriori算法虽然简单易实现,效果也不错,但是需要频繁地扫描数据集,IO费用很大。FP树增长算法有效地解决了这一问题,其通过两次扫描数据集构建FP树,然后通过FP树挖掘频繁项集。核心思想构建FP树,深度或广度优先搜索条件FP树挖掘频繁项集。算法简介基本概念FP树:FP树是整个算法的核心,一颗FP树实质上包括两个部分:项头表,树...原创 2018-05-07 21:58:27 · 11155 阅读 · 0 评论 -
机器学习基础理论笔记
二分类模型TP(ture positive):正确预测为正类的样本数 FP(false positive):错误预测为正类的样本数 TN(true negtive):正确预测为负类的样本数 FN(false negtive):错误预测为负类的样本数准确率(accuracy):预测正确的样本占总样本的比例TP+TNTP+FP+TN+FNTP+TNTP+FP+TN+FN\frac{TP+...原创 2019-02-03 16:29:51 · 392 阅读 · 0 评论 -
机器学习特征工程方法的总结(持续更新……)
维度过高会造成数据稀疏,不利于模型的训练。我们在选取特征时需要遵守的一个准则就是:特征并非越多越好,而是越准确越好。挑选特征(filter)机理分析根据业务知识,进行机理分析,挑选对目标影响最大的K个特征方差分析计算方差,排除方差小于阈值的特征相关性分析对特征与目标间以及特征间进行相关性分析、偏相关分析,排除冗余特征皮尔逊相关系数适合定量特征的相关性分析偏相关分析考虑到特征间......原创 2019-07-03 18:09:00 · 1999 阅读 · 1 评论 -
自编码器、变分自编码器(VAE)简介以及Python实现
本篇博客简单介绍了自编码器(AutoEncoder, AE)以及近几年比较火的变分自编码器(Variational AutoEncoder, VAE),并用Python实现。自编码器(AE)自编码器是一种无监督学习模型,可用于数据降维,数据可视化,深度模型逐层预训练等。原始AE结构非常简单,如下图所示:模型由输入层、隐藏层以及输出层构成,输出层神经元数目与输入层相等。编码(encode)...原创 2019-06-25 14:50:00 · 16110 阅读 · 5 评论 -
受限波尔兹曼机(RBM)简介以及Python实现
预备知识概率图模型独立性因子分解贝叶斯网络马尔科夫网络变量消除采样MCMC采样Gibbs采样玻尔兹曼机对比散度算法代码参考资料《深入浅出深度学习-原理剖析与Python实践》黄安埠...原创 2019-06-20 09:21:36 · 8532 阅读 · 9 评论 -
Pyspark使用笔记
本博客记录了学习Pyspark的笔记。之前一直都是从数据库中导出数据到本地,再进行建模分析,并未使用Spark。由于相对比较熟悉Python,所以便用Pyspark接入Spark进行建模分析。Pyspark结构整个程序由11个公共类加4个模块组成。...原创 2019-05-24 10:43:35 · 914 阅读 · 0 评论 -
Keras使用笔记
数据预处理keras提供针对文本(text)、序列(sequence)以及图像(image)三中类型数据的预处理方法。from keras.preprocessing import text, sequence, image文本数据处理步骤:文本拆分建立索引(编码),转换为纯数值序列补齐序列(padding), 转换为矩阵# 通常处理多分文档构成的list,每份文档作为一个独立的...原创 2019-05-22 15:29:16 · 715 阅读 · 0 评论 -
深度学习中卷积操作简单介绍
卷积定义卷积的数学定义是:连续形式h(t)=∫−∞+∞f(τ)g(t−τ)dτh(t)=\int_{-\infty}^{+\infty}{f(\tau)g(t-\tau)d\tau}h(t)=∫−∞+∞f(τ)g(t−τ)dτ离散形式h(t)=∑τ=−∞+∞f(τ)g(t−τ)dτh(t)=\sum_{\tau=-\infty}^{+\infty}{f(\tau)g(t-\tau)d\ta...原创 2019-05-21 16:29:57 · 852 阅读 · 0 评论 -
数据预处理中常用检验方法汇总以及Python示例
统计检验方法假设检验步骤:给出原假设H0H_0H0,通常为积极肯定的一面,例如原数据集及符合某类分布F(X)F(X)F(X)。挑选统计量(该统计量服从分布F(X)F(X)F(X)),根据样本计算统计量的值。根据预先设定的显著性程度或者置信度,计算临界值,若统计值超出临界值则否定原假设;或者根据统计值计算p值(符合原假设的概率),若p值小于显著性程度则否定原假设。基于上述思想,可以先假...原创 2019-02-22 16:07:44 · 3347 阅读 · 1 评论 -
异常检测—IsolationForest算法简介以及Python实现
IsolationForest是一种适合高维数据集的异常值检测算法。核心思想通过随机切分数据集,异常点应该是容易被隔离的。算法简介随机选择一个特征,再在该特征下最大与最小值间随机选择一个值作为切分点,递归切分数据集,直到每个样本点被隔开,从而构建一颗类似CART分类树的随机树。重复构建多颗随机树。从根节点到叶节点的路径越长,代表该点越难被隔离,即该点越不可能是异常点。计算每个样本点路径...原创 2019-02-22 15:18:57 · 2907 阅读 · 0 评论 -
异常检测—LOF算法简介以及Python实现
参考资料https://dl.acm.org/ft_gateway.cfm?id=335388&ftid=2057&dwn=1&CFID=51876766&CFTOKEN=b2427295e6580441-94D5C0E4-E786-FC78-16E741661C2500A7原创 2019-02-21 20:26:48 · 11695 阅读 · 2 评论 -
关联分析——Apriori算法以及Python实现
Aprior算法是比较经典的关联规则挖掘算法。核心思想核心就是先验原理,即频繁项集的子集必定是频繁项集。反之,若子集非频繁,则超集必定非频繁。算法简介基本概念购物篮事务(transaction):一位顾客一次购买商品的记录就是一条事务。 项集(itemset):商品的集合。 频繁项集:集合内商品数量大于阈值的项集。 关联规则:形如X⟶YX⟶YX \longrigh...原创 2018-05-07 17:24:45 · 5146 阅读 · 2 评论 -
聚类——谱聚类算法以及Python实现
谱聚类(spectral cluster)可以视为一种改进的Kmeans的聚类算法。常用来进行图像分割。缺点是需要指定簇的个数,难以构建合适的相似度矩阵。优点是简单易实现。相比Kmeans而言,处理高维数据更合适。核心思想构建样本点的相似度矩阵(图),将图切割成K个子图,使得各个子图内相似度最大,子图间相似度最弱算法简介构建相似度矩阵的拉普拉斯矩阵。对拉普拉斯矩阵进行特征值分解,选...原创 2018-05-07 15:45:20 · 9189 阅读 · 4 评论 -
分类——最大熵模型以及Python实现
最大熵模型是一种分类模型,常用于自然语言处理。优点是能充分考虑限制条件,缺点是非常耗时。核心思想满足既定事实情况下,模型对不确定部分的预测应该是等可能的,即熵最大。算法简介模型热力学中有熵增定理,意思是系统与外界隔离时,系统的熵将趋于增长。将这种思想应用到机器学习模型中,外界意味着约束,即既定的事实。那么模型只要满足既定的事实,其他不确定的部分就应该”熵增”,故熵最...原创 2018-04-26 17:31:50 · 6442 阅读 · 4 评论 -
回归——支持向量机回归(SVR)
支持向量机回归(SVR)是支持向量机在回归问题上的应用模型。支持向量机回归模型基于不同的损失函数产生了很多变种。本文仅介绍基于ϵϵ\epsilon不敏感损失函数的SVR模型。核心思想找到一个分离超平面(超曲面),使得期望风险最小。ϵϵ\epsilon-SVRϵϵ\epsilon-损失函数ϵϵ\epsilon-损失函数,就是当误差小于ϵϵ\epsilon时,该误差可忽...原创 2018-05-04 15:15:07 · 21600 阅读 · 2 评论 -
浅谈对统计机器学习的认识
最早是在《数据处理与优化算法》课堂上接触到数据挖掘(Data Mining),接着自学Pang-Ning Tan et al.的《数据挖掘导论》入门数据挖掘。所以我先讲一下数据挖掘、机器学习(Machine Learning)和统计学(Statistics)的关系。个人理解是传统统计学往往是更加偏向于纯粹的数学,偏向于理论。机器学习偏向于数学与计算机的交叉,统计的理论往往需要通过机...原创 2018-04-16 15:01:48 · 10760 阅读 · 0 评论 -
分类——决策树ID3与C4.5以及Python实现
决策树算法是一个分类算法,ID3以及C4.5决策树是多叉树。核心思想:根据特征及对应特征值组成元组为切分点切分样本空间。基本概念:熵(entropy):该词最初来自于热力学,用来表示系统的混乱程度。香农借用该词表示一个随机过程的不确定性程度,即香农熵。式中Pi指随机变量取某个值的概率。条件熵(conditional entropy):给定一个划分数据的条件X=x,那么随...原创 2018-04-18 09:43:11 · 1397 阅读 · 2 评论 -
分类回归——CART分类与回归以及Python实现
CART分类与回归树本质上是一样的,构建过程都是逐步分割特征空间,预测过程都是从根节点开始一层一层的判断直到叶节点给出预测结果。只不过分类树给出离散值,而回归树给出连续值(通常是叶节点包含样本的均值),另外分类树基于Gini指数选取分割点,而回归树基于平方误差选取分割点。CART分类树:核心思想:以特征及对应特征值组成元组为切分点,逐步切分样本空间基本概念:基尼指数(Gini):样...原创 2018-04-18 16:54:25 · 11011 阅读 · 18 评论 -
分类——kd树与k近邻算法以及Python实现
kd树: kd树是一种树形数据结构。 构造kd树核心思想:依次对输入X的各个维度上的中位数为切分平面划分k维样本空间。 算法流程: *Input:样本数据集X *Output: kd树 *Step1: 初始化空树,以及构建所有维度的cycle迭代器。 *Step2: 求解当前维度上,数据的中位数,根据对应的样本点构建节点。然后依据该中位数建立分割平面,将数据集分割成左(小于中位数)右...原创 2018-04-20 20:50:32 · 541 阅读 · 0 评论 -
分类——Logistic回归与SoftMax回归以及Python实现
Logistic 回归逻辑斯谛回归实质上是一种分类算法。由于历史原因名称中带有“回归”二字。核心思想求解输入向量x属于正类和负类的概率,概率较大的即为预测类。属于正类的概率服从logistic分布。算法简介模型逻辑斯谛回归模型参数较少。与朴素贝叶斯相比,使用了属于正类的概率服从logisticf分布(逻辑函数)这一先验信息。即p(y=1|x)=11+e−wxp(...原创 2018-04-24 16:03:26 · 2346 阅读 · 0 评论 -
机器学习中优化算法总结以及Python实现
机器学习算法最终总是能转化为最优化问题,习惯上会转化为最小化问题。 个人总结迭代优化算法关键就两点: (1) 找到下降方向 (2) 确定下降步长最速梯度下降算法梯度下降算法是以最优化函数的梯度为下降方向,学习率ηη\eta乘以梯度的模即为下降步长。更新公式如下:xk+1=xk−η∗gkxk+1=xk−η∗gkx_{k+1}=x_k-\eta*g_k其中gkgkg_k为梯度。...原创 2018-05-08 20:17:20 · 11739 阅读 · 1 评论 -
分类——朴素贝叶斯分类器以及Python实现
核心思想:根据训练数据获取模型的后验概率,对应后验概率越大的类即预测类。算法简介:模型:先验概率:p(y=Ck)p(y=Ck) p(y=C_{k})条件概率:p(X=x|y=Ck)p(X=x|y=Ck)p(X=x|y=C_{k}) 后验概率:p(y=Ck|X=x)p(y=Ck|X=x)p(y=C_{k}|X=x)$ 朴素的含义:输入向量x的各个维度间是相互独立的,...原创 2018-04-23 17:22:16 · 9016 阅读 · 0 评论 -
聚类——K均值简介及Python实现
K均值(Kmeans)是最基本的聚类算法。优点是简单易实现,缺点是需要预先指定簇的个数,并且聚类效果不稳定, 易受初始化质心的影响核心思想将样本点指派到最近的质心所在簇,逐步更新簇的质心。算法流程Input: 训练数据集data, 簇的个数, MSE阈值epsilon, 最大迭代次数maxstepOut: 簇的质心坐标以及样本点簇标记Step1:初始化质心。Step2: 将...原创 2018-05-05 15:46:46 · 1305 阅读 · 1 评论 -
聚类——DBSCAN简介及Python实现
DBSCAN是基于密度的聚类算法。聚类效果比较好,不易受噪声的影响,且不需要指定簇的个数。核心思想以核心点为出发点,逐步扩展簇算法简介基本概念核心点:若某点半径eps球体内,样本点个数超过minpts,则为核心点 边界点:位于核心点的邻域内, 但自身领域内样本点个数不足minpts 噪声点:不在任何核心点的邻域内,自身也非核心点算法流程Input:数据集dat...原创 2018-05-05 16:57:50 · 1827 阅读 · 3 评论 -
支持向量机分类中的SMO算法以及Python实现
上一篇博客讲到支持向量机分类,而本文将介绍支持向量机分类最常用的学习算法序列最小最优化(SMO)。SMO算法是分解方法(decomposition method)的一种极端情况,即每次迭代的工作子集(working set)只含有两个变量。SMO算法存在多种不同的WSS(working set selection)启发式搜索准则。本文主要讲Platt(1999)年首次提出的SMO算法以及Fan(2...原创 2018-04-28 21:33:01 · 1614 阅读 · 1 评论 -
聚类——标签传播算法以及Python实现
标签传播算法(label propagation)是典型的半监督聚类算法。半监督是指训练数据集中小部分样本点已知标签,大部分样本点未知标签。核心思想相似性较大的样本点间应该具有相同的标签,将已知标签通过相似性矩阵传播到未知的标签。算法简介基本概念转化矩阵:用来更新标签,实质就是度量样本点间相似性程度的矩阵(图的边的权重)。Yi+1←TYiYi+1←TYiY_{i+1}\...原创 2018-05-07 10:34:01 · 7225 阅读 · 1 评论 -
分类——支持向量机分类
上篇博客讲到感知机是支持向量机(SVM)的基础。支持向量机同样采用分离超平面(或超曲面)来分离正负样本,故支持向量机是二分类分类器。支持向量机是一个非常广泛的领域,不是一两篇博客就能说清楚的,本文简单说下支持向量机的分类原理。支持向量机按简单到复杂分为线性可分支持向量机、线性支持向量机以及非线性支持向量机。核心思想找到分离超平面(超曲面),使得距离超平面最近的点到超平面距离最大。...原创 2018-04-28 17:16:28 · 4160 阅读 · 0 评论 -
分类回归——感知机以及Python实现
感知机感知机(perceptron)是支持向量机的和神经网络的基础。优点是简单易实现,缺点是只能分离线性可分数据集, 否则不收敛,且感知机学习得到的分离超平面不是唯一解,会因为初始值的选择以及选择训练样本的次序而改变。核心思想建立分离超平面,将正负实例点划分到超平面的两侧模型输入到输出的函数:f(x)=sign(wx+b)f(x)=sign(wx+b)f(x)=sign(w...原创 2018-04-28 11:21:55 · 1219 阅读 · 0 评论 -
分类——组合算法之装袋:随机森林以及Python实现
前面的博客讲到装袋(bagging)是一种一次性综合多个基本分类器的预测结果,进行多数表决(分类)或取均值(回归)的组合算法。 装袋又称自助聚集:以均匀概率有放回从原训练数据集中挑选出与原数据集相同数量的样本作为当前基本分类器的训练数据集(自主样本集, 大约含有原数据集63.2%的样本),重复k次建立k个基本分类器。注意,自助样本集通常含有重复元素。算法简介随机森林(Random For...原创 2018-04-27 21:01:24 · 3160 阅读 · 4 评论 -
分类回归——组合算法之提升2:提升树以及Python实现
提升树是以分类树或回归树为基本分类器的提升算法。算法简介上一篇博客讲到,提升算法需要解决两个基本问题: 1. 更改训练数据集或更改训练数据集的权重,以便下一基本分类器预测。 2. 各个基本分类器之间如何线性组合 。 以CART回归树为例,其解决这两个问题的方法就是: 1. 以上一轮的组合树预测结果的残差作为当前的训练数据集y。 2. 对回归而言,平方误差逐渐减小,故对于基本...原创 2018-04-27 19:49:51 · 1554 阅读 · 0 评论 -
分类——组合算法之提升1:AdaBoost提升算法以及Python实现
组合算法(ensemble)核心思想:综合多个专家决策比单独一个专家决策要好。即“三个臭皮匠顶个诸葛亮”。这里的“专家”就是一个个的基本分类器。分类提升(boosting):顾名思义,逐渐加入“专家预测”,从而使预测更精准。是一个递进过程。即第i个基本分类器的预测是建立在第i-1个基本分类器之上的。所以,这种模型又被称为加法模型,相应的学习算法称为前向分步算法。 提升算法...原创 2018-04-27 17:27:33 · 1279 阅读 · 0 评论