Bootstrap

机器学习-语言分析

机器学习

1.1人工智能概述

1.2.1 机器学习与人工智能,深度学习

     深度学习->机器学习->人工智能;

      人工智能:1950,实现自动下棋,人机对弈,达特茅斯会议->人工智能的起点,1956年8月。克劳德-香农(信息论的创始人)内容:用机器来模仿人类的学习能力。持续了两个多月。1956被称为人工智能元年。

      机器学习:最开始的垃圾邮件的处理过滤,人工神经网络,深度神经网络。

      深度学习:2010年开始,在图像识别领域中表现突出。

1.1.2 机器学习,深度学习有什么作用:

     1. 传统预测

            店铺销量预测,量化投资,广告推荐

      2. 图像处理

            交通标志检测,人脸识别

      3.自然语言处理

翻译,文本分类,情感分析,自动聊天,文本检测,智能写文章,智能客服

1.2什么是机器学习

1.2.1 定义:

      从数据中学习,模型,解决问题。

1.2.2 数据集的构成

     特征值 + 目标值 = 经验规律

      样本:所有数据,有的数据可以没有目标值。

1.3 机器学习算法分类

1.3.1

     监督学习

目标值:类别 = 分类问题

            目标值:连续性的数据 = 回归问题

     无监督学习

          目标值:无 = 无监督学习

1.3.2 机器学习算法分类

     1 监督学习: 有目标值的算法

            分类:k-近邻算法,贝叶斯分类与随机分类,逻辑回归,回归,线性回归,岭回归。

      2 无监督学习: 无目标值的算法

            聚类 k-means

1.4 机器学习开发流程

          1. 原始数据

            2. 数据处理

            3. 数据特征工程(训练数据和测试数据)

            (算法进行学习)

            4. 机器学习算法训练 – 模型

            5. 模型评估

            6. 应用

1.5 学习框架和资料介绍

     1. 算法是核心,数据与计算是基础

      2. 找准定位

            算法工程师做算法

            + 分析很多数据

            + 分析具体业务

            + 应用常见算法

            + 特征工程、调参数、优化

      3. 怎么做?

            1.入门

            2.书籍资料

            3.《机器学习》 – 周志华 – 西瓜书

                  《统计学习方法》 – 李航

                  《深度学习》 – 花书

1.5.1 机器学习库与框架

     Pytorch

      Caffe2

2.1 数据集

2.1.1 可用数据集

     不可用数据集

            公司内部 百度

            数据接口 花钱

            数据集 政府机构、

      可用数据集

            Sklearn

            Kaggle(大数据竞赛平台)

            Uci

            {

                  www.kaggle.com/datasets

                  UCI Machine Learning Repository

                  scikit-learn: machine learning in Python — scikit-learn 0.16.1 documentation

}

     1 Scikit-learn 工具介绍

         安装:

             pip install Scikit-learn==0.19.0

     2 sklearn的使用

      4 sklearn数据集的使用

            鸢尾花数据集的

              特征值:花瓣,花萼的长度,宽度

                  目标值:setosa,verctolor,virginica

            数据集的返回值:

Load与fetch的返回的数据类型为datasets.base.Bunch(字典格式):

  1. data:特征数据数组,二维数组[a,b]

  1. target:标签数组

  1. DESCR:数据描述

  1. Feature_names:特征名(手写数据,新闻数据,回归集数据没有)

  1. Target_names:标签名

     2.1.3 数据集的划分(一部分用作训练,一部分用于验证模型的准确度)

         测试集占20%~30%

            如何实现:

2.2 特征工程介绍

     算法:特征工程

2.2.1 为什么需要特征工程

     数据和特征决定了算法上限,而算法是无限逼近上限。

2.2.2 什么是特征工程

     会直接影响机器学习的效果

      Sklearn 特征工程

      Pandas 数据清洗,数据处理

特征工程包含的内容

         (1)特征提取/特征抽取

机器学习算法 – 统计方法 – 数学公式(文本类型的数据转化为二进制文件)

类型 -> 数值

  1. 将任意数据转化为可用于机器学习的数字特征
    1. 字典特征提取(特征离散化)
    2. 文本特征提取
    3. 图像特征提取(深度学习)
  2. 特征提取API
    1. Sklearn.feature_extraction

(2) 字典特征提取

      作用:对字典数据进行特值化

     方法:

Sparse默认为True因此需要更改sparse的值

元组为非0值的位置:稀疏矩阵(将非0值按位置表示出来)避免0的存储空间溢出,提高加载效率

特征提取:

            应用场景:

                  1)数据集中有很多类别特征

                        将数据集的特征转化为字典类型

                        DictVectorizer转化

                  2)本身的数据为字典类型

