机器学习--算法原理

中心极限定理
大量随机变量近似服从正态分布

回归

岭回归与lasso回归

本质就是加入正则项(范数,惩罚项),目的是为了防止过拟合,因为样本存在强势样本,会拉高或拉低数据的平均值,导致模型训练后,再预测时,会偏离的大部分样本的真实情况。
范数通用公式=闵可夫斯基距离
D ( x , y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p D(x, y) = (\sum_{i=1}^n |x_i - y_i|^p)^{\frac{1}{p}} D(x,y)=(i=1nxiyip)p1

  • p = 1 p=1 p=1时,即为曼哈顿距离
  • p = 2 p=2 p=2时,即为欧式距离
  • p → ∞ p \rightarrow \infty p时,即为切比雪夫距离

岭回归(L2正则化)
λ ∑ ω i 2 \lambda\sum{\omega}_i^2 λωi2=正则项, λ \lambda λ=0~1的权重值, ω i 2 \omega_i^2 ωi2= w 0 2 + w 1 2 + w 2 2 w_0^2+w_1^2+w_2^2 w02+w12+w22取平方再开方。(欧氏距离)先平方相加在开根号。如果是二维图像就是勾股定理。
l o s s = 1 2 ∑ i = 1 n ( y i ^ − y i ) 2 + λ ∑ ω i 2 loss=\frac{1}{2}\sum_{i=1}^n(\hat{y_i}-y_i)^2+\lambda\sum{\omega}_i^2 loss=21i=1n(yi^yi)2+λωi2lasso回归(L1正则化)
λ ∣ w ∣ \lambda |w| λw=正则项, λ \lambda λ=0~1的权重值, ∣ w ∣ |w| w的处理方式是取绝对值。(曼哈顿距离)先平方开方再相加。平方再开方就是绝对值 E = 1 n ( ∑ i = 1 N y i − y i ′ ) 2 + λ ∑ ∣ w ∣ E = \frac{1}{n}(\sum_{i=1}^N y_i - y_i')^2 + \lambda\sum|w| E=n1(i=1Nyiyi)2+λw

多项式回归

多项式回归=多元线性回归,将一元n次多项式变换成n元一次线性模型。
可以将模型复杂化,将1个特征用增加次幂的方式,增加更多特征。
一 元 多 项 式 回 归 一 个 自 变 量 w 0 + w 1 x + w 2 x 2 + w 3 x 3 = y ( 转 换 ) = w 0 + w 1 x + w 2 x 2 + w 3 x 3 三 个 自 变 量 多 元 线 性 回 归 一元多项式回归一个自变量w_0+w_1x+w_2x^2+w_3x^3=y(转换)=w_0+w_1x+w_2x2+w_3x3 三个自变量多元线性回归 w0+w1x+w2x2+w3x3=y()=w0+w1x+w2x2+w3x3线

决策树

其中一种树原理:
如何确定第一个决策的特征与条件:
分支左右两种决策:左:特征1<=值1、右:特征1>值1,将所有特征的所有值遍历计算,左+右的均方误差(mse),找出最小值的特征、值。将那个特征与值作为第一个决策的特征与条件。
mse:均方误差 y 1 y1 y1真实值、 y 1 ′ y1' y1数据平均值
( ( y 1 − y 1 ′ ) 2 + ( y 2 − y 2 ′ ) 2 + ( y 3 − y 3 ′ ) 2 + ( y 4 − y 4 ′ ) 2 ) / 4 = m s e ((y1-y1')^2+(y2-y2')^2+(y3-y3')^2+(y4-y4')^2)/4=mse ((y1y1)2+(y2y2)2+(y3y3)2+(y4y4)2)/4=mse

Boosting类模型:原理---->提升 (下一颗树在上一颗树的基础上进行提升)
Bagging 类模型:原理---->打包(所有树之间没有互相关联)

Boosting(提升)类:
AdaBoost模型(正向激励)下一棵树时,会提高对应的权重,更接近真实值。
GBDT(Gradient Boosting Decision Tree 梯度提升树)通过多轮迭代,每轮迭代产生一个弱分类器,每个分类器在上一轮分类器的残差**(残差在数理统计中是指实际观察值与估计值(拟合值)之间的差)**基础上进行训练。基于预测结果的残差设计损失函数。GBDT训练的过程即是求该损失函数最小值的过程。

Bagging (打包)类:
自助聚合
每次从总样本矩阵中以有放回抽样的方式随机抽取部分样本构建决策树,这样形成多棵包含不同训练样本的决策树,以削弱某些强势样本对模型预测结果的影响,提高模型的泛化特性。
随机森林
在自助聚合的基础上,每次构建决策树模型时,不仅随机选择部分样本,而且还随机选择部分特征,这样的集合算法,不仅规避了强势样本对预测结果的影响,而且也削弱了强势特征的影响,使模型的预测能力更加泛化。

分类

逻辑回归
t=预测值(数据×权重+偏置值)
S i g m o i d 激 活 函 数 : h = 1 1 + e − t Sigmoid激活函数:h= \frac{1}{1+e^{-t}} Sigmoidh=1+et1逻辑回归的损失函数(交叉熵):
E ( y , y ^ ) = − [ y   l o g ( y ^ ) + ( 1 − y ) l o g ( 1 − y ^ ) ] E(y, \hat{y}) = -[y \ log(\hat{y}) + (1-y)log(1-\hat{y})] E(y,y^)=[y log(y^)+(1y)log(1y^)]

决策树

信息熵,样本的:混乱程度高=纯度低。
类别占比: P ( x i ) = 当 前 类 别 / 总 类 别 P(x_i)=当前类别/总类别 P(xi)=/得到一个0~1的小数
单个类别:类别占比 × 以 l o g 2 log_2 log2为底数的 类别占比。
将所有单个类别进行求和。最后要加负号。
信 息 熵 公 式 : H = − ∑ i = 1 n P ( x i ) l o g 2 P ( x i ) 信息熵公式:H = -\sum_{i=1}^{n}{P(x_i)log_2P(x_i)} :H=i=1nP(xi)log2P(xi)

信息增益(ID3决策树原理)

信息熵= E n t ( D ) Ent(D) Ent(D),计算最大信息增益,选择该特征进行分类。
划分前的信息熵-划分后的信息熵
划分后的信息熵:划分后并不会将当前类别彻底划分干净,而是类别中依然可再次划分。
划分后:类别1(类别1.1、类别1.2)、类别2(类别2.1、类别2.2)。计算内部信息熵之后,每个类别需乘以外部(各自的类别占比)再全部相加。
信 息 增 益 : G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) 信息增益:Gain(D, a) = Ent(D) - \sum_{v=1}^{V} \frac{|D^v|}{|D|} Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

增益率(C4.5决策树)

信息增益/信息熵=增益率

基尼系数(CART决策树)

此类占比×(1-此类占比)=当前类别。所有类别求和=基尼系数

性能度量

错误率:错误的占比=错误/总数
精度:正确的占比=正确/总数

查准率、召回率、F1得分

例:100样本,50猫50狗。
预测60狗,实际预测60狗中,只有40个预测正确。狗类的查准率: 40 60 \frac{40}{60} 6040
查准率:在预测后中存在正确的占比
预测60狗,实际预测60狗中,只有40个预测正确。狗类的召回率: 40 50 \frac{40}{50} 5040 真实有50狗
召回率:预测中正确的数量与真实数量的占比
F 1 得 分 : f 1 = 2 ∗ 查 准 率 ∗ 召 回 率 查 准 率 + 召 回 率 F1得分:f1 = \frac{2 * 查准率 * 召回率}{查准率 + 召回率} F1f1=+2
分类报告可显示以上3种指标。
混淆矩阵

A类别B类别C类别
A类别311
B类别042
C类别007

混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。每一行(数量之和)表示一个真实类别的样本,每一列(数量之和)表示一个预测类别的样本。
根据混淆矩阵,查准率、召回率也可表示为:
查准率 = 主对角线上的值 / 该值所在列的和
召回率 = 主对角线上的值 / 该值所在行的和
例子:A类别=5(行),预测A类别=3(列)。
查准率=3/3,召回率=3/5

交叉验证

分类需要保持类别均衡。交叉验证划分数据集与测试集交叉验证
模型构建之后,模型训练之前,进行交叉验证

优化模型

验证曲线

先交叉验证,在绘制验证曲线评估模型。使用自定义的参数进行测试,用画图的方式来看好坏,决定参数。(一次只能验证一个参数)

学习曲线

寻找选取训练集与测试集的最有占比

支持向量机

寻找一个超平面进行线性分割,划分二分类,选取最优边界。
SVM寻找最优边界时,需满足以下几个要求:
(1)正确性:对大部分样本都可以正确划分类别;
(2)安全性:支持向量,即离分类边界最近的样本之间的距离最远;
(3)公平性:支持向量与分类边界的距离相等;
(4)简单性:采用线性方程(直线、平面)表示分类边界,也称分割超平面。如果在原始维度中无法做线性划分,那么就通过升维变换,在更高维度空间寻求线性分割超平面. 从低纬度空间到高纬度空间的变换通过核函数进行。
支持向量机:线性核函数、多项式核函数、径向基核函数

网格搜索

寻找最佳超参数,优化模型。

朴素贝叶斯

p ( A ) p(A) p(A)发生A事件的概率, p ( B ) p(B) p(B)发生B事件的概率。
P ( B ∣ A ) P(B|A) P(BA)在A条件下发生B的概率, P ( A ∣ B ) P(A|B) P(AB)在B条件下发生A的概率。

贝叶斯定理:
p ( A ) P ( B ∣ A ) = p ( B ) p ( A ∣ B ) p(A)P(B|A)=p(B)p(A|B) p(A)P(BA)=p(B)p(AB)
朴素贝叶斯分类器就是根据贝叶斯公式计算结果进行分类的模型,“朴素”指事件之间相互独立无影响.【示例一】计算诈骗短信的概率

事件概率表达式
所有短信中,诈骗短信5%P(A)= 0.05
所有短信中,含有“中奖”两个字4%P(B)= 0.04
所有短信中,是诈骗短信,并且含有“中奖”两个字50%P(B|A) = 0.5

求:收到一条新信息,含有“中奖”两个字,是诈骗短信的概率?

P ( A ∣ B ) = P ( A ) P ( B ∣ A ) / P ( B ) = 0.05 ∗ 0.5 / 0.04 = 0.625 P(A|B) = P(A) P(B|A) / P(B) = 0.05 * 0.5 / 0.04 = 0.625 P(AB)=P(A)P(BA)/P(B)=0.050.5/0.04=0.625

【示例二】计算喝酒驾车的概率

事件概率表达式
所有客人中,驾车20%P(A)= 0.2
所有客人中,喝酒10%P(B)= 0.1
所有客人中,开车并且喝酒5%P(B|A)= 0.05

求:喝过酒仍然会开车的人的比例是多少?

P ( A ∣ B ) = P ( A ) P ( B ∣ A ) / P ( B ) = 0.2 ∗ 0.05 / 0.1 = 0.1 P(A|B) = P(A) P(B|A) / P(B) = 0.2 * 0.05 / 0.1 = 0.1 P(AB)=P(A)P(BA)/P(B)=0.20.05/0.1=0.1
在sklearn中,提供了三个朴素贝叶斯分类器,分别是:

  1. GaussianNB(高斯朴素贝叶斯分类器):适合用于样本的值是连续的,数据呈正态分布的情况(比如人的身高、城市家庭收入、一次考试的成绩等等)
  2. MultinominalNB(多项式朴素贝叶斯分类器):适合用于大部分属性为离散值的数据集
  3. BernoulliNB(伯努利朴素贝叶斯分类器):适合用于特征值为二元离散值或是稀疏的多元离散值的数据集
    1)什么是朴素贝叶斯:朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。“朴素”的含义为:假设问题的特征变量都是相互独立地作用于决策变量的,即问题的特征之间都是互不相关的。

