- 博客(14)
- 收藏
- 关注
原创 机器学习之九——FP-growth算法
FP-growth算法跟apriori算法一样,都是用来发现频繁集和关联规则的,不过由于FP-growth算法用了树结构,效率比apriori快了很多。FP-growth算法中选取频繁集时,只需要对整个数据集扫描两次,而apriori算法对于每个候选频繁集就会对数据集进行扫描,可见FP-growth算法的效率之高。下面,博主就为大家介绍一下FP-growth算法。 一、FP树结构 FP-growth算法中的树称为FP树,那么FP树的结构是怎样的呢?我们用下面的例子来说明,提前声明一下,以下的例子均来自于
2021-02-08 12:32:47
1129
原创 机器学习之八——Apriori算法
在写这篇文章之前不得不先吐槽一下《机器学习实战》一书。Apriori是个很有趣也很简单的算法,这本书却把它解释得晦涩难懂,很多地方的讲解很容易把人带偏,我费了好大劲才读懂。这篇文章里会对比较难理解的地方重点讲解,如有错误,还望大家不吝赐教。 一、关联分析 关联分析就是寻找数据之间的关联,这里直接用《机器学习实战》书中的例子来举例吧: 交易号码 商品 0 1 2 3 4 豆奶,莴苣 莴苣,尿布,葡萄酒,甜菜 豆奶,尿
2021-02-07 14:36:58
519
原创 机器学习之七:K-均值聚类
一、K-均值聚类 K-均值聚类是一类简单的无监督学习方法,其核心思想是将数据按照相似程度分为K个簇。这类算法需要注意三点: 1. K的选择:K需要自己决定 2. 初始质心的选择:质心指的是每个簇的中心点,初始质心也需要自己决定,通常是随机选择;初始质心的个数等于K 3. 数据相似度的衡量:一般用特征值之间的距离之和来度量数据的相似度 其算法流程是:首先选取K个初始质心,随后对于每一条数据,计算其到每个质心的距离,将其与距离最近的质心分为同一个簇。这一步完成后,需要将每个簇的质心更新为该簇所有点的平
2021-02-05 18:15:57
638
原创 机器学习之六——线性回归
一、最小二乘法 先介绍一下本文使用的数据: 显然,这套数据存在一个趋势,可以用一个直线来拟合,这种用直线来拟合数据的方法就叫做线性回归。其具体思想是:假设一组数据有m个特征,相应地我们需要m个参数,对某条数据的预测值就是m个参数与m个特征的乘积之和,即,我们的目的是确定各使该预测值与实际值误差最小的参数向量。 最小二乘法就是用误差的平方和来作为优化目标的方法,即,最小二乘法是使得最小的方法。此时求最优参数向量的方式非常简单,令偏导等于0即可,此处不再赘述,直接给出其公式: 当然,这个方法必须
2021-01-26 16:28:58
574
原创 机器学习之五——adaBoost
一、adaBoost介绍 对一个数据集,adaBoost算法的核心思想是使用多个“弱分类器”训练该数据集,最终集成出一个“强分类器”。这里“弱分类器”的意思是比随机预测好一些但不会好太多的分类器。由于弱分类器非常好构造,并且多个弱分类器集成的强分类器效果又非常好,所以笔者认为adaBoost是一个非常优秀且便捷的算法,其步骤如下: 1. 初始时给数据集中的每条数据分配一个权重,由于是刚开始,每个数据集的权重相等; 2. 用第一个弱分类器训练数据集,然后筛选出预测错误的数据,增大这部分数据的权重,同时减
2021-01-25 22:21:47
1329
1
原创 机器学习实战之四——支持向量机:核函数
终于来到了支持向量机的最后一个单元!此处使用高斯核函数来构建SVM,由于使用了核函数,一些代码也需要进行,需要修改的代码如下,其余的代码与完整版Platt SMO中相同。 def kernelTrans(X, A, kTup): m,n = np.shape(X) K = np.mat(np.zeros((m,1))) if kTup[0] == 'lin': K = X * A.T elif kTup[0] == 'rbf': for j
2021-01-24 15:53:55
527
原创 机器学习实战之四——支持向量机:完整Platt SMO算法
上一篇文章中介绍了简化版的SMO算法及其应用,这篇文章将会介绍完整的Platt SMO算法。完整版与简化版最大的区别在于,简化版中选择要改变的第二个参数alpha[j]时,是随机选择的;而在完整版中,alpha[j]的选取原则是使得对第j个数据的预测误差Ej和第i个数据预测误差Ei二者之间的差值最大的alpha[j]。下面作者将《机器学习实战》一书的主要代码抄写过来,并在必要的地方作了注释,以期各位读者能够看懂。 import numpy as np import copy def selectJra
2021-01-24 14:47:22
399
1
原创 机器学习实战之四:支持向量机——简化SMO算法代码实现
这篇文章会对之前文章提到的二维平面点数据集和癌症数据集利用自己编写的简化SMO算法。 癌症数据集移步文章:机器学习之一:K-近邻算法 二维平面点数据集移步文章:机器学习之三:逻辑回归 网络上很多简化SMO算法的代码都是来自《机器学习实战》一书,但是这篇书中的代码还是非常跳跃的,理解起来比较困难,我根据自己的理解重写了一下,必须提供了足够多的注释,希望大家能看懂,其中带有序号的注释,我都会在后面贴出相应的公式。 首先是针对二维平面点数据集的代码: import pandas as pd impor
2020-12-31 15:44:01
431
原创 机器学习之四:支持向量机——SMO算法
上篇文章只是简要介绍了一下SMO算法的核心思想,然而要完全实现这个算法, 步骤是很繁琐的,本文就尝试为大家详细介绍SMO算法。 首先我们将软间隔的SVM模型拿过来: 请牢记,这里的是超出间隔带的距离,不理解的话请参考上一篇文章。 然后,我们再把由此构造的拉格朗日函数以及KKT条件拿过来: 我们知道,最优解必须满足这些条件。 下一步,我们把在一定程度上求解后的...
2020-12-22 17:56:33
1030
1
原创 机器学习之四:支持向量机——理论框架
由于SVM的理论实在太过深奥,因此这一部分的内容分为了理论和实战两个部分,以显得更有条理。 一、前置知识 1.1 KKT条件 KKT条件是非线性规划最优解的必要条件。 先从拉格朗日乘数法说起,拉格朗日乘数法是高数里的知识,相信大部分人都学过,并且KKT条件是拉格朗日乘数法的泛化情况,因此从拉格朗日乘数法入手能够比较通俗易懂。 对于如下的优化问题: ...
2020-12-21 23:08:36
578
原创 机器学习之三:逻辑回归
逻辑回归实际上是应用回归思想的分类算法。 先来看比较一般的线性回归,假设第 i 条数据有 n 个特征,我们用来预测的参数是,那么根据这 n 个特征我们对该数据的预测值为. 但是这样的线性回归预测出来的值是连续的,而分类算法中预测值必然是离散的。特别的,对于二分类问题,预测值是0或1. 因此我们就需要一个方法将预测值压缩到(0,1)之间。 逻辑回归使用sigmoid函数将预测值压缩到(0,1)之间,其形式是,其函数图像如下。 由图像可知,该函数关于y轴对称,且x趋近于正无穷时,y趋近于1;x趋近于负
2020-12-11 19:32:27
421
原创 机器学习之二:朴素贝叶斯
今天会用朴素贝叶斯对上一篇文章提到的乳腺癌数据进行训练并预测。 关于贝叶斯原理这里就不介绍了,网上有很多。这里说一下朴素一词的含义是,数据中的特征都是互相独立的。 现在来介绍一下针对该数据集的计算方法。对于一条数据,假设其有m个特征,n种可能的分类,我们要计算的是在在这些特征取相应值的情况下,这条数据分为某一类的概率,即 根据贝叶斯理论,可知:, 又因为特征相互独立,所以上式可以简化为, 根据这个公式,我们需要知道,那么再用一次贝叶斯公式: 所以,我们一共是用了两次贝叶斯公式。理论部分说完了,接
2020-12-05 17:15:28
342
原创 机器学习之一:K-近邻算法
K-近邻算法是一种简单粗暴的监督学习算法,其原理十分简单,对于给定的训练集和当前数据,从训练集中找出与当前数据最小的K个数据(这里的K就是K-近邻中的K),将这K个数据中出现次数最多的类别做为当前数据的预测类别。 其中,两个数据的之间的距离定义这两个数据对应特征的欧式距离之和。例如,对于数据 和 ,其有 个特征,那么 和 之间的距离。注意到在这里,每个特征的权重都是一样的,也可以为不同的特征赋予不同的权重,那么,距离公式则变为:,其中. 因此,K-近邻算法的步骤如下: 1. 计算已知类别数...
2020-11-29 22:11:30
999
1
原创 神经网络反向传播公式推导
最近在学习机器学习,看的是吴恩达老师的视频。在神经网络反向传播公式这一节,吴恩达只给出了公式结果,没有给出公式推导过程。 关于公式推导过程,我找到一篇还不错的博客,地址如下: https://blog.youkuaiyun.com/xuan_liu123/article/details/83660316 但是这篇博客中仍有两个令人困惑的点,现作解释如下,希望能够对大家有所帮助。 第一点是大家可能不明白 为什么等于 推导过程如下: 其中要知道h(x)是sigmoid函数以及是及激活函数 第二个点在于上面那篇博客的作
2020-11-17 23:52:07
246
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