考试重点
机器学习算法——线性回归(超级详细且通俗)_一只认真的菜狗的博客-CSDN博客_线性回归算法
线性回归是回归分析的一种。
还是按照简介的思路来说,以简单的一元线性回归(一元代表只有一个未知自变量)做介绍。
有n组数据,自变量 x ( x 1 , x 2 . . . , x n ) x(x_1,x_2...,x_n) x(x1,x2...,xn),因变量 y ( y 1 , y 2 . . . , y n ) y(y_1,y_2...,y_n) y(y1,y2...,yn),然后我们假设它们之间的关系是:f(x)=ax+b。那么线性回归的目标就是如何让f(x)和y之间的差异最小,换句话说就是a,b取什么值的时候f(x)和y最接近。
这里我们得先解决另一个问题,就是如何衡量f(x)和y之间的差异。在回归问题中,均方误差是回归任务中最常用的性能度量(自行百度一下均方误差)。记J(a,b)为f(x)和y之间的差异,即
J ( a , b ) = ∑ i = 1 n ( f ( x ( i ) − y ( i ) ) ) 2 = ∑ i = 1 n ( a x ( i ) + b − y ( i ) ) 2 J(a,b)=\sum\limits_{i=1}^{n}(f(x^{(i)}-y^{(i)}))^2=\sum\limits_{i=1}^{n}(ax^{(i)}+b-y^{(i)})^2 J(a,b)=i=1∑n(f(x(i)−y(i)))2=i=1∑n(ax(i)+b−y(i))2
i代表n组数据中的第i组。
这里称J(a,b)为损失函数,明显可以看出它是个二次函数,即凸函数(这里的凸函数对应中文教材的凹函数),所以有最小值。当J(a,b)取最小值的时候,f(x)和y的差异最小,然后我们可以通过J(a,b)取最小值来确定a和b的值。
到这里可以说线性回归就这些了,只不过我们还需要解决其中最关键的问题:确定a和b的值。
既然损失函数J(a,b)是凸函数,那么分别关于a和b对J(a,b)求偏导,并令其为零解出a和b。这里直接给出结果:
解得:
首先你得先了解一下梯度的概念:梯度的本意是一个向量(矢量),表示某一函数(该函数一般是二元及以上的)在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。
当函数是一元函数时,梯度就是导数。这里我们用一个最简单的例子来讲解梯度下降法,然后推广理解更为复杂的函数。
还是用上面的例子,有n组数据,自变量x(x1,x2,…,xn),因变量y(y1,y2,…,yn),但这次我们假设它们之间的关系是:f(x)=ax。记J(a)为f(x)和y之间的差异,即
在梯度下降法中,需要我们先给参数a赋一个预设值,然后再一点一点的修改a,直到J(a)取最小值时,确定a的值。下面直接给出梯度下降法的公式(其中α为正数):
下面解释一下公式的意义,J(a)和a的关系如下图,
假设给a取的预设值是a1的话,那么a对J(a)的导数为负数,则
α ∂ J ( a ) ∂ a \alpha \frac{\partial J(a)}{ \partial a} α∂a∂J(a)
也为负数,所以
a − α ∂ J ( a ) ∂ a a-\alpha \frac{\partial J(a)}{ \partial a} a−α∂a∂J(a)
意味着a向右移一点。然后重复这个动作,直到J(a)到达最小值。
同理,假设给a取的预设值是a2的话,那么a对J(a)的导数为正数,则
a − α ∂ J ( a ) ∂ a a-\alpha \frac{\partial J(a)}{ \partial a} a−α∂a∂J(a)
意味着a向左移一点。然后重复这个动作,直到J(a)到达最小值。
所以我们可以看到,不管a的预设值取多少,J(a)经过梯度下降法的多次重复后,最后总能到达最小值。
这里再举个生活中的栗子,梯度下降法中随机给a赋一个预设值就好比你随机出现在一个山坡上,然后这时候你想以最快的方式走到山谷的最低点,那么你就得判断你的下一步该往那边走,走完一步之后同样再次判断下一步的方向,以此类推就能走到山谷的最低点了。而公式中的α我们称它为学习率,在栗子中可以理解为你每一步跨出去的步伐有多大,α越大,步伐就越大。(实际中α的取值不能太大也不能太小,太大会造成损失函数J接近最小值时,下一步就越过去了。好比在你接近山谷的最低点时,你步伐太大一步跨过去了,下一步往回走的时候又是如此跨过去,永远到达不了最低点;α太小又会造成移动速度太慢,因为我们当然希望在能确保走到最低点的前提下越快越好。)
到这里,梯度下降法的思想你基本就理解了,只不过在栗子中我们是用最简单的情况来说明,而事实上梯度下降法可以推广到多元线性函数上,这里直接给出公式,理解上(需要你对多元函数的相关知识有了解)和上面的栗子殊途同归。
假设有n组数据,其中目标值(因变量)与特征值(自变量)之间的关系为:
其中i表示第i组数据,损失函数为:
梯度下降法:
(这里需要用到矩阵的知识)
正规方程一般用在多元线性回归中,原因等你看完也就能理解为什么。所以这里不再用一元线性回归举栗子了。
同样,假设有n组数据,其中目标值(因变量)与特征值(自变量)之间的关系为:
其中i表示第i组数据,这里先直接给出正规方程的公式:
推导过程如下:
记矩阵
向量
则
损失函数为:
对损失函数求导并令其为0,有
解得
到此,就求出了所有系数θ。不过正规方程需要注意的是
在实际中可能会出现是奇异矩阵,往往是因为特征值之间不独立。这时候需要对特征值进行筛选,剔除那些存在线性关系的特征值(好比在预测房价中,特征值1代表以英尺为尺寸计算房子,特征值2代表以平方米为尺寸计算房子,这时特征值1和特征值2只需要留1个即可)。
【机器学习】支持向量机 SVM(非常详细) - 知乎 (zhihu.com)
机器学习之-常见决策树算法(ID3、C4.5、CART) - shuwoom的博客
决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一颗熵值下降最快的树,到叶子节点处,熵值为0。其具有可读性、分类速度快的优点,是一种有监督学习。最早提及决策树思想的是Quinlan在1986年提出的ID3算法和1993年提出的C4.5算法,以及Breiman等人在1984年提出的CART算法。
决策树可以分为两类,主要取决于它目标变量的类型。
决策树的构造过程一般分为3个部分,分别是特征选择、决策树生产和决策树裁剪。
特征选择表示从众多的特征中选择一个特征作为当前节点分裂的标准,如何选择特征有不同的量化评估方法,从而衍生出不同的决策树,如ID3(通过信息增益选择特征)、C4.5(通过信息增益比选择特征)、CART(通过Gini指数选择特征)等。
目的(准则):使用某特征对数据集划分之后,各数据子集的纯度要比划分钱的数据集D的纯度高(也就是不确定性要比划分前数据集D的不确定性低)
根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。这个过程实际上就是使用满足划分准则的特征不断的将数据集划分成纯度更高,不确定行更小的子集的过程。对于当前数据集的每一次划分,都希望根据某个特征划分之后的各个子集的纯度更高,不确定性更小。
决策树容易过拟合,一般需要剪枝来缩小树结构规模、缓解过拟合。
决策树的优点:
(1)具有可读性,如果给定一个模型,那么根据所产生的决策树很容易推理出相应的逻辑表达。
(2)分类速度快,能在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
决策树的缺点:
(1)对未知的测试数据未必有好的分类、泛化能力,即可能发生过拟合现象,此时可采用剪枝或随机森林。
ID3算法的核心是在决策树各个节点上应用信息增益准则选择特征递归地构建决策树。
在信息论中,熵(entropy)是随机变量不确定性的度量,也就是熵越大,则随机变量的不确定性越大。设X是一个取有限个值得离散随机变量,其概率分布为:
P ( X = x i ) = p i , i = 1 , 2 , . . . , n P(X=x_i)=p_i, i=1,2,...,n P(X=xi)=pi,i=1,2,...,n
则随机变量X的熵定义为有负号:
H ( X ) = − ∑ i = 1 n p i l o g p i H(X)=- \sum\limits_{i=1}^{n}p_ilogp_i H(X)=−i=1∑npilogpi
设有随机变量(X, Y),其联合概率分布为:
P ( X = x i , Y = y i ) = p i j , i = 1 , 2 , . . . , n , j = 1 , 2 , . . . , m P(X=x_i,Y=y_i)=p_{ij} , i=1,2,...,n,j=1,2,...,m P(X=xi,Y=yi)=pij,i=1,2,...,n,j=1,2,...,m
条件熵H(Y|X)表示在已知随机变量X的条件下,随机变量Y的不确定性。
随机变量X给定的条件下随机变量Y的条件熵H(Y|X),定义为X给定条件下Y的条件概率分布的熵对X的数学期望:
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) H(Y|X)=\sum\limits_{i=1}^n p_iH(Y|X=x_i) H(Y∣X)=i=1∑npiH(Y∣X=xi)
当熵和条件熵中的概率由数据估计得到时(如极大似然估计),所对应的熵与条件熵分别称为经验熵和经验条件熵。
**定义:**信息增益表示由于得知特征A的信息后而使数据集D的分类不确定性减少的程度,定义为:
Gain(D,A) = H(D) - H(D|A)
即集合D的经验熵H(D)与特征A给定条件下D的经验条件熵H(H|A)之差。
**理解:**选择划分后信息增益大的作为划分特征,说明使用该特征后划分得到的子集纯度越高,即不确定性越小。因此我们总是选择当前使得信息增益最大的特征来划分数据集。
**缺点:**信息增益偏向取值较多的特征(原因:当特征的取值较多时,根据此特征划分更容易得到纯度更高的子集,因此划分后的熵更低,即不确定性更低,因此信息增益更大)
输入:训练数据集D,特征集A,阈值ε;
输出:决策树T.
Step1:若D中所有实例属于同一类 C K C_K CK,则T为单结点树,并将类作 C K C_K CK为该节点的类标记,返回T;
**Step2:**若A=Ø,则T为单结点树,并将D中实例数最大的类 C K C_K CK作为该节点的类标记,返回T;
**Step3:**否则,2.1.1(3)计算A中个特征对D的信息增益,选择信息增益最大的特征 A k A_k Ak;
**Step4:**如果 A g A_g Ag的信息增益小于阈值ε,则T为单节点树,并将D中实例数最大的类 C k C_k Ck作为该节点的类标记,返回T
**Step5:**否则,对 A g A_g Ag的每一种可能值 a i a_i ai,依 A g = a i A_g=a_i Ag=ai将D分割为若干非空子集 D i D_i Di,将 D i D_i Di中实例数最大的类作为标记,构建子结点,由结点及其子树构成树T,返回T;
Step6:对第i个子节点,以 D i D_i Di为训练集,以 A − { A g } A-\{A_g\} A−{Ag}为特征集合,递归调用Step1~step5,得到子树 T i T_i Ti,返回 T i T_i Ti;
【决策树算法1】ID3算法 数据挖掘 期末考试 计算题 详细步骤讲解_哔哩哔哩_bilibili
朴素贝叶斯算法是假设各个特征之间相互独立
贝叶斯公式
P ( B ∣ A ) = P ( A ∣ B ) P ( B ) P ( A ) P(B|A)=\frac{P(A|B)P(B)}{P(A)} P(B∣A)=P(A)P(A∣B)P(B)
具体的:
P ( 类别 ∣ 特征 ) = P ( 特征 ∣ 类别 ) P ( 类别 ) P ( 特征 ) P(类别|特征)=\frac{P(特征|类别)P(类别)}{P(特征)} P(类别∣特征)=P(特征)P(特征∣类别)P(类别)
目标是求 P ( 类别 ∣ 特征 ) P(类别|特征) P(类别∣特征)
带你理解朴素贝叶斯分类算法 - 知乎 (zhihu.com)
只需要比较分子,就能计算出答案
优点:
算法逻辑简单,易于实现
分类过程中时空开销小
缺点:
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进。
常用的距离度量方法有:
明考斯基距离( Minkowski distance*)*:
KaTeX parse error: Undefined control sequence: \abs at position 18: …i,j)=\sqrt[q]{(\̲a̲b̲s̲{x_{i1}-x_{j1}}…
其中 i = (xi1, xi2, …, xip) 和 j = (xj1, xj2, …, xjp) 是两个p维的数据对象, q是一个正整数。
当q = 1时, d 称为曼哈坦距离( Manhattan distance)
KaTeX parse error: Undefined control sequence: \abs at position 8: d(i,j)=\̲a̲b̲s̲{x_{i1}-x_{j1}}…
当q=2时, d 就成为欧几里德距离:
KaTeX parse error: Undefined control sequence: \abs at position 15: d(i,j)=\sqrt{(\̲a̲b̲s̲{x_{i1}-x_{j1}}…
l距离函数有如下特性:
可以根据每个变量的重要性赋予一个权重
当 q → ∞ q\rightarrow\infty q→∞时,d就为切比雪夫距离:
KaTeX parse error: Undefined control sequence: \abs at position 12: d(i,j)=max(\̲a̲b̲s̲{x_{i1}-x_{j1}}…
(57条消息) 机器学习之KNN(k近邻)算法详解_平原的博客-CSDN博客_knn
最近邻 (k-Nearest Neighbors, KNN) 算法是一种分类算法, 1968年由 Cover和 Hart 提出
应用场景有字符识别、 文本分类、 图像识别等领域。
一个样本与数据集中的k个样本最相似, 如果这k个样本中的大多数属于某一个类别, 则该样本也属于这个类别。
优点:
1、简单有效
2、重新训练代价低
3、算法复杂度低
4、适合类域交叉样本
5、适用大样本自动分类
缺点:
1、惰性学习
2、类别分类不标准化
3、输出可解释性不强
4、不均衡性
5、计算量较大
EM算法详解 - 知乎 (zhihu.com)
复旦-机器学习课程 第十讲 EM 算法_哔哩哔哩_bilibili
EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,其中一个为期望步(E步),另一个为极大步(M步),所以算法被称为EM算法(Expectation-Maximization Algorithm)。
EM算法受到缺失思想影响,最初是为了解决数据缺失情况下的参数估计问题,其算法基础和收敛有效性等问题在Dempster、Laird和Rubin三人于1977年所做的文章《Maximum likelihood from incomplete data via the EM algorithm》中给出了详细的阐述。
首先根据己经给出的观测数据,估计出模型参数的值;然后再依据上一步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计,然后反复迭代,直至最后收敛,迭代结束。
(1)问题描述
假如我们需要调查学校的男生和女生的身高分布 ,我们抽取100个男生和100个女生,将他们按照性别划分为两组。然后,统计抽样得到100个男生的身高数据和100个女生的身高数据。如果我们知道他们的身高服从正态分布,但是这个分布的均值μ和方差 δ 2 \delta^2 δ2 是不知道,这两个参数就是我们需要估计的。
问题:我们知道样本所服从的概率分布模型和一些样本,我们需要求解该模型的参数。如图1所示。
图1:问题求解过程
我们已知的条件有两个:样本服从的分布模型、随机抽取的样本。我们需要求解模型的参数。根据已知条件,通过极大似然估计,求出未知参数。总的来说:极大似然估计就是用来估计模型参数的统计学方法。
(1)定义
设f是定义域为实数的函数,如果对所有的实数x,f(x)的二阶导数都大于0,那么f是凸函数。
Jensen不等式定义如下:
如果f是凸函数,X是随机变量,那么:E[f(X)]>=f(E[X]) 。当且仅当X是常量时,该式取等号。其中,E(X)表示X的数学期望。
注:Jensen不等式应用于凹函数时,不等号方向反向。当且仅当x是常量时,该不等式取等号。
(2)举例
图2:Jensen不等式
图2中,实线f表示凸函数,X是随机变量,有0.5的概率是a,有0.5的概率是b。X的期望值就是a和b的中值,从图中可以看到 E[f(X)]>=f(E[X])成立。
4.1 问题描述
我们目前有100个男生和100个女生的身高,但是我们不知道这200个数据中哪个是男生的身高,哪个是女生的身高,即抽取得到的每个样本都不知道是从哪个分布中抽取的。这个时候,对于每个样本,就有两个未知量需要估计:
(1)这个身高数据是来自于男生数据集合还是来自于女生?
(2)男生、女生身高数据集的正态分布的参数分别是多少?
那么,对于具体的身高问题使用EM算法求解步骤如图4所示。
(1)初始化参数:先初始化男生身高的正态分布的参数:如均值=1.65,方差=0.15
(2)计算每一个人更可能属于男生分布或者女生分布;
(3)通过分为男生的n个人来重新估计男生身高分布的参数(最大似然估计),女生分布也按照相同的方式估计出来,更新分布。
(4)这时候两个分布的概率也变了,然后重复步骤(1)至(3),直到参数不发生变化为止。
EM算法是迭代求解最大值的算法,同时算法在每一次迭代时分为两步,E步和M步。一轮轮迭代更新隐含数据和模型分布参数,直到收敛,即得到我们需要的模型参数。
一个最直观了解EM算法思路的是K-Means算法。在K-Means聚类时,每个聚类簇的质心是隐含数据。我们会假设K个初始化质心,即EM算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即EM算法的M步。重复这个E步和M步,直到质心不再变化为止,这样就完成了K-Means聚类。当然,K-Means算法是比较简单的,高斯混合模型(GMM)也是EM算法的一个应用。
扫描数据集,从数据集中生成候选k项集Ck(k从1开始)。
计算Cx中,每个项集的支持度,删除低于阈值的项集,构成频繁项集Lk
将频繁项集L;中的元素进行组合,生成候选k +1项集Ck+l
重复步骤2,3,直到满足以下两个条件之一时,算法结束。
说明;
Ck:所有的候选k项集-
Lk:所有的频繁k项集。
数据仓库 数据挖掘 关联规则挖掘 - Apriori 算法_哔哩哔哩_bilibili
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YsZNhf4e-1642762015750)(C:\Users\56996\AppData\Roaming\Typora\typora-user-images\image-20211228161609560.png)]
FP growth
(57条消息) FPTree 理解_zhangbcn的专栏-CSDN博客_fp树
数据仓库 数据挖掘 - 关联规则挖掘 FP-grows 算法_哔哩哔哩_bilibili
选择初始化的k个样本作为初始聚类中心" a = a 1 , a 2 , . . . , a k ; a=a_1,a_2,...,a_k; a=a1,a2,...,ak;"
针对数据集中每个样本 x i x_i xi计算它到 k 个聚类中心的距离并将其分到距离最小的聚类中心所对应的类中;
针对每个类别 a j a_j aj,重新计算它的聚类中心KaTeX parse error: Undefined control sequence: \abs at position 14: a_j=\frac{1}{\̲a̲b̲s̲{c_i}}\sum\limi…(即属于该类的所有样本的质心);
重复上面 2 3 两步操作,直到达到某个中止条件(迭代次数、最小误差变化等)。
获取数据 n 个 m 维的数据
随机生成 K 个 m 维的点
while(t)
for(int i=0;i < n;i++)
for(int j=0;j < k;j++)
计算点 i 到类 j 的距离
for(int i=0;i < k;i++)
1. 找出所有属于自己这一类的所有数据点
2. 把自己的坐标修改为这些数据点的中心点坐标
end
时间复杂度: O ( t k n m ) O(tknm) O(tknm) ,其中,t 为迭代次数,k 为簇的数目,n 为样本点数,m 为样本点维度。
空间复杂度: O ( m ( n + k ) ) O(m(n+k)) O(m(n+k)) ,其中,k 为簇的数目,m 为样本点维度,n 为样本点数。
优点
缺点
先将五个样本都分别看成是一个簇,最靠近的两个簇是3和4,因为他们具有最小的簇间距离
D(3,4)=5.0。
第一步:合并簇3和4,得到新簇集合1,2,(34),5
更新距离矩阵:
D(1,(34)) = min(D(1,3),D(1,4)) = min(20.6, 22.4) = 20.6;
D(2,(34)) = min(D(2,3),D(2,4)) = min(14.1, 11.2) = 11.2;
D(5,(34)) = min(D(3,5),D(4,5)) = min(25.0, 25.5) = 25.0.
原有簇1,2,5间的距离不变,修改后的距离矩阵如图所示,在四个簇1,2,(34),5中,最靠近的两个簇是1和5,它们具有最小簇间距离D(1,5)=7.07。
西瓜书
PageRank算法讲解_哔哩哔哩_bilibili