机器学习
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
{
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(字典格式):
- data:特征数据数组,二维数组[a,b]
- target:标签数组
- DESCR:数据描述
- Feature_names:特征名(手写数据,新闻数据,回归集数据没有)
- Target_names:标签名
2.1.3 数据集的划分(一部分用作训练,一部分用于验证模型的准确度)
测试集占20%~30%
如何实现:
2.2 特征工程介绍
算法:特征工程
2.2.1 为什么需要特征工程
数据和特征决定了算法上限,而算法是无限逼近上限。
2.2.2 什么是特征工程
会直接影响机器学习的效果
Sklearn 特征工程
Pandas 数据清洗,数据处理
特征工程包含的内容
(1)特征提取/特征抽取
机器学习算法 – 统计方法 – 数学公式(文本类型的数据转化为二进制文件)
类型 -> 数值
- 将任意数据转化为可用于机器学习的数字特征
- 字典特征提取(特征离散化)
- 文本特征提取
- 图像特征提取(深度学习)
- 特征提取API
- 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 探究用户对物品喜好的细分降维
用户与物品类别的关系
用户 物品类别
- 合并不同的表:将用户与物品类别放入同一张表中
具体找到变量之间的关系
- 找到关系,交叉表和透视表
- 特征冗余过多,PCA降维
3.1sklearn转换器和估计器
转换器
实例化,调用fit_transform(合成的算法)
fit()做计算:每一列的平均值
transform()做转换
估计器:
所有的算法分类至估计器之中
- 实例化estimator
- estimator.fit(x_train, y_train)计算-模型生成
- 模型评估:
- 直接比对真实值和预测值
- Y_predict = estimator.predict(x_test)
- 计算准确率
- 将测试集的目标值赋予
- 直接比对真实值和预测值
3.2 k_近邻算法:
KNN算法:
基本原理:
根据邻居来推断自己的类别
样本在空间中的k个最近相似的值则判定样本的位置
K = 1 (容易受到异常值的影响)
如何确定谁是邻居?
计算距离:
距离公式:欧式距离(平方),曼哈顿距离(绝对值),明可夫斯基距离(距离公式的集合)
电影类型的分类:
与成分距离最近的点的距离,K的取值任意去取,找未知电影的位置就可以解决,但是K的取值,可以取的很多,取得一半的结果,无法确定,训练集中再加入
K值过大会,容易分错,样本不均衡的时候
K值取的过小,容易受到异常值的影响
无量纲化处理:标准化的处理
3.2.2 K_邻近算法API
方法:
- 获取数据
- 数据集划分
- 特征工程
- 标准化
- 降维(不需要)
- KNN数据预估流程
- 模型评估
优点:简单易于理解
缺点:
- 选择好K值分类,计算量很大,数据量小的时候可以使用
模型选择与调优
K值的取值是不一定的
如何选择合适的K值 (交叉验证的)
什么是交叉验证?
将训练数据,再分为训练和验证集,分成四份,每一次更换不同的验证集(四折交叉验证)
超参数网格搜索:
K的取值
{1,3,5,7,9,11}
遍历每一个位置:自动去写,省去遍历的过程
K值调优
方法: