机器学习
Panpan Wei
机器学习,数据挖掘,自然语言处理,深度学习
展开
-
关联规则挖掘算法-FP-tree算法
FP-tree两个主要步骤:1. 利用事务数据库中的数据构造FP-tree;2. 从FP-tree中挖掘频繁模式。具体过程:1.扫描数据库一次,得到频繁1-项集。2.把项按支持度递减排序。3.再一次扫描数据库,建立FP-tree。为了方便大家理解,下面附上一个简单的例子。给出一个具体的事务数据库:利用出现的次数计算频繁1-项目集。重新调整事务数据库:(在这里是对于每一个Items进行调整,把支持度高的放在前面)创建根结点和频繁项目表:加入第一个事务(I2原创 2020-05-22 19:59:13 · 3006 阅读 · 0 评论 -
关联规则挖掘算法-Apriori算法
Apriori算法:Apriori算法命名源于算法使用了频繁项集性质的先验(Prior)知识。Apriori算法将发现关联规则的过程分为两个步骤:通过迭代,检索出事务数据库中的所有频繁项集,即支持度不低于用户设定的阈值的项集;利用频繁项集构造出满足用户最小信任度的规则。挖掘或识别出所有频繁项集是该算法的核心,占整个计算量的大部分。Apriori的性质:性质1:频繁项集的所有非空子集必为频繁项集。性质2:非频繁项集的超集一定是非频繁的。算法流程:下面介绍一下此算法具体实例:在原创 2020-05-22 11:40:24 · 1241 阅读 · 0 评论 -
自组织特征映射神经网络(SOM)
自组织特征映射神经网络简介: 自组织特征映射神经网络(SOM)也是无教师学习网络,主要用于对输入向量进行区域分类。其结构与基本竞争型神经网络很相似。与自组织竞争网络的不同之处:SOM网络不但识别属于区域邻近的区域,还研究输入向量的分布特性和拓扑结构。自组织特征映射神经网络结构 1981年,科霍恩(Kohonen)教授提出一种自组织特征映射网(Self-Organi...原创 2020-04-01 18:37:40 · 4255 阅读 · 0 评论 -
集成学习-Adaboost
Adaboost是集成学习中经典的算法之一。Adaboost算法,英文全称为:Adaptive Boosting,即自适应增强,是一种典型的Boosting算法。对于集成学习,对于给定的数据集,学习到一个较弱的分类器比学习到一个强分类器容易的多,boosting就是从弱学习器出发,反复学习,得到多个弱分类器,最后将这些弱分类器组合成强分类器。Adaboost算法主要的工作是以下两点。1...原创 2020-01-26 13:44:18 · 442 阅读 · 0 评论 -
集成学习-bagging
bagging集成学习中最为经典的算法之一。Bagging算法的基本思想是:自助采样和投票表决Bagging就是,有放回采样m个样本,这件事进行T(T一般是奇数)次,这样就得到了T个不相同的训练集,分别用于取训练一个基学习器。因为样本集的构成不同,这T个基学习器就是不同的。而测试集则用这T次自助采样都没有采到过的那部分样本构成。投票表决:训练出的T个基学习器用于样本预测时,按少数服从多...原创 2020-01-26 13:32:33 · 1930 阅读 · 0 评论 -
集成学习-Stacking
在集成学习中,结合策略也是影响集成模型性能的重要因素之一。传统的结合策略有多数投票、加权平均等。Stacking的本质是设计合适的结合策略,达到比传统结合策略更优的集成效果。首先,Stacking训练一组基学习器,用以参与后续的集成构建。其次,算法将这些学习器的输出和期望的样本标签视为新的学习任务,通过机器学习或其他策略得到一个新的模型,其中模型的输入为基学习器的输出,目的是通过构建...原创 2020-01-14 11:21:57 · 885 阅读 · 0 评论 -
python中迭代器和生成器
1、迭代器(iterator)是一个实现了迭代器协议的对象,python的一些内置数据类型(列表,数组,字符串,字典等)都可以通过for语句进行迭代,我们也可以自己创建一个容器,实现了迭代器协议,可以通过for,next方法进行迭代,在迭代的末尾,会引发stopIteration异常。迭代器有两个基本的方法:iter() 和 next()。2、生成器(generator)是通过yield语句快速生...原创 2019-11-29 13:01:14 · 298 阅读 · 0 评论 -
数据不足时的处理方法
在机器学习中,绝大部分模型都需要大量的数据进行训练和学习,然而在实际应用中经常会遇到训练不足的问题,比如图像分类,作为计算机视觉最基本的任务之一,其目标是将每一副图像划分到制定类别集合中的一个或者多个类别中,当训练一个图像分类模型时,如果训练样本比较少,该如何处理。一个模型所能提供的信息一般来源于两个方面,一是训练数据中蕴含的信息;二是模型形成过程中(包括构造学习和推理等),人们提供的先验信息...原创 2019-11-11 20:28:03 · 5207 阅读 · 0 评论 -
偏差和方差的理解
偏差指的是由所有采样得到的大小为m的训练数据集训练出来的所有模型的输出的平均值和真实模型输出之间的偏差。偏差通常是由于我们对学习算法做了错误的假设所导致的,比如真实模型的某个二次函数,但是我们假设模型是一次函数。由偏差所带来的误差通常在训练误差上就能体现出来。方差指的是由采样得到的大小为m的训练集训练出的模型的输出的方差。方差通常是由于模型的复杂度相对于训练样本数m过高导致的。比如一共有100...原创 2019-10-20 14:48:15 · 541 阅读 · 0 评论 -
GBDT、XGBoost、LightGBM的区别和联系
一、Boosting算法首先这三种算法都属于Boosting方法,且GBDT是机器学习算法,XGBoost和LightGBM是GBDT的算法实现。Boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖。其基本思想是根据当前模型损失函数的负梯度信息来训练新加入的弱分类器,然后将训练好的弱分类器以累加的形式结合到现有模型中。这个过程是在不断地减小损失函数,使得模型偏差不断降...原创 2019-10-20 14:34:42 · 1111 阅读 · 0 评论 -
机器学习模型参数调节的方法
调参有三种方法:Grid search:用sklearn的model_selection.GridSearchCV().Grid search 是全空间扫描,所以比较慢。Random search: Random search 虽然快,但可能错失空间上的一些重要的点,精度不够。Hyperopt:Hyperopt是一种通过贝叶斯优化来调整参数的工具,该方法较快的速度,并有较好的效果。此外,Hyp...原创 2019-10-18 20:08:21 · 2712 阅读 · 0 评论 -
ROC曲线的绘制
ROC(Receiver Operating Characteristic)曲线全称是“受试者工作特征”,通常用来衡量一个二分类学习器的好坏。如果一个学习器的ROC曲线能将另一个学习器的ROC曲线完全包住,则说明该学习器的性能优于另一个学习器。在绘制ROC曲线的时候,首先明白ROC曲线的横纵坐标分别代表的是什么。下面介绍下混淆矩阵。在评价二分类器会经常用到的表格。纵坐标:TPR=T...原创 2019-10-15 21:31:24 · 3897 阅读 · 1 评论 -
机器学习试题
1. 习题1(SPSS基础)SPSS的界面中,以下是主窗口是( )A.语法编辑窗B.数据编辑窗口C.结果输出窗口D.脚本编辑窗口正确答案:B解析:SPSS是属于数据分析软件,当然主窗口是在数据编辑上。2. 习题2(分类与聚类)以下哪些方法不可以直接来对文本分类?A.KmeansB.决策树C.支持向量机D.KNN正确答案...原创 2019-07-30 14:29:25 · 2547 阅读 · 0 评论 -
进程和线程之间的区别和联系
进程概念 进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了...原创 2019-09-06 09:16:59 · 433 阅读 · 0 评论 -
LeetCode使用指南
虽然刷题一直饱受诟病,不过不可否认刷题确实能锻炼我们的编程能力,相信每个认真刷题的人都会有体会。现在提供在线编程评测的平台有很多,比较有名的有 hihocoder,LintCode,以及这里我们关注的 LeetCode。LeetCode 是一个非常棒的 OJ(Online Judge)平台,收集了许多公司的面试题目。相对其他 OJ 平台而言,有着下面的几个优点:题目全部来自业内大公司的真实...原创 2019-08-25 16:42:40 · 6654 阅读 · 0 评论 -
支持向量机(SVM)
一、简介支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。由简至繁的模型包括:当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;当训练样本线性不可分时,通过核技巧和软间隔最大...原创 2019-08-20 20:23:49 · 236 阅读 · 0 评论 -
偏差和方差的理解
首先引出来一个机器学习试题:Adaboost可以降低方差Xgboost可以降低偏差(是属于boosting的一种)为什么说bagging是减少方差,而boosting是减少偏差;Bagging是Bootstrap Aggregating 的简称,意思就是再取样 (Bootstrap) 然后在每个样本上训练出来的模型取平均,所以是降低模型的variance. Bagging 比...原创 2019-08-08 17:40:49 · 2006 阅读 · 0 评论 -
机器学习试题
1. 隐马尔可夫模型三个基本问题以及相应的算法说法正确的是( )A.评估—前向后向算法B.解码—维特比算法C.学习—Baum-Welch算法(向前向后算法)D.学习—前向后向算法答案选择ABD,解析前向、后向算法解决的是一个评估问题,即给定一个模型,求某特定观测序列的概率,用于评估该序列最匹配的模型。Baum-Welch算法解决的是一个模型训练问题,即参数估计,...原创 2019-07-31 21:29:15 · 1244 阅读 · 0 评论 -
GBDT模型构造新特征
GBDT:1、回归树、提升树和梯度提升树(1)回归树 GBDT中的树是回归树,不是决策树,用来做回归预测,调整后也可以用于分类; 回归树分支时穷举每一个feature的每一个阈值寻找最好的分割点,衡量好坏的标准不是最大熵,而是最小化平方误差;(2)提升树 迭代多棵回归树来共同决策;GBDT是如何衡量特征的重要性的:1.计算所有的非叶子节点在分裂时加权不纯度的...原创 2019-09-08 16:33:03 · 1142 阅读 · 2 评论 -
GBDT提取特征的实现
Python实现:上一篇博客已经介绍了使用GBDT提取特征的思想,参考:https://blog.csdn.net/jodie123456/article/details/100630547但是算法的难点在于如何获得GBDT模型每个叶子节点的输出状况,而这可以通过sklearn包中GradientBoostingRegressor的apply函数实现,其原理如下:上面为GBDT模型...原创 2019-09-18 09:16:20 · 1961 阅读 · 0 评论 -
快速排序详解
近些天来,由于需要找工作,特将数据机构与算法中的快速排序温习总结了一下,希望对于大家学习有所帮助。首先,快速排序的基本思想是基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(low指向起始位置,high指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换lo...原创 2019-09-22 15:26:14 · 326 阅读 · 0 评论 -
KNN和K-means详细介绍
在对于初学者来说的话,在学习这两个算法的时候,容易搞混,下面将针对这两个算法做了一个详细的介绍。方便大家理解。K近邻算法(KNN):有监督的学习 首先,KNN是通过测量不同特征值之间的距离进行分类,它的一个基本思路是,如果一个样本在特征空间中的K个最相似的(可以理解为特征空间中最近的样本)的样本中的大多数属于某一个类别,则样本也属于这个类别,通常在选取k值得时候一般选取K&l...原创 2019-09-28 09:36:14 · 545 阅读 · 0 评论 -
KNN和K-means详细介绍
在上一篇博文中介绍了KNN算法(https://blog.csdn.net/jodie123456/article/details/101595943),接下来继续介绍K-means算法:K-means(K均值聚类):(属于无监督学习)K-means算法是一种简单的迭代型聚类算法,采用聚类作为相似性指标,从而发现给定数据集中的K个类,并且每一个类的中心是根据所有值得平均值得到的,每一个类用...原创 2019-09-28 10:20:21 · 474 阅读 · 1 评论 -
面试智力题
由甲乙丙丁四匹马赛跑,他们共进行了四次比赛,结果是甲快乙三次,乙又快丙三次,丙又快丁三次。很多人会以为,丁跑得慢些,但事实上。丁却快甲三次,这看似矛盾的结果可能发生吗?有可能因为甲快乙三次那么有一次就可以是乙快甲这样下去,就有可能出现丁快甲一次同样的因为乙又快丙三次所以有一次可以是丙快乙了这样下去,也有可能出现丁快甲一次同样的因为丙又快丁三次所以有一次可以是丁快丙了这样下...原创 2019-09-28 21:05:32 · 375 阅读 · 0 评论 -
常用的机器学习网站
1.http://scikit-learn.org/stable/ 这个是机器学习常用的包2.http://www.tensorfly.cn/3.https://www.deeplearn.me/4.http://keras-cn.readthedocs.io/en/latest/5.https://www.kaggle.com/ 里面有很多比赛题目,对于初学者很有帮助,...原创 2019-03-16 11:28:55 · 1796 阅读 · 0 评论 -
经典测试题总结
一,选择题(皆为单选):1以下谁是二进制思想的最早提出者?a,伏羲;b,姬昌;c,莱布尼茨;d,柏拉图。2,以下哪个概念和公孙龙的《指物论》中的“指”字含义相近?a,变量;b,数组;c,对象;d,指针。3,蔺相如,司马相如;魏无忌,长孙无忌。下列哪一组对应关系与此类似?a,PHP,Python;b,JSP,servlet;c,java,java script;d,C,C++。...原创 2019-07-30 11:30:07 · 437 阅读 · 0 评论 -
排序算法的时间复杂度
原创 2019-07-19 16:08:06 · 408 阅读 · 0 评论 -
决策边界(decision boundary)的理解
1.在具有两个类的统计分类问题中,决策边界或决策表面是超曲面,其将基础向量空间划分为两个集合,一个集合。 分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。总体来说的的话,决策边界主要有线性决策边界(linear decision boundaries)和非线性决策边界(non-linear decision boundaries)决策边界是问题空间的...原创 2019-03-28 16:21:04 · 26120 阅读 · 3 评论 -
机器学习算法的决策边界(decision boundary)
逻辑斯谛回归之决策边界logistic回归虽然带着回归两字却和线性回归有很大的区别,线性回归主要用于预测问题,其输出值为连续变量,而logistic回归主要用于分类问题,其输出值为离散值。logistic回归可以用于多元分类问题,也可以用于二元分类问题,但二元分类更为常用。因此本文只介绍二元分类的应用。先来看一些logistic回归的基本东西,logistic回归的假设函数为:,因为.因...原创 2019-03-28 15:51:14 · 25914 阅读 · 2 评论 -
GBDT原理详解
1.GBDT算法简介GBDT(Gradient Boosting Decision Tree)是一种迭代的决策树算法,由多棵决策树组成,所有树的结论累加起来作为最终答案,我们根据其名字(Gradient Boosting Decision Tree)来展开推导过程。决策树(Decision Tree)我们已经不再陌生,在之前介绍到的机器学习之决策树(C4.5算法)、机器学习之分类与回归树(CA...原创 2019-03-18 21:31:58 · 14297 阅读 · 1 评论 -
GBDT(梯度提升决策树)算法
一、前言通过之前的文章GBDT算法我们可以了解到GBDT是一种迭代的决策树算法,由多棵决策树组成,所有树的结论累加起来做最终答案。GBDT是一个应用很广泛的算法,可以用于分类,回归和特征选择,特别是用于和其他算法进行模型组成时,如logistic+GBDT,该算法在很多数据上都有不错的效果,GBDT还有其他的名字,如MART,GBRT和Tree Net等。二、基础知识2.1 决策树(D...转载 2019-03-18 19:43:36 · 1520 阅读 · 0 评论 -
决策树ID3,C4.5原理
在上一篇博文中已经根据具体的实例介绍了决策树:在这里附上博文链接(https://blog.csdn.net/jodie123456/article/details/88532344)下面具体介绍决策树的剪枝,ID3,C4.5,CART算法。首先,决策树学习的步骤有如下步骤:①特征选择:特征选择即我们用哪个特征来划分空间。我们常用信息增益、信息增益比或基尼系数来作为划分依据。②决...原创 2019-03-13 16:54:33 · 586 阅读 · 0 评论 -
机器学习—决策树原理(python代码实现)
首先,决策树(Decision Tree)是一种基本的分类与回归方法,在这里主要讨论用于分类的决策树。决策树的学习通常包含三个步骤:特征选择,决策树的生成,决策树的剪枝。优点:计算复杂度不高,输出结果易于理解,对中间值的缺失值不敏感,可以处理不相关特征数据。 缺点:可能会产生过度匹配的问题。 使用数据类型:数值型和标称型。那么具体的来通过一个例子说明一下决策树。下面这个例子是通过贷款...原创 2019-03-13 15:30:02 · 4216 阅读 · 1 评论 -
XGBoost原理详解
XGBoost是boosting算法的其中一种。Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。因为XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。而所用到的树模型则是CART回归树模型。讲解其原理前,先讲解一下CART回归树。一、CART回归树CART回归树是假设树为二叉树,通过不断将特征进行分裂。比如当前树结点是基于第j个特征...转载 2019-03-15 15:03:36 · 2088 阅读 · 0 评论 -
CART的时间复杂度的详解
大家在看算法的时候肯定会考虑时间的复杂度,那么就来讲一下CART的时间复杂度。对于一个样本数量是N的数据集,他的feature(特征)数是M,那么对应生成的树的深度是D 。在cart生长时,需要把所有的feature内的值都作为一个分裂的候选,然后根据这个计算一个指标,例如信息增益,信息增益比,gini指数等等,于是每层的时间复杂度是O(N*M),再加上树的深度D,那么总的时间复杂度就是O...原创 2019-03-19 17:04:52 · 1746 阅读 · 0 评论 -
决策树分裂到底是什么,看了这篇就明白了
在实际生活中,树的类比如影随形。事实证明,树形结构对于机器学习领域同样有着广泛的影响,特别是对分类和回归两大任务来说。在决策分析中,决策树可以非常清晰地呈现决策的过程和结果。“树”如其名,决策树所用的正是一个树形的决策模型。数据挖掘领域经常会用决策树来搜寻给定问题的解决策略,机器学习领域同样会广泛用到这一方法。这将会是这篇博客的主题。算法如何能被表示成树形?对于这...转载 2019-03-19 15:48:25 · 8834 阅读 · 0 评论 -
集成学习(Ensemble_learning)
1. 关于集成学习算法集成学习算法,通俗地讲就是:三个臭皮匠,顶个诸葛亮,这在很多地方都有人提过。举个例子,比如你想第一本书,但是你不知道这本书怎么样,值不值得读,那么你可以通过打听,听取周围人的意见,得到对该书的一个基本评价,这是一种评价方式。你还可以通过京东、当当等电商网站上买书的人对该书的相关评论,得到一些意见,还有就是,你也可以通过豆瓣上对该书的评价,来获取相关信息。这都是一些对该...原创 2019-03-14 16:19:04 · 1217 阅读 · 0 评论 -
describe和corr的用法详解
1. data.describe() #基本统计量count 195.000000 #数量mean 2744.595385 #均值std 424.739407 #标准差min 865.000000 #最小值25% 2460.600000 #下四分位50% 2655.900000 #中位数75% 3023.200000 #上四分...原创 2019-03-14 15:53:02 · 3856 阅读 · 0 评论 -
CART的时间复杂度计算与分析
大家在看算法的时候肯定会考虑时间的复杂度,那么就来讲一下CART的时间复杂度O(N*M*D), N是sample的大小,M是feature的数量,D是树的深度。cart生长时,把所有feature内的值都作为分裂候选,并为其计算一个评价指标(信息增益、增益比率、gini系数等),所以每层是O(N*M),D层的树就是O(N*M*D)...原创 2019-04-12 09:08:26 · 731 阅读 · 0 评论 -
ID3,C4.5
一.引入决策树基本上是每一本机器学习入门书籍必讲的东西,其决策过程和平时我们的思维很相似,所以非常好理解,同时有一堆信息论的东西在里面,也算是一个入门应用,决策树也有回归和分类,但一般来说我们主要讲的是分类,方便理解嘛。虽然说这是一个很简单的算法,但其实现其实还是有些烦人,因为其feature既有离散的,也有连续的,实现的时候要稍加注意(不同特征的决策,图片来自【1】...原创 2019-04-12 09:09:17 · 461 阅读 · 1 评论