ml algorithm
文章平均质量分 76
bitcarmanlee
这个作者很懒,什么都没留下…
展开
-
lookalike模型综述
首先我们需要知道,lookalike不是某一种特定算法,而是某一类算法或者策略的总称。具体来说,在某个实际业务场景中,我们可能会先根据某些规则或者业务经验,选出一些好用户,即所谓的种子用户。这些用户往往精度很高,能精确贴合我们业务场景,但是一般人数较少。这个时候,我们就需要通过lookalike算法,根据种子用户,对人群来进行扩充,来满足实际业务需求。举个实际例子,广告主在进行广告投放的时候,可能事先会给定1w个种子用户,这些种子用户对广告的响应与转化都很高。原创 2023-06-02 16:02:21 · 1085 阅读 · 0 评论 -
分割训练集测试集验证集的两种方式
训练模型过程中,不可避免要对数据集进行切分,将数据集按比例分成训练集,测试集,验证集。作为一种常见的需求,稍微总结了一下两种实现方式。原创 2023-01-06 16:56:28 · 4273 阅读 · 1 评论 -
回归算法中特征线性相关会怎样
线性相关的概念,大家在线性代数里面都有学过。如果把问题更加简化一点,假设两个单变量x1,x2x_1, x_2x1,x2线性相关,那么可以写成如下形式x1=a⋅x2+bx1=a⋅x2+b。原创 2022-11-28 12:32:18 · 1085 阅读 · 0 评论 -
计算AUC的方法以及代码实现
按概率从高到矮排个降序, 对于正样本中概率最高的,排序为rank_1, 比它概率小的有M-1个正样本(M为正样本个数), (rank_1 - M) 个负样本。正样本概率第二高的, 排序为rank_2, 比它概率小的有M-2个正样本,(rank_2 - M + 1) 个 负样本。正样本中概率最小的, 排序为rank_M,比它概率小的有0个正样本,rank_M - 1 个负样本。可以看出,sklearn中auc,以及我们用上面第二,第三种方法计算得到的auc值,都是完全一致的。具体的详情可以参考下文。原创 2022-11-04 11:35:59 · 1344 阅读 · 0 评论 -
sklearn中的逻辑回归
1.sklearn中与逻辑回归有关的三个类sklearn中,lr相关的代码在linear_model模块中,查看linear_model的__init__文件,内容如下__all__ = ['ARDRegression', 'BayesianRidge', 'ElasticNet', 'ElasticNetCV', 'Hinge', 'Huber', 'HuberRegre原创 2021-11-30 18:05:45 · 2324 阅读 · 0 评论 -
交叉验证(Cross Validation)最详解
1.OverFitting在模型训练过程中,过拟合overfitting是非常常见的现象。所谓的overfitting,就是在训练集上表现很好,但是测试集上表现很差。为了减少过拟合,提高模型的泛化能力,实际中会有很多措施来缓解overfitting的问题。其中一个常见的方法就是将已有数据集中保留一部分数据作为测试集,即将原有数据分为X_train, X_test,X_train用来训练模型,X_test用来验证调整模型。2.train_split_testsklearn中的train_split_te原创 2021-11-18 17:11:00 · 22648 阅读 · 1 评论 -
卡方检验详解分析与实例
1.什么是卡方检验卡方检验是一种用途很广的假设检验方法,属于非参数检验的范畴。主要是比较两个或两个以上样本率以及两个分类变量的关联性分析。根本思想是在于比较理论频次与实际频次的吻合程度或拟合优度问题。(以上简介来自网络相关文档)2.什么是卡方分布卡方分布(chi-square distribution,χ2\chi ^2χ2-distribution)是概率统计中常用的一个分布。k个独立的标准正态分布变量的平方和服从自由度为k的卡方分布,即X=∑i=1kZi2X = \sum_{i=1}^k原创 2021-11-11 19:14:54 · 52172 阅读 · 8 评论 -
sklearn中CountVectorizer与TfidfVectorizer区别
1.CountVectorizer首先我们看看CountVectorizer相关源码中的部分内容。class CountVectorizer(_VectorizerMixin, BaseEstimator): """Convert a collection of text documents to a matrix of token counts This implementation produces a sparse representation of the counts usi原创 2021-11-08 18:05:03 · 3138 阅读 · 0 评论 -
算法常见问题小结
1.LR与SVM联系与区别联系:1.LR与SVM都可以处理分类问题,尤其是处理二分类。2.都可以用来做非线性分类。3.本身都是属于线性模型。4.都是判别模型。区别1.LR采用的目标函数是logistical loss,SVM采用的是hinge loss。2.LR是经验风险最小,而SVM是结构风险最小。3.LR是参数模型,而SVM是非参数模型。4.LR依赖数据的分布,而SVM不依赖数据分布,只与支持向量的几个点有关系。5.SVM很依赖乘法系数,需要做cross validation。S原创 2021-09-22 10:11:02 · 419 阅读 · 0 评论 -
参数模型 非参数模型 生成模型 判别模型
1.参数模型参数模型(parametric models)与非参数模型(Nonparametric models)的主要区别在于:对于数据分布的假设不同。参数模型对于数据分布(data distribution)是有假设的,而非参数模型对于数据分布是假设自由的(distribution free)。因此,所谓参数模型与非参数模型中的参数,是指数据分布的参数。常见的参数模型包括:逻辑回归线性回归其中,逻辑回归我们假设一个样本数据符合伯努利分布,而线性回归我们假设响应变量是服从正态分布的。根据上面原创 2021-09-21 22:13:08 · 1645 阅读 · 0 评论 -
feature scaling小结
原文链接:https://blog.csdn.net/blogshinelee/article/details/1028750441 前言在对特征进行预处理的时候,很重要的一步就是feature scaling,中文经常翻译成归一化(scale), 标准化(normalization),等等不同的说法。为什么要进行归一化?最主要的原因有两点:1.不同特征之间的尺度不一样,那么在计算距离的时候,如果不对原始特征进行处理,某一维尺度特别大的特征会占主导,别的尺度小的特征基本体现不出来。2.不同特征之间转载 2021-09-20 21:32:40 · 378 阅读 · 0 评论 -
史上最全macos安装xgboost教程
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice欢迎大家star,留言,一起学习进步0.前言自己的macos上一直没有安装上xgboost,最近因为工作需要,想在macos上安装一下xgboost。本来以为是个很简单的事情,没想到还是费了一些波折,特意记录一下1. 直接安装失败最开始直接使用pin install xgboost安装,安装过程没啥问题。但是安装完毕,使用过程中出现了问题。import xgboost原创 2021-01-02 23:05:53 · 3049 阅读 · 5 评论 -
树算法系列之四:XGBoost
1.CART树回顾在正式讲Xgboost之前,我们先回顾一下CART树。CART树的生成过程,就是递归构建二叉树的过程,本质上是在某个特征维度对样本空间进行划分。这种空间划分是一种NP Hard问题,因此一般都是用启发式的方式去求解,即求某个特征j的且分点s,使得minj,s[minc1∑xi∈R1(j,s)(yi−c1)2+minc2∑xi∈R2(j,s)(yi−c2)2]\min_ { j , s } \left[ \min _ { c _ { 1 } } \sum _ { x _ { i原创 2020-06-18 23:24:26 · 751 阅读 · 0 评论 -
树算法系列之三:GBDT
1.GBDT(Gradient Boosting Decison Tree)梯度提升树GBDT与提升树有非常密切的关系。为方便阅读本文,可以先参考提升树一文。在提升树一文中,我们提到每一轮迭代,都是去拟合上一轮的"残差",如果用一个简单的公式表示就是yi−fm−1(x)y_i - f_{m-1}(x)yi−fm−1(x)GBDT与上面普通提升树的不同在于,其拟合的不是残差,而是梯度下降的方向。也就是将残差的计算替换为损失函数梯度的计算:rmi=−[∂L(yi,f(xi))∂f(xi)]f(x)=原创 2020-06-18 18:05:29 · 532 阅读 · 0 评论 -
树算法系列之二:boosting,bagging,提升树
0.集成学习(ensemble learning)集成学习是目前一种比较流行的学习算法,是一大类学习算法的统称,而不是单独的某个算法。其核心思想是三个臭皮匠,顶个诸葛亮。某一个学习器的能力可能比较弱,但是将多个学习器集合在一起,发挥集体的智慧,可能就能迸发出强大的战斗力。集成学习主要有两个问题需要解决:第一是如何得到若干个弱学习器,第二则是采取一种什么样的策略让这些弱学习器组合到一起。对于第一个问题,我们目前采取的方式一般都是将同一种弱学习器训练多个,比如常见的GBDT,采用的弱学习器就是决策树这种结原创 2020-06-18 16:21:37 · 846 阅读 · 0 评论 -
树算法系列之一:CART回归树
0.前言在深度神经网络崛起之前,基于树类的算法是表现比较优异,非线性性能比较好的一大类算法,深受广大人民群众的喜爱。比如常见的基于树的算法有随机森林(Random Forest),GBDT, XGboost, LightGBM等。而所有的这些算法,都是基于决策树(Decision Tree)进化而来的。因此了解熟悉决策树是我们学习算法过程中一个必不可少的环节。决策树可以分为分类树与回归树。回归树一般只能处理连续型数据,而分类树则即可以处理连续型数据又可以处理离散型数据。1.什么是CART树CART树原创 2020-06-18 11:18:42 · 1397 阅读 · 0 评论 -
史上最全采样方法详细解读与代码实现
1.什么是采样在信号系统、数字信号处理中,采样是每隔一定的时间测量一次声音信号的幅值,把时间连续的,模拟信号转换成时间离散、幅值连续的采样信号。如果采样的时间间隔相等,这种采样称为均匀采样。在计算机系统中,有一个重要的问题就是给定一个概率分布p(x) , 我们如何在计算机中生成它的样本。平时我们接触比较多的场景是,给定一堆样本数据,求出这堆样本的概率分布p(x)。而采样刚好是个逆命题:给定一个...原创 2018-09-20 23:21:08 · 45323 阅读 · 2 评论 -
最全随机抽样算法(从N个数中抽取M个等)集合
1.从N个数中等概率抽取M个数从N个样本中等概率抽取M个样本(M<N)是常见的需求。现在我们以一个数组来模拟样本,看看怎么实现这个算法。最容易想到的方法,肯定就是直接等概率抽取。具体做法如下:每次都随机在[0, N-1](假设第一个样本d的标号为0)之间抽取一个数,并且与之前的数相比较。如果与前面生成的随机数相同,则继续随机生成,直到生成一个与之前所有生成数不同的数。如果不相同,则将该随...原创 2018-10-11 17:54:28 · 30398 阅读 · 2 评论 -
logistic回归详解(四):梯度下降训练逻辑回归python实现
1.逻辑回归梯度下降的迭代公式在参考文献1中,我们推导出了逻辑回归的参数迭代公式为:θ=θ−α∗XT∗E\theta = \theta - \alpha * X ^ T * Eθ=θ−α∗XT∗E接下来我们按照这个思路,用python来手动实现以下逻辑回归算法。2.准备数据-0.017612 14.053064 0-1.395634 4.662541 1-0.752...原创 2018-10-14 22:54:54 · 8128 阅读 · 6 评论 -
CART树为什么使用GINI系数
1.ID3树与CART树的区别ID3算法中,选择的是信息增益来进行特征选择,信息增益大的特征优先选择。而在C4.5中,选择的是信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的缺点。但是无论是ID3还是C4.5,都是基于熵的模型,里面会涉及到大量的对数运算,能不能简化一下?假设有数据集D,定义GINI指数GINI∗(D)=∑i=1kpk∗(1−pk)=1−∑i=1kpk2GIN...原创 2019-03-25 23:08:15 · 6938 阅读 · 0 评论 -
超详细理解Gamma分布,Beta分布,多项式分布,Dirichlet狄利克雷分布
1.Gamma函数首先我们可以看一下Gamma函数的定义: Γ(x)=∫∞0tx−1e−tdtΓ(x)=∫0∞tx−1e−tdt\Gamma(x) = \int _{0}^{\infty}t^{x-1} e^{-t}dtGamma的重要性质包括下面几条: 1.递推公式:Γ(x+1)=xΓ(x)Γ(x+1)=xΓ(x)\Gamma(x+1)=x\Gamma(x) 2.对于正整数n, 有...原创 2018-08-28 23:24:56 · 37561 阅读 · 7 评论 -
最大似然估计,最大后验估计,贝叶斯估计联系与区别
1.什么是参数在机器学习中,我们经常使用一个模型来描述生成观察数据的过程。例如,我们可以使用一个随机森林模型来分类客户是否会取消订阅服务(称为流失建模),或者我们可以用线性模型根据公司的广告支出来预测公司的收入(这是一个线性回归的例子)。每个模型都包含自己的一组参数,这些参数最终定义了模型本身。我们可以把线性模型写成 y = mx + c 的形式。在广告预测收入的例子中,x 可以表示广告支...原创 2018-08-05 00:14:17 · 97734 阅读 · 10 评论 -
bagging boosting 随机森林 GBDT对比
1.bagging产生n个样本的方法可以采用Bootstraping法,这是一种有放回的抽样方法,产生n个样本。在统计学中,Bootstraping 是依靠替换随机采样的任意试验或度量.普通的决策树会受到高方差的困扰。这意味着如果我们把训练数据随机分成两部分,并且给二者都训练一个决策树,我们得到的结果可能就会相当不同。Bootstrap 聚集,或者叫做Bagging(袋装),是减少统计学习方法...原创 2018-06-30 19:21:54 · 5442 阅读 · 0 评论 -
漫谈Clustering:高斯混合模型(GMM)
上一次我们谈到了用 k-means 进行聚类的方法,这次我们来说一下另一个很流行的算法:Gaussian Mixture Model (GMM)。事实上,GMM 和 k-means 很像,不过 GMM 是学习出一些概率密度函数来(所以 GMM 除了用在 clustering 上之外,还经常被用于 density estimation ),简单地说,k-means 的结果是每个数据点被 assign转载 2016-08-15 11:34:56 · 9584 阅读 · 0 评论 -
从泰勒展开到牛顿迭代
1.泰勒公式(Taylor’s Formula)对于一些复杂的函数,为了方便研究与分析,我们往往希望用一些简单的函数来近似表达。其实这也符合人们对事物的认知规律与认知曲线:有浅入深,由易到难,前面研究的比较容易的部分往往是后面推广结论的特例。在比较简单的函数中,多项式算是最简单的一种了。因为多项表达式只有比较简单的加减乘除四则运算,便能求出函数的值。所以,用多项式表达复杂函数往往是我们的首选。给出泰原创 2016-08-12 21:43:23 · 11220 阅读 · 3 评论 -
FM算法详解
1.FM背景在计算广告中,CTR预估(click-through rate)是非常重要的一个环节,因为DSP后面的出价要依赖于CTR预估的结果。在前面的相关博文中,我们已经提到了CTR中相关特征工程的做法。对于特征组合来说,业界现在通用的做法主要有两大类:FM系列与Tree系列。今天,我们就来讲讲FM算法。2.one-hote编码带来的问题FM(Factorization Machine)主要是为了原创 2016-08-07 18:02:06 · 66471 阅读 · 11 评论 -
LDA入门浅谈
1.什么是主题模型在我的博客上,有篇文章《基于双数组Trie树的Aho Corasick自动机极速多模式匹配》被归入算法目录,算法即为该文章的主题。而该文章因为涉及到中文分词,又被我归入了分词目录。所以该文章的主题并不单一,具体来说文中80%在讲算法,20%稍微讲了下在分词中的应用。传统的文本分类器,比如贝叶斯、kNN和SVM,只能将其分到一个确定的类别中。假设我给出3个分类“算法”“分词”“文学”转载 2016-08-03 11:38:09 · 12621 阅读 · 1 评论 -
kmeans算法详解与spark实战
1.标准kmeans算法kmeans算法是实际中最常用的聚类算法,没有之一。kmeans算法的原理简单,实现起来不是很复杂,实际中使用的效果一般也不错,所以深受广大人民群众的喜爱。 kmeans算法的原理介绍方面的paper多如牛毛,而且理解起来确实也不是很复杂,这里使用wiki上的版本: 已知观测集(x1,x2,⋯,xn)(x_1,x_2,\cdots,x_n),其中每个观测都是一个dd维实矢原创 2016-08-02 10:59:01 · 20202 阅读 · 1 评论 -
NP-Hard问题浅谈
看相关算法的paper的时候,经常会出现NP-Hard这个词。本博主也不是纯数学系出身,对于这么高深的问题自然没有特别深入独到的理解。但是本博主的习惯就是看到一个东西老在眼前晃来晃去但自己还不是很明白,就有强迫症一定要搞明白这到底是个什么玩意。so,咱们就来看看这个NP-Hard问题,怎么用最简单的方式去了解。1.世界七大数学难题之首2000年,美国克莱数学研究所公布了世界七大数学难题,又称千禧年大原创 2016-07-17 23:26:44 · 72260 阅读 · 6 评论 -
机器学习中的范数规则化之(一)L0、L1与L2范数
1.监督机器学习问题无非就是“minimizeyour error while regularizing your parameters”,也就是在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。多么简约的哲学啊!因为参数太多,会导致我们的模型复杂度上升,容易过拟合,也就是我们的训练误差会很小。但训练误差小并不是我们的最转载 2016-07-17 13:47:33 · 5790 阅读 · 0 评论 -
logistic回归详解(二):损失函数(cost function)详解
有监督学习机器学习分为有监督学习,无监督学习,半监督学习,强化学习。对于逻辑回归来说,就是一种典型的有监督学习。 既然是有监督学习,训练集自然可以用如下方式表述: {(x1,y1),(x2,y2),⋯,(xm,ym)}\{(x^1,y^1),(x^2,y^2),\cdots,(x^m,y^m)\}对于这m个训练样本,每个样本本身有n维特征。再加上一个偏置项x0x_0, 则每个样本包含n+1维特征原创 2016-04-15 23:08:51 · 155669 阅读 · 21 评论 -
logistic回归详解一:为什么要使用logistic函数
从线性分类器谈起 给定一些数据集合,他们分别属于两个不同的类别。例如对于广告数据来说,是典型的二分类问题,一般将被点击的数据称为正样本,没被点击的数据称为负样本。现在我们要找到一个线性分类器,将这些数据分为两类(当然实际情况中,广告数据特别复杂,不可能用一个线性分类器区分)。用X表示样本数据,Y表示样本类别(例如1与-1,或者1与0)。我们线性分类器的目的,就是找到一个超平面(Hyperplan)原创 2016-04-14 19:55:27 · 67146 阅读 · 11 评论 -
最简单的推荐系统实践
参考网络上的部分资料,做了个最简单的推荐系统的demo实例。 我们将使用MovieLens数据集,它是在实现和测试推荐引擎时所使用的最常见的数据集之一,包含来自943个用户以及精选的1682部电影的评分。 数据的下载地址:http://grouplens.org/datasets/movielens/,可以去上面下载相关数据。直接上代码,具体的说明在注释里。#!/usr/bin/env pyth原创 2016-09-27 21:13:30 · 7165 阅读 · 1 评论 -
异常点/离群点检测算法——LOF
原文链接地址:http://blog.csdn.net/wangyibo0201/article/details/51705966在数据挖掘方面,经常需要在做特征工程和模型训练之前对数据进行清洗,剔除无效数据和异常数据。异常检测也是数据挖掘的一个方向,用于反作弊、伪基站、金融诈骗等领域。 异常检测方法,针对不同的数据形式,有不同的实现方法。常用的有基于分布的方法,在上、下α分位点之外的值认为是异转载 2017-03-10 15:50:27 · 8084 阅读 · 0 评论 -
sklearn 中GBDT的损失函数
1.分类模型分类模型的损失函数包括有”deviance”和指数损失函数”exponential”,默认为对数损失函数。 相关参考链接: 1.损失函数 http://www.csuldw.com/2016/03/26/2016-03-26-loss-function/ 2.Adaboost与指数损失 http://breezedeus.github.io/2015/07/12/breezedeu原创 2017-09-09 21:33:03 · 6847 阅读 · 1 评论 -
GBDT实战
1.GBDT介绍GBDT(Gradient Boosting Decision Tree) 或者称为MART(Multiple Additive Regression Tree),也可叫GBRT(Gradient Boosting Regression Tree),是一种基于回归决策树的Boosting集成算法。从名字很容易看出,GBDT是由决策树(Decision Tree)与梯度提升(Gradi转载 2017-09-05 21:56:18 · 4585 阅读 · 0 评论 -
机器学习算法调优
机器学习算法众多,各种算法又涉及较多参数,本文将简要介绍RF,GBDT等算法的调优经验与步骤。1. BP调优事项 1.BP对feature scaling很敏感,要先scale data。 2.经验来说,L-BFGS在小数据上收敛更快效果更好;Adam在大数据上表现很好;SGD在参数learning rate调整好的基础效果更好。调参 1.首先隐含层个数。一般来说,如果问题线性可分,那么不用隐转载 2017-08-30 22:32:07 · 1683 阅读 · 0 评论 -
核函数(Kernel Function)与SVM
1.核函数把低维空间映射到高维空间下面这张图位于第一、二象限内。我们关注红色的门,以及“北京四合院”这几个字下面的紫色的字母。我们把红色的门上的点看成是“+”数据,紫色字母上的点看成是“-”数据,它们的横、纵坐标是两个特征。显然,在这个二维空间内,“+”“-”两类数据不是线性可分的。我们现在考虑核函数K(v1,v2)=<v1,v2>2K(v_1,v_2) = <v_1,v_2>^2,即“内积平方”。转载 2017-08-26 18:02:17 · 32976 阅读 · 6 评论 -
隐马尔科夫模型(HMM)讲解
形马尔可夫模型,英文是 Hidden Markov Models,所以以下就简称 HMM。 既是马尔可夫模型,就一定存在马尔可夫链,该马尔可夫链服从马尔可夫性质:即无记忆性。也就是说,这一时刻的状态,受且只受前一时刻的影响,而不受更往前时刻的状态的影响。在这里我们仍然使用非常简单的天气模型来做说明。在这个马尔可夫模型中,存在三个状态,Sunny, Rainy, Cloudy,同时图片上标的是各个状转载 2017-08-22 22:19:11 · 6401 阅读 · 0 评论 -
从内容/用户画像到如何做算法研发
原文链接:http://www.jianshu.com/p/d59c3e037cb7?spm=5176.100239.blogcont60117.8.Bd8tGq中午和一前同事一起用餐,发现还是有很多碰撞点的。交流了很多正在做的事情, 对方也提供了非常多的思想值得自己很好的思考。先是和他聊了下我们现在做内容标签的进展,其实就是在做内容画像。我们一般都是在谈用户画像,其实内容也是要画像的。我之前说,转载 2017-08-25 15:10:20 · 4536 阅读 · 2 评论