机器学习--线性模型

线性模型

分类:把多种数据进行区分

回归:归纳出某种数据的分布规律

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

公式如下:

# x为特征值,w为权重,b为偏值

线性回归

## 转化为公式时,需要把特征值数值化:

                1.若数据有“序” (order) 的关系,则连续化 (按序赋值)

                2.若数据无序,则用向量编码(0&1)

                   * 若一个离散属性有k个可能的取值,则转化为一个k维的向量

求解过程:

        ** 最小二乘参数估计:对w,b求偏导,然后让导数为0

得到闭式(closed-form)解

 闭式解 vs 数值解

闭式解:

        解析解(又称“”闭式解“),是指通过严格的公式所求得的解。即包含分式、三角函数、指数、对数甚至无限级数等基本函数的解的形式。给出解的具体函数形式,从解的表达式中就可以算出任何对应值。解析解为一封闭形式的函数,因此对任一独立变量,皆可将其代入解析函数求得正确的相依变量。因此,解析解也称为闭式解。

 ** 解析法

        用来求得解析解的方法称为解析法,解析法是常见的微积分技巧,如分离变量法等。

数值解:

        数值解(numerical solution)是采用某种计算方法,如有限元的方法, 数值逼近,插值的方法, 得到的解.别人只能利用数值计算的结果, 而不能随意给出自变量并求出计算值。


** 当无法藉由微积分技巧求得解析解时,这时便只能利用数值分析的方式来求得其数值解了。数值方法变成了求解过程重要的媒介。

多元(Multi-variate)线性回归 

求解过程:

# 把方程简化为增广矩阵

# 矩阵有逆时:直接算 => 解方程组;

# 逆不存在时:加一个限制 => 加上偏好

线性模型变化

可以对线性模型稍加变化,用来求解非线性模型。  例如👇

 广义(Generalized)线性模型

联系函数

        把线性回归产生的结果真正要的结果两者联系起来的函数        

 ## 关键在于如何用这个回归的模型来解分类问题


对率回归

二分类任务

 得到的为理想的“单位阶跃函数” (unit-step function)

 

# 不够光滑且有间断点 -> 性质不好,需找“替代函数” (surrogate function)

## 常用单调可微、任意阶可导的函数作为替代函数

将上式的单位阶跃函数替代为对数几率函数(logistic function),简称“对率函数"

                        

图像如下👇

# 红色为单位阶跃函数,黑色为对数几率函数

对率回归的优点

        1.无需事先假设数据分布

        2.可得到“类别”的近似概率预测

        3.可直接应用现有数值优化算法求取最优解

** 对率回归是分类学习算法!!不是回归算法!! why?👇

        这个回归模型有联系函数的处理,是个广义的线性模型,因此可以做分类

对率回归求解

求解思路: 

        把非凸函数转化为凸函数从而能够求偏导

常用梯度下降来解原因:

        1.多元时,x不是一维标量,而是很多维时,此时需要求逆,而有时这个逆时不存在的,这时就要想各种办法去近似它,很少能通过直接求导让导数为零而得到最优解

                # 多元回归中w的方程

        2.梯度下降算法中 w = w(上一轮) + Δw,是一个迭代的解法,比较容易变形化,比较适合用计算机来做,能够更好地利用计算机的优势


** 线性模型做“分类”

两种基本思路:

        1.先做线性回归,然后找一个联系函数,把分类结果和回归结果联系起来 eg. 对率回归

        2.“直接”做分类

线性判别分析(Linear Discriminant Analysis)

eg. 将上图加号跟减号分类 -> 让同类符号尽可能近,异类符号尽可能远 -> 把所有向量的坐标点投影到一条直线上进行距离的比较 【“监督降维”技术】👇

LDA

        Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一种有监督的(supervised)线性降维算法
 

LDA的目标 

  最大化广义瑞利商(generalized Rayleigh quotient) => 使得降维后的数据点尽可能地容易被区分

        

最大瑞丽商: 

        #其中起作用的是w的方向

求解思路:

**奇异值分解

        奇异值分解(Singular Value Decomposition, SVD)是一种线性代数的重要工具,用于将一个矩阵分解成三个更简单的矩阵的乘积。

        它能够有效地降低矩阵维度,同时保持信息的关键特征。在机器学习领域,例如PCA(主成分分析)就是利用SVD来进行降维。

类内散度矩阵(within-class scatter matrix)

——只考虑同类对象内部的分散程度

#上式为第零类协方差矩阵和第一类协方差矩阵之间的关系

类间散度矩阵(between-class scatter matrix)

## 两者都是对称阵 -> 两者间求关系无关顺序

LDA的多类推广

假定有N个类,

# 类似上面的分类:相同的类团的比较紧,不同类离得比较远

## 

# tr (trace)迹:特征值的和 除以 主对角线元素的和

多分类学习——拆解法

        将一个多分类任务拆分为若干个二分类任务

 两类做法:

             1.One VS One (OvO):每次考虑一个类作为正类,另一个类作为负类,所有的两两配对

                                                    从而得到模型

                        优劣:训练N(N-1)/2个分类器,存储开销和测试时间大;

                                   训练只用两个类的样例,训练时间短,能够更好地做并行化

              2.One VS Rest (OvR):每次选取一个作为正类,其余的作为负类

                        优劣:训练N个分类器,存储开销和测试时间小;

                                   训练用到全部训练样例,训练时间长。

        # 最终结果选取出现最多次的结果;若出现次数相同 -> 考虑置信度

        # 预测性能取决于具体数据分布,多数情况下两者差不多


类别不平衡(class-inbalance)

        不同类别的样本比例相差很大;“小类”往往更重要

基本思路:

# 将原先的用1/2为切分点做划分推广到任意比例做划分

基本策略“再缩放”(rescaling)

然而,精确估计m-/m+通常很困难 -> 若直接用正负类的数据量带入则必须假设训练集为无偏采样

解决办法👇

常见类别不平衡学习方法

· 过采样(oversampling):

        让小类增加到与大类一样多 -> SMOTE

SMOTE --Nitech chawla

SMOTE算法的基本思想就是对少数类别样本进行分析和模拟,并将人工模拟的新样本添加到数据集中,进而使原始数据中的类别不再严重失衡。该算法的模拟过程采用了KNN技术,模拟生成新样本的步骤如下:

  ①采样最邻近算法,计算出每个少数类样本的K个近邻;

  ②从K个近邻中随机挑选N个样本进行随机线性插值;

  ③构造新的少数类样本;

  ④将新样本与原数据合成,产生新的训练集.

· 欠采样(undersampling):

        把大类变小到与小类一样多 -> EasyEnsemble

EasyEnsemble

        EasyEnsemble算法是在大类里面取出与小类相同的数据量样本出来跟小类做模型,使得每一个子模型都是均衡的,重复多次,最后通过投票等办法结合,得到最终结果。

        该方法能有效防止一些很有价值的大类被错误丢掉,利用到集成学习能够使精度得到提高。

· 阈值移动(threashold-moving):

        移动切分点 (基于上面提到的基本思路),改变划分比例

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值