机器学习


一、人工智能概述

1.1 人工智能、机器学习和深度学习之间的关系

1956年 人工智能元年

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

1.2 机器学习的应用领域

  1. 挖掘、预测
  2. 图像识别
  3. 自然语言处理

二、机器学习

2.1 定义

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

  • 数据
  • 模型
  • 预测

2.2 数据集构成

特征值 + 目标值 构成

每一行数据称之为一个样本
有的数据集可以没有目标值

2.3 机器学习中的算法分类

根据目标值分类

  • 监督学习
    • 目标值:类别 = 分类问题(离散)
    • 目标值:连续型的数据 = 回归问题
  • 无监督学习
    • 目标值:无 = 无监督学习

机器学习分类

  • 监督学习
    • 分类:预测天气阴晴雨、人脸识别
    • 回归:预测天气温度、预测房价
  • 无监督学习
    • 聚类

算法分类

  • 分类:k-近邻算法、贝叶斯算法、决策树与随机森林、逻辑回归
  • 回归:线性回归、岭回归
  • 聚类:k-means

2.4 机器学习的开发流程

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

2.5 学习框架和资料介绍

  1. 算法是核心,数据与计算是基础
  2. 目前学习的定位:复杂的算法设计是算法工程师在做
    • 分析数据
    • 分析具体的业务
    • 学习常见的算法
    • 特征工程、调整参数、优化

库和框架

  • Sklearn - 传统机器学习
  • Google - Theano - Tensorflow 深度学习流行框架
  • Pytorch
  • Caffe2
  • Chainer

2.6 数据集

数据集分为:

  • 训练集
  • 测试集

可用数据集

  1. 公司内部
  2. 数据接口

学习阶段:可用数据集

  • Scikit-learn
  • Kaggle
  • UCI

Scikit-learn介绍

  • Python语言的机器学习工具
  • 包含许多知名机器学习算法
  • 文档完善,易于上手
1. Sklearn安装
pip install numpy #NumPy系统是Python的一种开源的数值计算扩展
pip install scipy #Scipy是一个高级的科学计算库
pip install sklearn
2. API介绍
  1. 获取数据集
sklearn.datasets.load_*() #获取小规模数据集
sklearn.datasets.fetch_*(data_home=None, subset='all') #获取大规模数据集

数据集的返回值:datasets.base.Bunch(字典格式)

  • data
  • target
  • DESCR
  • feature_name
  • target_name
  1. 划分数据集
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 获取数据集
iris = load_iris()

# 数据集划分
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22)

2.7 特征工程

为什么需要特征工程

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

特征工程是使用专业背景知识和技巧处理数据,使得特征能在机器学习算法上发挥更好的作用的过程。
意义:会直接影响机器学习的效果

特征工程包含的内容

  1. 特征抽取
    文本 - > 数字特征
    图像 - > 数字特征
    方法:字典特征提取、文本特征提取、图像特征提取(深度学习)
  2. 特征预处理
  3. 特征降维

字典特征提取

one-hot编码
布尔列
稀疏矩阵
节省内存空间,one-hot编码中零多,所以只标注非零的地方。

sklearn.feature_extraction.DictVectorizer(sparse=True)
#vector 数学:向量 | 物理:矢量
#matrix 二维数组
#vector 一维数组
#sparse 稀疏矩阵

DictVectorizer.fit_transform(X)
# X 字典或者包含字典的迭代器返回值
# 返回sparse矩阵:非零值用按位置表示出来
DictVectorizer.inverse_transform(X)
# X array数组或者sparse矩阵
# 返回转换前的数据格式
DictVectorizer.get_feature_names()
# 返回类别名称


from sklearn.feature_extraction import DictVectorizer
transfer = DictVectorizer()

data={}

data_new = transfer.fit_transform(data)
feature_names = transfer.get_feature_names()

应用场景

  1. 数据集的类别特征比较多
  2. 本身拿到的数据就是字典类型

文本特征提取

方法一
sklearn.feature_extraction.text.CountVectorizer(stop_words=[])
#停用词

data = ""
tranfer = CountVectorizer()

#稀疏矩阵
data_new = transfer.fit_transform(data)
#正常矩阵
data_new.toarray()

对于中文需要使用分词库

方法二

TF-IDF
term frequency, tf 词频
inverse document frequency, idf 逆向文档频率
tf-idf = tf * idf

tranfer = TfidfVectorizer()
data_new = transfer.fit_transform(data)

特征预处理

将特征数据转化为更为适合算法模型的特征数据。
实现特征数据的无量纲化:归一化、标准化。
解决量纲不统一,使不同规格的数据转化到同一个规格。

归一化

在这里插入图片描述

sklearn.preprocessing.MinMaxScaler(feature_range(0,1)...)
MinMaxScaler.fit_transform(data)
标准化

