数据分析面经整理:机器学习方面

目录

  • 1.KNN的算法原理
  • 2.Kmeans
  • 3.DBSCAN
  • 4.Baggging和Boosting
    • 4.1 Bagging
      • 4.1.1 随机森林Random Forest(RF)
    • 4.2 Boosting
      • 4.2.1 xgboost
      • 4.2.2 Adaboost
      • 4.2.3 梯度提升决策树GBDT
    • 4.3 Bagging和Boosting的区别
  • 5.随机森林和xgboost,哪个容易过拟合,怎么解决,哪个提高树深度是为了减少偏差
  • 6.决策树
  • 7.为什么xgboost要用泰勒展开,优势在哪里?
  • 8.xgboost如何寻找最优特征?是有放回还是无放回的呢?
  • 9.SVM
  • 10.缺失值处理方法
  • 11.如何防止过度拟合
  • 12.怎么处理数据中的离群值
  • 13.判别式模型和生成式模型
  • 14.完整机器学习项目的流程
  • 15.解决数据不平衡问题
  • 16.特征离散化优点
  • 17.机器学习中,为何要对数据做归一化
  • 18.哪些机器学习算法不需要做归一化处理
  • 19.LR和SVM的联系与区别
  • 20.LR与线性回归的区别与联系
  • 21.sigmoid激活函数
  • 22.交叉验证
  • 23.正则化
  • 24.plsa和LDA
  • 25.混淆矩阵
  • 26.机器学习常见评估指标
  • 27.有关分类算法的准确率,召回率,F1值
  • 28.ROC/AUC
  • 28.什么是卷积
  • 29.简要介绍下tensorflow的计算图
  • 30.BatchNorm
  • 31.线性回归数学推导
  • 32.梯度下降数学推导
  • 33.逻辑回归数学推导

1.KNN的算法原理

KNN的全称是K Nearest Neighbors,意思是K个最近的邻居,KNN的原理就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。
K个最近的邻居的类别就决定了分类
k=几,找离要预测的最近的几个,看哪种多,归为哪类.
KNN比较适合整体样本比较少、典型性好的情况。便于发挥出其求近邻的优势,若样本呈现团状分布就无法计算近邻。

2.Kmeans

聚类算法
选择K个聚类中心,找离聚类中心最近的元素归为一类,然后聚类中心移动到这些点的中央,然后再找离聚类中心最近的元素,重复此过程,直到这些聚类中心稳定下来,聚类完成。

K-Means 算法的最大缺点是不能自动选择分类数k,常见的确定k的方法有:

  • 根据先验知识来确定
  • k=sqrt(N/2) N为样本数
  • 拐点法:把聚类结果的F-test值对聚类个数的曲线画出来,选择图中的拐点
  • 基于信息准则判断,如果模型有似然函数,则可以用 BIC、 DIC 来进行决策具体的k的选择往往和业务联系紧密,如希望能将用户进行分类,就有先验的分类要求

k-means的基本思想:
通过迭代寻找k个聚类的一种划分方案,使得用这k个聚类的均值来代表相应各类样本时所得的总体误差最小。
k-means算法的基础是最小误差平方和准则

K-means 聚类步骤:
Step1: 随机选择 k 个质心(即 k 个类)
Step2: 计算每一个点到这些质心的距离,然后决定每个点所属的类
Step3: 对于每个类,重新确定该类的质心
Step4: 若收敛,则结束;否则转到 Step2

K-means缺点:
1.对聚类中心的初始化比较敏感,不同的初始化带来不同的聚类结果
2.K值需要首先人工确定(启发式)
3.只能处理服从标准正太分布的聚类
4.K-means对于噪声比较敏感

3.DBSCAN

聚类算法:DBSCAN(附近点扫描算法)(基于密度)
扫描,看周围聚成一堆的能否达到聚类点的数目
在一点设定聚类中央,设定一个半径开始画圈扫描,看有几个点满足条件,若在一定半径内找不到一定的数目,则停止这次扫描,聚为一类。再找下一个点,再完成聚类。

4.Baggging和Boosting

Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好。

4.1 Bagging

Bootstrap aggregating,引导聚集算法,又称装袋算法,是机器学习领域的一种团体学习算法。
Bagging即套袋法,其算法过程如下:
1.从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
2.每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
3.对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;
对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

4.1.1 随机森林Random Forest(RF)

