机器学习
文章平均质量分 84
空字符(公众号:月来客栈)
Talk is cheap, show me your code.
展开
-
k-means聚类算法的优缺点,以及有没有什么改进的方法?
这是最近在某呼收到的一个提问“k-means聚类算法的优缺点,以及有没有什么改进的方法?”下面就来谈谈自己的观点。优点: 应用广泛,速度快,鲁棒性强;对于未知特性的数据集都可以先用K-means去试试。缺点: 有倒是有,只是题主并没有指明哪一类缺点,所以这里就说一个方向的缺点 ”Kmeans在聚类过程中同等的看待每个特征维度”,当出现下列情况的数据集时就不能很好的处理:当数据集中存在噪音维度...原创 2020-03-31 19:59:13 · 11878 阅读 · 1 评论 -
SVM——(六)软间隔目标函数求解
这次我们要说的是软间隔(soft margin)与正则化(regularization)1.什么是软间隔我们之前谈到过两种情况下的分类:一种是直接线性可分的;另外一种是通过ϕ(x)\phi(x)映射到高维空间之后“线性可分”的。为什么后面这个“线性可分”要加上引号呢?这是因为在上一篇文章中有一件事没有和大家交代:虽然通过映射到高维空间的方式能够很大程度上使得原先线性不可分的数据集线性可分,但是我们并原创 2017-11-19 15:50:18 · 3353 阅读 · 2 评论 -
SVM——(五)线性不可分之核函数
本文主要包含以下内容:1.从线性不可分谈起 2.将低维特征映射到高维空间 3.核函数的有效性 4.常用核函数1.从线性不可分谈起我们之前谈到的情况都是线性可分的,也就是说总能找到一个超平面将数据集分开。 但现实总是那么不完美,大多情况都是线性不可分的。如下图所示:我们应该怎么才能将其分开呢?有人说用曲线能将其分开;对,曲线确实能将数据集分开,但如果用曲线,那还能叫支持向量机么。那到底又该怎么弄原创 2017-11-18 15:52:24 · 5049 阅读 · 2 评论 -
SVM——(四)目标函数求解
在之前的两篇文章中[1][2]分别用两种方法介绍了如何求得目标优化函数,这篇文章就来介绍如何用拉格朗日对偶(Lagrange duality)问题以及SMO算法求解这一目标函数,最终得到参数。本文主要分为如下部分: 1.构造广义拉格朗日函数L(w,b,α)\mathcal{L}(w,b,\alpha) 2.关于参数w,bw,b,求L\mathcal{L}的极小值W(α)W(\alpha) 3.原创 2017-11-18 15:37:37 · 4128 阅读 · 3 评论 -
SVM——(二)线性可分之目标函数推导方法2
这是接着上一篇文章(方法1)整理的第二种推导方法。这是从另外一个点来思考如何求得目标优化函数,建议两种都看一下。这样能理解得更加透彻。0.引言什么是支持向量机(Support Vector Machine)? 我们需要明确的是:支持向量机它是一种算法,用来寻找一个“最佳”超平面。(直线也是超平面)如下图所示:那条线算是“最佳”超平面呢?直觉告诉你是中间红色这一条。事实上也是,因为其两侧离它最近的点的原创 2017-11-12 19:08:57 · 2031 阅读 · 2 评论 -
SVM——(一)线性可分之目标函数推导方法1
最近在看支持向量机,也查了很多资料。其中关于如何推导出最终的优化目标函数(见文末(2.14)(2.14))主要有两种方式。第一种就是本文所介绍的,直接通过一个(几何)距离来推导,如周志华机器学习中的SVM就是采用的这种方式;第二种就是下文中所要介绍的,先引入函数间隔,再引入几何间隔,然后得到优化目标函数。对于这两种方法,有人可能先接触到第一种,遇到问题查资料,结果又看到原来还有第二种(我本人就是这样转载 2017-11-12 17:29:33 · 6918 阅读 · 3 评论 -
SVM——(三)对偶性和KKT条件(Lagrange duality and KKT condition)
之前说到过拉格朗日乘数法以及推导过程,那么今天要说的就是拉格朗日对偶性以及KKT条件本文主要分为以下几个部分:1.Lagrange multipliers 2.Generalized Lagrangian 3.Primal and dual optimization problem 4.KKT conditions 5.Example顺便说一句,之所以标题没用中文确实是因为水平有限,怕对于有原创 2017-11-06 20:32:27 · 10557 阅读 · 9 评论 -
Logistic回归代价函数的数学推导及实现
logistic回归的代价函数形式如下: J(θ)=−1m[∑i=1my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))]J(\theta) = -\frac{1}{m}\left[\sum_{i=1}^{m}y^{(i)}\log h_\theta(x^{(i)}) + (1 - y^{(i)})\log (1 - h_\theta(x^{(i)}))\right]可原创 2017-12-09 20:53:49 · 4094 阅读 · 5 评论 -
斯坦福机器学习第五周(如何训练神经网络)
上一周Andrew Ng 介绍如何应用神经网络来识别手写体时,其网络已经是训练好的。也就是说整个网络的参数Θ(i)\Theta^{(i)}是已知的,而这一周的主要内容就是如何来训练一个神经网络,换句话说就是如何找到参数Θ\Theta.当然,采用的方法依旧是梯度下降或者fminunc等方法。但是使用这些方法的前提是给出代价函数J(Θ),以及代价函数关于每参数θ的梯度,即∂∂θlijJ(Θ)J(\The原创 2017-09-23 16:03:32 · 2273 阅读 · 0 评论 -
文本处理之贝叶斯垃圾邮件分类
本文所讲解的是如何通过Python将文本读取,并且将每一个文本生成对应的词向量并返回. 文章的背景是将50封邮件(包含25封正常邮件,25封垃圾邮件)通过贝叶斯算法对其进行分类.主要分为如下几个部分: ①读取所有邮件; ②建立词汇表; ③生成没封邮件对应的词向量(词集模型); ④用sklearn中的朴素贝叶斯算法进行分类; ⑤生成性能评估报告1.函数介绍下面先介绍需要用到的功能函数1.1建原创 2017-12-17 19:43:43 · 3398 阅读 · 2 评论 -
SVM——(七)SMO(序列最小最优算法)
在说SMO (Sequential minimal optimization)之前,先介绍一种与之类似的算法,坐标上升(下降)算法.1.Coordinate ascent所谓坐标上升(下降)指的是同一个算法,只是若实际问题是求极大值则是上升,反之为下降。我们知道梯度下降算法在每次迭代过程中都是沿着梯度的(反)方向进行的;而坐标下降算法则是在每次迭代中分步沿着你n个(n为特征维度)方向进行的。下图是2原创 2017-11-26 15:30:53 · 1948 阅读 · 1 评论 -
朴素贝叶斯算法与贝叶斯估计
在看贝叶斯算法的相关内容时,你一定被突如其来的数学概念搞得头昏脑涨。比如极大似然估计(Maximum likelihood estimation ),极大后验概率估计(Maximum a posteriori estimation),先验概率(Prior probability),后验概率(Posteriori probability)等。所以后面我就本着先学会用,再谈概念的路线来进行。1. 朴素贝原创 2017-12-14 21:11:09 · 4740 阅读 · 4 评论 -
Tensorflow 两层全连接神经网络拟合正弦函数
搞了这么就深度学习的你是不是也该来拟合一下sin(x)sin(x)sin(x)了。话说,如果连sin(x)sin(x)sin(x)也不能拟合,那还搞什么深度学习。1.网络结构网络结构很简单,如下图所示:2.制作数据集制作数据集的思路就是随机生成一个范围的xxx,然后带入到np.sin(x)计算出真实值yyy.def gen_data(): x = np.linspace(-np...原创 2018-09-26 08:59:58 · 3239 阅读 · 2 评论 -
一个样本分类任务
1.数据分析最近找了个暑期实习,组里leader陆续给了些小任务让我熟悉。第一个就是一个分类任务。数据集形式如下:(逗号前面是样本,后面是标签)租金,358硒鼓,15变量泵,70平板投影,55显示器,161荧光笔,27联合作业制作费,2241住宿费,679抓斗式采泥器,205香菇素菜包,892服务费,208服装,128律师代理费,273拿到这个数据集后,首先...原创 2018-07-22 09:57:15 · 538 阅读 · 0 评论 -
如何用聚类的思想做分类(预测)
刚组里有人让我用聚类来做个预测。你一反应是,what?你确定你没说错?这玩意儿这么分类预测。经过一番点播,才明白过来。用聚类的思想来做分类预测需要一个前提,那就是训练集得有正确的标签。思路1:第一步:根据训练集和标签,直接计算每个类别的簇中心点; 第二步:遍历所有的测试样本,一次计算每个样本到所有中心点的距离,选择距离最小的簇所对应的类标签即可。代码:def Comput...原创 2018-07-17 12:14:51 · 5020 阅读 · 0 评论 -
再探反向传播算法(手写体识别Python实例)
在上一篇博文再探反向传播算法(推导)中,我们详细介绍了BP算法的由来及其详细推导过程。本篇博文将以手写体识别为例,分别用两个不同的目标函数(交叉熵和平方误差)来写出反向传播的源码(基于Python 3.x)。1.网络结构本例的数据集和网络设计结构,均来自coursera第五周的课后作业,关于手写体识别。该数据的维度为 5000×4005000×4005000\times400,即5000个...原创 2018-06-24 16:25:12 · 1246 阅读 · 1 评论 -
再探反向传播算法(推导)
之前也写过关于反向传播算法中几个公式的推导,最近总被人问到其中推导的细节,发现之前写的内容某在些地方很牵强,很突兀,没有一步一步紧跟逻辑(我也不准备修正,因为它也代表了一种思考方式)。这两天又重新回顾了一下反向传播算法,所有就再次来说说反向传播算法。这篇博文的目的在于要交代清楚为什么要引入反向传播算法,以及为什么它叫反向传播。1.从前(正)向传播谈起在谈反向传播算法之前,我们先来简单回顾一...原创 2018-06-22 20:34:16 · 661 阅读 · 0 评论 -
决策树——(三)决策树的生成与剪枝CART
前面两篇文章分别介绍了用ID3和C4.5这两种算法来生成决策树。其中ID3算法每次用信息增益最大的特征来划分数据集,C4.5算法每次用信息增益比最大的特征来划分数据集。下面介绍另外一种采用基尼指数为标准的划分方法,CART算法。1. CART算法分类与回归算法(Classification and Regression Tree,CART),即可以用于分类也可以用于回归,是应用广泛的决策树原创 2018-01-04 21:09:10 · 2146 阅读 · 0 评论 -
决策树——(一)决策树的思想
本篇文章主要先从宏观上介绍一下什么是决策树,以及决策树构建的核心思想。1. 引例关于什么是决策树(decision tree),我们先来看这么一个例子。假如我错过了看世界杯,赛后我问一个知道比赛结果的人“哪支球队是冠军”?他不愿意直接告诉我,而让我猜,并且每猜一次,他要收一元钱才肯告诉我是否猜对了,那么我要掏多少钱才能知道谁是冠军呢?我可以把球队编上号,从1到16,然后提问:“冠军球队在1-8号中吗原创 2017-12-26 21:32:27 · 2900 阅读 · 0 评论 -
决策树——(二)决策树的生成与剪枝ID3,C4.5
1.基本概念在正式介绍决策树的生成算法前,我们先将之前的几个概念梳理一下:1.1 信息熵设XX是一个取有限个值的离散型随机变量,其分布概率为 P(X=xi)=pi,i=1,2,...,nP(X=x_i)=p_i,i=1,2,...,n则随机变量XX的熵定义为 H(X)=−∑i=1npilogpi(1.1)H(X)=-\sum_{i=1}^np_i\log{p_i}\tag{1.1}其中,若pi=原创 2017-12-27 20:02:07 · 1849 阅读 · 0 评论 -
Feature sacling与Mean normalization
之前一直没有弄明白Feature scaling与Mean normalization这两者之间的关系,都以为是处理特征值的“方法”,其实不然。以下引用内容均摘自维基百科 Feature scaling is a method used to standardize the range of independent variables or features of data. In data p原创 2017-10-07 15:16:53 · 2820 阅读 · 2 评论 -
Automated Variable Weighting in k-Means Type Clustering
本内容整理自 Automated Variable Weighting in k-Means Type Clustering这篇文章主要的创新点在于–给予特征向量的每个维度一个权重ωjωj\omega_j,称之为W-k-Means的方法。该方法主要用于数据挖掘和统计学中的特征筛选。原始的K-means聚类方法不足之处在于,如果数据集当中混有大量随机噪音(也就是特征向量中有若干维在聚类过程中...原创 2017-10-08 17:25:23 · 1866 阅读 · 3 评论 -
An Entropy Weighting k-Means Algorithm for Subspace Clustering of High-Dimensional Sparse Data
本内容整理自 An Entropy Weighting k-Means Algorithm for Subspace Clustering of High-Dimensional Sparse Data前一篇论文Automated Variable Weighting in k-Means Type Clustering里面的WKMeans算法说到如何选择有用的特征维度(subspace)...原创 2017-10-14 16:02:12 · 2141 阅读 · 5 评论 -
神经网络的代价函数到底怎么在算
下面是就是神经网络中代价函数J(Θ)J(\Theta)的表达式,看起来还是稍微有点复杂。这个表达式到底在计算什么?下面我们先用一个简单的例子来分开一步步计算一下。J(Θ)=−1m∑i=1m∑k=1K[y(i)klog((hΘ(x(i)))k)+(1−y(i)k)log(1−(hΘ(x(i)))k)]+λ2m∑l=1L−1∑i=1sl∑j=1sl+1(Θ(l)j,i)2 J(\Theta) = - \原创 2017-09-14 13:59:21 · 5261 阅读 · 12 评论 -
关于反向传播算法中几个公式的推导
参考自资料,戳此处J(W,b;x,y)=12||hW,b(x)−y||2J(W,b;x,y)=\frac{1}{2}||h_{W,b}(x)-y||^2符号说明:lSlL=神经网络的某一层=第l层神经元的数目=神经网络的总层数\begin{align*}l&=神经网络的某一层\newlineS_l&=第l层神经元的数目\newlineL&=神经网络的总层数\end{align*} 如下图中原创 2017-09-19 21:16:13 · 1137 阅读 · 2 评论 -
Multi-class Classication (多分类问题)实例--手写数字识别
本实例整理自斯坦福机器学习课程课后练习ex3本例是对一个手写体的数据集(0-9)进行分类,也就是对原有的数据集进行训练,然后给定一个手写体,识别该手写体是数字几。其分类思想就是之前Andrew Ng 讲的One-vs-all(详见此文第7点)。在这个例子中,我们10组θ(i),i∈{0,1…9}\theta_{(i)},i\in\{0,1\dots9\}值,也就对应有十个hθ(i)(x)h_{\th原创 2017-07-09 18:49:39 · 1579 阅读 · 0 评论 -
Neural Network(神经网络)实例--手写数字识别
本实例整理自斯坦福机器学习课程课后练习ex3本例是对一个手写体的数据集(0-9)进行分类,其最终实现的效果同上一个实例相同。只是两者在实现方式上有所不同。 In the previous part of this exercise, you implemented multi-class logistic regression to recognize handwritten digits. H原创 2017-07-10 14:20:45 · 1192 阅读 · 0 评论 -
逻辑回归模型实例(by Fminunc and Gradient descent)
本实例整理自斯坦福机器学习课程课后练习ex2 一、Binary classification本例中是用机器学习通过已知的输入(两次考试成绩)和输出(是否被录取)来建立一个模型;然后根据输入的成绩来判断一个学生是否能被录取。 1.可视化(visualizing)data = load('ex2data1.txt');X = data(:,1:2);y = data(:,3);%% step 1.原创 2017-07-01 17:05:49 · 3073 阅读 · 0 评论 -
斯坦福机器学习第四周(神经网络及其应用)
1.为什么要引入神经网络(Neural Network)一句话总结就是当特征值n特别大时,比如当n为100时;仅仅是其2次项特征值(x21,x1x2,x1x3…x1x100;x22,x2x3…x2x100;…)(x_1^2,x_1x_2,x_1x_3\dots x_1x_{100};x_2^2,x_2x_3\dots x_2x_{100};\dots)就有大约5000个(从100累加到1)。而在实际原创 2017-07-03 18:43:02 · 1135 阅读 · 0 评论 -
线性回归模型实例
本实例整理自斯坦福机器学习课程课后练习ex1,目的是为了弄清楚解决一个实际问题所需要的步骤。 一、单变量的线性回归本例中是用机器学习通过已知的输入(populations)和输出(profits)来建立一个模型;然后一个城市的人口,来预测利润。 1.可视化(visualizing)在进行任何机器学习的相关问题前,可视化数据通常是一个用来理解数据不错选择,所以第一步就是可视化数据。%% use原创 2017-06-21 19:42:50 · 5728 阅读 · 0 评论 -
斯坦福机器学习前三周概念总结图
简单版详细版 PDF版 VSDX版原创 2017-06-21 14:58:32 · 469 阅读 · 0 评论 -
斯坦福机器学习第二周线性回归、特征值标准
线性回归(Linear Regression)中的几个重要概念: 1. 假设函数(hypothesis function)在机器学习中,总是用xx来表示输入,yy来表示输出;因此,为了研究机器学习就需要一个xx与yy之间的关系式,我们假设是y=f(x)y=f(x),我们称之为目标函数(target function)。然而,遗憾的是我们并不知道这样一个关系式。因此,机器学习算法就试图预先假设一个函数原创 2017-06-04 18:36:22 · 1152 阅读 · 0 评论 -
怎么把数据集的输出值转换成只含有0,1的标签向量
举个例子:某神经网络有5个输出值,分别对应1-5每个数字的输出概率,先有数据集x(i)x^{(i)},其输出值为,y=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢1223444⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥y=\begin{bmatrix}1\\2\\2\\3\\4\\4\\4\\\end{bmatrix}。但是我们在神经网络中计算代价函数的时候需要将其转换成对应的标签值(即,若x(i)的预期输出值为3,则y3=⎡⎣⎢⎢原创 2017-09-15 19:29:32 · 4440 阅读 · 4 评论 -
利用反向传播训练多层神经网络的原理
原文链接戳此处Principles of training multi-layer neural network using backpropagation The project describes teaching process of multi-layer neural network employing backpropagation algorithm. To illu...翻译 2017-09-09 20:09:43 · 1474 阅读 · 0 评论 -
斯坦福机器学习-第三周(分类,逻辑回归,过度拟合及解决方法)
逻辑回归(Logistic Regression) 1. 分类(Classification) The classification problem is just like the regression problem, except that the values we now want to predict take on only a small number of discrete v原创 2017-06-16 18:26:11 · 2237 阅读 · 0 评论 -
斯坦福机器学习第六周(模型选择、高偏差、高方差、学习曲线)
这篇文章主要讲解的是如何来对训练出来的代价函数进行评估,一起怎么处理 所遇到的各种问题。0.引例假如你已经训练好了一个代价函数来预测房价,然而你却发现用来预测新数据集时,其效果异常的糟糕。那我们接下来该怎么办呢?可以看到方法有很多种,但是到底应该怎么来进行选择呢?当然绝对不能凭着感觉来。1. Evaluating your hypothesis评价一个模型(代价函数)的好坏总体上都是从训练过程中的原创 2017-10-26 19:31:42 · 2262 阅读 · 2 评论 -
斯坦福斯坦福机器学习第六周课后练习
本文整理自Coursera Machine Learning Exercise 5,提取出了训练一个模型的主要步骤。 matlab源码地址1. visualizing the dataset 2. Model selection 2.0 Feature mapping and normalization 2.1 Model selection for p 2.2 Model selecti原创 2017-10-28 20:56:15 · 643 阅读 · 0 评论 -
K-Means算法(思想)
K-Means算法的思想:第一步:寻找最近的中心点在给定的数据集上随机选取K(K已知)个点(向量)作为数据集上的K个中心(也就代表K个类别),然后依次遍历每一条数据,分别计算其与K个中心的距离,选择与之距离最近的点作为该数据所属的类别。这样一次遍历完之后,数据集中的所有点都被划入了其应该所属的类别里面(尽管有划错的)。第二步:重新计算中心对于每一个类别来说,里面都有若干个点。由于之前的中心点事随机选原创 2017-09-28 10:05:03 · 2615 阅读 · 0 评论 -
K-means++算法思想
转自:http://www.cnblogs.com/yixuan-xu/p/6272208.htmlK-说在前面:在网上找了很多关于k-means++的中文文章,基本上就两个版本。这篇文章算一个(这个版本也就只有一篇);另外一个版本应该来自同一人所写(其他几乎都是复制粘贴),但总觉得不怎么对劲。还好本文原博客贴出了一篇论文,以及笔者参考了维基百科。这个版本应该更让人信服一点。一、概述 meas转载 2017-10-19 20:18:13 · 10976 阅读 · 5 评论 -
K-Means算法(实例)
K-Means算法实例:本文的是上一篇的实例部分以下代码均是在Matlab中实现。1.初始化中心点function centroids = kMeansInitCentroids(X, K)centroids = zeros(K, size(X, 2));% 初始化centroids为一个K by n 的矩阵m = size(X,1);rands = randperm(m,K);% 从1到m中随原创 2017-09-28 10:37:36 · 3206 阅读 · 0 评论