机器学习笔记

机器学习

黑马程序员3天快速入门python机器学习_哔哩哔哩_bilibili


1. 概述

1.1 机器学习、人工智能、深度学习关系

  • 机器学习是人工智能的一个实现途径

  • 深度学习是机器学习一个方法发展而来

1.2 定义

​ 机器学习是从数据中自动获得模型,并利用模型对未知数据进行预测

  • 数据
  • 模型
  • 预测

1.3 算法分类

数据集: 特征值 + 目标值

1.3.1 监督学习
目标值 分类
类别 分类问题
连续型的数据 回归问题
(1)分类

​ K-近邻算法、贝叶斯算法、决策树和随机森林、逻辑回归

(2)回归

​ 线性回归、岭回归

1.3.2 无监督学习
目标值 分类
无监督学习

​ 聚类 K-means

1.4 开发流程

  1. 获取数据
  2. 数据处理
  3. 特征工程
  4. 机器学习算法训练 - 模型
  5. 模型评估
  6. 应用

1.5 资料

  • 实战类书籍
  • 机器学习 - 周志华 南京大学 西瓜书
  • 统计学习方法 - 李航 清华大学出版社
  • 深度学习 - 人民邮电出版社 花书

2. 特征工程

2.1 数据集

2.1.1 可用数据集

​ kaggle

​ UCI数据集

​ scikit-learn

2.1.2 数据集划分

​ 测试集 20% ~ 30%

2.2 特征工程

​ 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已

2.2.1 特征抽取/特征提取

机器学习算法 - 统计方法 - 数学公式

(1)字典特征提取
  • 类别 --> one-hot编码
(2)文本特征提取

单词作为特征

  • 特征词出现个数
  • TF-IDF

TF-IDF文本特征提取: – 重要程度

**tf-idf作用:**评估一字词对于一个文件或一语料库中的其中一份文件重要程度

公式:
t f i d f i , j = t f i , j ×   i d f i tfidf_{i,j}=tf_{i,j} \times\ idf_{i} tfidfi,j=tfi,j× idfi
注:

  • tf : 词频,特定词语在文章出现频率。

  • idf: 逆向文档频率,词语普遍重要性度量。 idf = log10 ( 总文件数目 / 包含该词语文件数目 )

例:一共有10000篇文章,10篇文章包含词1,1000篇文章包含词2。现有A、B两篇文章,都有100词,文章A出现1次词1,文章B出现10次词2,判断A与B文章的重要程度。

10000篇文章 – 语料库

10篇文章 – 词1

1000篇文章 – 词2

A( 100词 ): 1次“词1”

​ tf: 1 / 100 = 0.01

​ idf: log10 ( 10000 / 10 ) = 4

​ tf-idf = tf * idf = 0.01 * 4 = 0.04

B( 100词 ): 10次“词2”

​ tf: 10 / 100 = 0.1

​ idf: log10 ( 10000 / 1000 ) = 1

​ tf-idf = tf * idf = 0.1 * 1 = 0.1

(3)图像特征提取

(深度学习。。。)

2.2.2 特征预处理
  • 无量纲化
    • 归一化
    • 标准化
(1)归一化

传统较小数据场景
X ′ = x − m i n m a x − m X ′ ′ = X ′ ∗ ( m x − m i ) + m i X'=\frac{x-min}{max-m} \\ X''=X'*(mx-mi)+mi X=maxmxminX′′=X(mxmi)+mi

注: 作用于每一列,max 为一列最大值、min 为一列最小值,mx 和 mi 为指定区间值,通常默认mx为1、mi为0, X ′ ′ X'' X′′ 为最终结果

(2)标准化

X ′ = x − m e a n σ X'=\frac{x-mean}{\sigma} X=σxmean

注:作用于每一列,mean 为平均值, σ \sigma σ 为标准差。

2.2.3 特征降维

降低特征的个数,得到特征与特征之间不相关。

  • 特征选择

  • 主成分分析

(1)特征选择
  • 过滤式
    • 方差选择法 ———— 过滤方差小的
    • 相关系数 ———— 特征与特征之间的相关程度

皮尔逊相关系数:

公式:
r = n ∑ x y − ∑ x ∑ y n ∑ x 2 − ( ∑ x ) 2 n ∑ y 2 − ( ∑ y ) 2 r = \frac{n\sum xy - \sum x\sum y }{\sqrt{n\sum x^2 - (\sum x)^2}\sqrt{n\sum y^2 - (\sum y)^2}} r=nx2(x)2 ny2(y)2 nxyxy

特点:

