学习笔记,仅供参考,有错必纠
文章目录
- 深度学习
- 机器学习概述
- 机器学习常用框架--scikit-learn
- 特征处理
- 深度学习原理
- 单感知机
- 多层感知机
- 网络训练过程
- 常见激活函数
- 常见损失函数
- 梯度下降
- 深度学习中的3个概念
深度学习
机器学习概述
机器学习常用框架–scikit-learn
- scikit-learn算法地图
- scikit-learn常用API
sklearn.base
:所有估算器的基类;
sklearn.calibration
:预测概率的校验;
sklearn.cluster
:该模块包含了流行的无监督聚类算法;
sklearn.cluster.bicluster
:双聚类算法;
sklearn.covariance
:该模块提供了在给定一组样本点的情况下稳健地估计特征协方差的方法和算法,协方差估计与高斯图形模型理论密切相关;
sklearn.cross_decomposition
: 交叉分解;
sklearn.datasets
: 数据集;
sklearn.decomposition
: 该模块包括各种矩阵分解算法,包括PCA,NMF或ICA. 该模块的大多数算法可以被视为降维技术;
sklearn.ensemble
: 该模块包含用于分类,回归和异常检测的基于集成的方法;
sklearn.exceptions
: 该模块包含scikit-learn中使用的所有自定义警告和错误类;
sklearn.feature_extraction
:该模块用于提取原始数据的特征. 它目前包含从文本和图像中提取特征的方法;
sklearn.feature_selection
:该模块实现了特征选择算法. 它目前包括单变量滤波器选择方法和递归特征消除算法;
sklearn.gaussian_process
:该模块实现了基于高斯过程的回归和分类;
sklearn.linear_model
:该模块实现了广义线性模型. 它包括利用最小角度回归和坐标下降计算的岭回归,贝叶斯回归,套索和弹性网估计. 它还实现了Stochastic Gradient Descent相关算法;
sklearn.metrics
:评价指标. 该模块包括评分函数,性能指标和成对指标以及距离计算;
sklearn.model_selection
:模型选择. 评估估算器性能,调整估算器的超参数和学习曲线部分;
sklearn.naive_bayes
: 朴素贝叶斯. 该模块主要包含GaussianNB,MultinomialNB和BernoulliNB三种贝叶斯算法;
sklearn.neighbors
: 近邻算法;
sklearn.neural_network
: 神经网络模型. 该模块包括基于神经网络的模型;
sklearn.pipeline
:管道. 该模块实现了用于构建复合估计器的实用程序;
sklearn.preprocessing
: 预处理和规范化. 该模块包括缩放,居中,标准化,二值化和插补方法;
sklearn.svm
: 支持向量机. 该模块包括支持向量机算法;
sklearn.tree
: 决策树. 该模块包括用于分类和回归的基于决策树的模型;
sklearn.utils
: 工具. 该模块包括各种工具。
特征处理
对于大多数的机器学习算法和优化算法来说,将特征值缩放到相同区间可以使得获取性能更好的模型。就梯度下降算法而言,例如有两个不同的特征,第一个特征的取值范围为110,第二个特征的取值范围为110000。在梯度下降算法中,代价函数为最小平方误差函数,所以在使用梯度下降算法的时候,算法会明显的偏向于第二个特征,因为它的取值范围更大。在比如,k近邻算法,它使用的是欧式距离,也会导致其偏向于第二个特征。
- 常用的特征处理方法
- 归一化(normalization):通过特征的最大最小值将特征缩放到[0,1]区间范围内;
- 标准化(standardization):标准化是通过特征的平均值和标准差将特征缩放成 一个标准的正态分布,均值为0,方差为1。
- sklearn中的标准化以及归一化方法
标准化:
from sklearn.preprocessing import StandardScaler
import numpy as np
cps = np.random.random_integers(0, 100, (100, 2))
ss = StandardScaler()
std_cps = ss.fit_transform(cps)
归一化:
from sklearn.preprocessing import MinMaxScaler
import numpy as np
data = np.random.uniform(0, 100, 10)[:, np.newaxis]
mm = MinMaxScaler()
mm_data = mm.fit_transform(data)
origin_data = mm.inverse_transform(mm_data)
- sklearn正则化
X = [[1, -1, 1],
[2, 0, -3],
[0, 1, -1]]
from sklearn.preprocessing import normalize
l2 = normalize(X, norm='l2')
print('l2:', l2)
from sklearn.preprocessing import Normalizer
normalizerl1 = Normalizer(norm='l1')
l1 = normalizerl1.fit_transform(X)
print('l1:', l1)
输出:
l2: [[ 0.57735027 -0.57735027 0.57735027]
[ 0.5547002 0. -0.83205029]
[ 0. 0.70710678 -0.70710678]]
l1: [[ 0.33333333 -0.33333333 0.33333333]
[ 0.4 0. -0.6 ]
[ 0. 0.5 -0.5 ]]
深度学习原理
单感知机
感知机是人工神经网络中的最小单元,单感知机是最简单的神经网络,然而,单感知机无法拟合“异或”运算。
多层感知机
神经网络又被称为多层感知机模型。
网络训练过程
- 正向传播
- 反向传播
- 梯度下降
常见激活函数
- sigmoid函数(Logistic 函数)
特点:(1)它可以将一个实数映射到(0,1)的区间;在特征相差不是特别大时效果比较好.
用法:通常用来做二分.
缺点: 激活函数计算量大(指数运算);反向传播时容易出现梯度消失(当数据分布在曲线平滑位置时很容易就会出现梯度消失).
- Tanh函数(双切正切函数)
特点:输出是以0为中心,取值范围为[-1,1];以认为是Sigmoid 函数的改进版.
用法:实际中tanh会比sigmoid更常用;循环神经网络中常用;常用于二分类问题.
缺点:梯度消失;在曲线几乎水平的区域学习非常的慢.
- ReLU函数(矫正的线性单元)
特点:大于0的部分输出为,小于0的部分输出为0;ReLU对于梯度收敛有巨大加速作用,只需要一个阈值就可以得到激活值,从而节省计算量.
用法:深层网络中隐藏层常用.
缺点:容易得到0值,丢失该神经元对应的相关信息.
- SoftMax
特点: 当有多个输出的时候通过概率求得那个输出能够胜出.
用法: 用于多分类神经网络输出;用于多分类问题的最后一层.
缺点:基本只用于多分类问题.
- 线性激活函数(linear函数)
特点: 输入是什么,输出就是什么;没有做任何 非线性变换.
用法: 仅仅用于线性回归.
缺点:没有非线性变换,无法得到非线性特征;无法建立非线性模型.
常见损失函数
- Zero-one Loss(0-1损失)
- 交叉熵损失函数
- 均方误差(MSE)
梯度下降
- 批量梯度下降: 每次迭代使用全部样本.
- 随机梯度下降:每次迭代使用1个样本.
- 小批量梯度下降:每次迭代使用b个样本(b按照情况设置,一般为10).
深度学习中的3个概念
- Epoch
一个Epoch指将所有数据送入网络中完成一次前向计算及反向传播的过程,由于一个Epoch常常太大,计算机无法负荷,通常会将它分成几个较小的batches。
那么,为什么需要多个epoch呢?在训练时,将所有数据选代训练一次是不够的,需要反复多次才能拟合收敛。
- Batch Size
所谓Batch就是每次送入网络中训练的一部分数据,而Batch Size就是每个batch中训练样本的数量。
- Iteration
所谓Iteration就是完成一次epoch所需的batch个数。