1 真心乖宝宝

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 12w+

手写TF-IDF 【python版】

import mathclass Solution(): def word_count(self, word_list): countlist = [] for list1 in word_list: dict1 = {} for j in list1: if j not in dict1: dict1[j] = 0

2020-09-22 08:48:13

特征选择的方法

当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练,通常来说,从两个方面考虑来选择特征:特征是否发散特征与目标的相关性特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用;特征与目标的相关性:这点比较显见,与目标相关性高的特征,应当优选选择。根据特征选择的形式又可以将特征选择方法分为3种:Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征.

2020-09-11 11:02:43

数据预处理的方法

去除唯一属性唯一属性通常是一些id属性,这些属性并不能刻画样本自身的分布规律,所以简单地删除这些属性即可处理缺失值缺失值处理的三种方法:直接使用含有缺失值的特征;删除含有缺失值的特征(该方法在包含缺失值的属性含有大量缺失值而仅仅包含极少量有效值时是有效的);缺失值补全常见的缺失值补全方法(1) 均值插补:如果样本属性的距离是可度量的,则使用该属性有效值的平均值来插补缺失的值(2) 同类均值插补:首先将样本进行分类,然后以该类中样本的均值来插补缺失值(3) 建模预测(4)

2020-09-11 10:43:11

word2vec损失函数

以CBOW为例,利用softmax层计算出字典V中每个词的概率,再构建交叉熵损失函数然而直接对词典里的V个词计算相似度并归一化显然是极其耗时的,为此作者提出了层次Softmax和负采样两种损失层交叉熵损失函数参考文章参考文章1...

2020-09-10 11:08:53

基尼系数、熵、信息增益、信息增益率

熵熵是事件不确定性的度量,如果事件无不确定性,则熵为0,不确定性越大,熵越大条件熵在一个条件下,随机变量的不确定性信息增益信息增益 = 熵 - 条件熵表示在一个条件下,信息不确定性减少的程度缺点:信息增益偏向取值较多的特征信息增益率本质:是在信息增益的基础之上乘上一个惩罚参数。特征个数较多时,惩罚参数较小;特征个数较少时,惩罚参数较大。惩罚参数:数据集D以特征A作为随机变量的熵的倒数,即:将特征A取值相同的样本划分到同一个子集中缺点:信息增益比偏向取值较少的特征原因:

2020-09-09 11:34:00

GBDT、Xgboost、LightGBM对比

LightGBM 与 XGBoost 的不同点1. 由于在决策树在每一次选择节点特征的过程中,要遍历所有的属性的所有取值并选择一个较好的。XGBoost 使用的是近似算法,先对特征值进行预排序 Pre-sort,然后根据二阶梯度进行分桶,能够更精确的找到数据分隔点;但是复杂度较高。LightGBM 使用的是直方图算法,这种只需要将数据分割成不同的段即可,不需要进行预先的排序。占用的内存更低,数据分割的复杂度更低。2.决策树生长策略,XGBoost 采用的是 Level-wise 的树生长策略,Ligh

2020-09-09 11:08:00

xgboost面试常问

xgboost损失函数交叉熵损失函数xgboost目标函数xgboost的目标函数由训练损失和正则化项两部分组成,目标函数定义如下:xgboost怎么处理缺失值xgboost把缺失值当做稀疏矩阵来对待,本身在节点分裂时不考虑的缺失值的数值。缺失值数据会被分到左子树和右子树分别计算损失,选择较优的那一个。如果训练中没有数据缺失,预测时出现了数据缺失,那么默认被分类到右子树xgboost优缺点优点1. 精度更高GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二

2020-09-09 10:43:56

LR与朴素贝叶斯对比

相同点朴素贝叶斯和逻辑回归都属于分类模型,当朴素贝叶斯的条件概率服从高斯分布时,它计算出来的 P(Y=1|X) 形式跟逻辑回归是一样的不同点1. 逻辑回归是判别式模型,朴素贝叶斯是生成式模型判别式模型估计的是条件概率分布,给定观测变量 x 和目标变量 y 的条件模型,由数据直接学习决策函数 y=f(x) 或者条件概率分布 P(y|x) 作为预测的模型。判别方法关心的是对于给定的输入 x,应该预测什么样的输出 y;而生成式模型估计的是联合概率分布,基本思想是首先建立样本的联合概率密度模型 P(

2020-09-09 10:12:07

LR模型与SVM对比

LR模型与SVM对比相同点1. 都是线性分类器。本质上都是求一个最佳分类超平面。都是监督学习算法。2. 都是判别模型。通过决策函数,判别输入特征之间的差别来进行分类。不同点1.损失函数不同:LR的损失函数是交叉熵,SVM损失函数为合页损失函数SVM目标函数为损失函数加正则项:2. 两个模型对数据和参数的敏感程度不同:(1) SVM考虑分类边界线附近的样本, 在支持向量外添加或减少任何样本点对分类决策面没有任何影响;LR受所有数据点的影响。直接依赖数据分布,每个样本点都会影响决策

2020-09-09 10:02:34

LR模型

LR模型逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降求解参数,来达到将数据二分类的目的逻辑回归本质上是线性回归,只是在特征到结果的映射中加入了一层sigmoid激活函数,即先把特征线性求和,然后使用sigmoid函数来预测。将连续值映射到 0和1特征重要性每个特征都对应一个模型参数wi,该参数越大,那么该特征对模型预测结果的影响就会越大,我们就说该特征就越重要,因此LR模型的特征重要性评估方式就是wi的大小LR的损失函数LR的loss function称为lo

2020-09-09 09:35:23

GBDT面试相关问题

GBDT基本原理GBDT基本原理是通过多轮迭代,每轮迭代产生一个弱分类器(利用CART回归树构建),每个分类器在上一轮分类器的残差基础上进行训练GBDT优点1.可以灵活处理各种类型的数据,包括连续值和离散值;2. 在相对少的调参时间情况下,预测的准确率也比较高 ;3. 使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。GBDT缺点由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行GBDT分裂

2020-09-08 15:53:25

为什么逻辑回归要用sigmoid函数

为什么逻辑回归要用sigmoid函数Sigmoid是推导出来的,不是假设出来的, LR的假设是两个类服从均值不等,方差相等的高斯分布,然后通过贝叶斯决策推导为什么假设服从高斯分布(1) 因为高斯分布是比较容易处理的分布(2) 从信息论的角度上看,当均值和方差已知时(尽管你并不知道确切的均值和方差,但是根据概率论,当样本量足够大时,样本均值和方差以概率1趋向于均值和方差), 高斯分布是熵最大的分布, 因为最大熵的分布可以平摊你的风险参考文章参考文章1...

2020-09-05 09:55:12

GBDT是否需要进行归一化操作?

概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、rf。而像adaboost、svm、lr、KNN、KMeans之类的最优化问题就需要归一化为什么GBDT需要进行归一化操作因为GBDT的树是在上一颗树的基础上通过梯度下降求解最优解,归一化能收敛的更快,GBDT通过减少偏差来提高性能,而随机森林本来就是通过减少方差提高性能的,树之间建立关系是独立的,不需要归一化对于线性模型,特征值差别很大时,比如说LR,我有两个特征,一个是(0,1)的,一个是(.

2020-09-05 09:45:09

多维数组删除某一行或者某一列【不用numpy】

删除某一行def run(matrix): for i in range(len(matrix)): if i == 0: # 删除第一行 del matrix[0] return matrixres = run([[2, 2, 3], [3, 4, 1], [4, 1, 5], [1, 3, 4]])print(res) 删除某一列def run(matrix): for i in matrix:

2020-09-04 08:32:20

多维数组按某一列进行排序

def takeSecond(elem): return elem[1]def run(random): # key表示按某一列进行排列,reverse = True表示降序排列,默认升序 random.sort(key=takeSecond, reverse = True) return randomres = run([[2, 2, 3], [3, 4,1], [4, 1, 5], [1, 3, 4]])print(res)...

2020-09-03 21:31:45

激活函数比较

激活函数定义在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数激活函数作用我们决定引入非线性函数作为激活函数,这样深层神经网络表达能力就更加强大。如果不用激活函数,每一层节点的输入都是上层输出的线性函数,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机Sigmoid函数数学表达式:几何图像:导数图像:Sigmoid优缺点优点:把输入的连续实值变换为0和1之间的输出,特别的,如果是非常大

2020-08-20 11:30:28

【剑指第6题】从尾到头打印链表(自己输入链表) python

题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)示例1输入:head = [1, 3, 2]输出:[2, 3, 1]class ListNode: def __init__(self, x): self.val = x self.next = Noneclass Solution: def reversePrint(self, head): # # 法一 利用栈 # stack =

2020-08-17 19:40:57

一组数的最大公约数和最小公倍数 python

最大公约数利用辗转相除法求得# 两个数的最大公约数def gcd_2(a,b): if a < b: a,b = b,a if a % b == 0: return b else: return gcd_2(b, a%b)# 多个数的最大公约数def gcd_many(list1): g = list1[0] for i in range(1, len(list1)): g = gcd_2

2020-08-12 13:03:06

word2vec、Glove比较

Glove它是一个基于全局词频统计(count-based & overall statistics)的词表征(word representation)工具,它可以把一个单词表达成一个由实数组成的向量,这些向量捕捉到了单词之间一些语义特性,比如相似性(similarity)、类比性(analogy)等。我们通过对向量的运算,比如欧几里得距离或者cosine相似度,可以计算出两个单词之间的语义相似性。word2vec vs glove1.word2vec是局部语料库训练的,其特征提取是基于

2020-08-07 12:47:00

简单理解ELMO

ELMO 本身是个根据当前上下文对 Word Embedding 动态调整的思路ELMO 采用了典型的两阶段过程,第一阶段是利用语言模型进行预训练;第二阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的Word Embedding 作为新特征补充到下游任务中。 上图展示的是其预训练过程,它的网络结构采用了双层双向LSTM,目前语言模型训练的任务目标是根据单词W的上下文去正确预测单词W, W之前的单词序列 Context-before称为上文,之后的单词序列 Context-after

2020-08-07 12:30:38

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。