机器学习
文章平均质量分 95
专注于机器学习相关的算法的原理以及实践经验的总结,以及相关特定领域的机器学习算法的应用技巧和思考。同时,会总结一些算法训练的参数调优以及各种数据分布的实际情况的解决方案的共享……
JeemyJohn
这个作者很懒,什么都没留下…
展开
-
AlexNet 的tensorflow 实现
本文转载自 http://blog.csdn.net/chenriwei2/article/details/50615753# 输入数据import input_datamnist = input_data.read_data_sets("/tmp/data/", one_hot=True)import tensorflow as tf# 定义网络超参数learning_rate = 0.00原创 2017-04-09 19:12:52 · 1058 阅读 · 4 评论 -
MNIST手写字识别的TensorFlow实现
1. 简介 本文介绍的是MNIST手写字体CNN识别模型的TensorFlow的实现。据本人亲自测试,当迭代训练次数为20000时能在验证集上取得最高的准确率。当迭代训练次数达到28000次之后,模型识别准确率骤降,至于原因本人后续研究解释。2. 完整源码实现from tensorflow.examples.tutorials.mnist import input_dataimport原创 2017-04-09 19:24:58 · 2283 阅读 · 6 评论 -
Win10 64bit下安装GPU版Tensorflow+Keras
Tensorflow和Keras都是支持Python接口的,所以本文中说的都是搭建一个Python的深度学习环境。 Keras是对Tensorflow或者Theano的再次封装,也就是以Tensorflow或Theano为后端,默认的后端是tensorflow,如果你想使用theano为后端,可以更改为theano。Keras为什么要对tensorflow和theano进行再次封装,当原创 2017-06-17 21:35:27 · 6243 阅读 · 13 评论 -
数据挖掘中的数据清洗方法大全
在数据挖掘领域,经常会遇到的情况是挖掘出来的特征数据存在各种异常情况,如 数据缺失 、数据值异常 等。对于这些情况,如果不加以处理,那么会直接影响到最终挖掘模型建立后的使用效果,甚至是使得最终的模型失效,任务失败。所以对于数据挖掘工程师来说,掌握必要的数据清洗方法是很有必要的! 接下来本文就依次讲解如何处理 数据值缺失 和 数据值异常 两种情况的处理。1. 缺失值的处理 如下原创 2017-10-21 23:47:26 · 4986 阅读 · 1 评论 -
XGBoost参数调优完全指南
1. 简介如果你的预测模型表现得有些不尽如人意,那就用XGBoost吧。XGBoost算法现在已经成为很多数据工程师的重要武器。它是一种十分精致的算法,可以处理各种不规则的数据。 构造一个使用XGBoost的模型十分简单。但是,提高这个模型的表现就有些困难(至少我觉得十分纠结)。这个算法使用了好几个参数。所以为了提高模型的表现,参数的调整十分必要。在解决实际问题的时候,有些问题是很难回答的——你原创 2017-10-22 19:40:18 · 1160 阅读 · 0 评论 -
机器学习面试题
目前我整理了一些机器学习面试题,欢迎大家留言给出正确答案!1、LR为什么用sigmoid函数。这个函数有什么优点和缺点?为什么不用其他函数?2、决策树如何防止过拟合3、KKT条件用哪些,完整描述4、L1正则为什么可以把系数压缩成0,坐标下降法的具体实现细节.5、Python如何定义一个私有变量6、说一下进程和线程7、K-means聚类个数选择,做什么样的试验来确定K8、有哪些线程安全的函数9、数据库原创 2017-10-02 18:43:13 · 1809 阅读 · 1 评论 -
史上最详细的XGBoost实战
0. 环境介绍Python 版 本: 3.6.2操作系统 : Windows集成开发环境: PyCharm1. 安装Python环境安装Python首先,我们需要安装Python环境。本人选择的是64位版本的Python 3.6.2。去Python官网https://www.python.org/选择相应的版本并下载。如下如所示: 接下来安装,并最终选择将Python加入环境变量中原创 2017-10-03 20:45:16 · 31284 阅读 · 20 评论 -
Scikit-Learn实战之——交叉验证
本文将从以下几个方面进行介绍:简单地讲训练集/测试集分割进行模型验证的缺点;K折交叉验证的做法和优点;交叉验证如何用于选择调节参数、选择模型、选择特征;对交叉验证进行升级。1. 为什么要进行模型验证 众所周知,在机器学习与数据挖掘中进行模型验证的一个重要目的是要选出一个最合适的模型。对于有监督学习而言,我们希望模型对于未知数据具有很强的泛化能力,所以就需要模型验证这一过程来评估不同的模型原创 2017-10-04 21:16:22 · 2779 阅读 · 0 评论 -
从损失函数的角度详解常见机器学习算法
1. 机器学习中常见的损失函数 一般来说,我们在进行机器学习任务时,使用的每一个算法都有一个目标函数,算法便是对这个目标函数进行优化,特别是在分类或者回归任务中,便是使用损失函数(Loss Function)作为其目标函数,又称为代价函数(Cost Function)。损失函数是用来评价模型的预测值 Y^=f(X)\hat Y=f(X) 与真实值Y的不一致程度,它是一个非负实值函数。通常使用 L(原创 2017-10-18 17:32:37 · 3988 阅读 · 0 评论 -
深入浅出——基于密度的聚类方法
本文原作者:微信公众号“燕哥带你学算法”团队的 祝烨 博士,目前在墨尔本从事博士后研究。“The observation of and the search forsimilarities and differences are the basis of all human knowledge.” —— ALFREDB. NOBEL“人类所有知识的基础就是观察和寻找相似与相异” —— 阿尔弗雷德·伯原创 2017-09-10 23:31:59 · 27015 阅读 · 0 评论 -
数据挖掘中的利器--XGBoost理论篇
XGBoost是各种数据挖掘或机器学习算法类比赛中每个团队都会使用且精度相对最好的算法之一(Deep Learning算法除外)。也就是说,对于刚转向机器学习领域的同胞们,在掌握数据挖掘的基本常识概念之后,要想在比赛中有所收获,掌握XGBoost算法也是当务之急。1、XGBoost算法优点 XGBoost 是 Extreme Gradient Boosting的简称。它是Gradient Boo原创 2017-08-18 21:50:22 · 6670 阅读 · 3 评论 -
SVM为什么走下“神坛”?
点题:学界发现真理,产业界利用趋势。“神人”就是既发现了真理又掌握了趋势(To find the truth of nature in academic, and to make business and profits by following the trend of technologies in industries.)。 1、历史的惊人巧合 曾几何时,SVM在神经网络研究和应用中几乎无原创 2017-08-27 13:34:02 · 11154 阅读 · 10 评论 -
用JAVA程序调用LibSVM API
1. LibSVM简介 LibSVM是台湾著名教授陈智仁团队的杰作。具有各个语言版本的接口,包括C/C++、Java、Python、Matlab、C# 等等。这套库运算速度还是挺快的,可以很方便的对数据做分类或回归。由于libSVM程序小,运用灵活,输入参数少,并且是开源的,易于扩展,因此成为目前国内应用最多的SVM的库。 这套库可以从http://www.csie.ntu.原创 2017-01-03 21:04:24 · 2458 阅读 · 5 评论 -
Java 机器学习库Smile实战(一)SVM
本文不会介绍SVM的基本原理,如果想了解SVM基本原理,请参阅相关书籍。1. 二分类 Smile 库的SVM类是一个泛型类型,默认情况下进行二分类,选择参数为核函数类型和惩罚项参数。import smile.classification.SVM;import smile.math.kernel.GaussianKernel; double gamma = 1.0; double C原创 2017-01-16 22:42:33 · 5287 阅读 · 9 评论 -
Java 机器学习库Smile实战(二)AdaBoost
1. AdaBoost算法简介 Boost 算法系列的起源来自于PAC Learnability(PAC 可学习性)。这套理论主要研究的是什么时候一个问题是可被学习的,当然也会探讨针对可学习的问题的具体的学习算法。这套理论是由Valiant提出来的,也因此(还有其他贡献哈)他获得了2010年的图灵奖。下面是他的照片:![这里写图片描述](http://my.csdn.net/uploads原创 2017-01-19 21:27:15 · 2181 阅读 · 11 评论 -
Windows下安装Scikit-Learn
用Python做机器学习,最常用的库就是scikit-learn。接下来,我就介绍一下如何在Windows中安装并成功运行scikit-learn。1. 安装Python 首先,我们需要安装Python环境。本人选择的是64位版本的Python 3.5。去Python官网https://www.python.org/选择相应的版本并下载。如下如所示:接下来安装,并最终选择将Python加原创 2017-04-22 15:15:15 · 11051 阅读 · 17 评论 -
机器学习该如何入门
引言 可能你对这个名字叫“机器学习”的家伙不是特别的了解,但是相信用过iPhone的同学都知道iPhone的语音助手Siri,它能帮你打电话,查看天气等等;相信大家尤其是美女童鞋都用过美颜相机,它能自动化的给我们拍出更漂亮的照片;逛京东淘宝的时候,细心的童鞋应该也会发现它们会有一个栏目“猜你喜欢”;最近异军突起的新闻客户端软件今日头条,它们就是会根据分析你的日常喜好给每个人推荐不同的新闻……没错,原创 2017-07-25 10:43:06 · 11355 阅读 · 32 评论 -
朴素贝叶斯算法详解
1. 引言 朴素贝叶斯算法(Naive Bayes)是机器学习中常见的基本算法之一,主要用来做分类任务的。它是基于贝叶斯定理与条件独立性假设的分类方法。对于给定的训练数据集,首先基于特征条件独立性假设学习输入/输出的联合概率分布,然后基于此模型,对于给定的输入 xx 利用贝叶斯定理求出后验概率最大的输出 yy 。 基于以上的解释,我们知道:1. 该算法的理论核心是贝叶斯定理;原创 2017-08-05 22:02:15 · 4731 阅读 · 0 评论 -
深度学习入门
0、引言 近几年来人工智能越来越火,大家都已经知道了AlphaGo的威力,然而在其背后,从技术层面来说,深度学习功不可没。那么深度学习到底是什么,其与传统的机器学习之间又有什么样的关联。对于想入坑深度学习的同学,又该从哪些方面入手。这就是本文要回答的问题。1、深度学习的提出 先从深度学习的提出开始说起,深度学习的概念是由Hinton在2006年提出,他当时首次提出了深度信念网络(DBN),相原创 2017-08-13 11:16:52 · 5501 阅读 · 0 评论 -
无监督聚类算法该如何评价
学过机器学习的小伙伴应该都很清楚:几乎所有的机器学习理论与实战教材里面都有非常详细的理论化的有监督分类学习算法的评价指标。例如:正确率、召回率、精准率、ROC曲线、AUC曲线。但是几乎没有任何教材上有明确的关于无监督聚类算法的评价指标! 那么学术界到底有没有成熟公认的关于无监督聚类算法的评价指标呢?本文就是为了解决大家的这个疑惑而写的,并且事先明确的告诉大家,关于无监督聚类算法结果好坏的原创 2017-07-03 21:57:29 · 29939 阅读 · 28 评论 -
AI大行其道,你准备好了吗?—谨送给徘徊于转行AI的程序员
前言 近年来,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个IT界。所有的互联网公司,尤其是 Google 微软,百度,腾讯等巨头,无不在布局人工智能技术和市场。百度,腾讯,阿里巴巴,京东,等互联网巨头甚至都在美国硅谷大肆高薪挖掘人工智能人才。现在在北京,只要是机器学习算法岗位,少则月薪 20k,甚至100k 以上…… 不错,新时代时代原创 2017-07-09 16:13:40 · 31038 阅读 · 111 评论 -
详解数据挖掘与机器学习的区别与联系
0、为什么写这篇博文 最近有很多刚入门AI领域的小伙伴问我:数据挖掘与机器学习之间的区别于联系。为了不每次都给他们长篇大论的解释,故此在网上整理了一些资料,整理成此篇文章,下次谁问我直接就给他发个链接就好了。 本篇文章主要阐述我个人在数据挖掘、机器学习等方面的学习心得,并搜集了网上的一些权威解释,或许不太全面,但应该会对绝大多数入门者有一个直观地解释。 本文主要参照周志华老师的:机器学习与数据原创 2017-07-16 16:50:31 · 6252 阅读 · 4 评论 -
超参数的选择与交叉验证
1. 超参数有哪些 与超参数对应的是参数。参数是可以在模型中通过BP(反向传播)进行更新学习的参数,例如各种权值矩阵,偏移量等等。超参数是需要进行程序员自己选择的参数,无法学习获得。 常见的超参数有模型(SVM,Softmax,Multi-layer Neural Network,…),迭代算法(Adam,SGD,…),学习率(learning rate)(不同的迭代算法还有各种不同的超参原创 2017-07-16 22:33:07 · 5824 阅读 · 0 评论 -
机器学习中的数据不平衡解决方案大全
在机器学习任务中,我们经常会遇到这种困扰:数据不平衡问题。 数据不平衡问题主要存在于有监督机器学习任务中。当遇到不平衡数据时,以总体分类准确率为学习目标的传统分类算法会过多地关注多数类,从而使得少数类样本的分类性能下降。绝大多数常见的机器学习算法对于不平衡数据集都不能很好地工作。 本文介绍几种有效的解决数据不平衡情况下有效训练有监督算法的思路:1、重新采样训练集原创 2017-06-09 19:37:12 · 36091 阅读 · 40 评论 -
深度神经网络训练的必知技巧
本文主要介绍8种实现细节的技巧或tricks:数据增广、图像预处理、网络初始化、训练过程中的技巧、激活函数的选择、不同正则化方法、来自于数据的洞察、集成多个深度网络的方法。1. 数据增广在不改变图像类别的情况下,增加数据量,能提高模型的泛化能力。 图像识别领域数据增广的例子自然图像的数据增广方式包括很多,如常用的水平翻转(horizontally flipping),一定程度的位移或者裁剪和颜色原创 2017-04-29 15:06:54 · 17677 阅读 · 37 评论 -
Scikit-learn实战之SVM回归分析、密度估计、异常点检测
1. SVM回归 SVM的支持向量的方法能够被扩展以解决回归问题。这种方法被称之为SVR(Support Vector Regression 支持向量回归)。该模型是由SVC(支持向量分类)演化而来,它依然依赖于训练数据的子集。因为构建Model的损失函数并不关心位于边缘上的训练点(样本)集。类似的,由支持向量回归(SVR)生成的模型仅仅依赖于训练数据的某个子集,因为构建模型的损失函数忽原创 2016-11-27 20:32:05 · 5305 阅读 · 4 评论 -
Scikit-learn实战之SVM分类
Support vector machines (SVMs) 是一系列的有监督的学习方法,主要用于分类、回归和异常点检测。1. SVM的主要优点如下:在高维空间有效;当样本空间的维度比样本数高时任然有效;使用训练样本的子集构建决策函数(这些样本点被称之为支持向量),因此它的内存效率很高;SVM是一个全能型的机器学习算法:可以指定不同的核函数的决策函数,提供了常见的核函数,但是也可以指定自定义原创 2016-11-27 18:05:36 · 17359 阅读 · 9 评论 -
Scikit-learn实战之聚类-Kmeans
1. 聚类模块的简述 在Scikit-learn中,对于未标记数据的执行聚类需要使用 sklearn.cluster 模块。 每一个聚类算法有两个变量组成:一个是类,它实现了 fit 方法从未标记的训练数据中学习类簇;还有一个就是函数,该函数的功能就是给它一批训练数据,它能够返回与每一批训练数据相对应的类标的结果的整数集合。对于类来说,基于训练数据的类标能够从label原创 2016-11-29 19:01:05 · 5357 阅读 · 3 评论 -
Sckit-learn之数据预处理
1. 数据预处理在机器学习中的重要性 在Scikit-learn中的sklearn.preprocessing包提供了一些公共的实用函数和转换类来将特征行向量转换成更适合于接下来的估计的表示。 对于Scikit-learn中实现的许多机器学习估计来说,对数据集进行规范化是一个通用的需求。如果个别的特征或多或少的不服从与通常的数据分布:例如标准正态分布(均值为0,方差为1),这原创 2016-11-29 22:46:59 · 1767 阅读 · 4 评论 -
Sckit-learn之朴素贝叶斯
1. 朴素贝叶斯方法概述 朴素贝叶斯方法是一系列有监督学习算法组成的,这些算法基于应用贝叶斯理论并带有“naive”的假设:所有特征之间两两独立。给定一个类变量 yy 和一个独立的特征向量集 x1x_1 到 xnx_n。贝叶斯理论阐述如下的关系式: ![这里写图片描述](http://scikit-learn.org/stable/_images/math/475原创 2016-12-04 18:30:49 · 1783 阅读 · 4 评论 -
Scikit-learn之决策树
1. 决策树概述 决策树是一个非参数的监督式学习方法,主要用于分类和回归。算法的目标是通过推断数据特征,学习决策规则从而创建一个预测目标变量的模型。如下图所示,决策树通过一系列if-then-else 决策规则 近似估计一个正弦曲线。 1.1 决策树的优势 决策树具有以下优势:简单易懂,原理清晰,决策树可以实现可视化;数据准备简单。其他的方法需要实现数据归一化,创原创 2016-12-05 20:28:15 · 1426 阅读 · 4 评论 -
Scikit-learn实战之线性模型
下面是一系列的用于回归的方法,这些方法的目标值(target value)是由输入变量的线性组合而成。在数学概念上,如果 y^\hat y 是预测值: 在整个模块中,我们指定向量 为系数,并且 ω0\omega_0 作为截距。1. 普通最小二乘法 LinearRegression是一个线性模型,它的系数 最小化数据集中的观测结果和线性预测结果之间的残差和。它解决的问题在数学上可以形式原创 2016-12-10 21:15:01 · 1343 阅读 · 11 评论 -
Scikit-learn实战之最近邻算法
1. 最近邻的概念 sklearn.neighbors 提供了基于最近邻的无监督和有监督学习方法的功能。无监督最近邻是许多其他学习方法的基础,尤其是流型学习和谱聚类。有监督的最近邻学习有两种形式:对离散类标的数据进行分类,对连续类标的数据进行回归。 最近邻方法背后的原理是找到一个预定义数量的离新的观测点距离最近的训练样本,并从这些最近点来预测新的观测点的标签。样本的数量可以是原创 2016-12-22 20:36:19 · 3574 阅读 · 7 评论 -
机器学习(一)集成学习
1. 关于集成学习的概念 集成学习是机器学习中一个非常重要且热门的分支,是用多个弱分类器构成一个强分类器,其哲学思想是“三个臭皮匠赛过诸葛亮”。一般的弱分类器可以由决策树,神经网络,贝叶斯分类器,K-近邻等构成。已经有学者理论上证明了集成学习的思想是可以提高分类器的性能的,比如说统计上的原因,计算上的原因以及表示上的原因。1.1 为什么要集成1)模型选择 假设各弱分类原创 2016-12-24 18:15:39 · 1365 阅读 · 5 评论 -
机器学习(二)Apriori算法
最近看了《机器学习实战》中的第11章(使用Apriori算法进行关联分析)和第12章(使用FP-growth算法来高效发现频繁项集)。正如章节标题所示,这两章讲了无监督机器学习方法中的关联分析问题。关联分析可以用于回答”哪些商品经常被同时购买?”之类的问题。书中举了一些关联分析的例子:通过查看哪些商品经常在一起购买,可以帮助商店了解用户的购买行为。这种从数据海洋中抽取的知识可以用于商品定价、市场促原创 2016-12-25 16:27:07 · 2112 阅读 · 11 评论 -
机器学习常见算法优缺点
1. K近邻 算法采用测量不同特征值之间的距离的方法进行分类。 1.1 优点简单好用,容易理解,精度高,理论成熟,既可以用来做分类也可以用来做回归; 可用于数值型数据和离散型数据; 训练时间复杂度为O(n);无数据输入假定; 对异常值不敏感。1.2 缺点计算复杂性高;空间复杂性高; 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少); 一般数值很大的时候不用原创 2016-12-28 17:50:49 · 3857 阅读 · 9 评论 -
机器学习(四)经验风险与结构风险
1. 偏差与方差(bias and variance) 在回归问题中,我们用一个简单的线性模型来拟合样本,称为线性回归,如图1;或者用更复杂,高维的函数来拟合,比如二次函数得到图2,六次函数得到图3. 我们可以看出来, 六次函数完美地拟合了六个点,误差为0.但是,当我们用这样的拟合模型来进行预测的时候,效果反而不好.通过观察我们发现,二次的模型也许能够更好地拟合这些样本分布.虽然原创 2017-01-03 20:32:47 · 3772 阅读 · 11 评论 -
机器学习中Bagging和Boosting的区别
Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法。即将弱分类器组装成强分类器的方法。 首先介绍Bootstraping,即自助法:它是一种有放回的抽样方法(可能抽到重复的样本)。1. Bagging (bootstrap aggregating)Bagging即套袋法,其算法过程如下:从原原创 2017-05-19 19:27:46 · 21825 阅读 · 16 评论 -
BP神经网络的原理及推导
首先什么是人工神经网络?简单来说就是将单个感知器作为一个神经网络节点,然后用此类节点组成一个层次网络结构,我们称此网络即为人工神经网络(本人自己的理解)。当网络的层次大于等于3层(输入层+隐藏层(大于等于1)+输出层)时,我们称之为多层人工神经网络。1、神经单元的选择 那么我们应该使用什么样的感知器来作为神经网络节点呢?在上一篇文章我们介绍过感知器算法,但是直接使用的话会存在以下问题:感原创 2017-05-24 21:35:38 · 4709 阅读 · 8 评论 -
Isolation Forest算法原理详解
本文只介绍原论文中的 Isolation Forest 孤立点检测算法的原理,实际的代码实现详解请参照我的另一篇博客:Isolation Forest算法实现详解。 或者读者可以到我的GitHub上去下载完整的项目源码以及测试代码(源代码程序是基于maven构建): https://github.com/JeemyJohn/AnomalyDetection。前言 随着机器学习原创 2017-06-18 18:39:18 · 33070 阅读 · 37 评论