朴素贝叶斯分类的特点
① 优点

  • 逻辑性简单
  • 算法较为稳定。当数据呈现不同的特点时,朴素贝叶斯的分类性能不会有太大的差异。
  • 当样本特征之间的关系相对比较独立时,朴素贝叶斯分类算法会有较好的效果。
    ② 缺点
  • 特征的独立性在很多情况下是很难满足的,因为样本特征之间往往都存在着相互关联,如果在分类过程中出现这种问题,会导致分类的效果大大降低。
    3)什么情况下使用朴素贝叶斯:根据先验概率计算后验概率的情况,且样本特征之间独立性较强。
欧氏距离(L2范式-正则项)

相似度使用欧氏距离来进行度量. 坐标轴上两点 x 1 , x 2 x_1, x_2 x1,x2之间的欧式距离可以表示为:
∣ x 1 − x 2 ∣ = ( x 1 − x 2 ) 2 |x_1-x_2| = \sqrt{(x_1-x_2)^2} x1x2=(x1x2)2
平面坐标中两点 ( x 1 , y 1 ) , ( x 2 , y 2 ) (x_1, y_1), (x_2, y_2) (x1,y1),(x2,y2)欧式距离可表示为:
∣ ( x 1 , y 1 ) − ( x 2 , y 2 ) ∣ = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 |(x_1,y_1)-(x_2, y_2)| = \sqrt{(x_1-x_2)^2+(y_1-y_2)^2} (x1,y1)(x2,y2)=(x1x2)2+(y1y2)2
三维坐标系中 ( x 1 , y 1 , z 1 ) , ( x 2 , y 2 , z 2 ) (x_1, y_1, z_1), (x_2, y_2, z_2) (x1,y1,z1),(x2,y2,z2)欧式距离可表示为:
∣ ( x 1 , y 1 , z 1 ) , ( x 2 , y 2 , z 2 ) ∣ = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 + ( z 1 − z 2 ) 2 |(x_1, y_1, z_1),(x_2, y_2, z_2)| = \sqrt{(x_1-x_2)^2+(y_1-y_2)^2+(z_1-z_2)^2} (x1,y1,z1),(x2,y2,z2)=(x1x2)2+(y1y2)2+(z1z2)2
以此类推,可以推广到N维空间.