​ 介于 -1~1 之间

  • r > 0 : 表示两变量正相关
  • r < 0 : 表示两变量负相关
  • |r| < 0.4 : 低度相关
  • 0.4 ≤ \le |r| < 0.7 : 显著性相关
  • 0.7 ≤ \le |r| <1 : 高度线性相关
  • 嵌入式
    • 决策树
    • 正则化
    • 深度学习
(2)主成分分析

高维 --> 低维 ,更可能保留有用信息

应用:回归分析、聚类分析…


3. 分类算法

3.1 K-近邻算法(KNN)

根据‘邻居’ --> 推断‘类别’

3.1.1 定义

​ 如果一个样本在特征空间中,K个最相似(即特征空间中最邻近)的样本的大多数属于一个类别,则该样本也属于这个类别。

3.1.2 距离公式
(1)欧氏距离

​ a(a1,a2,a3),b(b1,b2,b3)
( a 1 − b 1 ) 2 + ( a 2 − b 2 ) 2 + ( a 3 − b 3 ) 2 \sqrt{(a_1 - b_1)^2 + (a_2 - b_2)^2 +(a_3 - b_3)^2} (a1b1)2+(a2b2)2+(a3b3)2

(2)曼哈顿距离 ———— 绝对值距离
(3)明可夫斯基距离
3.1.3 问题
  • K值过大,样本不均衡影响;
  • K值过小,样本异常值影响;
3.1.4 总结
(1)优点

​ 简单、易于理解、易于实现、无需训练

(2)缺点
  • 必须指定K值,K值选择不当,则分类精确度不能保证
  • 惰性算法,对测试样本的计算量大,内存开销大

3.2 朴素贝叶斯算法

假定特征与特征之间是独立的

3.2.1 贝叶斯公式

P ( C ∣ W ) = P ( W ∣ C ) P ( C ) P ( W ) P(C|W)=\frac{P(W|C)P(C)}{P(W)} P(CW)=P(W)P(WC)P(C)

3.2.2 应用场景
  • 文本分类
  • 单词作为特征
3.2.3 拉普拉斯平滑系数

为了防止计算出的分类概率为0
P ( F 1 ∣ C ) = N i + α N + α m P(F1|C)=\frac{N_i + \alpha}{N + \alpha m} P(F1∣C)=N+αmNi+α
注: α \alpha α 为指定的系数一般为1,m为训练文档中统计出的特征词个数。

3.2.4 总结
  • 优点
    • 对缺失数据不敏感,算法简单,常用于文本分类
    • 分类准确度高,速度快
  • 缺点
    • 由于使用了样本属性独立性的特征关联,所以如果特征属性有关联时效果不好

3.3 决策树

特征的先后顺序 --> 高效决策

3.3.1 信息论基础
(1)信息

​ 香农 :消除不定性的东西

(2)信息熵

​ 信息的衡量,信息量
H ( X ) = − ∑ i = 1 n P ( x i ) l o g b P ( x i ) H(X)=-\sum_{i=1}^nP(x_i)log_bP(x_i) H(X)=i=1nP(xi)logbP(xi)

3.3.2 决策树划分依据之一 ———— 信息增益

​ 特征A对训练数据集D的数据增益g(D,A):
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)H(DA)

​ 信息熵:
H ( D ) = − ∑ k = 1 K ∣ C k ∣ ∣ D ∣ l o g ∣ C k ∣ ∣ D ∣ H(D)=-\sum_{k=1}^K\frac{|C_k|}{|D|}log\frac{|C_k|}{|D|} H(D)=k=1KDCklogDCk
​ 条件熵:
H ( D ∣ A ) = ∑ i = 1 n ∣ D i ∣ ∣ D ∣ H ( D i ) = − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ ∑ k = 1 K ∣ D i k ∣ ∣ D i ∣ l o g ∣ D i k ∣ ∣ D i ∣ H(D|A)=\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i)=-\sum_{i=1}^n\frac{|D_i|}{|D|}\sum_{k=1}^K\frac{|D_{ik}|}{|D_i|}log\frac{|D_{ik}|}{|D_i|} H(DA)=i=1nDDiH(Di)=i=1nDDik=1KDiDiklogDiDik

3.3.3 总结
  • 优点
    • 可视化 - 可解释能力强
  • 缺点
    • 容易产生过拟合

3.4 随机森林

多个决策树

3.4.1 集成学习方法

​ 生成多个预测/模型,选出最优做出预测

3.4.2 什么是随机森林
  • 森林
    • 包含多个决策树的分类器
    • 输出由输出类别的众数决定
  • 随机 - 随机有放回抽样 - bootstrap
    • 训练集随机
    • 特征随机