Random Forest(随机森林)是Bagging的扩展变体,它在以决策树 为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机特征选择,因此可以概括RF包括四个部分:
  
  (1)随机选择样本(放回抽样);
   随机选择样本和Bagging相同;
  
  (2)随机选择特征;
  
  (3)构建决策树;
  
  (4)随机森林投票(平均)。

4.2 Boosting

AdaBoosting方式每次使用的是全部的样本,每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小在上一轮训练正确的样本的权重,增大错误样本的权重。(对的残差小,错的残差大)
梯度提升的Boosting方式是使用代价函数对上一轮训练出的模型函数f的偏导来拟合残差。

4.2.1 xgboost

eXtreme Gradient Boosting,梯度提升极限树。
XGBoost的核心算法思想基本就是:
1.不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数f(x),去拟合上次预测的残差。
2.当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数
3.最后只需要将每棵树对应的分数加起来就是该样本的预测值。

Xgboost将单个分类器(弱分类器)进行集成。
Xgboost是提升算法,每加入一棵树(函数),模型效果要有提升。
要保留之前的模型预测,在此基础上加入新的函数,要保证加入新的函数之后,模型的表达效果有提升。
每一轮加入的函数都要使得目标函数(损失函数)尽可能降低。

4.2.2 Adaboost

Adaptive Boosting自适应增强。
之前的Xgboost只拿一种分类器进行集成,Adaboost用多个分类器一起集成。
自适应在于:前一个分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到指定的最大迭代次数。
数据分析面经整理:机器学习方面_第1张图片

4.2.3 梯度提升决策树GBDT

GBDT与传统的Boosting区别较大,它的每一次计算都是为了减少上一次的残差,而为了消除残差,我们可以在残差减小的梯度方向上建立模型,所以说,在GradientBoost中,每个新的模型的建立是为了使得之前的模型的残差往梯度下降的方法,与传统的Boosting中关注正确错误的样本加权有着很大的区别。
  
在GradientBoosting算法中,关键就是利用损失函数的负梯度方向在当前模型的值作为残差的近似值,进而拟合一棵CART回归树。(也就是拟合的是负梯度值)
  
基本流程:每轮迭代中,首先计算出当前模型在所有样本的负梯度, 然后,以该值为目标训练一个新的弱分类器,进行拟合并计算该弱分类器的权重。

4.3 Bagging和Boosting的区别

1)样本选择上:

Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。

Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。

2)样例权重:

Bagging:使用均匀取样,每个样例的权重相等

Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。

3)预测函数:

Bagging:所有预测函数的权重相等。

Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重。

4)并行计算:

Bagging:各个预测函数可以并行生成

Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

下面是将决策树与这些算法框架进行结合所得到的新的算法:

1)Bagging + 决策树 = 随机森林

2)AdaBoost + 决策树 = 提升树

3)Gradient Boosting + 决策树 = GBDT

5.随机森林和xgboost,哪个容易过拟合,怎么解决,哪个提高树深度是为了减少偏差

xgboost更容易过拟合,针对xgboost,减少过拟合可以通过增大gamma,降低tree depth,减少树的数量。

Random Forest不太容易over-fitting。Over-fitting的主要原因是因为模型学习了太多样本中的随机误差。因为Random Forest随机选择了样本和特征,并且将很多这样的随机树进行了平均,这些随机误差也随之被平均,乃至相互抵消了。
随机森林提高树深度来减少偏差。

6.决策树

决策树属于最常用的学习器, 其学习过程是从根建立树, 也就是如何决策叶子节点分裂。
ID3/C4.5决策树用信息熵计算最优分裂
CART决策树用基尼指数计算最优分裂
xgboost决策树使用二阶泰勒展开系数计算最优分裂

7.为什么xgboost要用泰勒展开,优势在哪里?

xgboost使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准。使用泰勒展开取得函数做自变量的二阶导数形式, 可以在不选定损失函数具体形式的情况下, 仅仅依靠输入数据的值就可以进行叶子分裂优化计算, 本质上也就把损失函数的选取和模型算法优化/参数选择分开了。这种去耦合增加了xgboost的适用性, 使得它按需选取损失函数, 可以用于分类, 也可以用于回归。

8.xgboost如何寻找最优特征?是有放回还是无放回的呢?

