机器学习入门 | 必知必会的基础理论

2023-03-20  本文已影响0人  python与数据分析
文章大纲

一、什么是机器学习、数据挖掘?

1、AI是什么?

AI(人工智能)是研究开发用于模拟、延伸和扩展人的智能理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支。
AI的应用场景:必备基础 "机器学习"

机器学习的应用场景
2、机器学习是什么?

机器学习就是让机器有学习的能力,让机器通过"某种策略", 学习"历史数据"后,能够进行一定"预测"和"识别"的能力。

3、数据挖掘是什么?

数据挖掘是指从大量数据中通过算法搜索隐藏于其中信息的过程。机器学习是支撑数据挖掘的手段。从关系上看,数据挖掘包括机器学习。

4、为什么需要数据挖掘?

面临复杂且大量的新数据集时,传统数据分析计算常常遇到瓶颈,我们将常见瓶颈进行抽象。
1、高维性数据:随着5G及物联网的建设,数据量将会呈指数级的增长,常常遇到成百上千属性的维度,可想象,计算复杂度将迅速增加。
2、非结构化数据:非结构化数据也包含许多含金量的信息,例如视频、音频、文本等等,这些都是传统数据分析方法无法获取的信息。
3、自动及智能问题。传统分析方法常规流程就是"提出假设-验证假设",但这一过程劳力费神。当前的数据分析任务常常需要产生和评估数千种假设,因此需要自动、智能的手段。

注:数据挖掘非万能法则,数据分析也非所想的不堪,两者的结合应用才能更好的为业务赋能。事实上,数据挖掘是需要数据分析进行辅助的,比如数据探索,特征工程。

二、机器学习所需要的基础理论

1、某种策略(模型)、损失、模型训练和标签
1)模型是什么?以"一元线性回归"为例
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
df1 = pd.DataFrame({'用户人数':[100,200,300,400,500],'销售额(元)':[1000,2000,3000,4000,5000]})
df1.plot(x='用户人数',y='销售额(元)')
from sklearn.linear_model import LinearRegression
x = df1['用户人数'].values.reshape(-1,1)
y = df1['销售额(元)']
lr = LinearRegression()
lr.fit(x,y)
# 模型的斜率
lr.coef_
lr.predict(np.array([600]).reshape(-1,1))
假设用户人数为600,那销量是 6000 ,这是模型的预测能力。
2)损失

损失是对糟糕预测的惩罚。损失是一个数值,表示对于单个样本而言,模型预测的准确程度。如果模型的预测完全准确,则损失为零,否则损失会较大。如下图:那副图的损失更大?红色箭头表示损失,蓝色线表示预测,可见图二的模型更准确(预测值-实际值),图一的损失更大。

3)模型训练

模型训练表示通过有标签样本来学习(确定)所有权重和偏差的理想值。模型训练检查多个样本,并尝试找出可最大限度的减少损失的模型(方向)。比如:上面的线性回归,k 和 b 都是两个未知的参数 ,根据已有的样本 x 和 y 去训练模型。

y = kx + b
4)标签

标签,白话说就是模型的 y 值,比如上面的线性回归标签就是销售额,抽象的说,标签就是结论。比如:【x,y】——【用户人数,销售额】——【100,1000】,就是一个样本。

2、代价函数(损失函数)

注:MSE 常用于机器学习,但它不是唯一实用的损失函数,也不是适用于所有模型最佳的损失函数。

三、划分数据集(训练、验证、测试)
1)训练集与测试集(常见模式)

训练集:用于训练模型的子集
测试集:用于测试训练后模型的子集

2)划分注意点:

① 通常将数据集的70%作为训练集,30%作为测试集(8 : 2也行),并且挑选的测试集的特征应该与训练集的特征相同。
② 通常需要在开始构建模型之前把数据集进行划分,防止数据窥探偏误。也就是说,我们避免了解太多关于测试集中的样本特点,防止我们认为的挑选有助于测试集数据的模型。这样的结果会过于乐观,但是实际上并没有预期的那样优秀。
③ 对于时序数据集、训练集和测试集需按时间划分。比如说我目前有 1-10 月的数据,那么 1-8 月作为训练集,9-10月作为测试级。

3)流程:

借助这种划分,可以对一个样本集进行训练,然后使用不同的样本集测试模型。采用两种分类以后,工作流程可能如下所示。

4)优化后的流程:
四、交叉验证(Cross Validation)

① 将所有的数据集均匀的分成五份
② 不重复的每次取出其中一份做测试集,用其他四份做训练集训练模型,之后计算该模型在测试集上的MSE
③ 将五次的MSE取平均得到的最后的MSE,作为评价模型的指标

五、泛化能力与过拟合
为什么会产生过拟合?
如何降低过拟合?
所以,总的来说,一个好的模型,损失函数尽可能的小,泛化能力尽可能大。
六、模型类别
  • 监督学习常见模型
    K-近邻(KNN)
    线性回归(回归模型)
    逻辑回归(分类模型)
    支持向量机
    决策树和随机森林
    神经网络
  • 无监督学习常见模型
    a.聚类算法
    k-means算法(kmeans)
    密度聚类算法
    最大期望算法(EM)
    b.降维
    主成分分析(PCA)
    c.关联规则学习
    Apriori
    d. 时间序列预测
七、模型评估

不同类型的模型评估方法不一。
先讲一个常见误区,大家是否觉得评估模型就用模型准确率 ?

分类评估指标

  • ① 一级指标(底层指标)
    混淆矩阵:混淆矩阵就是分别统计分类模型、归错类、归对类的观测值个数,然后把结果放在一个表里展示出来,这个表就是混淆矩阵。
  • 真实值是positive,模型认为是positive的数量(True Positive =TP),真阳性。
  • 真实值是positive,模型认为是negative的数量(False Negative = FN),这就是统计学上的第一类错误,弃真,假阴性。
  • 真实值是negative,模型认为是positive的数量(False Positive = FP),这就是统计学上的第二类错误,纳伪,假阳性。
  • 真实值是negative,模型认为是negative的数量(True Negative = TN),真阴性。

混淆矩阵怎么看?预测性分类模型肯定是希望越准越好,那么对应到混淆矩阵中,那肯定是希望TP和TN的数量大,而FP与FN的数量小。

② 二级指标
混淆矩阵里面统计的是个数,有时候面对大量的数据,光凭算个数很难衡量模型的优劣。因此混淆矩阵在基本的统计结果上又延伸了如下四个指标,我们称它为二级指标。

  • accuracy (准确率):(TP + TN)/(TP + FN + FP + FN)
    意义:分类模型所有判断正确的结果占总观测值的比重,一般不用
  • precision(准确率):TP /(TP + FP)
    意义:表示预测为正的样本数有多少是对的,可解释性强,常用越高越好。
  • record (召回率、查全率,真正率TPR):TP / ( TP + FN)
    意义:表示样本中的正例有多少被预测正确,可解释强,常用越高越好。
  • FPR (假正率) :FP / (FP + FN)
    意义:表示当前被错误分到正样本类别中真实的负样本 所占所有负样本总数 的比例,越低越好。
  • ③三级指标
  • ROC curve,这个曲线就是以下 TPR 和 FPR 为轴,取不同的阈值点画的。
  • 模型去预测分类型任务的时候,本质上是预测分类型的概率的,比如计算流失的概率,如果这个概率大于阈值0.5的话,这即为流失,所以这里就有个阈值的存在。不同的阈值,会有不同的TP 、FP。

ROC_AUC:AUC就是曲线下面积,我们根据ROC曲线想一下,到底我们这个曲线涨什么样的模型才算好呢?TR率是越高越好,FP率是越低越好,所以我们的曲线应该是越靠近Y轴越好。(粗鲁)理解最终可抽象成,ROC曲线下面积越大越好,即AUC越大越好。

AUC评判标准 :
0.5-0.7 : 效果较低,但预测股票已经很不错了。
0.7-0.85 : 效果一般
0.85-0.95 : 效果很好
0.95-1 : 效果非常好,但不太可能

f1值:(2*Precision * Recall/(Precision+Record)
意义:我们的模型想recall和precision都高,但鱼与熊掌不可兼得,如果想要找到它们的平衡,那就用f1值。

回归评估指标

回归评估指标如何选择?
机器学习的基础概念介绍到这里,懂得了基础概念,才能开始后续的学习。
上一篇下一篇

猜你喜欢

热点阅读