3.4.3 总结
  • 优点
    • 有极好准确率
    • 不需要降维
    • 有效运行在大数据集上

3.5 模型选择与调优

3.5.1 交叉验证

​ 让评估模型更加准确可靠

(1)训练集

​ 训练集 + 验证集

(2)测试集

​ 测试集

3.5.2 超参数搜索 - 网格搜索

​ 利用交叉验证来评估,选择最合适K值。


4. 回归与聚类算法

4.1 线性回归

函数关系 --> 特征值和目标值关系

4.1.1原理
(1)通用公式

公式:
h ( w ) = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + b = w T x + b h(w) = w_1x_1 + w_2x_2 + w_3x_3 + ... + b = w^Tx + b h(w)=w1x1+w2x2+w3x3+...+b=wTx+b

​ 其中 w,x 可以理解为: w = ( b w 1 w 2 ) , x = ( 1 x 1 x 2 ) w = \begin{pmatrix} b\\w_1\\w_2 \end{pmatrix},x =\begin{pmatrix} 1\\x_1\\x_2 \end{pmatrix} w= bw1w2 ,x= 1x1x2

(2)线性模型
  • 线性模型有两种

    • 自变量一次

      y = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + b y = w_1x_1 + w_2x_2 + w_3x_3 + ... + b y=w1x1+w2x2+w3x3+...+b 中x1,x2,x3…都一次项

    • 参数一次(广义线性关系)

      y = w 1 x 1 + w 2 x 2 2 + w 3 x 3 3 + . . . + b y = w_1x_1 + w_2{x_2}^2 + w_3{x_3}^3 + ... + b y=w1x1+w2x22+w3x33+...+b 中w1,w2,w3…都一次项

  • 线性关系都是线性模型,线性模型不一定是线性关系。

4.1.2 线性回归的损失和优化
(1)损失函数(最小二乘法)

J ( θ ) = ( h w ( x 1 ) − y 1 ) 2 + ( h w ( x 2 ) − y 2 ) 2 + . . . + ( h w ( x m ) − y m ) 2 = ∑ i = 1 m ( h w ( x i ) − y i ) 2 \begin{aligned} J(\theta) &= (h_w(x_1) - y_1)^2 + (h_w(x_2) - y_2)^2 + ... + (h_w(x_m) - y_m)^2\\ &= \sum_{i=1}^m(h_w(x_i) - y_i)^2 \end{aligned} J(θ)=(hw(x1)y1)2+(hw(x2)y2)2+...+(hw(xm)ym)2=i=1m(hw(xi)yi)2

(2)优化方法
  • 正规方程(直接求解最小值)- 当特征多,求解慢且得不到结果,时间复杂度O(n3)

w = ( X T X ) − 1 X T y w = (X^TX)^{-1}X^Ty w=(XTX)1XTy

  • 梯度下降

w 1 : = w 1 − α ∂ c o s t ( w 0 + w 1 x 1 ) ∂ w 1 w 0 : = w 0 − α ∂ c o s t ( w 0 + w 1 x 1 ) ∂ w 1 w_1 := w_1 - \alpha\frac{\partial cost(w_0 + w_1x_1)}{\partial w_1} \\ w_0 := w_0 - \alpha\frac{\partial cost(w_0 + w_1x_1)}{\partial w_1} w1:=w1αw1cost(w0+w1x1)w0:=w0αw1cost(w0+w1x1)

4.1.3 回归性能评估

均方误差:
M S E = 1 m ∑ i = 1 m ( y i − y ˉ ) 2 MSE=\frac{1}{m}\sum_{i=1}^m(y_i - \bar{y})^2 MSE=m1i=1m(yiyˉ)2

4.1.4 梯度下降优化方法
(1)GD

​ 梯度下降(原始),需要算所有样本值–>梯度。

(2)SGD

​ 随机梯度下降,一次迭代只考虑一个样本。

(3)SAG

​ 随机平均梯度

4.2 过拟合与欠拟合

4.2.1 什么是过拟合与欠拟合
(1)过拟合

​ 训练集上表现很好,测试集表现不好。(模型过于复杂)

解决方案:

​ 正则化

(2)欠拟合

​ 训练集上表现不好,测试集表现也不好。(模型过于简单)

解决方案:

​ 增加数据的特征数量

4.2.2 正则化
(1)L1正则化 - Lasso

​ 使一些特征的权重直接为0,删除某个特征的影响