xgboost在训练的过程中给出各个特征的增益评分,最大增益的特征会被选出来作为分裂依据, 从而记忆了每个特征对在模型训练时的重要性——从根到叶子中间节点涉及某特征的次数作为该特征重要性排序。
xgboost属于boosting集成学习方法, 样本是不放回的, 因而每轮计算样本不重复.。另一方面, xgboost支持子采样, 也就是每轮计算可以不使用全部样本, 以减少过拟合。进一步地, xgboost 还有列采样, 每轮计算按百分比随机采样一部分特征, 既提高计算速度又减少过拟合。

9.SVM

SVM,全称是support vector machine,中文名叫支持向量机。
SVM是一个面向数据的分类算法,它的目标是为确定一个分类超平面,从而将不同的数据分隔开。
支持向量机是通过引入核函数,将样本空间映射到高维特征空间中,从而使在起始的样本空间非线性可分转化为在高维特征空间中线性可分。

10.缺失值处理方法

数据清理中,处理缺失值的方法有两种:
一、删除法:
1)删除观察样本
2)删除变量:当某个变量缺失值较多且对研究目标影响不大时,可以将整个变量整体删除
3)使用完整原始数据分析:当数据存在较多缺失而其原始数据完整时,可以使用原始数据替代现有数据进行分析
4)改变权重:当删除缺失数据会改变数据结构时,通过对完整数据按照不同的权重进行加权,可以降低删除缺失数据带来的偏差
二、插补法:均值插补、回归插补、抽样填补等

11.如何防止过度拟合

解决方法有:增大数据量、交叉验证、正则化特征、减少特征、减少权值

12.怎么处理数据中的离群值

离群值的存在会影响到对数据的拟合和预测,通常需要加以处理,大致可以分为两类方法:
第一类的方法可以参考缺失值处理:1)直接删除 2)替换:可以使用均值、中位数、众数进行替换
第二类的方法是离群值处理特有的:利用拉依达准则法(3σ准则),将超出这个范围的值替换成设定的阈值,通常为均值±3σ、均值±2σ,视情况而定。

13.判别式模型和生成式模型

判别方法:由数据直接学习决策函数Y = f(X),或者由条件分布概率 P(Y|X)作为预测模型,即判别模型。
生成方法:由数据学习联合概率密度分布函数 P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型。
由生成模型可以得到判别模型,但由判别模型得不到生成模型。
常见的判别模型有:K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑回归、boosting、条件随机场
常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)

14.完整机器学习项目的流程

1 抽象成数学问题
2 获取数据
3 特征预处理与特征选择
4 训练模型与调优
5 模型诊断
6 模型融合
7 上线运行

15.解决数据不平衡问题

1.采样,对小样本加噪声采样,对大样本进行下采样
2.数据生成,利用已知样本生成新的样本
3.进行特殊的加权,如在Adaboost中或者SVM中
4.采用对不平衡数据集不敏感的算法
5.改变评价标准:用AUC/ROC来进行评价
6.采用Bagging/Boosting/ensemble等方法
7.在设计模型的时候考虑数据的先验分布

16.特征离散化优点

1.离散特征的增加和减少都很容易,易于模型的快速迭代
2.稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展
3.离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰。
4.逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合
5.离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力。
6.特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问。
7.特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

17.机器学习中,为何要对数据做归一化

1)归一化后加快了梯度下降求最优解的速度
2)归一化有可能提高精度

18.哪些机器学习算法不需要做归一化处理

概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。
而像Adaboost、SVM、LR、KNN、KMeans之类的最优化问题就需要归一化。
之所以进行数据归一化是因为各维度的量纲不相同,同时作为变量的时候可能会造成数值计算的问题,比如说求矩阵的逆可能很不精确或者梯度下降法的收敛比较困难,还有如果需要计算欧式距离的话可能量纲也需要调整。

19.LR和SVM的联系与区别

联系:
1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题) 2、两个方法都可以增加不同的正则化项,如l1、l2等等。所以在很多实验中,两种算法的结果是很接近的。

区别:
1、LR是参数模型,SVM是非参数模型
2、从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hinge loss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
3、SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
5、logic能做的svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。

20.LR与线性回归的区别与联系

逻辑回归的模型本质上是一个线性回归模型,逻辑回归都是以线性回归为理论支持的。
但线性回归模型无法做到sigmoid的非线性形式,sigmoid可以轻松处理0/1分类问题。

21.sigmoid激活函数

非线性激活函数,相当于把一个实数压缩至0到1之间。

22.交叉验证

