#苦行僧
这是我随心所欲记录笔记的地方,喜欢的方向:| NLP | CV | ML | 搜广推 | SE+AI |。
展开
-
潜在语义分析LSA和概率潜在语义分析PLSA
一、潜在语义分析LSA LSA是一种无监督学习方法,主要用于文本的话题分析。其特点是通过矩阵分解发现文本与单词之间的基于话题的语义关系。 传统的量化文本的方法是用单词向量表示文本的语义内容,在单词向量空间中通过向量的内积或标准化内积(即余弦)衡量文本之间的语义相似度。而潜在语义分析的目的就是解决这种方法不能准确表示语义的问题,试图从大量文本数据中发现潜在的话题,以话题向量表示文本的语义,在话题向量空间中通过向量的内积或标准化内积(即余弦)衡量文本之间的语义相似度。 在单词向量空间中使用单词-文本.原创 2021-04-22 11:05:12 · 965 阅读 · 1 评论 -
主成分分析PCA算法(相关矩阵的特征值分解算法和数据矩阵的奇异值分解算法)
主成分分析(Principal component analysis, PCA),常用的无监督学习方法。 它利用正交变换把由线性相关的变量表示的观测数据转换为少数几个由线性无关变量表示的数据,线性无关的变量称为主成分。主成分个数常小于原始变量个数,so 是一种降维方法。 作用: 1.主要用于发现数据中的基本结构,即数据中变量之间的关系。 2.也会用在其他机器学习方法的前处理中。 下面主要讲解样本主成分分析的2种算法,对于样本主成分分析的定义与性质这里不作过多讲解。 1.相关矩阵的特征值分解算法原创 2021-04-19 21:09:25 · 3948 阅读 · 0 评论 -
奇异值分解SVD的主要性质分析
性质1: 至于为什么V的列向量是ATA的特征向量,由(式15.20)可知将V右乘等式两边,可把VT消掉,因为V为正交矩阵,VVT=E。所以可以看出其满足特征向量和特征值的定义(如下的形式)。 特征向量和特征值定义: 如果数λ和非零列向量x使关系式:Mx=λx成立。那么这样的数λ称为矩阵M的特征值,非零向量x称为A的对应特征值λ的特征向量。 U的列向量是AAT的特征向量也同理。 至于为什么Σ的奇异值是ATA和AAT的特征值的平方根,因为ATA和AAT的特征值是λ,又因为奇异值σ=sqrt(λ),所原创 2021-04-03 13:47:44 · 3512 阅读 · 6 评论 -
李航《统计学习方法》课后习题答案(第2版)
李航《统计学习方法》课后习题答案(第2版)章节链接第1章 统计学习及监督学习概论点击进入第2章 感知机点击进入第3章 k近邻法点击进入第4章 朴素贝叶斯法点击进入第5章 决策树点击进入第6章 逻辑斯谛回归与最大熵点击进入第7章 支持向量机点击进入第8章 提升方法点击进入第9章 EM算法及其推广点击进入第10章 隐马尔可夫模型点击进入第11章 条件随机场点击进入 也可进入我的个人主页查看分类专栏原创 2021-02-19 18:14:26 · 20928 阅读 · 0 评论 -
李航《统计学习方法》第2版 第11章CRF课后习题答案
监督学习部分结束~~~~~~原创 2021-01-27 10:46:36 · 1028 阅读 · 0 评论 -
李航《统计学习方法》第2版 第11章CRF中关于CRF矩阵形式的理解以及特征函数的理解
关于CRF这章相对前面几章来说有点抽象,看到CRF矩阵形式和特征函数这里卡了一会,这个特征函数在前面某章也出现过,其实起到的作用类似。 这里结合了词性标注的例子去理解,发现很好懂。这里弄懂之后后面的概率计算问题,学习问题,预测问题应该跟HMM差不多了。----------------------------------------------------------------------------------------------------------------------------原创 2021-01-26 18:22:07 · 688 阅读 · 0 评论 -
李航《统计学习方法》第2版 第10章 HMM实现分词(代码实现)
利用HMM模型实现分词:四种状态:B:词语的开头M:一个词语的中间词E:一个词语的结果S:非词语,单个词学习:Baum-Welch算法预测:维特比算法数据集:人民日报1998年中文标注语料库链接:https://pan.baidu.com/s/1SKi9DUjxuh6tENfm6jmNCA提取码:hz3q复制这段内容后打开百度网盘手机App,操作更方便哦代码引用自:www.pkudodo.com#coding=utf-8#Author:Dodo#Date:2018-12-10原创 2021-01-24 00:06:09 · 558 阅读 · 0 评论 -
李航《统计学习方法》第2版 第10章HMM课后习题答案
HMM这一章比较简单,把原理弄熟,看着公式,用numpy实现很简单。习题10.1懒得手算,直接代码:import numpy as npimport pandas as pdclass MyHMM: def __init__(self,p,A,B,Ob,method="forward"): self.p=p # 初始状态概率 self.A=A # 状态转移概率分布 self.B=B # 观测概率分布 self.Ob=原创 2021-01-23 23:59:35 · 1992 阅读 · 8 评论 -
李航《统计学习方法》第2版 第9章 EM算法在高斯混合模型中的应用(代码实现)
(程序里注明了代码来源)首先伪造两个高斯混合分布,然后预测出这两个高斯分布的参数。其实就是书本186页的算法9.2,用代码把公式敲一遍即可,用numpy处理起来很方便。# coding=utf-8# Author:Dodo# Date:2018-12-8# Email:lvtengchao@pku.edu.cn# Blog:www.pkudodo.com'''数据集:伪造数据集(两个高斯分布混合)数据集长度:1000------------------------------运行结原创 2020-12-28 17:02:30 · 521 阅读 · 0 评论 -
李航《统计学习方法》第2版 第9章课后习题答案
习题9.1习题9.2习题9.32个分模型,5个参数μ0,σ0,μ1,σ1,(a0,a1)代码实现:import numpy as npimport itertoolsimport matplotlib.pyplot as pltimport timeclass MyEM(): def __init__(self, y, args, tol=0.001, K=2, max_iter=50): self.y = y self.r = None #分模型k对观测数据.原创 2020-12-23 17:31:53 · 3733 阅读 · 0 评论 -
李航《统计学习方法》第2版 第8章 编程实现AdaBoost算法,调用sklearn模块实现(书本例题8.1和习题8.1)
参考:https://blog.csdn.net/weixin_43646592/article/details/111152323原创 2020-12-14 11:25:23 · 899 阅读 · 1 评论 -
李航《统计学习方法》第2版 第8章 AdaBoost模型 实现mnist数据集分类
代码注释很详细(代码注释中有代码原创者引用)#coding=utf-8#Author:Dodo#Date:2018-12-05#Email:lvtengchao@pku.edu.cn#Blog:www.pkudodo.com'''数据集:Mnist训练集数量:60000(实际使用:10000)测试集数量:10000(实际使用:1000)层数:40------------------------------运行结果: 正确率:97% 运行时长:65m'''impo原创 2020-12-14 11:22:28 · 964 阅读 · 0 评论 -
李航《统计学习方法》第2版 第8章课后习题答案
习题8.1因计算量较大,所以这题用编程实现。我们先来看下课本例题8.1不是习题8.1,该题x只有1个特征,习题8.1中x有3个特征。对于例题8.1的实现代码如下(算法即书中的AdaBoost算法8.1)弱分类器由x<v或x>v产生;此可看作是由一个根节点直接连接两个叶结点的简单决策树,即所谓的决策树桩。""" 自编程实现课本例题8.1"""import numpy as npclass AdaBoost: def __init__(self, x, y, tol=0.原创 2020-12-14 11:22:01 · 6124 阅读 · 5 评论 -
李航《统计学习方法》第2版 第7章课后习题答案
习题7.1习题7.2习题7.3习题7.4原创 2020-12-11 16:37:03 · 9159 阅读 · 9 评论 -
李航《统计学习方法》第2版 第7章 SVM模型 实现mnist数据集分类
(采用SMO算法优化拉格朗日乘子a)由于时间问题,以下训练采用的是数据集的一小部分进行训练与测试。代码参考自: Dodo teacher在其代码中的SMO算法部分,关于第一个变量ai选择那里,判断是否满足KKT条件,我作出了修改,修改成和书本一样的3个KKT条件。而Dodo那个我有点不明白为啥那样写,而且他的测试准确率是99%, 我改成和书本一样后测试准确率升到了100%。。。。。。KKT条件看这里:SMO算法关于第一个变量选择中的KKT条件简化推导代码里面注释挺全的可以看里面这里解释一原创 2020-11-22 23:59:58 · 758 阅读 · 1 评论 -
李航《统计学习方法》第2版 第7章(SVM)关于支持向量的理解(为什么a>0对应的实例x为支持向量呢,以及根据a与ξ取值如何确定支持向量分布)
下面是书本截图:根据a与ξ取值如何确定支持向量分布这里解释一下,上面的话:1. Why ai>0, 则ξi=0,支持向量x就落在间隔边界上?因为我们可以从KKT条件中可以知道,只要ai>0那么ξi必为0;由下图原始问题我们可以知道,当ξ为0时不就相当于没有引入软间隔,那就像线性可分数据集一样,支持向量落在间隔边界上咯。KKT条件简化参考这里:(SMO算法中关于优化变量的第一个变量选择的问题(KKT简化))2. Why ai=C要分类讨论ξ?因为当ai=C时,我们只知道.原创 2020-11-22 23:41:48 · 739 阅读 · 0 评论 -
李航《统计学习方法》第2版 第7章(SVM)的SMO算法中关于优化变量的第一个变量选择的问题(KKT条件简化推导)
以下是书本中的截图,在第一个变量选择中突然冒出了3个条件,说这就是KKT条件。。。 第一眼看到我一脸懵逼咋就KKT条件呢???莫慌。先把KKT条件一条条咱给他列出来,列出来如下图,通过简化我们就可以得到和书本一样的KKT了。嘿嘿...原创 2020-11-21 10:51:14 · 429 阅读 · 0 评论 -
李航《统计学习方法》第2版 第7章(SVM)中为何要利用朗格朗日对偶性将原始问题转化为对偶问题求解???
一开始在网上看了一些帖子,并没有详细说明为啥???为什么就不能直接求解原始问题的最优解呢??而是要用求解其对偶问题的解??原创 2020-11-19 13:00:53 · 332 阅读 · 0 评论 -
李航《统计学习方法》第2版 第6章 编程实现逻辑斯谛回归(梯度下降算法)调用sklearn模块实现逻辑斯谛回归(梯度下降算法,牛顿、拟牛顿算法)
参考里面的习题6.2的代码就是了:李航《统计学习方法》第2版 第6章课后习题答案原创 2020-11-17 22:18:56 · 527 阅读 · 0 评论 -
李航《统计学习方法》第2版 第6章中如何理解最大熵模型中的特征函数?
参考知乎中关于这个问题的某个评论参考链接:如何理解最大熵模型中的特征函数?以下为该评论截图:原创 2020-11-17 22:15:15 · 389 阅读 · 1 评论 -
李航《统计学习方法》第2版 第6章中对于最大熵中极大似然估计的似然函数的理解(为什么长指数形式这个样子)
为啥似然函数这个样,跟平常见的好像不太一样?(以下为书本截图)个人在网上浏览了一些帖子后,写的理解:原创 2020-11-17 22:06:26 · 251 阅读 · 2 评论 -
李航《统计学习方法》第2版 第6章 Python编程逻辑斯谛回归与最大熵模型 实现mnist数据集分类
(参考深度之眼dodo老师代码,代码注释中有老师博客地址)逻辑斯谛回归模型(学习算法:梯度下降)# coding=utf-8# Author:Dodo# Date:2018-11-27# Email:lvtengchao@pku.edu.cn# Blog:www.pkudodo.com'''数据集:Mnist训练集数量:60000测试集数量:10000------------------------------运行结果: 正确率:98.91% 运行时长:59s原创 2020-11-17 21:58:08 · 714 阅读 · 0 评论 -
李航《统计学习方法》第2版 第6章课后习题答案
习题6.1题目:确认逻辑斯谛分布属于指数分布族.习题6.2题目:写出逻辑斯谛回归模型学习的梯度下降算法.习题6.3题目:写出最大熵模型学习的DFP算法.(关于一般的DFP算法参见附录B)解:这个DFP算法可参考书本附录B对于习题6.2的逻辑斯蒂回归算法,这里用python自编程实现(学习算法采用梯度下降法)梯度下降法:""" python自编程实现逻辑斯谛回归 学习方法:梯度下降法 任务:根据正负实例数据集,分类正负实例点"""import numpy as .原创 2020-11-17 21:53:11 · 5048 阅读 · 0 评论 -
李航《统计学习方法》第2版 第5章 Python编程决策树(ID3未剪枝) 实现mnist数据集分类
代码(有注释):# coding=utf-8# Author:Dodo# Date:2018-11-21# Email:lvtengchao@pku.edu.cn'''数据集:Mnist训练集数量:60000测试集数量:10000------------------------------运行结果:ID3(未剪枝) 正确率:85.9% 运行时长:356s'''import timeimport numpy as npdef loadData(fileNam原创 2020-11-12 23:47:51 · 790 阅读 · 3 评论 -
李航《统计学习方法》第2版 第5章 编程生成决策树(ID3算法、C4.5算法)、调用sklearn模块实现(CART算法)(课本77页例题5.3)
ID3生成决策树import numpy as npfrom math import logdef loadData(): datasets = [['青年', '否', '否', '一般', '否'], ['青年', '否', '否', '好', '否'], ['青年', '是', '否', '好', '是'], ['青年', '是', '是', '一般', '是'], .原创 2020-11-12 23:46:04 · 864 阅读 · 0 评论 -
李航《统计学习方法》第2版 第5章课后习题答案
习题5.1题目:根据表5.1所给的训练数据集,利用信息增益比(C4.5算法)生成决策树.习题5.2题目:已知下表所示的训练数据,试用平方误差损失准则生成一个二叉回归树.""" 编程实现书本89页习题5.2 算法:最小二乘回归树生成算法 准则:平方误差最小化"""#-*- coding: utf-8 -*-import numpy as npimport matplotlib.pyplot as plty = np.array([4.5, 4.7.原创 2020-11-12 23:38:39 · 9804 阅读 · 3 评论 -
李航《统计学习方法》第2版 第4章 Python编程朴素贝叶斯 实现mnist数据集分类
代码(有注释):#coding=utf-8#参考深度之眼:Dodo老师的代码'''数据集:Mnist训练集数量:60000测试集数量:10000------------------------------运行结果: 正确率:84.3% 运行时长:103s'''import numpy as npimport timefrom tqdm import tqdmdef loadData(fileName): ''' 加载文件 :param原创 2020-11-11 23:45:14 · 590 阅读 · 0 评论 -
李航《统计学习方法》第2版 第4章 编程实现朴素贝叶斯、调用sklearn模块实现(实现书本63页例题4.1)
自编程实现:""" 朴素贝叶斯:实现课本63页例题4.1 参数估计:贝叶斯估计"""import numpy as npimport pandas as pdclass NaiveBayes(): def __init__(self, lambda_): self.lambda_=lambda_ self.y_types = None self.y_counts = None self.y_prob = None # (xi第几维度,xi,y) self.x_un原创 2020-11-11 23:43:25 · 607 阅读 · 0 评论 -
李航《统计学习方法》第2版 第4章课后习题答案
习题4.1习题4.2这里先验为什么设为狄利克雷,后面接着有我总结的解释贝塔分布与狄利克雷分布,以及贝叶斯估计的先验设为狄利克雷分布的原因。也可参考文末链接(第一个链接讲的挺通俗易懂)。这里解释一下贝塔分布与狄利克雷分布:举个简单的例子说明为什么贝叶斯估计中的先验分布设为狄利克雷分布:参考链接:狄利克雷分布讲解Beta分布与贝叶斯估计狄利克雷分布与贝叶斯估计...原创 2020-11-11 23:37:39 · 4859 阅读 · 4 评论 -
李航《统计学习方法》第2版 第3章 Python编程KNN(暴力法)实现mnist数据集分类
代码(有注释):#coding=utf-8#参考深度之眼:Dodo老师的代码'''数据集:Mnist训练集数量:60000测试集数量:10000(这里使用:200)------------------------------运行结果:(邻近k数量:25)向量距离使用算法——欧式距离 正确率:97% 运行时长:308s向量距离使用算法——曼哈顿距离 正确率:14% 运行时长:246s'''import numpy as npimport timef原创 2020-11-10 18:15:53 · 507 阅读 · 2 评论 -
李航《统计学习方法》第2版 第3章 编程实现KNN(暴力法)、调用sklearn模块实现KNN(暴力法、kd树、球树)
自编程暴力法:""" 利用普通做法:线性扫描算法,实现KNN 采用欧式距离,多数表决"""import numpy as npfrom collections import Counterimport matplotlib.pyplot as pltclass KNN(): def __init__(self, x_train, y_train, k): self.x_train = x_train self.y_train = y_train self.k = k de原创 2020-11-10 18:12:38 · 577 阅读 · 0 评论 -
李航《统计学习方法》第2版 第3章课后习题答案
习题3.1题目:参照图3.1,在二维空间中给出实例点,画出k为1和2时的k近邻法构成的空间划分,并对其进行比较,体会k值选择与模型复杂度及预测准确率的关系。习题3.2题目:利用例题3.2构造的kd树求点 x = ( 3 , 4.5 ) T 的最近邻点。习题3.3题目:参照算法3.3,写出输出为x的k近邻的算法。...原创 2020-11-10 18:01:32 · 5632 阅读 · 3 评论 -
李航《统计学习方法》第2版 第2章 Python编程感知机实现mnist数据集分类
Mnsit数据集有0-9类手写数字。由于感知机是二分类的线性分类模型,所以可以将>=5的作为1(正实例),<5为-1(负实例)代码:#coding=utf-8'''数据集:Mnist训练集数量:60000测试集数量:10000------------------------------运行结果:正确率:81.72%(二分类)运行时长:78.6s'''import numpy as npimport timefrom tqdm import tqdmdef原创 2020-11-09 20:31:35 · 1022 阅读 · 5 评论 -
李航《统计学习方法》第2版 第2章 sklearn模块实现感知机(书本40页-例题2.1)
Perceptron()的参数,根据需要自己调整即可:代码:from sklearn.linear_model import Perceptronimport numpy as np#2个正实例样本,1个负实例样本X_train = np.array([[3,3],[4,3],[1,1]])y = np.array([1,1,-1])perceptron = Perceptron(max_iter=1000,tol=1e-3,eta0=1)perceptron.fit(X_train,原创 2020-11-09 13:25:46 · 357 阅读 · 1 评论 -
李航《统计学习方法》第2版 第2章课后习题答案
习题2.1题目:Minsky与Papert指出:感知机因为是线性模型,所以不能表示复杂的函数,如异或(XOR),验证感知机为什么不能表示异或。习题2.2题目:模仿例题2.1,构建从训练数据集求解感知机模型的例子。解:这里用python代码分别实现一下感知机学习算法的原始形式与对偶形式原始形式:""" 感知机(原始形式):实现书本P40页 例题2.1"""import numpy as npimport matplotlib.pyplot as pltclass MyPerceptr原创 2020-11-09 11:30:20 · 5848 阅读 · 14 评论 -
李航《统计学习方法》第2版 第1章课后习题答案
习题1.1题目:说明伯努利模型的极大似然估计以及贝叶斯估计中的统计学习方法三要素。伯努利模型是定义在取值为0与1的随机变量上的概率分布。假设观测到伯努利模型n次独立的数据生成结果,其中k次的结果为1,这时可以用极大似然估计或贝叶斯估计来估计结果为1的概率。上述采用了极大似然估计的思想,极大化后验概率求解θ,此方法作为贝叶斯估计的一种近似解,有其存在的价值,因为贝叶斯估计中的后验分布的计算往往是非常棘手的。所以MAP并非简单地回到了极大似然估计,它依然利用了来自先验的信息,这些信息无法从观测样本中得到原创 2020-11-07 19:42:16 · 8659 阅读 · 2 评论