损失函数 + λ \lambda λ惩罚项 :
J ( w ) = 1 2 m ∑ i = 1 m ( h w ( x i ) − y i ) 2 + λ ∑ j = i n ∣ w j ∣ J(w) = \frac{1}{2m} \sum_{i=1}^m(h_w(x_i) - y_i)^2 + \lambda\sum_{j=i}^n|w_j| J(w)=2m1i=1m(hw(xi)yi)2+λj=inwj

(2)L2正则化(更常用)- Ridge(岭回归)

​ 使一些特征的权重接近于0,消弱某个特征的影响

损失函数 + λ \lambda λ惩罚项 :
J ( w ) = 1 2 m ∑ i = 1 m ( h w ( x i ) − y i ) 2 + λ ∑ j = i n w j 2 J(w) = \frac{1}{2m} \sum_{i=1}^m(h_w(x_i) - y_i)^2 + \lambda\sum_{j=i}^n{w_j}^2 J(w)=2m1i=1m(hw(xi)yi)2+λj=inwj2

4.3 岭回归

带L2正则化的线性回归

  • 正则化越大,权重系数越小
  • 正则化越小,权重系数越大

4.4 分类算法 - 逻辑回归与二分类

正面/反面

4.4.1 逻辑回归的原理
(1)输入

h ( w ) = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + b = w T x + b h(w) = w_1x_1 + w_2x_2 + w_3x_3 + ... + b = w^Tx + b h(w)=w1x1+w2x2+w3x3+...+b=wTx+b

———— 线性回归的输出就是逻辑回归的输入

(2)激活函数

sigmoid函数:
g ( θ T x ) = 1 1 + e − θ T x g(\theta^Tx) = \frac{1}{1 + e^{-\theta^Tx}} g(θTx)=1+eθTx1
注:

  • θ T x \theta^Tx θTx就是 h ( w ) h(w) h(w),相当于 1 1 + e − h ( w ) \frac{1}{1+e^{-h(w)}} 1+eh(w)1;

  • 输出结果是 [0 ,1] 之间一个概率值,默认0.5为阈值。

4.4.2 逻辑回归的损失与优化
(1)对数似然损失
  • 分开类别

c o s t ( h θ ( x ) , y ) = { − l o g ( h θ ( x ) ) if     y=1 − l o g ( 1 − h θ ( x ) ) if     y=0 cost(h_\theta(x),y) = \begin{cases} -log(h_\theta(x)) &\text{if \: y=1}\\ -log(1 - h_\theta(x)) &\text{if \: y=0}\\ \end{cases} cost(hθ(x),y)={log(hθ(x))log(1hθ(x))if  y=1if  y=0

  • 完整损失函数

c o s t ( h θ ( x ) , y ) = ∑ i = 1 m − y i l o g ( h θ ( x ) ) − ( 1 − y i ) l o g ( 1 − h θ ( x ) ) cost(h_\theta(x),y) = \sum_{i=1}^m-y_ilog(h_\theta(x)) - (1 - y_i)log(1 - h_\theta(x)) cost(hθ(x),y)=i=1myilog(hθ(x))(1yi)log(1hθ(x))

(2)优化

​ 梯度下降优化算法

4.4.3 精确率和召回率
(1)混淆矩阵
正例 假例
正例 真正例TP 伪反例FN
假例 伪正例FP 真反例TN
(2)精确率与召回率
  • 精确率:TP/(TP + FP)

  • 召回率:TP/(TP + FN) - 查的全不全

  • F1-score: F 1 = 2 T P 2 T P + F N + F P F1 = \frac{2TP}{2TP + FN + FP} F1=2TP+FN+FP2TP

4.4.4 ROC曲线与AUC指标
(1)TPR与FPR

​ TPR = TP/(TP + FN) - 所有真实类别为1的样本中,预测类别为1的比例

​ FPR = FP/(FP + TN) - 所有真实类别为0的样本中,预测类别为1的比例

(2)ROC曲线
(3)AUC指标

​ 在 [0.5 , 1],越接近1越好

4.5 模型保存与加载

4.6 无监督学习 - K-means算法

​ 没有目标值 - 无监督学习

  • 聚类 - 聚类后可以分类
    • k-means
  • 降维
    • PCA
4.6.1 k-means原理

找中心点

4.6.2 k-means性能评估

高内聚,低耦合

(1)轮廓系数

S C i = b i − a i m a x ( b i , a i ) SC_i=\frac{b_i-a_i}{max(b_i,a_i)} SCi=max(bi,ai)biai

(2)结论

​ [-1,1],越接近1越好,越接近-1越不好

你可能感兴趣的:(机器学习,学习,python)