在归一化中如果有异常值(最大最小值)的时候会受到影响,鲁棒性差。
均值为0,标准差为1的附近
在这里插入图片描述
标准差:集中程度

sklearn.preprocessing.StandarScaler()
MinMaxScaler.fit_transform(data)

特征降维

降低特征(随机变量)的个数,得到一组不相关的主变量的过程

  • 特征选择
  • 主成分分析
特征选择

Filter(过滤式):方差选择法、相关系数法
Embedded(嵌入式):决策树、正则化、深度学习

  1. 相关系数
    皮尔逊相关系数
    r>0 正相关
    r<0 负相关
    0 则表示无关
主成分分析(PCA)

2.8 分类算法

转换器和预估器

转换器 Transformer

1)实例化转换器
2)调用fit_transform()方法:fit()和transform()

预估器 Estimator
sklearn中的预估器
用于分类

sklearn.neighbors
sklearn.naive_bayes
sklearn.linear_model.LogisticRegression
sklearn.tree

用于回归

sklearn.linear_model.LinearRegression
sklearn.linear_model.Ridge

用于无监督

sklearn.cluster.KMeans*

1)实例化预估器
2)调用fit()方法获取模型
3)使用score(text_x, text_y)、predict()评估模型

1. K近邻分类算法(kNN,k-NearestNeighbor)

k=1 易受到异常值的影响,k值过大会受到样本不均匀的影响。
k值一般为奇数
欧式距离
曼哈顿距离
明可夫斯基距离

模型选择与调优:
A)交叉验证(Cross Validation)
在这里插入图片描述
四则交叉验证

B)网格搜索(Grid Search)

sklearn.model_selection.GridSearchCV(estimator, params, CV)

2. 朴素贝叶斯分类

贝叶斯公式
加粗样式
概率:事件发生的可能性
联合概率P(A,B)
条件概率P(A|B)
若P(A,B)=P(A)*P(B),则称A、B事件相互独立

朴素:就是假定特征与特征之间相互独立

应用场景:文本分类

拉普拉斯平滑系数:解决概率为0的问题

缺点:特征必须独立

3. 决策树

如何高效的进行决策
信息论:信息增益=信息熵-条件熵
熵 = 不确定性
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

熵下降最快(梯度下降)

条件熵

信息增益:根据信息增益选取特征

在这里插入图片描述

什么是信息?
香农:消除随机不确定性的东西

树的深度:拟合、泛化

解决过度拟合:
1. 截枝cart算法
2. 随机森林

优势:可视化、解释能力强

4. 随机森林

集成学习方法
生成多个模型,各独自学习结合为组合预测。

随机包括:
训练集随机:bootstrap随机有放回抽样
特征随机
森林:多个决策树

5. 逻辑回归(分类算法)

Logistic Regression 与回归有一定的联系,但是是分类模型。
应用场景

  • 广告点击率
  • 是否为垃圾文件
  • 是否患病
  • 金融诈骗
  • 虚假账号
    以上都属于二分类

sigmoid函数
在这里插入图片描述
在这里插入图片描述
精确率与召回率
混淆矩阵
在这里插入图片描述
TP True Positive
FN False Negative

精确率
在这里插入图片描述
召回率
在这里插入图片描述

F1-score
在这里插入图片描述

ROC曲线和AUC指标
在这里插入图片描述
TPR:召回率
FPR:

2.9 回归算法

1. 线性回归

欠拟合

过拟合

线性模型

线性关系

损失函数
在这里插入图片描述
优化方法:

  1. 正规方程 - 直接求出
    在这里插入图片描述
  2. 梯度下降 - 不断优化
    GD(Gradient Descent)
    SGD(Stochasitc Gradient Descent)随机梯度下降
    SAG(Stochasitc Average Gradient)随机平均梯度法:岭回归、逻辑回归
    在这里插入图片描述
    回归性能评估
# 模型评估

from sklearn.metrics import mean_squared_error

y_predict = estimator.predict(x_test)
error = mean_squared_error(y_test, y_predict)

欠拟合和过拟合
学习特征少 - 欠拟合
学习特征太多 - 过拟合、泛化能力差
在这里插入图片描述
如何解决
在这里插入图片描述
欠拟合:增加特征数量
过拟合:存在嘈杂特征,正则化

L1正则化:
损失函数 + 系数 * 惩罚项(LASSO)
会使得其中某一些的W值直接为零

L2正则化(常用):在这里插入图片描述
会使得其中某一些的W值很小,削弱某个特征的影响
损失函数 + 系数 * 惩罚项(Ridge)(使得权重整体也变小)

2. 岭回归

带L2正则化的线性回归就叫做岭回归,为了解决过拟合问题。

模型保存

在这里插入图片描述

K-Means

无监督学习:没有目标值
轮廓系数
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值