机器学习(周志华)学习笔记(二)

机器学习(周志华)学习笔记(一)


目录

学习内容:

三、线性模型

3.1 基本形式

3.2 线性回归

3.3 对数几率回归

3.4 线性判别分析(LDA)

3.5 多分类问题

3.6  类别不平衡

学习时间:


学习内容:

三、线性模型

3.1 基本形式

线性模型试图学得一个通过属性的线性组合来进行预测的函数,即:

f(x)=w_{1}x_{1}+w_{2}x_{2}+....w_{d}x_{d}+b

一般用向量形式写为:

       f(x)=w^{T}x+b

其中w和b学到之后,模型就确定下来。w是每一项属性x_{i}的权重系数矩阵。

下面将介绍几种经典的线性模型。

3.2 线性回归

在给定数据集D={\left \{ \right.(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{m},y_{m})}\left. \right \}里做线性回归,学得一个线性模型。本质即为确定权重系数w。令:

f(x_{i})\simeq y_{i}

如何确定w和b?

->均方误差最小法(在线性回归中即为最小二乘法,试图找到一条直线,使所有样本到直线上的欧氏距离之和最小)

从上面的思想过渡到多元线性回归、对数线性回归

y=w^{T}x+b                                             (多元线性回归)

ln y= w^{T}x+b                                         (对数线性回归)

其中对数线性回归,实际是是让e^{w^{T}x+b}逼近y,形式上仍是线性回归。但至此我们只能对数据集回归出两种线(直线、e^{x}曲线),但这远远不能满足具有其它潜在关系的数据集。故更一般地,考虑单调可微函数g(·):

y=g^{-1}(w^{x}+b)

这样得到的模型称为“广义线性模型”,其中函数g(·)称为联系函数。现在我们可对大部分具有线性关系的数据集进行回归。

3.3 对数几率回归

上述我们解决了利用线性模型进行回归学习,但若要做分类任务该怎么办?

-> 特殊的g(·)函数

理想情况下,单位阶跃函数是最好的选择。但是单位阶跃函数不连续,不满足可微。所以我们需要找到近似单位阶跃函数的代替品,并希望它单调可微。而对数几率函数正是这样一个常用的替代函数。

y=\frac{1}{1+e^{-z}}

在这里我们要特别注意,虽然名字是对数几率回归,但实际上确实一种分类学习方法。

如何确定w和b?

-> 极大似然法

3.4 线性判别分析(LDA)

LDA是一种经典的线性学习方法,也叫Fisher判别分析。

LDA的思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离。在对新样本进行分类时,将其投影投影到这条直线上,再根据投影的位置点来确定新样本的类别。

当两类数据同先验、满足高斯分布且协方差相等时,LDA可达到最优分类。

投影的操作可以减少样本点的维数,并且投影过程中使用了类别信息,因此LDA常被视为一种经典的监督降维技术。

3.5 多分类问题

有些二分类方法可以直接推广到多分类,但更多情况下,是利用二分类学习器来解决多分类问题。

多分类学习的基本思路是“拆解法”,即将多分类任务拆分为若干个二分类任务求解。其中最经典的拆分策略有三种:“一对一”OvO,“一对其余”OvR,“多对多”MvM。

        OvO:将N个类别两两配对,从而产生N(N-1)/2个分类问题(分类器)。在测试阶段,将新样本同时提交给所有分类器,并产生N(N-1)/2个结果,最终结果通过投票产生。

        OvR:每次将一个类的样例作为正例,所有其他类的样例作为反例;从而训练N个分类器。在测试时若仅有一个分类器预测为正类,则对应的类别标记为最终分类;若有多个分类器预测为正类,则通常考虑分类器的置信度,选择置信度最大的类别标记作为分类结果。

        MvM:每次将若干个类作为正类,若干个其它类作为反类。但正反类构造必须有特殊的设计,不能随便选取。这里纠错输出码(EOOC)就是一种最常见的MvM技术。ECOC工作过程分为两步:

        ①编码:对N个类别做M次划分,每次划分将一部分化为正,一部分化为反,从而形成一个二分类训练集,这样一共产生M个训练集,可以训练M个分类器。

        ②解码:M个分类器分别对样本进行预测,这些预测标记组成一个编码,将这个预测编码与每个类别的各自编码进行编码,返回其中距离最小的类别作为预测结果。

一般来说。对于同一个学习任务,ECOC编码越长,纠错能力越强;对于同等长度的编码,理论上来说,任意两个类别之间的编码距离越远,纠错能力越强。

3.6  类别不平衡

是指分类任务中不同类别的训练样例数目差别很大的情况。如何解决?

->欠采样:去除一些样例数较多的类别样本。

->过采样:添加一些样例数较少的类别样本。

->再缩放/阈值移动:直接基于原始训练集进行学习,但在预测时嵌入:

       \frac{y^{'}}{1-y^{'}}=\frac{y}{1-y}\ast \frac{m^{-}}{m^{+}}

其中m^{-}是反例数目,m^{+}是正例数目


学习时间:

15:30-17:04


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴听到你正在学习机器学习》这本经典的教材,下面我为你提供第十四章概率图模型的Python实现学习笔记。 ## 1. 朴素贝叶斯分类器 ### 1.1 数据准备 在本章中,我们将使用著名的鸢尾花数据集进行分类。首先,我们可以从sklearn库中导入该数据集。 ```python from sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target ``` ### 1.2 朴素贝叶斯分类器实现 接下来,我们可以使用sklearn库中的朴素贝叶斯分类器进行分类,具体实现如下: ```python from sklearn.naive_bayes import GaussianNB from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) gnb = GaussianNB() gnb.fit(X_train, y_train) y_pred = gnb.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` ### 1.3 结果分析 运行上述代码后,我们可以得到该模型在测试集上的准确率,结果如下所示: ``` Accuracy: 1.0 ``` 可以看出,该模型在鸢尾花数据集上表现出色,准确率达到了100%。 ## 2. 隐马尔可夫模型 ### 2.1 数据准备 在本节中,我们将使用一个简单的例子来介绍隐马尔可夫模型的实现。假设我们有一个长度为100的序列,每个位置上的值都是0或1,其中0和1出现的概率分别为0.6和0.4。我们可以使用numpy库生成这个序列。 ```python import numpy as np np.random.seed(42) sequence = np.random.choice([0, 1], size=100, p=[0.6, 0.4]) ``` ### 2.2 隐马尔可夫模型实现 接下来,我们可以使用hmmlearn库中的隐马尔可夫模型进行序列建模,具体实现如下: ```python from hmmlearn import hmm model = hmm.MultinomialHMM(n_components=2) model.fit(sequence.reshape(-1, 1)) logprob, states = model.decode(sequence.reshape(-1, 1)) print('Sequence:', sequence) print('States:', states) ``` ### 2.3 结果分析 运行上述代码后,我们可以得到该模型对序列的建模结果,结果如下所示: ``` Sequence: [0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] States: [1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] ``` 可以看出,模型对序列进行了建模,并输出了每个位置上的状态,其中0表示“假”,1表示“真”。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值