将数据样本切割成较小的子集,一部分用于训练模型,一部分用于验证模型(训练集的规模比验证集的规模大得多),利用验证集来测试训练得到的模型,主要用于评估模型的性能。通过模型在训练集上的表现和在验证集上的表现差异,来评估模型的泛化能力,和最终确定模型。
常见的有:k-folds 交叉验证,leave-one-out法
k-folds交叉验证:
将初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次。
平均K次的结果或者使用其它结合方式,最终得到一个单一估测。

23.正则化

正则化数学推导:
正则化:在目标函数后面加上惩罚项。对损失函数来说,越低越好,在损失函数中加正则化惩罚项来惩罚权重参数,值变大。看哪种模型加上一部分后,得到的损失函数更低。正则化用来惩罚预测函数中的权重参数,降低过拟合(模型在训练集上效果好,在测试集上效果差)的风险,可以用来选出更稳定的模型。
L1正则化:通过让原目标函数加上了所有特征系数绝对值的和来实现正则化,+w的绝对值,用于特征的选择。目标函数后+λ×L1,λ为惩罚力度。
正则化是针对过拟合而提出的,因为在求解模型最优的是一般优化最小的经验风险,现在在该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降低过拟合的风险。
奥卡姆剃刀原理,能够很好的解释已知数据并且十分简单才是最好的模型。
L2正则化:目标函数中增加所有权重w参数的平方之和, 逼迫所有w尽可能趋向零但不为零。因为过拟合的时候, 拟合函数需要顾忌每一个点, 最终形成的拟合函数波动很大, 在某些很小的区间里, 函数值的变化很剧烈, 也就是某些w非常大.。为此, L2正则化的加入就惩罚了权重变大的趋势。
L1正则化:目标函数中增加所有权重w参数的绝对值之和, 逼迫更多w为零(也就是变稀疏. L2因为其导数也趋0, 奔向零的速度不如L1给力了)。

24.plsa和LDA

LDA是pLSA的贝叶斯版本,文档生成后,两者都要根据文档去推断其主题分布和词语分布,只是用的参数推断方法不同,在pLSA中用极大似然估计的思想去推断两未知的固定参数,而LDA则把这两参数弄成随机变量,且加入dirichlet先验。dirichlet先验为某篇文档随机抽取出某个主题分布和词分布。plsa认为主题分布和词分布是唯一确定的。

25.混淆矩阵

用于评估预测模型的矩阵称为混淆矩阵。
横轴为预测值,纵轴为真实值.
TP代表把正类判断为正类,FP代表把负类判断为了正类(误报)
FN代表把正类判断为了负类(漏报),TN代表把负类判断为负类
数据分析面经整理:机器学习方面_第2张图片
精度=(TP+TN)/全部
样本数据不均衡时,精度来评估的模型不一定有效,用recall查全率来评估。
recall查全率=TP/(TP+FN),其中TP+FN为实际为正例的。

26.机器学习常见评估指标

模型预测效果评价,通常用相对、绝对误差(AE、RE)、平均绝对误差(MAE)、根均方差(MSE)、均方根误差(RMSE)等指标来衡量。

27.有关分类算法的准确率,召回率,F1值

对于二类分类问题常用的评价指标是精准度(precision)与召回率(recall)。通常以关注的类为正类,其他类为负类,分类器在测试数据集上的预测或正确或不 正确,4 种情况出现的总数分别记作:
TP——把正类判断为正类
FN——正类判断为了负类(漏报)
FP——代表把负类判断为了正类(误报)
TN——把负类判断为负类
由此:
精准率定义为:P = TP / (TP + FP)
召回率定义为:R = TP / (TP + FN)
F1 值定义为: F1 = 2PR / (P + R)
定义为精确率和召回率的调和平均数。

28.ROC/AUC

ROC的全名叫做Receiver Operating Characteristic接受者操作特征曲线,其主要分析工具是一个画在二维平面上的曲线——ROC curve。
平面的横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)。
TPR:在所有实际为阳性的样本中,被正确地判断为阳性之比率,等同于recall值。
TPR=TP/(TP+FN)

FPR:在所有实际为阴性的样本中,被错误地判断为阳性之比率。FPR=FP/(FP+TN)
曲线距离左上角越近,证明分类器效果越好。

因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。

越靠近左上角的情况查出率越高,查错率越低,[0,1]点是最完美的状态。而越靠近右下角,算法质量越低。
数据分析面经整理:机器学习方面_第3张图片

