机器学习
文章平均质量分 81
taon1607
这个作者很懒,什么都没留下…
展开
-
回归算法的评估指标
回归问题是机器学习要解决的四大问题之一,在我们的生活中也存在着很多回归问题。比如某一地区的房价预测,某一个学生高考成绩的预测,某一地区感染病毒人数的预测,某一公司2020年营业收入的预测等等。从以上的例子中,我们可知回归问题的目标是预测一个数值或者一个区间数值。回归算法:对历史数据进行拟合,形成拟合方程。接下来使用该方程对新数据进行预测。下图中红线表示的是一元数据的拟合方程,如果数据是二元数据,那么它的拟合方程就是一个拟合平面,对于更高维的数据,它的拟合方程将更加复杂。回归算法的评估指标:对于回归算原创 2020-07-02 16:42:55 · 2168 阅读 · 0 评论 -
多分类算法的评估指标
在以往的分类问题求解当中,我们遇到的问题多为二分类问题,我们常用的评估指标有accuracy, precision, recall_score, f1-score, roc_auc_score等。但是在实际生活中,多分类问题也是大量存在的。这一小节,我们就详细的说明一下多分类问题的评估指标。我们先来看一下sklearn库中的二分类的评估指标,以recall_score为例。在recall_score方法中,有一个很重要的参数’average’,它的默认值为’binary’。当在默认参数的情况,该评估方法原创 2020-07-02 16:42:15 · 8918 阅读 · 0 评论 -
SKlearn二分类评价指标
SKlearn的Metrics模块下有有许多二分类算法的评价指标,这里我们主要讨论最常用的几种。1.准确度(Accuracy)from sklearn.metrics import accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)1.1参数说明y_true:数据的真实label值y_pred:数据的预测标签值normalize:默认为True,返回正确预测的个数,若是为False,返回正确预测的比例samp原创 2020-07-02 16:41:27 · 5205 阅读 · 0 评论 -
温度预测示例&参数优化工具RandomizedSearchCV
一般情况下,我们做数据挖掘任务都是按照“数据预处理 - 特征工程 - 构建模型(使用默认参数或经验参数) - 模型评估 - 参数优化 - 模型固定”这样一个流程来处理问题。这一小节,我们要讨论的主题就是参数优化,前面我们讨论过GridSearchCV(网格搜索)这个工具,它是对我们的参数进行组合,选取效果最好的那组参数。这一节,我们探索下参数优化当中的另一个工具RandomizedSearchCV(随机搜索),这名字咋一听感觉有点不太靠谱,对,它是有点不太靠谱,但为什么我们还要用它呢?因为它的效率高,它原创 2020-07-02 16:40:24 · 2839 阅读 · 0 评论 -
模型调参工具GridSearchCV
今天我们来讨论机器学习中一个非常重要的函数GridSearchCV,它是我们用来求解最佳参数组合的常用函数。例如:我们的随机森林算法有很多参数,如n_estimators,max_depth,min_samples_split等等,我们希望对比不同参数组合下的模型效果,来选出该模型的最佳参数。GridSearchCV可以自动对我们给定的参数进行组合,并得出每个组合的模型效果,通过比较其效果来选出最佳参数组合。GridSearchCV API文档sklearn.model_selection.Grid原创 2020-07-02 16:39:29 · 460 阅读 · 1 评论 -
样本不均衡数据处理
当我们在做机器学习任务时,会经常遇到这样的数据集,两种样本的数量相差特别悬殊。这就会导致一个问题,在建模的时候,模型会特别注重数量多的样本,而忽视数量少的样本,觉得数量少的样本不够重要。生活中也有许多这样的例子,如在一份患者数据集当中,绝大多数患者都是正常的,只有极少数患者会得癌症。在一份银行贷款数据集中,绝大数用户都能按时还款,只有极少数用户会欠款不还。如果我们我们的模型只关注正常样本,而忽视了这些极少数的异常样本,那么这样的模型是没有什么实际价值的。银行贷款是一件犯错成本很高的事情,我们需要根据用户原创 2020-07-02 16:38:27 · 825 阅读 · 1 评论 -
数据预处理(系统整理)
前两节,我们总结了数据预处理中的一个小部分 – 数据类型转换。这一节我们系统地总结下数据预处理相关知识点。纵然我们掌握了很多机器学习算法,十八般武艺,样样精通,可是在拿到一份数据集的时候,还是无法直接应用。因为我们的数据集真的是很“dirty”的,里面包含了大量的缺失值,异常值,离群值,非结构化数值等等。通常,在做机器学习或数据挖掘时,数据预处理会占用60%~70%的时间,所以这一部分也是整个机器学习任务中最具挑战性的部分。###数据预处理的组成部分:1.数据清洗2.数据转换3.数据描述4.特征原创 2020-07-02 16:36:52 · 1828 阅读 · 0 评论 -
连续型数据处理
上一节,我们总结了离散型数据的处理方法,这一节我们整理下连续型数据的处理方法。一般来讲,离散型数据都是类别值,如:男生,女生,商务座,一等座,二等座等等。连续型数据基本上都是数值型数据,如年龄(10岁,11岁…),身高(110cm, 175cm…),海拔,薪资等等。既然连续型数据都是数值,是可以直接拿来供计算机使用的,那么连续型数据该如何处理?这里我们提出一个处理思想:连续型数据离散化。连续型数据离散化以后的建模效果一定会比原来的好吗?这个答案是不一定的,任何时候我们都需要对两者结果进行比较,从而做出判断原创 2020-07-02 16:35:15 · 6531 阅读 · 2 评论 -
数据预处理 - 类型转换(离散型)
当我们拿到一个数据分析任务时,我们并不能直接调用数据挖掘算法来解决该问题。在实际的任务中,我们所面对的数据质量都不是特别的好,如果我们对质量较差的数据集直接应用算法建模,那么得到结果也可想而知。所以在调用算法之前,必须对数据进行预处理工作。数据预处理是整个数据挖掘过程中最累的一部分工作,但也是非常重要的一部分工作,只要得到质量较高的数据集,后期的建模工作才会更有意义。数据预处理涉及的方面非常的多,如缺失值处理,异常值处理,重复值处理,数据类型转换,样本处理等等。这一小节,我们先来了解下数据类型转换中的离原创 2020-07-02 16:33:57 · 4354 阅读 · 0 评论 -
数据预处理之归一化和标准化
归一化1、把数变为(0,1)之间的小数,主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。2、把有量纲表达式变为无量纲表达式归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。归一化算法有:1.线性转换:y=(x-minvalue)/(maxvalue-minvalue)2.对数函数转换: y=log10(x)3.反余切函数转换: y=atan(x)*2/pi归一化编程实现:import numpy as npf原创 2020-07-02 16:32:41 · 550 阅读 · 3 评论 -
LDA线性判别分析
LDA(Linear Discriminant Analysis)线性判别分析是一种有监督数据降维算法,它与我们之前提到的PCA都是数据清洗过程中最常用的两种数据降维技术。但它们又有所不同,PCA的核心是将现有数据转换到低维度得空间中,数据的方差都变得最大。LDA的核心含义是对将现有数据进行转换,数据类别变得容易区分,其方差不一定是最大的。LDA的作用:1.将数据的维度降低,除去那些对结果影响不大的特征。如今我们的数据集中,数据的特征往往会达到成百上千维,可是这些维度都会对最终结果产生影响吗?其实不然,原创 2020-07-02 16:30:41 · 604 阅读 · 0 评论 -
LightGBM
LightGBM梯度提升框架是由微软亚洲研究院于2017年1月份提出的一个开源框架,LightGBM是一个快速的,分布式的,高性能的基于决策树的分布框架。在保证准确性不变的前提下,速度可提升10倍,内存降低为原来的1/3。LightGBM的算法思想LightGBM摒弃了现在大部分GBDT使用的按层生长(level-wise)的决策树生长策略,使用带有深度限制的按叶子生长(leaf-wise)的策略。level-wise过一次数据可以同时分裂同一层的叶子,容易进行多线程优化,也好控制模型复杂度,不容易过拟原创 2020-06-23 14:09:33 · 276 阅读 · 0 评论 -
超级算法之XGBoost
XGBoost(Extreme Gradient Boosting):Boosting思想是将许多弱分类器集成在一起形成一个强分类器。XGBoost是集成算法的王牌算法,它可以使用多种分类器,线性分类器也可以使用,它是将众多的弱分类器集成在一起,从而形成一个强分类器。在Kaggle数据挖掘比赛中,XGBoost基本成为了必用的算法,因为它的效率高,而且效果好。XGBoost算法思想XGBoost的算法思想就是通过不断的添加树,不断地进行特征分裂来生长一棵树,每次添加一棵树,就是学习一个新的函数,去拟合原创 2020-06-23 14:08:36 · 562 阅读 · 0 评论 -
梯度提升算法(GBDT)
GBDT(Gradient Boosting Decision Tree)算法是集成算法中的一种,它的最基本分类器为CART二分类回归树,集成方式为梯度提升。CART二分类回归树CART回归树是GBDT算法的最基本分类器,CART回归树决定了每次分类时,叶子结点只能分出两个树枝,它与ID3,C4.5是不同的。CART回归树经常涉及到一些问题。选择哪个特征作为最优分裂特征?怎么去切分一个特征?确定分裂结束的条件?模型的剪枝(后剪枝,预剪枝)?BoostingBoosting是一种模型的组合原创 2020-06-23 14:07:46 · 2736 阅读 · 0 评论 -
集成算法 - 随机森林
这一节,我们来聊聊随机森林算法,虽然我对这些算法的理解也不是很深,但还是决定写一写。首先,集成算法是指多种算法的集合,因为单一的算法在处理某种问题时,可能会有所限制,集成算法会综合多种算法的结果,得到一个均值,效果往往会比单一算法好一些。前面我们讨论过决策树,那随机森林就不难理解,它是由多个决策树组合而成的,可以是1棵树,10棵树,100棵树,甚至上千棵树。前面我们了解了决策树的构造过程,那么随机森林就是构造很多棵决策树,每棵决策树各不相同。那么如何保证构造出来的每棵决策树都不一样呢?这就要使用不同的数据原创 2020-06-22 10:27:54 · 235 阅读 · 0 评论 -
关联分析 & Apriori算法
在日常生活中,我们每个人都会去超市、商场、电商平台购物,每次的购物记录都会进入商家的用户数据库中。商家希望从这些海量的消费记录中,发现一些有价值的规律,来提高自己的盈利水平。当我们在Amazon上购买图书时,会经常看到下面两个提示:1.这些书会被消费者一起购买,并且价格上有一定的折扣;2.购买了这本书的人,也会购买其他书。Amazon对平台中海量的用户记录进行挖掘,发现了这些规律,然后将这些规律应用于实际销售工作当中。有数据显示,基于这种向用户进行主动推荐的营销方式,使得亚马逊的营业额增加了35%。我们原创 2020-06-22 10:26:03 · 1544 阅读 · 0 评论 -
高斯混合模型(Gaussian Mixture Model)
高斯混合模型,通常简称GMM,是一种广泛使用的聚类算法,它并不能直接返回该数据点属于哪一簇。GMM使用了高斯分布作为模型参数,用模型去逼近数据点分布,在实际计算过程中使用的是期望最大算法(EM, Expection Maximum)进行训练。高斯分布,通常也叫正态分布,是自然界中最常见的分布形式。对于任一高斯分布函数,都有两个参数μ和σ,其中μ为该组数据的均值,σ为该组数据的标准差,下式是高斯分布的密度函数。下图展示了4组不同的高斯分布函数,每一组分布的μ和σ是不同的。高斯分布的变量取值范围为[-∞,原创 2020-06-22 10:24:06 · 7922 阅读 · 0 评论 -
Sklearn - PCA数据降维
PCA是无监督数据降维方式,目的是将一个高维数据集转换为一个低维数据集。如今我们的数据集往往有成百上千维的特征,但并不是所有的特征都很重要,通过降维,去除那些不重要的特征。数据维度的降低了,同时计算机的运算效率也得到了提升。在人工智能技术刚起步的时候,人们关注的焦点在于算法的准确性,通过不断优化算法中的计算参数,来提高运算结果的准确率。今天,随着存储与通信技术的发展,数据规模变得空前的庞大,所以运算效率变成了我们不得不考虑的问题。假如我们有一份医患数据集,该数据集有许多患者特征,如:年龄、性别、身高、体重原创 2020-06-18 19:49:16 · 8730 阅读 · 5 评论 -
PCA降维 - Numpy版
这一节,我们来讨论一个数据预处理的技术PCA,PCA全称:Principal Components Analysis(主成分分析)。举个例子:假如我现在负责汽车零件的生产工艺,我抽取了某一天的生产工艺数据做分析,假设这一天生产了1000件产品,那我就有了1000个样本数据。同时对于每件产品,都会记录其生产过程中压力、温度、湿度、速度等工艺参数,假设有20个工艺参数将会对产品质量产生影响。现在我就拿到了一个1000*20的数据集,当我同时观察这20个因素对产品质量的影响,我很难发现其中的规律。我们也知道在这2原创 2020-06-18 19:43:51 · 1580 阅读 · 0 评论 -
聚类算法DBSCAN
DBSCAN:Density-Based Spatial Clustering of Applications with Noise,基于密度和带有噪声点的聚类。DBSCAN算法与K-MEANS算法一样,没有数学原理上的推导,理解起来比较容易。K-MEANS算法可以处理简单的数据集,对于复杂数据集的分类效果并不好,DBSCAN则可以处理更为复杂的数据集。1.DBSCAN基本概念1.核心对象:若某个点的密度达到算法设定的阈值则其为核心点。(即r邻域内点的数量不小于minPts)。假设r = 10,min原创 2020-06-17 14:29:52 · 572 阅读 · 0 评论 -
聚类算法KMeans
这一节我们来讨论下聚类算法,聚类属于无监督问题,给出的数据没有标签值,需要机器学习算法自行去探索其中的规律,根据该规律将相近的数据划分为一类。聚类算法理解起来非常容易,没有数学公式的推导。我们用下图来做个简单的说明,原始数据是没有颜色的,我们通过聚类算法将相近的数据分成了三类,并标记了三种颜色。1.K-MEANS算法的基本概念1.指定簇的个数,需要指定K值,k-means会根据指定的k值将数据分为k类。实际代码:km = KMeans(n_clusters = 3),代码中的3就是我们指定的k值。原创 2020-06-17 14:28:48 · 891 阅读 · 0 评论 -
朴素贝叶斯(Naiv Bayes)算法简介
贝叶斯算法是由英国数学家托马斯·贝叶斯提出的,这个算法的提出是为了解决“逆向概率”的问题。首先我们先来解释下正向概率与逆向概率的含义:正向概率:假设一个箱子里有5个黄色球和5个白色球,随机从箱子里拿出一个球,请问取出的是黄球的概率是多少?很容易计算P(黄球)= N(黄球)/N(黄球)+ N(白球) = 5/5+5 = 1/2。逆向概率:起初我们并不知道箱子里有多少个球,我们依次从箱子里取出10个球,发现这个10个球中有7个白球,3个黄球,那么我们会根据我们观察到的结果去推测箱子里白球与黄球的分布比例大原创 2020-06-14 21:25:56 · 2217 阅读 · 0 评论 -
支持向量机(SVM)算法简介
支持向量机(Support Vector Machine):SVM算法既可以处理分类问题,也可以处理回归问题。SVM算法要解决的问题就是找到最好的决策边界,以对问题进行分类和求解。我们用这张图来理解SVM算法,图片中有两类点方形和圆形,我们要找到一条分界线将两类点清楚的分开。我们的依据是分界线离最近点的距离要最大,这样的决策边界是最优的,右图的决策边界要优于左图的决策边界,因为它的分类效果更好,直观地看就是决策边界越宽越好。我们将这些最近的点成为支持向量,我们的决策边界的构造只取决于它们,与其他点无关。原创 2020-06-14 21:21:46 · 2282 阅读 · 0 评论 -
决策树算法简介
树模型是机器学习中非常常用的一种算法,既可以处理分类问题,也可以处理回归问题,更多的时候是用来处理分类问题的。我们用下图做一个示例,小明家有五口人,爷爷、奶奶、妈妈、妹妹和自己,我们现在要判断谁喜欢打游戏。这里我们选了两个特征年龄和性别,先用年龄进行分类,年龄大于15岁的一组,年龄小于15岁的一组,再使用性别特征对小于15岁的这组进行分类,男生一类,女生一类,最终就分出了男生喜欢打游戏。这个过程跟我们高中数学学过的流程图是一样的。在计算机语言中,我们将这样的模型称为树模型,一组数据经过不同的特征进行多次原创 2020-06-14 21:10:00 · 421 阅读 · 0 评论 -
逻辑回归算法Sklearn文档介绍
API文档sklearn.linear_model.LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver=’warn’, max_iter=100, multi_class=’warn’, verbose=0, warm_start=False, n_jobs原创 2020-06-11 11:27:28 · 330 阅读 · 0 评论 -
逻辑回归算法简介
逻辑回归算法:虽然名字中带有回归两个字,但它却不是回归算法,它是一个经典的二分类算法。回归与分类的区别:回归:可以得到一个准确值或一个区间值,比如房屋价格预测,NBA比赛得分等。分类:预测结果是一个分类值,yes or no,0或1,好或坏,输或赢等等,比如预测猛龙队能否获得2019NBA总冠军,预测小明同学今年能否考上大学等等,结果都只有两个。逻辑回归算法是所有机器学习算法中最简单的算法,但简单不一定代表效果不好。我们在处理机器学习问题时,优先采用简单算法,并对其参数进行优化。如果不能达到你的目的原创 2020-06-11 11:26:51 · 1516 阅读 · 0 评论 -
线性回归算法的数学原理
在机器学习中,调用算法是件比较容易的事,但是我们想要将机器学习理解的更加透彻,就必须深刻理解每一种算法背后的数学原理,这对于我们后期调整算法参数,改进算法模型有着非常大的帮助。其实看到这一大长串数学公式,我心里也很绝望,但是没办法呀,为了能深入理解线性回归原理,喝二两白酒也要给自己打打气。下面,我们一步一步去理解线性回归的数学原理。下面是一个银行贷款的案例,银行会根据我们的年龄以及工资来决定我们的可贷款金额。现我们绘制一个拟合平面对该数据集进行拟合。其中X1,X2就是我们的年龄以及工资特征,y是我们的可原创 2020-06-11 11:26:00 · 1119 阅读 · 0 评论 -
线性回归算法简介
线性回归(Linear Regression)定义:是一种通过对样本特征进行线性组合来进行预测的线性模型,其目的是找到一条直线或者一个平面或者更高维的超平面,使得预测值与真实值之间的误差最小。图1:一维数据,线性拟合模型图2:二维数据,平面拟合模型API文档sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)下面我们将对线性回归算法中的参数做逐一原创 2020-06-11 11:24:56 · 1818 阅读 · 3 评论 -
机器学习入门 - KNN算法
K近邻算法是我们学习机器学习时的第一个算法,K近邻算法不像其他算法那样需要建立一个显式的算法模型,但是掌握K近邻算法的原理非常重要。1.K-近邻(KNearestNeighbor,KNN)算法简介:对于一个未知的样本,我们可以根据离它最近的k个样本的类别来判断它的类别。以下图为例,对于一个未知样本绿色小圆,我们可以选取离它最近的3的样本,其中包含了2个红色三角形,1个蓝色正方形,那么我们可以判断绿色小圆属于红色三角形这一类。我们也可以选取离它最近的5个样本,其中包含了3个蓝色正方形,2个红色三角形,那原创 2020-06-02 11:18:52 · 539 阅读 · 1 评论 -
Sklearn机器学习简介
机器学习(Meachine Learning):首先我们给定机器一堆已有的样本数据,让机器去判别其中的规律,然后用这个规律来预测未知的数据。SKlearn库是机器学习中非常强大的一个库,它包含现有的主流机器学习算法。[SKlearn官网]:https://scikit-learn.org/stable/index.html###机器学习分类监督学习(Supervised Learning):给定的数据既包含了其特征,也包含了其类别。例如:一组数据[花瓣长度,花瓣宽度,花萼长度,花萼宽度,海棠花],其原创 2020-06-01 20:44:46 · 373 阅读 · 0 评论