2.3.3 文本特征提取

      单词作为特征

      句子,短语,字母(用单词合理,用句子作为特征不合理,特征明确)

      特征:特征词(数值作为什么)

      方法1:

English

Chinese:

将短语作为特征

Ps:不支持单个中文字

                                          中文分词器

      方法2:

            TF-IDF ->重要程度

            两个词 “经济“, ”非常“

            1000篇文章作为语料库

            100-非常

            10-经济

            文章A (100词) :10次“经济“TF-IDF = 0.2

                  Tf:10 / 100 = 0.1

                  Idf:lg 1000 / 10 = 100 = 2

            文章B (100词) :10次“非常“TF-IDF = 0.1

                  Tf:10 / 100 = 0.1

                  Idf: log 10 1000 / 100 = 1

      方法:

2.4.1 特征预处理

      特征预处理:通过转换函数将特殊数据转化为可执行算法的模型,归一化,标准化。

      为什么要归一化,标准化?

无量纲化,防止不同规格的数据转化为同一规格,使得算法学习不到想要的特征

方法:

      归一化中出现异常值:最大值,最小值(健壮性较差)

      由此引入标准化数据(均值为0,标准差为1)

            很好的排除异常值的影响

标准差:集中程度,由于具有一定的数据量,少量的异常点对整体的结果影响不大

      方法:

      适用于当前嘈杂的大数据环境

2.5.1 特征降维

     降维:降低维度

            Ndarray

                  数据嵌套的层数

                  0维:标量

                  1维:向量

                  2维:矩阵

                  N维:

      不降低嵌套层数

      对二维数组进行处理:降低特征的个数(列数)

      降维:在特定情况下降低特征的个数,得到一组“不相关的”的数据

                  不相关:特征与特征之间不相关;

                        可以减少很多冗余的数据(特征学习)

2.5.2降维的两种方法

     特征选择

            Filter过滤式

                  方差选择法:降低方差特征过滤

                  相关系数法:特征与特征之间的相关程度

            Embeded嵌入式

                  决策树

                  正则化

                  深度学习

      方法:

            设置临界值,低于临界值的删除

      皮尔逊相关系数:

            0.9942 取值 -1, 1)

            正值:正相关

            负值:负相关

      方法:

            特征与特征的相关性很高

                  选取其中一个

                  加权求和,作为一个新的特征

                  主成分分析

2.6.1 主成分分析

     数据的压缩降低数据的维数 ,损失少量信息

      降维的同时不能损失信息(损失少量信息)

      方法:

            小数:减少%多少的信息

            整数:减少到多少特征

2.6.2 探究用户对物品喜好的细分降维

     用户与物品类别的关系

      用户        物品类别

  1. 合并不同的表:将用户与物品类别放入同一张表中

            具体找到变量之间的关系

  1. 找到关系,交叉表和透视表
  2. 特征冗余过多,PCA降维

3.1sklearn转换器和估计器

     转换器

            实例化,调用fit_transform(合成的算法)

                  fit()做计算:每一列的平均值

                  transform()做转换

      估计器:

            所有的算法分类至估计器之中

  1. 实例化estimator
  2. estimator.fit(x_train, y_train)计算-模型生成
  3. 模型评估:
    1. 直接比对真实值和预测值
      1. Y_predict = estimator.predict(x_test)
    2. 计算准确率
      1. 将测试集的目标值赋予

3.2 k_近邻算法:

      KNN算法:

            基本原理:

                  根据邻居来推断自己的类别

                  样本在空间中的k个最近相似的值则判定样本的位置

                        K = 1 (容易受到异常值的影响)

                  如何确定谁是邻居?

                        计算距离:

距离公式:欧式距离(平方),曼哈顿距离(绝对值),明可夫斯基距离(距离公式的集合)

      电影类型的分类:

与成分距离最近的点的距离,K的取值任意去取,找未知电影的位置就可以解决,但是K的取值,可以取的很多,取得一半的结果,无法确定,训练集中再加入

K值过大会,容易分错,样本不均衡的时候

                  K值取的过小,容易受到异常值的影响

                  无量纲化处理:标准化的处理

3.2.2 K_邻近算法API

      方法:

  1. 获取数据
  2. 数据集划分
  3. 特征工程
    1. 标准化
    2. 降维(不需要)
  4. KNN数据预估流程
  5. 模型评估

优点:简单易于理解

缺点:

  1. 选择好K值分类,计算量很大,数据量小的时候可以使用

      模型选择与调优

            K值的取值是不一定的

            如何选择合适的K值    (交叉验证的)

什么是交叉验证?

将训练数据,再分为训练和验证集,分成四份,每一次更换不同的验证集(四折交叉验证)

超参数网格搜索:

      K的取值

            {1,3,5,7,9,11}

      遍历每一个位置:自动去写,省去遍历的过程

K值调优

      方法:

;