曼哈顿距离(L1范式-正则项)

二维平面两点 a ( x 1 , y 1 ) a(x_1, y_1) a(x1,y1) b ( x 2 , y 2 ) b(x_2, y_2) b(x2,y2)两点间的曼哈顿距离为:
d ( a , b ) = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ d(a, b) = |x_1 - x_2| + |y_1 - y_2| d(a,b)=x1x2+y1y2
推广到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)之间的曼哈顿距离为:
d ( x , y ) = ∣ x 1 − y 1 ∣ + ∣ x 2 − y 2 ∣ + . . . + ∣ x n − y n ∣ = ∑ i = 1 n ∣ x i − y i ∣ d(x,y) = |x_1 - y_1| + |x_2 - y_2| + ... + |x_n - y_n| = \sum_{i=1}^n|x_i - y_i| d(x,y)=x1y1+x2y2+...+xnyn=i=1nxiyi

聚类算法的划分

① 原型聚类

原型聚类也称“基于原型的聚类”(prototype-based clustering),此类算法假设聚类结构能通过一组原型刻画,在现实聚类任务中极为常用. 通常情况下,算法先对原型进行初始化,然后对原型进行迭代更新求解. 采用不同的原型表示、不同的求解方式,将产生不同的算法. 最著名的原型聚类算法有K-Means.

