`
wx1568908808
  • 浏览: 31315 次
文章分类
社区版块
存档分类
最新评论

机器学习算法中常用的各种metrics分析

 
阅读更多

    作者在学习机器学习领域的各类算法时,就发现很多闪着智慧光点的各种metrics(度量)。其往往才是一个算法的灵魂,它可以是某种性能的度量,相似度的度量,优化目标的度量等等。作者在此总结学习到的各种度量衡,一者作为一个总结,供自己不时翻阅,二者抛砖引玉。

    1. entropy:(熵)反映一个概率分布的不确定性,当我们采用概率分布对事件进行建模时,熵可以作为该事件包含的信息量的度量,熵越大,信息量越少;反之,熵越小,信息量越大。有时候也用熵来度量一个概率分布(事件)的,不确定度和置信度。当我们希望某个事件的不确定度尽量小时,可以把该事件的熵作为优化的目标函数。

    2. 以下三个度量在决策树算法中,用于确定分支。

        information gain:信息量增量,反映的是分支后的信息量,相对于分支前的信息量的增加量。很显然,该度量采用了熵来衡量一个概率分布的信息量。选择信息量增量最大的特征,进行分支,其目标就是使得分支后的子树上的各样本的不确定度降低,即各子树样本类别趋向于单一化,被用于ID3算法中。在处理各属性具有不同取值数量的分类问题时,Information Gain偏向于选取取值数量更多的属性。C4.5算法引入了信息增益率。

        Gini impurity:反映的是,若根据各标签在样本中的分布,随机对元素打标签后,打标签错误的概率。当样本集中,所有样本的标签都相同时,该随机打标签错误的概率为0;若所有标签的样本均匀分布时,该随机打标签错误的概率最大。可见,该值的单调性和Information Gain相同,被用于CART算法中。

        variance reduction被CART算法引入,应用于目标变量为连续值的情况。不需要计算目标变量的均值,直接估计样本集中,目标变量的方差。当样本集中,所有样本目标变量的值都相同时,该方差为0;所有样本目标变量的值趋于均匀分布时,该方差的最大。可见该值的单调性和Information Gain、Gini Impurity相同,其优点是应用于目标变量连续的情况时,不需要对目标变量进行离散化。

    3. 词频(TF):用于构建文本特征,可以采用一个单词在文档中出现的频次f表示,也可以采用0/1表示(1表示在该文档中出现过,0表示在该文档中没有出现),也可以对频次f取对数log(f+1)。

        逆文档频率(IDF):用单词在所有文档中出现的频繁程度,来反映该单词携带的信息量,假设所有文档数量为N,单词在n个文档中出现过,那么IDF可以取为log(N/n),或者做一下平滑log(1+N/n)。

        朴素贝叶斯算法的思想分析:说到TF-IDF那就自然离不开朴素贝叶斯算法。朴素贝叶斯算法的基本理论基础是贝叶斯公式,该公式告诉我们可以通过先验概率来估计后验概率,通俗的理解就是现在我们知道一堆特征,要预测某一事件发生的概率,这个问题可以通过计算我们之前采集的样本中,在该事件发生时,该特征出现的概率来解决,这貌似就是将一件完全不知道从何下手的事情,瞬间转化成之前已知的事情。其基本假设是用于支持分类标签的所有特征对分类标签的影响是相互独立的,也就是说所有特征对最终分类标签的影响可以分解为单个特征对最终分类标签的影响。这也符合通常我们求解问题,喜欢将问题分解的思路。该假设也是朴素贝叶斯算法朴素二字的来由。

        在处理文档分类问题时,可以将单词在文档中的分布看成多项式分布,也可以看成伯努利(0/1)分布。多项式分布,只考虑文档中出现的单词,及其出现的次数。伯努利分布考虑文档集中所有的单词,根据其是否出现在文档中,计算文档属于某个标签的后验概率。在处理样本分布不太均匀的多标签分类问题时,还有一个思想是去考虑计算文档不属于某个标签的后验概率,这样可以减弱样本分布不均衡对朴素贝叶斯算法的影响,该方法也称为互补朴素贝叶斯算法。多项式朴素贝叶斯和伯努利朴素贝叶斯在spark的MLlib中有实现,多项式朴素贝叶斯和互补朴素贝叶斯在mahout中有实现。需要说明的是,mahout实现中计算TF-IDF的方式和上述略有差异,其计算公式为: d=sqrt(f)*(1+log(N/(n+1)))。其中f是单词在文档中出现的次数,这里TF采用了开根号的方式,IDF采用了平滑策略。

    【后续】

转载于:https://my.oschina.net/jhone/blog/505788

分享到:
评论

相关推荐

    机器学习算法代码

    这个名为"机器学习算法代码"的资源提供了用Python语言实现的多种常用机器学习算法,这对于初学者和经验丰富的开发者来说都是宝贵的实践材料。下面我们将深入探讨这些算法及其在Python中的实现。 1. **线性回归**: ...

    常用机器学习算法课件及python代码

    本资源集成了多种常见的机器学习算法及其Python实现,这为初学者和经验丰富的开发者提供了宝贵的实践材料。下面将详细阐述这些算法的基本原理和Python实现的关键点。 1. K近邻算法(K-Nearest Neighbors, KNN) KNN...

    机器学习聚类算法包括训练数据

    在给定的标题“机器学习聚类算法包括训练数据”中,可能有一些误解,因为通常聚类是不需要训练数据的。然而,描述中提到的“机器学习的五种聚类算法包括训练数据,基于python实现”,可能是想强调在某些特定场景下,...

    机器学习算法python实现.zip

    在本压缩包“机器学习算法python实现.zip”中,我们可以期待找到一系列使用Python语言实现的机器学习算法。Python是数据科学、机器学习领域最常用的语言,因其简洁的语法和丰富的库支持而备受青睐。让我们深入探讨...

    机器学习-基于Python实现的机器学习算法之KNN.zip

    《机器学习:基于Python的KNN算法实现》 在当今数据驱动的世界中,机器学习作为人工智能的一个重要分支,已经深入到各个领域。其中,K-近邻(K-Nearest Neighbors, KNN)算法是一种基础但实用的监督学习方法,尤其...

    基于Python常用机器学习算法的简洁实现之逻辑回归.zip

    在Python中,逻辑回归的实现通常使用scikit-learn库,这是一个强大的机器学习库,提供了多种机器学习算法的实现。 首先,我们需要了解逻辑回归的基本原理。逻辑回归的核心是sigmoid函数,它将输入值映射到(0,1)区间...

    使用Python和MATLAB比较机器学习算法和CDC问卷在预测糖尿病中的性能的ML项目.zip

    该项目旨在对比分析Python和MATLAB在执行机器学习算法时,对于预测糖尿病的性能表现。它主要探讨了如何利用美国疾病控制与预防中心(CDC)的问卷数据,来构建预测模型。我们将深入研究以下关键知识点: 1. **机器...

    机器学习-基于Python实现的机器学习算法之AdaBoost.zip

    在机器学习领域,AdaBoost是一种强大的集成学习方法...总之,AdaBoost是机器学习中的一个重要算法,通过Python的Scikit-Learn库可以方便地实现和应用。通过理解其工作原理和参数调优,我们可以有效地解决各种分类问题。

    机器学习线性回归算法(Python代码版)

    总的来说,线性回归是机器学习的基石,理解和掌握其原理及Python实现对于进一步深入学习其他复杂的机器学习算法至关重要。通过不断的实践和探索,我们可以更好地运用线性回归解决实际问题,并优化模型以提高预测准确...

    基于Python常用机器学习算法的简洁实现之线性回归.zip

    Scikit-learn是一个强大的机器学习库,提供了多种机器学习算法的实现,包括线性回归。首先,我们需要导入必要的库: ```python from sklearn.model_selection import train_test_split from sklearn.linear_model ...

    基于Python常用机器学习算法的简洁实现之朴素贝叶斯.zip

    朴素贝叶斯是一种广泛应用的机器学习算法,尤其在文本分类、情感分析等领域有着出色的表现。在Python中,我们可以借助各种库来实现朴素贝叶斯,其中最常用的库是`sklearn`。本教程将深入探讨如何使用Python和`...

    文档Python机器学习库sklearn几种回归算法建模及分析

    ### 文档Python机器学习库sklearn几种回归算法建模及分析 #### 一、引言 随着大数据时代的到来,机器学习技术在各个领域得到了广泛的应用。回归分析作为预测连续值的一种重要方法,在金融、医疗、制造等多个行业中...

    机器学习-基于Python实现的机器学习算法之随机森林.zip

    `sklearn`库是Python中强大的机器学习库,提供了许多预处理、模型选择和评估工具。首先,我们需要导入必要的库: ```python from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor from ...

    机器学习的概要介绍与分析

    其中,Python是机器学习中最常用的编程语言之一,因为它拥有强大的数据处理和机器学习库,如NumPy、Pandas、Scikit-learn等。这些库提供了丰富的算法和工具,使得数据预处理、模型训练和评估变得更加简单高效。 ...

    基于Python常用机器学习算法的简洁实现之XGboost.zip

    在机器学习领域,XGBoost(Extreme Gradient Boosting)是一种广泛应用的梯度增强框架,尤其在数据挖掘、预测分析和比赛任务中表现出色。它是由陈天奇等人开发的高效、灵活且便携的库,支持多种编程语言,包括Python...

    机器学习算法之使用Python实现LogisticRegression算法.zip

    Logistic Regression,逻辑回归,是机器学习中一种广泛使用的分类算法。它虽然名字中含有“回归”,但实际上主要用于解决二分类或多分类问题。在Python中,我们可以使用Scikit-Learn库来轻松实现Logistic Regression...

    简单易懂的机器学习笔记

    支持向量机(Support Vector Machine)是另一种强大的机器学习算法,它通过选择合适的核函数(Kernels)来处理非线性问题,并在逻辑回归的基础上进行了优化。 非监督学习的目的是从数据中发现隐藏的结构,例如通过...

    配套专栏python机器学习中python_提升算法_例题中的所有数据

    Python机器学习是一个热门话题,它涉及大量的数据处理、模型构建和算法实现。在这个"python_提升算法_例题中的所有数据"压缩包中,我们主要关注的是提升算法,这是一种强大的集成学习方法,常用于分类和回归任务。...

    机器学习SVM算法Python实现

    本文将深入探讨机器学习中的支持向量机(SVM)算法,并结合Python编程语言,介绍如何在实际操作中实现这一强大的分类工具。SVM是一种监督学习模型,广泛应用于二分类和多分类问题,同时也适用于回归分析。在Python中...

    机器学习SVM(支持向量机)实验报告(带源代码)

    - 验证支持向量机(Support Vector Machine, SVM)机器学习算法的学习情况。 **要求:** - 学员需要自主完成整个实验过程。 #### 二、实验内容和原理 **支持向量机(SVM)概述:** - **基本模型:** 在特征空间上...

Global site tag (gtag.js) - Google Analytics