统计的线性分类算法

1、感知机算法(硬分类)

激活函数

                                                        sign(a) = \begin{cases} +1, & \text{if } a \geq 0 \\ -1, & \text{if } a < 0 \end{cases}              ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

损失函数:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        L(w) = \sum_{x_i \in \mathcal{D}_{\text{wrong}}} -y_i w^T x_i

求解有两种方式:一个是求导(计算量大,因为需要全部的样本)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \frac{\partial}{\partial w}L(w)=\sum\limits_{x_i\in\mathcal{D}_{wrong}}-y_ix_i

另一个是求期望然后梯度下降(只需要一批样本慢慢更新)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \mathbb{E}_{\mathcal{D}}[\mathbb{E}_{\hat{p}}[\nabla_w L(w)]] = \mathbb{E}_{\mathcal{D}} \left[ \frac{1}{N} \sum_{i=1}^{N} \nabla_w L(w) \right]

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        w^{t+1}\leftarrow w^{t}+\lambda y_ix_i

感知机算法(Perceptron Algorithm)是一种用于二分类的线性分类器,它通过不断迭代调整模型参数,使得分类边界能够将不同类别的样本正确分类。以下是感知机算法的应用、优点和缺点:

应用场景:

1. **文本分类**:感知机算法可用于文本分类任务,如垃圾邮件过滤、情感分析等。

2. **图像识别**:在一些简单的图像分类任务中,感知机也可以作为一种有效的分类器。

3. **生物医学领域**:感知机算法可以用于生物医学领域中的疾病诊断、药物筛选等。

4. **广告点击率预测**:在在线广告投放中,感知机算法可以用于预测用户是否点击某个广告。

5. **金融风控**:感知机算法可以用于信用评分和欺诈检测,帮助金融机构评估借款人的信用风险。

优点:

1. **简单高效**:感知机算法简单易懂,易于实现,计算效率高。

2. **在线学习**:感知机算法支持在线学习,即可以逐步学习新的样本,而不需要重新训练整个模型。

3. **适用于大规模数据集**:感知机算法在处理大规模数据集时表现良好,并且具有较低的存储和计算成本。

4. **可解释性强**:感知机提供了直观的分类边界,易于理解和解释。

缺点:

1. **线性分类器**:感知机算法只能学习线性分类器,无法处理非线性问题。

2. **对噪声敏感**:感知机算法对噪声和异常值较为敏感,可能会导致模型性能下降。

3. **无法处理非线性可分问题**:对于非线性可分的数据集,感知机算法无法得到满意的分类结果。

4. **不稳定性**:当数据集线性不可分或者存在多个线性边界时,感知机算法可能会陷入局部最优解,导致分类性能较差。

尽管感知机算法具有一些限制,但在某些简单的二分类问题上,仍然是一个有效的分类算法。在实际应用中,需要根据具体的数据特点和问题需求来选择合适的算法。

2、线性判别分析(硬分类)(Linear Discriminant Analysis,LDA)

是一种经典的监督学习方法,用于解决分类问题。它的主要思想是通过降维将数据投影到一个低维空间,并最大化不同类别之间的距离,同时最小化同一类别内部的距离,从而实现更好的分类效果。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        z=w^T\cdot x(=|w|\cdot|x|\cos\theta)

直接求,不需要使用梯度或求导法。

具体来说,LDA通过以下步骤实现分类:

  1. 计算类别均值: 对于每个类别,计算其样本的均值向量,即将该类别内所有样本的特征向量进行平均得到的向量。这样就可以得到每个类别在原始特征空间中的中心点。

  2. 计算类内散度矩阵: 计算每个类别内部的散布程度,即每个类别内样本与其均值向量的距离的平方和,然后将所有类别的类内散度矩阵进行累加,得到总的类内散度矩阵。

  3. 计算类间散度矩阵: 计算不同类别之间的散布程度,即不同类别的均值向量之间的距离的平方和,然后得到总的类间散度矩阵。

  4. 计算投影方向: 通过对类内散度矩阵的逆矩阵与类间散度矩阵相乘,得到投影方向。这个投影方向使得在低维空间中不同类别之间的距离尽可能大,而同一类别内部的距离尽可能小。

  5. 降维投影: 将原始数据投影到由投影方向所确定的低维空间中。

  6. 分类: 在低维空间中使用任何分类算法(如最近邻算法)对投影后的样本进行分类。

总的来说,LDA通过最大化类间散度和最小化类内散度的比值来实现分类,从而找到一个最优的投影方向,使得不同类别之间的分离程度最大化。

LDA(线性判别分析)在实际应用中具有许多优势,但也存在一些缺点。下面是关于LDA的应用、优势和缺点的一些主要方面:

应用:

1. **模式识别和分类:** LDA广泛应用于模式识别和分类问题。它可以用于处理图像分类、文本分类、生物信息学中的序列分类等。

2. **特征降维:** LDA可以用于特征降维,即通过将高维数据投影到低维空间来减少数据维度,同时保留最重要的信息。

3. **人脸识别:** LDA在人脸识别领域有着重要的应用。通过LDA可以对人脸图像进行降维和分类,从而实现人脸识别。

4. **语音识别:** LDA也可以用于语音识别任务中,对语音特征进行降维和分类,从而实现语音信号的识别和理解。

优势:

1. **考虑类别间差异:** LDA在降维过程中考虑了类别之间的差异,因此投影后的低维表示更容易进行分类。

2. **最大化类间距离:** LDA的目标是最大化不同类别之间的距离,从而使得不同类别更容易区分。

3. **降维效果好:** LDA不仅可以用于分类,还可以用于特征降维,且通常有很好的降维效果,可以减少数据维度并保留大部分有用信息。

缺点:

1. **对数据分布的假设:** LDA假设数据服从多元正态分布,并且各个类别的协方差相等。如果数据不满足这些假设,可能导致LDA的性能下降。

2. **对异常值敏感:** LDA对异常值较为敏感,如果数据中存在异常值,可能会影响到降维和分类的结果。

3. **可能过拟合:** 当类别之间的样本数量差异较大时,LDA可能会过拟合,导致对少数类别的分类效果较差。

4. **非线性不可分数据处理困难:** LDA是一种线性方法,对于非线性可分的数据,其分类性能可能较差。

3、两分类-软分类-概率判别模型-Logistic 回归(软分类)

利用贝叶斯定理建模

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        p(C_1|x)=\frac{p(x|C_1)p(C_1)}{p(x|C_1)p(C_1)+p(x|C_2)p(C_2)}

a=\ln\frac{p(x|C_1)p(C_1)}{p(x|C_2)p(C_2)},代入方程:

                                                        p(C_1|x)=\frac{1}{1+\exp(-a)}

                                                             这就是Logistic Sigmoid 函数。

怎么使用?就是令​​​​a=w^Tx即可。

因为是二分类所以标签一个是1,另一个是0:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        p(y|x)=p_1^yp_0^{1-y}

对上面取log,就是损失函数:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \hat{w}=\mathop{argmax}_wJ(w)=\mathop{argmax}_wlogp(Y|X)=\mathop{argmax}_w\sum\limits_{i=1}^N(y_i\log p_1+(1-y_i)\log p_0)

由于sigmoid函数的非线性和似然函数的形式,无法直接求解最大化似然函数的参数,因此通常使用梯度上升法等迭代优化算法来逼近最优参数。

                                            J'(w)=\sum\limits_{i=1}^Ny_i(1-p_1)x_i-p_1x_i+y_ip_1x_i=\sum\limits_{i=1}^N(y_i-p_1)x_i

Logistic回归是一种常用的分类算法,虽然其名字中带有"回归"一词,但实际上用于解决分类问题。它的应用非常广泛,以下是一些常见的应用场景:

应用场景:

1. **二分类问题**:Logistic回归常用于解决二分类问题,如垃圾邮件过滤、信用评分等。

2. **多分类问题**:通过一对多(One-vs-All)或一对一(One-vs-One)等策略,Logistic回归也可以用于多分类问题,如手写数字识别、文本分类等。

3. **预测概率**:除了输出分类结果外,Logistic回归还可以输出样本属于某个类别的概率,因此在需要得到分类概率的场景中也很有用,如广告点击率预测。

4. **特征选择**:Logistic回归可以通过特征的系数来衡量特征对分类的贡献,进而进行特征选择。

5. **评分卡模型**:在金融风控领域,Logistic回归常用于构建评分卡模型,评估个人信用风险。

优点:

1. **简单高效**:Logistic回归计算简单,易于实现,运行速度快。

2. **可解释性强**:Logistic回归模型的参数可以解释为特征对分类的影响程度。

3. **适用性广泛**:可以处理二分类和多分类问题,适用于线性可分和线性不可分的情况。

4. **不容易过拟合**:相对于高度复杂的模型,Logistic回归在样本量足够大的情况下不容易过拟合。

缺点:

1. **线性假设**:Logistic回归基于线性假设,不能很好地处理特征之间的复杂非线性关系。

2. **对异常值敏感**:Logistic回归对异常值比较敏感,需要预处理或者采用robust的方法来处理异常值。

3. **特征工程关键**:Logistic回归的性能依赖于特征工程的质量,对特征的选择和变换要求较高。

4. **无法处理缺失值**:Logistic回归对缺失值敏感,需要先对缺失值进行处理。

虽然Logistic回归存在一些局限性,但在许多实际应用中,由于其简单高效的特点,仍然是一个常用的分类算法。

4、 两分类概率生成模型-高斯判别分析(软分类)GDA

生成模型就是对联合概率建模,采用 MAP方法。此模型提出三个假设

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        y\sim Bernoulli(\phi)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        x|y=1\sim\mathcal{N}(\mu_1,\Sigma)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​x|y=0\sim\mathcal{N}(\mu_0,\Sigma)