把从一组预测样本得到的[FPR,TPR]作为一个点描述,并且我们知道阈值的改变会严重影响FPR和TPR,那么,如果我们把所有可能的阈值都尝试一遍,再把样本集预测结果计算得到的所有[FPR,TPR]点都画在坐标上,就会得到ROC曲线。

AUC(Area Under roc Curve)是一种用来度量分类模型好坏的一个标准。
AUC值为ROC曲线所覆盖的区域面积,显然,AUC越大,分类器分类效果越好。
  AUC = 1,是完美分类器,采用这个预测模型时,不管设定什么阈值都能得出完美预测。绝大多数预测的场合,不存在完美分类器。
  0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
  AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
  AUC < 0.5,比随机猜测还差;但只要总是反预测而行,就优于随机猜测。

28.什么是卷积

对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作。

29.简要介绍下tensorflow的计算图

Tensorflow是一个通过计算图的形式来表述计算的编程系统,计算图也叫数据流图,可以把计算图看做是一种有向图,Tensorflow中的每一个节点都是计算图上的一个Tensor, 也就是张量,而节点之间的边描述了计算之间的依赖关系(定义时)和数学操作(运算时)。

30.BatchNorm

BatchNorm就是在深度神经网络训练过程中使得每一层神经网络的输入保持相同分布的。

31.线性回归数学推导

1.输入数据X1、X2,Y为预测值,拟合出一个平面,拟合出的平面的函数(预测函数)=偏置项+权重参数×数据,要计算出权重参数
2.多加一列全为1的数据,使偏置项也变为权重参数×数据的形式,便于矩阵的计算
3.对于每个样本,真实值=预测值+误差
4.每个样本相互独立且同分布,假设误差服从高斯分布(绝大多数情况下不会浮动太大)
5.将拟合出平面的函数带入高斯分布的函数中得到似然函数(似然函数用来描述什么样的权重参数与数据组合后为真实值的概率,似然函数越大越好),化似然函数为对数似然。
6.展开化简,拿出对数似然函数中负号后面的一部分,为目标函数(损失函数)。
进行分析,用最小二乘法来求解目标函数,因为在负号后面所以目标函数越小越好。
7.对目标函数求偏导,偏导为0的时候为极小值点,目标函数最小,似然函数最大,据此求出权重参数
8.利用求出的权重参数和预测函数来预测
补充:(最小二乘法无法求解时,使用梯度下降)

32.梯度下降数学推导

1.对目标函数求偏导,得到的偏导数就是梯度,要求权重参数,使目标函数最小,直接求偏导为梯度上升,反方向才为梯度下降,沿着目标函数下降的方向走,不断求偏导来更新参数,设置学习率(步长)直到走到最低点,得到近似最优解(曲线收敛)
2.一般使用小批量梯度下降法(mini-batch),每次更新选取一小部分数据来算;批量梯度下降容易得到最优解,但每次考虑所有样本,速度慢;随机梯度下降,每次找一个样本,速度快,但不一定每次都朝着收敛的方向。
3.学习率(步长)即更新的幅度,学习率越小,迭代次数越多,结果更准确,但速度慢,通常0.01开始,曲线不收敛再调小。

33.逻辑回归数学推导

逻辑回归为经典的二分类算法
1.将权重参数×数据代入sigmoid函数得到预测函数,输出为概率,实现由值到概率的转换。根据预测函数(为概率)进行分类,1代表一种分类(P=预测函数),0代表另一种(P=1-预测函数),将两种情况整合为一个式子。在数据中插入全为1的列,转化为矩阵运算,使预测函数整合。
2.将整合后的函数累乘为似然函数,取对数变为加,为对数似然(似然函数用来描述什么样的权重参数与数据组合后为真实值的概率,似然函数越大越好)。
3.将对数似然加负号由梯度上升转化为梯度下降,转化为目标函数(损失函数),可算出损失值,损失值可用来设定停止策略(根据目标函数损失值的变化,变化很小时停止)。
4.对预测函数求偏导来计算梯度(参数更新的方向)。
6.运用梯度下降来进行参数的更新:θ=θ-学习率×梯度
可设定一个值,当两次更新的损失值小于这个值的时候停止更新,选择mini-batch的梯度下降方法,设定学习率(步长)。
当损失函数曲线收敛时,模型可用,求出了参数。
7.设定阈值。
8.根据参数确定了此逻辑回归模型,可运用模型进行分类。

你可能感兴趣的:(Python数据分析,机器学习)