什么是机器学习

概述

AI ML DL 之间的关系
  • AI 最大的概念

  • ML 机器学习 是AI的一个研究方向, 一般指的就是软件编程

  • DL 深度学习, 是机器学习的一个子领域, 使用人工神经网络来解决问题

  • ML DL的区别

    • 提到机器学习 一般就是指 传统的基于统计学的一些算法 (或者 没用神经网络)

    • DL 深度学习就是指使用了神经网络

  • 为什么要学机器学习

    • 从学习知识的角度, 从简单到复杂

    • 还有一些领域在使用机器学习 

相关术语介绍

机器学习模型 = 数据 + 算法

数据: 用于训练模型
  • 样本 sample 一行数据就是一个样本

  • 特征 feature 数据集中的一列数据就是一个特征, 需要注意, 特征一定要和目标相关(和当前模型要解决的问题有关联)

  • 目标 label(标签)/target 模型要预测的值, 在训练数据中就是问题的答案列

训练集划分

  • 数据划分成训练集和测试集

  • 训练集用于模型的训练, 测试集用于模型的验证

  • 训练集测试集要互斥

    • 如果数据量有限(几百, 几千条), 做8:2 7:3划分 训练集数据量大一些, 测试集数据量小

    • 如果 数据足够, 直接从业务数据中抽取就可以了

train

  • x_train 训练集的特征值

  • y_train 训练集的目标值

test

  • x_test 测试集的特征值

  • y_test 测试集的目标值

算法: 从数据中自动发现规律

根据数据是否有标签

  • 有监督 监督学习的算法, 要求数据一定要有目标值

    • 回归问题: 目标值是连续取值的( 房价, 薪水, GDP, 销售收入)

    • 分类问题: 目标值是类别型(二分类, 三分类, 多分类) 机器学习/深度学习 问题以分类问题居多

      • 推荐算法 二分类问题

  • 无监督 数据中没有目标值的概念, 只有特征

    • 典型场景聚类

    • 有些业务获得标签的成本太高, 可以采用无监督的方式来做

      • 反欺诈

  • 半监督 ( 了解)

    • 一部分数据有标签

    • 一部分数据没有标签

  • 强化学习 (了解)

    • environment 环境

    • state 状态

    • action 行为

    • reward 反馈/奖励

    • agent代理

当前阶段, 重点学习的是监督学习算法

实际开发的任务中, 监督学习的分类问题是最常见的

建模流程

①获取数据

②数据基本处理(空值, 异常, 重复)

③特征工程

  • 对特征进行处理

  • 机器学习算法, 对特征工程要求比较高

  • 深度学习算法, 好多特征工程的任务, 都可以交给神经网络来做

④模型训练 (调参)

  • 机器学习算法 能调的参数相对较少的

  • 深度学习算法 调参更加重要

⑤模型评估

  • 不同类别的算法模型有不同的评价方式

  • 通过测试集对训练好的模型进行评价, 评价能够达到要求, 就可以上线

特征工程

特征提取

特征预处理

特征降维

特征组合

特征筛选

欠拟合/过拟合

在模型评价的时候, 会出现欠拟合, 过拟合现象

  • 欠拟合: 训练集上表现差, 测试集上表现也差

    • 训练集上表现差 使用训练集数据训练模型, 用相同的数据丢给模型, 输出结果, 和训练集目标做比较结果表现差

    • 产生原因: 模型过于简单

    • 解决欠拟合, 把模型搞复杂

  • 过拟合: 训练集上表现好, 测试集上表现差

    • 产生原因 : 模型过于复杂, 训练数据不够, 数据中有噪声

    • 解决过拟合, 把模型搞简单

 

KNN算法

原理比较简单, 通过这个模型的学习主要是把机器学习流程串起来

熟悉sklearn的API基本套路

KNN K近邻

  • 通过计算距离来判断样本之间的相似程度

  • 距离越近两个样本就越相似, 就可以划归到一个类别中

基本流程

  • 在数据集中, 我们选择一个样本要对它进行分类, 使用KNN算法

  • 计算当前样本和其它样本, 特征取值之间的距离(最常用的就是欧式距离), 对距离进行排序(从小到大)

  • 确定K值 : 通过离该样本最近的K个样本(欧式距离最小的K个)

    • 比如当K = 5时, 我们就选择离这个样本最近的5个样本

  • 通过这K个样本的类别确定当前样本的类别

    • 投票, 少数服从多数

    • 如果是回归问题, 这K个样本的取值的平均值就是最终的预测结果

K 就是当前算法的一个超参数

  • 超参数是可以进行调整的

  • K的大小会影响到最终的结果

    • K越小 模型越复杂 容易受到数据中噪声的影响

    • K越大 模型越简单 受到数据分布的影响

    • 当K = 样本数量的时候, 模型结果是确定的结果

API的使用

# 1.工具包
from sklearn.neighbors import KNeighborsClassifier,KNeighborsRegressor
# from sklearn.neighbors import KNeighborsRegressor

# 2.数据(特征工程)
# 分类
x = [[0,2,3],[1,3,4],[3,5,6],[4,7,8],[2,3,4]]
y = [0,0,1,1,0]

# 创建算法对象  K近邻的分类器
knn = KNeighborsClassifier(n_neighbors=1)
# 算法模型对象 调用fit 模型训练
knn.fit(x,y) # X 训练集特征值 y 训练集目标值
# 使用训练好的模型进行预测
knn.predict([[4,4,5]])



# 准备数据  x 特征值
x = [[0,1,2],[1,2,3],[2,3,4],[3,4,5]]
# y 目标值
y = [0.1,0.2,0.3,0.4]
# 创建K近邻的回归器
knn = KNeighborsRegressor(n_neighbors=2)
# 模型训练 对于KNN来说, 就是把所有样本保存起来
knn.fit(x,y)
# 利用模型输出预测结果
knn.predict([[4,4,5]])

SKlearn 的API 都有固定的套路

  • 创建算法模型对象

  • fit 模型训练

  • predict 使用训练好的模型进行预测

模型训练的时候, 使用的数据, 有几个特征, 是什么样的维度, 在predict的时候传入的数据需要有相同的维度

归一化/标准化

是特征工程的一个环节

应用场景:

  • 涉及多个特征一起进行计算, 比如计算欧式距离

  • 特征的取值范围, 差异较大 (量纲不统一)

归一化/标准化 可以把量纲不统一的特征, 缩放到同一取值范围内

需要注意的是

  • 归一化会受到数据中异常值的影响, 当对数据质量没有把握的时候, 可以直接使用标准化

# 归一化

# 如果数据中有特别大的取值/特别小的取值     收入  10000小目标      0.00001个小目标
from sklearn.preprocessing import MinMaxScaler
x = [[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]]
# 创建一个Scaler对象
scaler = MinMaxScaler()
# fit 就是在计算每一列特征的最大值和最小值, 并保存到scaler对象中
scaler.fit(x)
# Transform 变化, 利用上一步计算出来的 最大最小值, 作用到原始数据上, 得到缩放之后的结果
scaler.transform(x)


# 标准化

# 标准化没有固定取值范围, 基本上会在 -10 10
from sklearn.preprocessing import StandardScaler
x = [[90, 2, 10, 40], [60, 4, 15, 45], [75, 3, 13, 46]]
# 创建一个Scaler对象
scaler = StandardScaler()
# fit 就是在计算每一列特征的均值和方差
scaler.fit(x)
# Transform 变化, 利用上一步计算出来的 最大最小值, 作用到原始数据上, 得到缩放之后的结果
scaler.transform(x)

你可能感兴趣的:(机器学习,人工智能)