机器学习
文章平均质量分 87
二哥不像程序员
公众号:数据山谷
展开
-
十大常用机器学习算法总结(持续完善)
前言之前二哥连载了各类常用的机器学习算法的原理与具体推倒过程,本文我们对常用的十大机器学习算法进行总结。、、原创 2021-06-12 00:46:56 · 14133 阅读 · 27 评论 -
详细整理几种常见的损失函数|机器学习
机器学习|常见的损失函数公众号:数据山谷在学习过程中我们经常会接触到损失函数、代价函数、目标函数三个词语,本文让我们来总结一下机器学习中常见的损失函数和代价函数。概念首先让我们来了解一下三种损失函数的概念。损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。目标函数(Object Function)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是原创 2020-07-07 18:06:53 · 14048 阅读 · 0 评论 -
Python实战|用决策树实现NBA获胜球队预测
NBA预测获胜球队数据获取因为疫情原因导致NBA2019-2020赛季没有进行完,所以我们使用NBA2018-2019赛季的数据进行预测,数据获取方式有下面两种:通过网站获取我们可以通过网站去获取任意一年的所有场次比赛数据,获取方式如下:在浏览器中访问https://www.basketball-reference.com/leagues/NBA_2019_games.html点击Share&more点击Get table as CSV (for Excel)复制连带表头的所有数据原创 2020-07-03 17:47:31 · 6010 阅读 · 2 评论 -
用Python走迷宫|Q-Learning|强化学习
Q-Learning走迷宫上文中我们了解了Q-Learning算法的思想,基于这种思想我们可以实现很多有趣的功能和小demo,本文让我们通过Q-Learning算法来实现用计算机来走迷宫。原理简述我们先从一个比较高端的例子说起,AlphaGo大家都听说过,其实在AlphaGo的训练过程中就使用了Q-Learning的思想,对于机器下错棋和下对棋的时候给予一定的惩罚和奖励,当经过无数次的训练之后,机器自然就会直接向着奖励前进,直接选择对的位置进行下棋,久而久之在各种场景下都能选择对的位置下棋的机器人就能原创 2020-06-16 15:31:08 · 6438 阅读 · 9 评论 -
Q-Learning(强化学习)|机器学习
强化学习什么是强化学习?我们在之前接触过了监督学习和无监督学习,强化学习可以看作是不同于二者的另一类算法,强化学习让计算机从什么都不懂的时刻开始,通过不断地尝试,从错误中学习,找到一种规律,能够掌握达到目的的方法。强化学习的思想就类似于我们去训练一只狗,一开始它听不懂任何我们下达的指示,但是我们可以在每次说出指令并且它做出正确动作的时候,都给它一定的奖励,否则没有奖励,让它知道对错,最终每次都能够直接作出可以得到奖励的动作(正确的反应)。与训练动物不同的是,我们所要训练的是计算机并不是一个活体,但是原创 2020-06-08 15:49:16 · 2160 阅读 · 1 评论 -
如何进行特征选择|机器学习
特征选择为什么要进行特征选择我们在现实任务中经常会遇到维数灾难的问题,这是由于属性过多而造成的,若能从中选择出重要的特征,使得后续学习过程仅需在一部分特征上构建模型,则维数灾难问题会大为减轻。去除不相关特征往往会降低学习任务的难度,我们把复杂的问题变得简单化,往往也能使得效率变高,结果变的更准确。过滤式(Filter)过滤式是过滤式的方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关,也就是说我们先用特征选择过程对初始特征进行“过滤”,再用过滤后的特征来训练模型原创 2020-06-02 16:26:24 · 1829 阅读 · 0 评论 -
连载|机器学习|通俗易懂的KNN
K近邻(KNN)算法之前一段时间我们了解到的算法中,可以说是一个比一个复杂,本文呢,我们不再增加难度,来说一个最基础、最简单的监督学习算法KNN。KNN的原理我们给定一个数据集,对于一个新来的样本,我们在数据集中找到距离该样本最近的K个样本,在这K个样本中,某一类出现的次数最多我们就把这个样本分到这个类别中。举一个例子:如图所示,红色的三角和蓝色的方块为我们原有的数据集,绿色的圆即为一个新来到的样本,事先我们并不知道它属于某一类,我们来尝试两种不同的K值下的分类方法:K=3当我们选取K=3时原创 2020-05-25 16:31:41 · 1279 阅读 · 0 评论 -
一文读懂XGBoost|机器学习
XGBoost和GBDT一样,XGBoost也是一种基于CART树的Boosting算法,让我们来看一下如何通俗的去理解XGBoost。先简单的回想一下,在我们之前提到过的GBDT中是怎样用很多棵树去做预测的?很简单,我们给了每棵树不同的训练数据,得到多种不同的结果,最终我们把这些结果相加作为最终的预测值就可以了。XGBoost的定义举一个简单的例子,我们要预测一家人对电子游戏的喜好程度,考虑到年轻和年老相比,年轻更可能喜欢电子游戏,以及男性和女性相比,男性更喜欢电子游戏,故先根据年龄大小区分小孩和原创 2020-05-19 10:37:18 · 1860 阅读 · 0 评论 -
连载|机器学习|聚类(下)
聚类(下)在聚类(上)中我们了解了一下聚类算法的基本原理,同时也了解了最常用的聚类算法K-Means以及相关的优化算法,对于K-Means来说,我们可以称之为原型聚类算法,本节再让我们来了解一下密度聚类和层次聚类算法。密度聚类密度聚类算法假设聚类结构能通过样本分布的紧密程度确定,一般情况下,密度聚类算法从样本密度的角度来考察样本的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。密度聚类算法的主要特点:对噪声数据不敏感发现任意形状的簇一次扫描需要密度参数来作为算法停止的条件计原创 2020-05-14 17:49:10 · 1409 阅读 · 0 评论 -
连载|机器学习|聚类算法(上)
聚类(上)聚类任务对于训练样本的标记信息是未知的情况下,我们的目标就会变成通过对无标记训练样本的学习来揭示数据的内在性质及规律,我们把这样的学习方法称之为“无监督学习”,而在此类学习任务中,研究最多应用最广的就是“聚类”。在聚类算法中,我们试图将数据集中的样本划分为若干个不相交的子集,每个子集称为一个“簇”。而对于样本来说,我们并不知道其内部存在的类别,所以我们分出的这些“簇”就可能对应着一些潜在的概念(类别),与分类算法的区别就在于,这些潜在的概念在之前我们是完全未知的。一般的聚类结果展示如下图所原创 2020-05-12 14:05:58 · 1268 阅读 · 0 评论 -
连载|GBDT如何进行回归和分类
GBDT在前几年的机器学习竞赛以及工作中,人们使用着各种传统算法进行调参取得性能的提升,突然有一天杀出了一种名为GBDT的算法,改变了当前的格局,该算法在不同的场景中总是能够产生很好的效果,本文就让我们来了解一下GBDT。GBDT(Gradient Boost Decision Tree),中文名称可以直译为“梯度提升决策树”。要想弄明白GBDT具体是什么我们就要弄明白这里面的两个词语DT(D...原创 2020-05-07 17:28:00 · 3598 阅读 · 1 评论 -
连载|如何通俗理解AdaBoost
AdaBoost基本思想对于分类问题而言,给定一个训练样本集,求比较粗糙的分类规则(弱分类器)要比求精确的分类规则(强分类器)容易的多,提升方法就是从弱学习算法出发,反复学习,得到一系列弱分类器(基本分类器),然后组合这些弱分类器,构成一个强分类器。大多数的提升方法都是改变训练数据的概率分布,针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。对于提升方法来说,有两个问题需要回答:一是在...原创 2020-04-28 19:35:08 · 1266 阅读 · 0 评论 -
连载|集成学习(简介)
集成学习集成学习简介集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统。集成学习的结构示意图如下所示:如图所示我们把多个“个体学习器“通过某种策略组合在一起来执行学习任务,当我们的“个体学习器”都是同类的时候(比如:决策树、神经网络)我们可以说这个集成是“同质的”,此时的个体学习器我们通常叫做“基学习器”;反之如果“个体学习器”是多种类型的学习器,我们可以说这个集成是...原创 2020-04-24 17:54:10 · 1421 阅读 · 0 评论 -
连载|朴素贝叶斯
朴素贝叶斯贝叶斯公式贝叶斯公式作为朴素贝叶斯的一个基础,先让我们看一下贝叶斯公式是如何得到的。条件概率公式设A、B是两个事件,且P(B)>0,则在事件B发生的条件下,事件A发生的概率为:P(A∣B)=P(AB)P(B)P(A|B)=\frac{P(AB)}{P(B)}P(A∣B)=P(B)P(AB)乘法公式乘法公式是经过条件概率变换后得到的公式,结果如下:P(AB)=P(A...原创 2020-04-21 19:13:58 · 1287 阅读 · 0 评论 -
连载|详细推算SVM
支持向量机(SVM)基础的SVM了解SVM之前,先让我们来思考一个问题,有下图所示的两类样本点,我们需要找到一条直线(一个平面)来把这两类样本点区分开,在图中可以看到有很多条直线都满足条件,但是哪条直线的分类效果更好呢?直观上看,图中加粗的那条直线分类效果更好,该分类方法对于新样本的泛化能力也是最强的,下面让我们来看一下具体应该如何确定这条直线。假定给一个特征空间上的训练数据集:D={(...原创 2020-04-17 20:21:10 · 2113 阅读 · 0 评论 -
连载|神经网络(下)
误差逆传播算法(BP神经网络)BP神经网络是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称为BP算法,它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。基本BP算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。下面让我们从数学原理上来看一下BP算法...原创 2020-04-15 19:04:55 · 2244 阅读 · 0 评论 -
连载|神经网络(上)
神经网络(上)文末送书福利进行中~人工神经元结构受生物神经元的启发,1943年心理学家McCulloch和数学家Pitts提出了人工神经元模型(Artificial Neuron,简称AN),人们也常用它们两个名字的首字母来命名这个人工神经元模型,称之为M-P模型,这种模型也一直沿用至今。M-P模型的结构如下:在M-P模型中神经元接收到来自n个其他神经元传递过来的输入信号,这些输入信号通...原创 2020-04-13 17:21:55 · 2320 阅读 · 0 评论 -
连载|梯度下降
梯度下降梯度下降是什么简单的说梯度下降就是对于一个函数f(x)不断的去猜想使得f(x)的值最小的自变量x在哪,猜的大了就让这个值小一点,猜的小了就让这个值大一点。它的主要猜想依据就是根据“梯度”去猜的,那么梯度又是什么呢?简单的我们可以直接把梯度理解为导数,当导数大于0(单调递增)或者小于0(单调递减)的时候,我们就有了一个调整自变量的方向。再让我们用一个更形象的下山场景去理解一下梯度下降,...原创 2020-04-10 18:59:24 · 2036 阅读 · 0 评论 -
连载|决策树(下)
决策树(下)在决策树(上)中我们了解了ID3和C4.5算法,这两种算法都使用了较为复杂的熵来度量,使用了复杂的多叉树,并且只能处理分类问题,针对这些缺点,CART(Classification And Regression Tree)做了改进,可以处理分类,也可以处理回归。分类:预测目标是离散值。回归:预测目标是连续值。基尼指数(Gini)从之前的内容我们了解到ID3使用信息增益来选择特...原创 2020-04-08 17:51:27 · 3046 阅读 · 1 评论 -
连载|线性判别分析(LDA)
线性判别分析LDALDA基础LDA是一种监督学习的降维技术,对应着它的数据集中的每个样本是有类别输出的。LDA的基本思想是:给定一个训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异类样例的投影点中心尽可能远离。也就是“投影后类内方差最小,类间均值最大”。我们先来看一下下图对于二分类的情况:图中的“+”,“-”分别表示正例和反例,我们想要的就是让每种类别的投影点尽...原创 2020-04-02 17:14:14 · 2206 阅读 · 0 评论 -
连载|逻辑回归
一、逻辑斯蒂分布逻辑斯蒂分布也叫作增长分布,其分布函数是一个增长函数。设X是连续随机变量,X服从逻辑斯谛分布是指X具有下列分布函数和密度函数:分布函数:F(x)=P(X⩽x)=11+e−(x−μ)/yF(x)=P(X\leqslant x)=\frac{1}{1+e^{-(x-\mu )/y}}F(x)=P(X⩽x)=1+e−(x−μ)/y1密度函数:f(x)=F′(x)=e−(x−μ)...原创 2020-04-01 10:50:14 · 2100 阅读 · 0 评论 -
连载|线性回归
线性模型|线性回归基本形式给定由d个属性描述的示例X=(x1;x2;...;xd)X=(x_1;x_2;...;x_d)X=(x1;x2;...;xd),其中xix_ixi是XXX在第i个属性上的取值,线性模型想要通过一个属性的线性组合来得到一个预测的函数,即:f(x)=w1x1+w2x2+...+wdxd+bf(x)=w_1x_1+w_2x_2+...+w_dx_d+bf(x)=w...原创 2020-03-26 20:19:59 · 1937 阅读 · 0 评论 -
连载|模型评估与过拟合(下)
模型评估与过拟合性能度量我们在进行对学习器泛化能力评估的同时,不仅需要有效的评估方法,还需要一个好的衡量模型泛化能力的评价标准。我们先来学习一下在分类算法中经常用到的模型评价指标。准确率(Accuracy)分类正确的样本个数占总样本个数的比例。Accuracy=ncorrectntotalAccuracy=\frac{n_{correct}}{n_{total}}Accuracy=nto...原创 2020-03-24 15:09:23 · 2497 阅读 · 0 评论 -
连载|模型评估与过拟合(上)
模型评估与过拟合1、误差 错误率(error rate):分类错误的样本占总样本的比例 准确率(accuracy):分类正确的样本占总样本的比例 误差(error):学习器的实际预测输出与样本的真实输出之间的差异 经验误差(empirical error):学习器在训练集上的误差 泛化误差(generalization):学习器在新样本上的误差 ...原创 2020-03-21 12:18:33 · 2743 阅读 · 0 评论 -
瞎聊机器学习——PR曲线、ROC曲线、AUC
ROC曲线什么是ROC曲线?ROC曲线经常作为评估二分类的重要指标,其起源于军事领域,全称叫做receiver operating characteristic curve。ROC曲线是二维平面内的曲线,其横坐标为假阳性率(FPR),纵坐标为真阳性率(TPR)他们的计算方法如下:上式中:P:真实的正样本的数量 N:真实的负样本的数量 TP:P个正样本中被分类器预测为...原创 2019-12-25 12:08:40 · 2776 阅读 · 0 评论 -
瞎聊机器学习——多分类的精确率和召回率
我们常用的精确率和召回率通常都用于二分类的问题上,那么在多分类上应该怎样去使用这些评价指标呢?多分类的精确率和召回率既然精确率和召回率的概念以及计算公式都指向二分类问题,那么我们不妨将多分类问题转换为二分类问题来做。先来看一下精确率和召回率的概念:精确率是指分类正确的正样本个数占分类器判定为正样本的个数的比例。 召回率是指分类正确的正样本占真实正样本的比例。根据概念我们知道,在...原创 2019-12-24 14:28:18 · 14848 阅读 · 4 评论 -
怎么算特征值和特征矩阵?
怎样更通俗的理解特征值和特征矩阵?设A是一个n阶矩阵,若数和n维非零列向量满足,数称为A的特征值,x称为A对应于特征值的特征向量。此时叫做特征多项式,若特征多项式为0则称为A的特征方程(齐次线性方程组),求解特征值的过程其实就是求解特征方程。特征值和特征矩阵的求解过程。这里给出手解过程:...原创 2019-11-29 20:31:32 · 14608 阅读 · 1 评论 -
逻辑回归和线性回归有何不同?
分类和回归问题首先我们来明确两个大类:分类问题和回归问题。分类问题:输入变量与输出变量均为连续变量的预测问题是回归问题回归问题:输出变量为有限个离散变量的预测问题为分类问题举个例子:预测明天的气温是多少度,这是一个回归问题;预测明天是阴、晴还是雨,就是一个分类问题。线性回归线性回归是一个典型的回归算法,所谓的线性回归指的就是用一条直线能够较为准确的描述数据之间的关系,...原创 2019-11-07 16:03:05 · 3053 阅读 · 0 评论 -
常见的超参数调优方法
学习器模型中一般有两类参数,一类是可以从数据中学习估计得到,还有一类参数时无法从数据中估计,只能靠人的经验进行设计指定,后者成为超参数。比如,支持向量机里面的C, Kernal, game;朴素贝叶斯里面的alpha等。网格搜索网格搜索通过查找搜索范围内的所有的点来确定最优值,如果采用较大的搜索范围和较小的步长,网格搜索有很大的概率找到全局最优值。但是随着超参数的增加这种搜索方法十分消耗计...原创 2019-11-06 16:16:26 · 3185 阅读 · 0 评论 -
怎样处理过拟合和欠拟合?
过拟合和欠拟合从模型在不同集合上的表现来看首先来明确一下过拟合和欠拟合的概念。过拟合(下图中最右侧的图像)过拟合指的是训练数据拟合程度过高的情况,也就是说模型在训练集上表现的很好,但是在测试集和新的数据集上表现的较差。欠拟合(下图中最左侧的图像)了解了什么是过拟合,欠拟合也显而易见,当模型在训练集和测试集表现的都不好的时候我们就称这种现象为欠拟合。从方差和偏差的角度来看...原创 2019-11-05 14:40:00 · 1004 阅读 · 0 评论 -
模型评估过程中,主要的验证方法与优缺点。
Holdout检验Holdout检验是最简单也是最直接的验证方法,它将原始的样本随机划分成训练机和验证集两部分,通常情况下我们把样本按照70%-30%的比例分成两部分,70%用于模型的训练,30%用于模型的验证,包括绘制ROC曲线,计算精确率和召回率等指标来评估模型性能。同时Holdout的缺点也很明显,即在验证集上计算出来的最后评估指标与原始的分组有很大关系,为了消除这种验证的随机性“交...原创 2019-11-05 13:54:46 · 3505 阅读 · 0 评论 -
在对数据进行预处理时,怎样处理类别型特征?
什么样的特征是类别型特征?类别型特征主要是指性别(男/女),体型(胖/瘦/适中)等只有在选项内取值的特征,类别型特征的原始输入通常是字符串形式,除了决策树等少数模型能够直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。序号编码序号编码通常用于处理类别间具有大小关系的数据,例如考试的成绩可以由好到坏分为(A、B、C、D)四档...原创 2019-11-04 15:01:53 · 1053 阅读 · 1 评论 -
为什么要对数值类型特征做归一化?
给出一个场景通过住户的居住面积和楼层来分析他们的居住舒适度,楼层的特征会在1-20(层)数值范围内,居住面积的特征会在30-200(平方米)数值范围内,那么根据这两种特征分析出来的数据居住面积会成为决定性更大的特征,这显然是不准确的,此时就需要我们进行特征归一化,使得各个特征处于同一个数值量级,然后再进行分析。常用的特征归一化方法最大最小归一化(Min-Max Scaling)最大最小归...原创 2019-11-01 14:53:45 · 2464 阅读 · 0 评论 -
瞎聊机器学习——K-均值聚类(K-means)算法
本文中我们将会聊到一种常用的无监督学习算法——K-means。1、K-means算法的原理K-means算法是一种迭代型的聚类算法,在算法中我们首先要随机确定K个初始点作为质心,然后去计算其他样本距离每一个质心的距离,将该样本归类为距离最近的一个质心所属类别中(一个簇中)。举个例子来表述一下:如图所示,我们进行反向思考,我设定四个固定的随机点的位置(红色点),在每一个点的附近都...原创 2019-04-10 12:08:49 · 449 阅读 · 0 评论 -
瞎聊机器学习——K-近邻(KNN)算法
1、KNN的基本原理我们通常将机器学习算法分为有监督学习和无监督学习两类,通俗的说,我们会按照训练样本中是否含有标签来区分这两类,KNN算法便是一种适用于带标签的数据场景的算法,我们可以将它归类为一种有监督学习方法。KNN算法,我们给定一个数据集,对于一个新来到的样本,我们在数据集中找到距离该样本最近的K个样本,在这K个样本中某一类出现的次数最多我们就把这个新的样本分到这个类别中。举一...原创 2019-04-08 17:17:55 · 932 阅读 · 0 评论 -
jieba分词器(应用及字典的补充)及文档高频词提取实战
jieba分词器是Python中最好的中文分词组件,本文讲解一下jieba分词器及其应用。1、jieba分词器的分词模式jieba分词器提供了三种常用的分词模式1、精确模式:将句子按照最精确的方法进行切分,适合用于进行文本分析;2、全模式:将句子当中所有可以成词的词语都扫描出来,分词速度很快但容易产生歧义;3、搜索引擎模式:在精确模式分词的基础上,将长的句子再次进行切分,...原创 2019-04-15 21:23:42 · 4784 阅读 · 1 评论 -
瞎聊机器学习——LR(Logistic Regression)逻辑斯蒂回归(一)
逻辑斯蒂回归是我们在学习以及工作中经常用到的一种分类模型,下面通过本文来讲解一下逻辑斯蒂回归(logistic regression,下文简称LR)的概念、数学推导。一、逻辑斯蒂回归的概念首先希望大家明确一点,虽然该算法的名字叫做逻辑斯蒂回归(我也不知道为什么这么翻译)但其实它是一种分类模型,一定不能把它和线性回归混为一谈。简单说一下分类和回归之间的区别:分类:给定一个数据,根据给出的...原创 2019-04-21 20:20:14 · 1132 阅读 · 0 评论 -
瞎聊机器学习——梯度下降法
梯度下降法(gradient descent)是求解无约束最优化问题的一种最常用的方法,具有实现简单的优点,梯度下降法是迭代算法,每一步都需要求解目标函数的梯度向量,下面我们来全方位的理解一下梯度下降法。一、梯度下降法的理解用一个通俗的例子来讲解一下梯度下降法,假设小明现在站在山顶上(下图中A点的位置),此时他接到电话有急事需要下山,但是山上的能见度很低,小明只可以根据周围的环境信息去确定...原创 2019-05-03 16:10:13 · 381 阅读 · 0 评论 -
瞎聊机器学习——准确率、精确率、召回率、F1 score
针对分类、回归、排序等问题的模型评估,不同的问题有不同的评估方法,今天重点来说一下关于分类问题的准确率(Accuracy)、精确率(precision)、召回率(Recall)、F1 score。准确率(Accuracy)准确率指的是分类正确的样本占总样本个数的比例即:其中就是被分类正确的样本个数,是总样本的个数。精确率(precision)精确率是指分类正确的正样本个数占...原创 2019-04-20 16:43:27 · 1624 阅读 · 3 评论 -
瞎聊机器学习——全方位理解支持向量机(SVM)
SVM是一种常用的二分类模型,同时我们也可以通过核技巧用它来解决一些多分类的问题,下面我们来仔细的研究一下这个神秘的模型。一、线性可分问题线性可分,顾名思义就是可以用一条直线能够将两个不同的种类分开的问题。我们当然可以这么去理解,但是线性不可分的问题你是否能够很快的想到一个好的例子呢?下面我们来仔细的说一下这个问题。用上图来作为一个简单的例子,图中有三角和圆两个类别,我们想找...原创 2019-05-10 10:17:05 · 1088 阅读 · 5 评论