- 博客(32)
- 收藏
- 关注
原创 搜索引擎质量指标(nDCG)
检索中搜索引擎质量指标1. DCG(Discounted Cumulative Gain)1.1 介绍 衡量搜索引擎 rank 质量指标(DCG – Discounted Cumulative Gain),在信息检索中,它通常用于衡量 Web搜索引擎算法或相关应用程序的有效性。DCG 在搜索引擎结果集中使用文档的相关性评分,根据文档在结果列表中的位置来衡量文档的有用性或增益...
2018-09-12 14:37:49
6869
原创 (二十)线性判别分析(LDA)
线性判别分析(LDA)原理 在主成分分析(PCA)原理总结中,我们对降维算法PCA做了总结。这里我们就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)做一个总结。LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用,因此我们有必要了解下它的算法原理。 在学习LDA之前,有必要将其自然语言...
2018-08-16 08:59:40
632
原创 (十九)主成分分析(PCA)
主成分分析(PCA)原理 主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结。1. PCA的思想 PCA顾名思义,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。具体...
2018-08-16 08:58:48
798
原创 (十八)K-Means聚类算法
K-Means聚类算法原理 K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛。K-Means算法有大量的变体,本文就从最传统的K-Means算法讲起,在其基础上讲述K-Means的优化变体方法。包括初始化优化K-Means++, 距离计算优化elkan K-Means算法和大数据情况下的优化Mini Batch K-Means算法。1. K-...
2018-08-16 08:58:15
1023
原创 (十七)Bagging与随机森林
Bagging与随机森林原理 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。bagging的原理 在集成学习原理中,我们给Bagging画了下面一张原理图。 从上图可以看出,Bagging的弱学习器之间的确没有boosting那样的联系。它的特点在“随机采样”。那么什么是随机采样...
2018-08-15 08:57:09
394
原创 (十六)GBDT与xgboost
GBDT与xgboost1. 泰勒公式定义:泰勒公式是一个用函数在某点的信息描述其附近取值的公式。 局部有效性基本形式:f(x) = ∑∞n=0f(n)(x0)n!(x−x0)nf(x) = ∑n=0∞f(n)(x0)n!(x−x0)nf(x)\ =\ \sum_{n=0}^\infty \frac{f^{(n)}(x_0)}{n!}(x -...
2018-08-14 20:59:16
501
原创 (十五)梯度提升树(GBDT)
梯度提升树(GBDT) 本文对Boosting家族中另一个重要的算法梯度提升树(Gradient Boosting Decison Tree, 以下简称GBDT)做一个总结。GBDT有很多简称,有GBT(Gradient Boosting Tree), GTB(Gradient Tree Boosting ), GBRT(Gradient Boosting Regression Tree)...
2018-08-14 20:58:47
492
原创 (十三)集成学习
集成学习 集成学习(ensemble learning)可以说是现在非常火爆的机器学习方法了。它本身不是一个单独的机器学习算法,而是通过构建并结合多个机器学习器来完成学习任务。也就是我们常说的“博采众长”。集成学习可以用于分类问题集成,回归问题集成,特征选取集成,异常点检测集成等等,可以说所有的机器学习领域都可以看到集成学习的身影。本文就对集成学习的原理做一个总结。1. 集成学习概...
2018-08-14 20:57:58
428
原创 (十二)支持向量机(Support Vecor Machine)5
支持向量机原理(五) 在前四篇里面我们讲到了SVM的线性分类和非线性分类,以及在分类时用到的算法。这些都关注与SVM的分类问题。实际上SVM也可以用于回归模型,本篇就对如何将SVM用于回归模型做一个总结。重点关注SVM分类和SVM回归的相同点与不同点。1. SVM回归模型的损失函数度量 回顾下我们前面SVM分类模型中,我们的目标函数是让12||w||2212||w||22\...
2018-08-14 20:57:34
314
原创 (十二)支持向量机(Support Vecor Machine)4
支持向量机原理(四) 在SVM的前三篇里,我们优化的目标函数最终都是一个关于αα\alpha向量的函数。而怎么极小化这个函数,求出对应的αα\alpha向量,进而求出分离超平面我们没有讲。本篇就对优化这个关于αα\alpha向量的函数的SMO算法做一个总结。1. 回顾SVM优化目标函数 我们首先回顾下我们的优化目标函数: minα 12∑i=1,j=...
2018-08-14 20:57:15
241
原创 (十二)支持向量机(Support Vecor Machine)3
支持向量机原理(三) 在前面两篇我们讲到了线性可分SVM的硬间隔最大化和软间隔最大化的算法,它们对线性可分的数据有很好的处理,但是对完全线性不可分的数据没有办法。本文我们就来探讨SVM如何处理线性不可分的数据,重点讲述核函数在SVM中处理线性不可分数据的作用。1. 回顾多项式回归 在线性回归原理小结中,我们讲到了如何将多项式回归转化为线性回归。比如一个只有两个特征的p次方多...
2018-08-14 20:56:50
290
原创 (十二)支持向量机(Support Vecor Machine)2
支持向量机(二) 在支持向量机原理(一) 线性支持向量机中,我们对线性可分SVM的模型和损失函数优化做了总结。最后我们提到了有时候不能线性可分的原因是线性数据集里面多了少量的异常点,由于这些异常点导致了数据集不能线性可分,本篇就对线性支持向量机如何处理这些异常点的原理方法做一个总结。1. 线性分类SVM面临的问题 有时候本来数据的确是可分的,也就是说可以用 线性分类SVM的...
2018-08-14 10:42:33
207
原创 (十二)支持向量机(Support Vecor Machine)1
支持向量机原理(一) 支持向量机(Support Vecor Machine,以下简称SVM)虽然诞生只有短短的二十多年,但是自一诞生便由于它良好的分类性能席卷了机器学习领域,并牢牢压制了神经网络领域好多年。如果不考虑集成学习的算法,不考虑特定的训练数据集,在分类算法中的表现SVM说是排第一估计是没有什么异议的。 SVM是一个二元分类算法,线性分类和非线性分类都支持。经过演进,现在...
2018-08-14 08:53:14
351
原创 (十一)感知机
感知机 感知机可以说是最古老的分类方法之一了,在1957年就已经提出。今天看来它的分类模型在大多数时候泛化能力不强,但是它的原理却值得好好研究。因为研究透了感知机模型,学习支持向量机的话会降低不少难度。同时如果研究透了感知机模型,再学习神经网络,深度学习,也是一个很好的起点。这里对感知机的原理做一个小结。1. 感知机模型 感知机的思想很简单,比如我们在一个平台上有很多的男孩...
2018-08-13 10:51:29
525
原创 (十)K近邻法(KNN)
K近邻法(k-nearest neighbors,KNN) K近邻法(k-nearest neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用。比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出了。这里就运用了KNN的思想。KNN方法既可以做分类,也可以做回归,这点和决策树算法相同。 KNN做回归和分类的主要区别在...
2018-08-13 10:50:08
620
原创 (九)朴素贝叶斯(Naive Bayes)
朴素贝叶斯算法 在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数的分类算法,比如决策树,KNN,逻辑回归,支持向量机等,他们都是判别方法,也就是直接学习出特征输出Y和特征X之间的关系,要么是决策函数Y=f(X)Y=f(X)Y=f(X),要么是条件分布P(Y|X)P(Y|X)P(Y|X)。但是朴素贝叶斯却是生成方法,也就是直接找出特征输出Y和特征X的联合分布P...
2018-08-13 10:40:54
411
原创 (八)决策树(CART)
决策树(CART) 在决策树(ID3、C4.5)里,我们讲到了决策树里ID3算法,和ID3算法的改进版C4.5算法。对于C4.5算法,我们也提到了它的不足,比如模型是用较为复杂的熵来度量,使用了相对较为复杂的多叉树,只能处理分类不能处理回归等。对于这些问题, CART算法大部分做了改进。CART算法也就是我们下面的重点了。由于CART算法可以做回归,也可以做分类,我们分别加以介绍,先从CA...
2018-08-13 10:39:11
1022
原创 (七)决策树(ID3、C4.5)
决策树(ID3、C4.5) 决策树算法在机器学习中算是很经典的一个算法系列了。它既可以作为分类算法,也可以作为回归算法,同时也特别适合集成学习比如随机森林。1. 决策树ID3算法的信息论基础 机器学习算法其实很古老,作为一个码农经常会不停的敲 if, else if, else 其实就已经在用到决策树的思想了。只是你有没有想过,有这么多条件,用哪个条件特征先做 if,哪个条...
2018-08-13 10:35:17
404
原创 (六)逻辑回归
逻辑回归(Logistic Regression) 逻辑回归是一个分类算法,它可以处理二元分类以及多元分类。虽然它名字里面有“回归”两个字,却不是一个回归算法。1. 从线性回归到逻辑回归 我们知道,线性回归的模型是求出输出特征向量 YYY 和输入样本矩阵 XXX 之间的线性关系系数 θθ\theta,满足Y=XθY=Xθ\mathbf{Y = X\theta}。此时我们的...
2018-08-13 10:21:45
410
原创 (五)线性回归
线性回归小结 线性回归可以说是机器学习中最基本的问题类型了,这里就对线性回归的原理和算法做一个小结。1. 线性回归的模型函数和损失函数 线性回归遇到的问题一般是这样的。我们有 m 个样本,每个样本对应于 n 维特征和一个结果输出,如下: (x(0)1,x(0)2,...x(0)n,y0),(x(1)1,x(1)2,...x(1)n,y1),...(x(m)1,x(m)2,...
2018-08-13 10:10:53
456
原创 (四)交叉验证(Cross Validation)
交叉验证 交叉验证是在机器学习建立模型和验证模型参数时常用的办法。交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏。在此基础上可以得到多组不同的训练集和测试集,某次训练集中的某样本在下次可能成为测试集中的样本,即所谓“交叉”。 那么什么时候才需要交叉验证呢?交叉验证用在数据不是很充足的时...
2018-08-13 10:01:47
762
原创 (三)最小二乘法
最小二乘法(Least squares) 最小二乘法是用来做函数拟合或者求函数极值的方法。在机器学习,尤其是回归模型中,经常可以看到最小二乘法的身影,这里就对我对最小二乘法的认知做一个小结。1.最小二乘法的原理与要解决的问题 最小二乘法是由勒让德在 19 世纪发现的,原理的一般形式很简单,当然发现的过程是非常艰难的。形式如下式: 目标函数=∑(观测值−理论值)2目标函数...
2018-08-13 09:58:21
371
原创 (二)梯度下降(Gradient Descent)
梯度下降(Gradient Descent) 在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。这里先总结梯度下降。1. 梯度 在微积分里面,对多元函数的参数求∂∂\partial偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y)f(x,y)f(x,y...
2018-08-13 09:34:24
322
原创 LeetCode(51-100)
LeetCode(51-100)51. N-Queens The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other. Given an integer n, return all distinct ...
2018-08-10 18:13:21
476
原创 机器学习面经
机器学习面经1. 机器学习常见面试问题算法要从以下几个方面来掌握: 产生背景,适用场合(数据规模,特征维度,是否有 Online 算法,离散/连续特征处理等角度);原理推导(最大间隔,软间隔,对偶);求解方法(随机梯度下降、拟牛顿法等优化算法);优缺点,相关改进;和其他基本方法的对比;1.1 各模型优缺点SVM特性:非线性映射是SVM方法的理论基础,SVM利...
2018-08-10 11:27:02
1630
原创 面经背诵
机器学习各算法介绍1. SVM SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法。SVM是一种二类分类的模型,它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。特性:SVM 是一种有坚实理论基础的新颖的小样本学习方法。它基本上不涉及概率测度及大数定律,因此不同于现有的统计方法非线性映射是SVM方法的理论基础...
2018-08-10 11:23:23
653
原创 LeetCode(1-50)
LeetCode 编程1. Two Sum Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one soluti...
2018-08-09 09:00:22
1007
原创 剑指offer题目集
剑指 offer 算法题1. 二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector&...
2018-08-09 08:56:35
338
原创 (一)拉格朗日对偶问题(Lagrange duality)
拉格朗日对偶问题(Lagrange duality) 在约束最优化问题中,常常利用拉格朗日对偶性(Lagrange duality)将原始问题转化为对偶问题,通过解对偶问题而得到原始问题的解。该方法应用在许多统计学习方法中,例如,最大熵模型与支持向量机。这里简要叙述拉格朗日对偶性的主要概念和结果。1. 原始问题 假设f(x),ci(x),hj(x)f(x),ci(x),hj...
2018-08-09 08:46:02
1694
原创 第一次在linux下安装CUDD包及遇见的问题
(一) 下载CUDD安装包 在ftp://vlsi.colorado.edu/pub/上面可以下载到; ftp domain.com ftp 192.168.0.1 ftp user@ftpdomain.com 可以用来登陆ftp;进入ftp服务器之后可以用常用的linux命令来操作,如ls,cd等; 在下载一个文件之前,我们首先需要使
2017-09-09 11:07:29
2363
2
转载 C++中如何将string类型转化成char类型
一、string转char*: 主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy(); 1.data()方法,如: string str = "hello"; const char* p = str.data();//加const 或者用char * p=(char*)str.data();的形式
2017-09-08 12:40:56
60837
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人