② 密度聚类

密度聚类也称“基于密度的聚类”(density-based clustering),此类算法假定聚类结构能通过样本分布的紧密程度确定. 通常情况下,密度聚类算法从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果. 著名的密度聚类算法有DBSCAN.

③ 层次聚类

层次聚类(hierarchical clustering)试图在不同层次对数据集进行划分,从而形成树形的聚类结构. 数据集的划分可以采用“自底向上”或“自顶向下”的策略. 常用的层次聚类有凝聚层次算法等.

原型聚类- k-means聚类

K均值聚类(k-means clustering)算法是一种常用的、基于原型的聚类算法,简单、直观、高效。其步骤为:

第一步:根据事先已知的聚类数,随机选择若干样本作为聚类中心,计算每个样本与每个聚类中心的欧式距离,离哪个聚类中心近,就算哪个聚类中心的聚类,完成一次聚类划分.

第二步:计算每个聚类的集合中心,如果几何中心与聚类中心不重合,再以几何中心作为新的聚类中心,重新划分聚类. 重复以上过程,直到某一次聚类划分后,所得到的各个几何中心与其所依据的聚类中心重合或足够接近为止.
注意事项:
(1)聚类数(K)必须事先已知,来自业务逻辑的需求或性能指标.
(2)最终的聚类结果会因初始中心的选择不同而异,初始中心尽量选择离中心最远的样本.

密度聚类-噪声密度(DBSCAN)

画圆圈找近的
随机选择一个样本做圆心,以事先给定的半径做圆,凡被该圆圈中的样本都被划为与圆心样本同处一个聚类,再以这些被圈中的样本做圆心,以事先给定的半径继续做圆,不断加入新的样本,扩大聚类的规模,知道再无新的样本加入为止,即完成一个聚类的划分. 以同样的方法,在其余样本中继续划分新的聚类,直到样本空间被耗尽为止,即完成整个聚类划分

DBSCAN算法中,样本点被分为三类:

  • 边界点(Border point):可以划分到某个聚类,但无法发展出新的样本;
  • 噪声点(Noise):无法划分到某个聚类中的点;
  • 核心点(Core point):除了孤立样本和外周样本以外的样本都是核心点;
    参数:
  • 邻域半径:设置邻域半径大小;
  • 最少样本数目:邻域内最小样本数量,某个样本邻域内的样本超过该数,才认为是核心点.

聚类评估参数

轮廓系数:
a是类别一的元素之间距离总和的平均值。
b是距离类别一最近的类别–类别二所有元素距离类别一的总和平均值。
max选择最大的那一个。
S ( i ) = b ( i ) − a ( i ) m a x ( b ( i ) , a ( i ) ) S(i)=\frac{b(i)-a(i)}{max(b(i), a(i))} S(i)=max(b(i),a(i))b(i)a(i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

默执_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值