黑马程序员3天快速入门python机器学习_哔哩哔哩_bilibili
机器学习是人工智能的一个实现途径
深度学习是机器学习一个方法发展而来
机器学习是从数据
中自动获得模型
,并利用模型对未知数据进行预测
。
数据集: 特征值 + 目标值
目标值 | 分类 |
---|---|
类别 | 分类问题 |
连续型的数据 | 回归问题 |
K-近邻算法、贝叶斯算法、决策树和随机森林、逻辑回归
线性回归、岭回归
目标值 | 分类 |
---|---|
无 | 无监督学习 |
聚类 K-means
kaggle
UCI数据集
scikit-learn
测试集 20% ~ 30%
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已
机器学习算法 - 统计方法 - 数学公式
单词作为特征
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
(深度学习。。。)
传统较小数据场景
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′′ 为最终结果
X ′ = x − m e a n σ X'=\frac{x-mean}{\sigma} X′=σx−mean
注:作用于每一列,mean 为平均值, σ \sigma σ 为标准差。
降低特征的个数,得到特征与特征之间不相关。
特征选择
主成分分析
皮尔逊相关系数:
公式:
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 : 高度线性相关
高维 --> 低维 ,更可能保留有用信息
应用:回归分析、聚类分析…
根据‘邻居’ --> 推断‘类别’
如果一个样本在特征空间中,K个最相似(即特征空间中最邻近)的样本的大多数属于一个类别,
则该样本也属于这个类别。
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
简单、易于理解、易于实现、无需训练
假定特征与特征之间是独立的
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)
为了防止计算出的分类概率为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为训练文档中统计出的特征词个数。
特征的先后顺序 --> 高效决策
香农 :消除不定性的东西
信息的衡量,信息量
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)
特征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∣
多个决策树
生成多个预测/模型,选出最优做出预测
让评估模型更加准确可靠
训练集 + 验证集
测试集
利用交叉验证来评估,选择最合适K值。
函数关系 --> 特征值和目标值关系
公式:
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⎠ ⎞
线性模型有两种
自变量一次
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…都一次项
线性关系都是线性模型,线性模型不一定是线性关系。
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
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)
均方误差:
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
梯度下降(原始),需要算所有样本值–>梯度。
随机梯度下降,一次迭代只考虑一个样本。
随机平均梯度
训练集上表现很好,测试集表现不好。(模型过于复杂)
解决方案:
正则化
训练集上表现不好,测试集表现也不好。(模型过于简单)
解决方案:
增加数据的特征数量
使一些特征的权重直接为
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∣
使一些特征的权重接近于
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
带L2正则化的线性回归
正面/反面
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
———— 线性回归的输出就是逻辑回归的输入
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为阈值。
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)优化
梯度下降优化算法
正例 | 假例 | |
---|---|---|
正例 | 真正例TP | 伪反例FN |
假例 | 伪正例FP | 真反例TN |
精确率: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
TPR = TP/(TP + FN) - 所有真实类别为1的样本中,预测类别为1的比例
FPR = FP/(FP + TN) - 所有真实类别为0的样本中,预测类别为1的比例
在 [0.5 , 1],越接近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越不好