损失函数:

                         \mathop{argmax}_{\phi,\mu_0,\mu_1,\Sigma}\log p(X|Y)p(Y)=\mathop{argmax}_{\phi,\mu_0,\mu_1,\Sigma}\sum\limits_{i=1}^N (\log p(x_i|y_i)+\log p(y_i))\nonumber\\ =\mathop{argmax}_{\phi,\mu_0,\mu_1,\Sigma}\sum\limits_{i=1}^N((1-y_i)\log\mathcal{N}(\mu_0,\Sigma)+y_i\log \mathcal{N}(\mu_1,\Sigma)+y_i\log\phi+(1-y_i)\log(1-\phi))

然后求导,不使用梯度法。

​​​​​​​

高斯判别分析(Gaussian Discriminant Analysis,GDA)是一种常见的概率生成模型,用于解决两分类问题。在GDA中,假设每个类别的样本数据都符合多维高斯分布。

应用场景:

1. **医学诊断**:GDA可以用于医学领域中的疾病诊断,如癌症预测、疾病风险评估等。

2. **金融风控**:在金融领域,GDA可用于信用评分、欺诈检测等风险管理任务。

3. **文本分类**:GDA可以用于文本分类任务,如垃圾邮件过滤、情感分析等。

4. **生物信息学**:在生物信息学中,GDA可用于基因分类、蛋白质结构预测等。

优点:

1. **考虑了特征间的协方差**:GDA考虑了各个特征之间的协方差,因此在特征之间有相关性的情况下表现较好。

2. **生成模型**:GDA是一种概率生成模型,可以学习到数据的生成过程,因此对数据的分布具有较好的建模能力。

3. **软分类**:GDA给出了每个样本属于每个类别的概率,因此可以进行软分类,提供了更加丰富的信息。

缺点:

1. **对数据分布有假设**:GDA对数据分布有严格的假设,即每个类别的样本数据都符合多维高斯分布,因此如果数据不符合该假设,则模型的性能可能会受到影响。

2. **需要估计大量参数**:对于具有较多特征的数据集,GDA需要估计大量参数,特别是协方差矩阵,这可能导致参数估计的不稳定性。

3. **不适用于非线性问题**:GDA假设数据分布是高斯分布,因此对于非线性问题的建模能力有限,无法很好地处理非线性关系。

5、朴素贝叶斯(生成模型)

使用相互独立假设,让特征之间相互独立了,当特征是离散满足多分类分布。当x连续时满足正态分布。

于是后验为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​  p(y|x)=\frac{p(x|y)p(y)}{p(x)}=\frac{\prod\limits_{i=1}^pp(x_i|y)p(y)}{p(x)}

直接贝叶斯估计,不需要梯度法。

朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理和特征条件独立性假设的分类算法。尽管它的假设相对简单,但在许多实际应用中表现出色。以下是朴素贝叶斯的应用、优点和缺点:

应用场景:

1. **文本分类**:朴素贝叶斯广泛应用于文本分类问题,如垃圾邮件过滤、情感分析、新闻分类等。

2. **情感分析**:用于分析社交媒体上用户的情感倾向,如判断评论是正面的还是负面的。

3. **推荐系统**:在协同过滤中,朴素贝叶斯可以用于判断用户对商品的偏好。

4. **医学诊断**:用于医学领域中的疾病预测和诊断,如肿瘤分类、疾病诊断等。

5. **金融风控**:用于信用评分和欺诈检测,帮助银行和金融机构评估借款人的信用风险。

优点:

1. **简单高效**:朴素贝叶斯算法简单易懂,易于实现,计算效率高。

2. **适用于小样本**:即使在小样本情况下,朴素贝叶斯也能够表现出很好的性能。

3. **对噪声不敏感**:朴素贝叶斯对于缺失数据和噪声的处理能力较强,具有一定的鲁棒性。

4. **可解释性强**:朴素贝叶斯提供了直观的概率估计,对于预测结果的解释比较容易理解。

5. **处理高维数据**:朴素贝叶斯在处理高维数据集时表现良好,并且不容易受到维度灾难的影响。

缺点:

1. **对特征独立性的假设**:朴素贝叶斯算法假设各个特征之间相互独立,这在某些情况下可能不符合实际情况,导致模型性能下降。

2. **欠拟合问题**:由于其对数据分布的简化假设,朴素贝叶斯有时候会产生欠拟合问题,特别是在特征之间存在复杂的关联时。

3. **类别平衡影响**:朴素贝叶斯对类别不平衡的数据较为敏感,可能会导致样本数量较少的类别被较多的类别掩盖。

4. **无法处理连续性特征的变量**:朴素贝叶斯假设所有特征都是离散的,因此无法直接处理连续性特征的变量,需要通过离散化或者使用其他方法进行处理。

尽管朴素贝叶斯算法存在一些限制,但在许多实际应用中,由于其简单高效的特性,仍然是一个常用的分类算法。

  • 39
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值