机器学习
1. 概述
1.1 机器学习、人工智能、深度学习关系
-
机器学习是人工智能的一个实现途径
-
深度学习是机器学习一个方法发展而来
1.2 定义
机器学习是从数据
中自动获得模型
,并利用模型对未知数据进行预测
。
- 数据
- 模型
- 预测
1.3 算法分类
数据集: 特征值 + 目标值
1.3.1 监督学习
目标值 | 分类 |
---|---|
类别 | 分类问题 |
连续型的数据 | 回归问题 |
(1)分类
K-近邻算法、贝叶斯算法、决策树和随机森林、逻辑回归
(2)回归
线性回归、岭回归
1.3.2 无监督学习
目标值 | 分类 |
---|---|
无 | 无监督学习 |
聚类 K-means
1.4 开发流程
- 获取数据
- 数据处理
- 特征工程
- 机器学习算法训练 - 模型
- 模型评估
- 应用
1.5 资料
- 实战类书籍
- 机器学习 - 周志华 南京大学 西瓜书
- 统计学习方法 - 李航 清华大学出版社
- 深度学习 - 人民邮电出版社 花书
2. 特征工程
2.1 数据集
2.1.1 可用数据集
kaggle
UCI数据集
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′=max−mx−minX′′=X′∗(mx−mi)+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′=σx−mean
注:作用于每一列,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=n∑x2−(∑x)2n∑y2−(∑y)2n∑xy−∑x∑y特点:
介于 -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}
(a1−b1)2+(a2−b2)2+(a3−b3)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(C∣W)=P(W)P(W∣C)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=1∑nP(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(D∣A)
信息熵:
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=1∑K∣D∣∣Ck∣log∣D∣∣Ck∣
条件熵:
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(D∣A)=i=1∑n∣D∣∣Di∣H(Di)=−i=1∑n∣D∣∣Di∣k=1∑K∣Di∣∣Dik∣log∣Di∣∣Dik∣
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=1∑m(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−α∂w1∂cost(w0+w1x1)w0:=w0−α∂w1∂cost(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=1∑m(yi−yˉ)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=1∑m(hw(xi)−yi)2+λj=i∑n∣wj∣
(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=1∑m(hw(xi)−yi)2+λj=i∑nwj2
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+e−h(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(1−hθ(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=1∑m−yilog(hθ(x))−(1−yi)log(1−hθ(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)bi−ai
(2)结论
[-1,1],越接近1越好,越接近-1越不好