机器学习算法实践

本文介绍了Python学习的重点,强调理解库的功能而非记忆。接着讨论了概率统计的基础,包括随机变量和概率分布。接着转向机器学习,涵盖从数据处理、特征选择到评估预测的流程,并探讨了算法如线性回归、逻辑回归和决策树。深度学习部分提到了神经网络和解决过拟合的方法。最后,文章还触及了贝叶斯算法和关联规则等主题。
摘要由CSDN通过智能技术生成

Python学习

  • 边学边写

  • Python库不用记,知道每个库能干什么就行,有哪些常用函数

类和模块 (class modual)

每个类都有属性(attribute)和方法(method)

属性:身高、体重、年龄(变量定义,=)

方法:吃饭、说话、睡觉(函数定义,def开头)

概率统计背景知识

概率论

两大基石函数:概率分布函数,概率密度函数

  1. 随机变量

如果随机变量X的值可以逐个列举出来,则X为离散随机变量;如果随机变量X的值无法逐个列举,则X为连续随机变量。

  • 离散型随机变量:自然数或整数,企业个数、员工人数、设备台数

  • 连续型随机变量:相邻两个值之间可无限分割,生产零件的规格尺寸、人的身高、人的体重

  1. 离散型随机变量的概率函数、概率分布、分布函数

① 概率函数
② 概率分布

③ 分布函数

概率分布函数

3.连续型随机变量的概率函数与分布函数

① 概率函数

连续型随机变量的概率函数换了一个 名字,叫做 "概率密度函数".

(a)概率分布函数

(b)概率密度函数

概率密度函数其实一个定积分的函数,定积分在数学一般用来求面积,可把"概率"理解为"面积".

概率密度函数在某点的函数值,即为概率在该点的变化率

数学符号

分号代表前后是两类东西,分号前面是x样本,分号后边是模型参数

表示 A和B事件同时发生的概率,是联合概率分布。逗号在这里分开两个事件,有“与”的关系

大多数情况下表示条件概率,表示在B的条件下A发生的概率

P(Y=y|x;θ)实际上就是P(Y=y|X=x;Θ=θ)的一个简写形式,P(Y=y|x;θ)的意思即为在X = x;Θ = θ的条件下,Y = y 的概率。

p(yi|xi;w,b)---(概率密度value=0~1)

p(yi|xi;w,b) 是 给定xi,w,b的条件下y=yi的概率,分号用于区别参数,分号后为参数w,b

两个连续型变量相互独立的充要条件就是联合概率密度等于两个边缘概率密度的乘积

似然函数

似然函数L(θ|x)(在数值上)等于给定参数θ后变量X的概率

目标找到使似然函数最大的θ

离散型随机变量的似然函数是概率连乘,连续型随机变量似然函数是概率密度连乘

人工智能

基础是机器学习

机器学习需要:算法、数据、程序、评估、应用

机器学习应用

机器学习流程

  1. 数据收集与预处理

  1. 特征选择与模型构建

  1. 评估和预测

机器学习如何学

  • 机器学习本质包含数学原理推导和实际应用技巧

  • 弄清楚算法的推导及应用

  • 高等数学基础很重要,通学一遍后边学变查即可

学生:推导是重中之重

程序员:重点在如何应用(库的使用,完整项目如何构建,从头到尾的流程)

算法推导如何学:

书、博客、视频都可

深度学习

深度学习是机器学习中神经网络算法的延伸,只不过应用的比较广

深度学习在计算机视觉和自然语言处理中更厉害一些

机器学习案例

案例很重要,先模仿再创作,有套路,很少从头开始写

案例:GitHub、kaggle

线性回归(Linear Regression)

数据特征(x):年龄、工资

标签(y):预测银行给的贷款额度

数学表达

偏置项:相当于y=wx+b 中的 b 即函数的截距

整合即用求和公式表示hθ(x)、

误差

真实值与预测值之间误差

上标(i)表示样本数 i=1,2,3,,,n

误差分布

独立:数据特征之间互相独立且不受排名前后影响(需要对数据集进行Random shuffle dataset)

似然函数

求出最大似然函数即是最优参数解

似然函数L(θ|x)(在数值上)等于给定参数θ后变量X的概率,能使似然函数最大的参数θ即最优参数

引入似然函数:概率密度累乘即似然函数,求参数θ使数据预测值接近真实值

对数似然

求解似然函数两边取对数

评估方法

梯度下降

似然函数中得到目标函数如何求解?

直接解:并不一定可解,线性回归可以当做是一个特例

求解方法:按照正确的学习方式迭代求解

求解目标函数最低点

因为θ0,θ1独立,所以要分别求偏导,再确定优化方向

  1. 选择方向

  1. 确定步长

  1. 按照方向和步长迭代更新

梯度下降方法

批量梯度下降

梯度:梯度的方向是函数值增加最快的方向

求θj偏导,再θj迭代. 梯度下降,迭代需要加负号,(θj=θj-目标函数偏导数)

样本x, i行j列

随机梯度下降
小批量梯度下降法(Mini-Batch)

32,64,128为一组都可

学习率(步长)

对结果影响较大,一般从小开始,不行再小

逻辑回归

解决经典二分类问题

是一个分类算法

先用逻辑回归,不合适再用复杂的算法

决策边界可以是非线性的

Sigmoid 函数

将值转化为概率

事件发生概率大于0.5机器归类为1

将函数映射到sigmoid函数中得到预测函数

预测函数值为概率值

k-means算法

无监督问题:无标签值

聚类难点:如何调参,分为几类(K值)

质心:均值,向量维度取平均

距离的度量:欧几里得距离和余弦相似度(必须先标准化)

劣势:

  • k值难确定

  • 样本越大越复杂

  • 难发现任意形状簇

DBSCAN算法

  • 类似传销发展下线,在一定距离内可发展,所有下线为一类

  • 核心对象即传销头子,成为传销头子对象是在指定范围内(r邻域)能发展大于一定数量的下线(minpts密度阈值)

  • 所有下线不能成为核心对象是停止迭代

p、q点同在一个圈内--直接密度可达

可检测离群点检测

决策树

树模型关键在选特征

解决如下问题:如何选择根节点以及根节点的顺序?

选择分类能力最强的

衡量特征标准:熵

有多个特征就有多少种分类方式,选择每一个特征作为节点,算出熵,进而得出信息增益,选信息增益最大的特征作为节点。

概率越大越纯,熵值越小接近0

对不同的类别,熵值累加求总熵值

信息增益

信息增益率

解决ID 问题

如果ID作为特征,特征内类别非常多,分类后熵均为0,但是ID与play无关

基尼系数

连续值离散化

决策树预剪枝

决策树过拟合高风险大,每个样本点可分为一类

预剪枝

  • 限制深度:叶子节点数

  • 信息增益量:信息增益太小结束剪枝

后剪枝

建立完决策树后剪枝

给定alpha,alpha越大越不过拟合

总体损失:C(T)= gini+alpha*节点个数

剪完后损失大就不剪

决策数回归问题

衡量标准:方差

相似的样本(值差不多)放在一起

集成算法(ensemble learning)

集成算法基本是树模型

类似串联电路(boosting)、并联电路(bagging)

用多个算法

随机森林

  • 树模型可解释性强(可视化强)

  • 能处理高维数据(不用选择特征,能给出特征重要性)

  • 并行处理,速度快

特征重要性衡量方法

  1. 将B特征破坏,加入离散值错误值等,计算破坏前后模型错误率,用错误率判断特征重要性(前后错误差距小,特征不重要)

  1. 通过特征位置,节点位置判断重要性

Bagging

并行训练一堆分类器

典型:随机森林

随机:特征选择、数据采样随机(保证泛化能力)

建立多个树模型(森林),求均值(R2?)

树模型数量

二十个左右即可

Boosting

前一轮模型(多个)+后一个(更强的,通过比较标签值)模型

xgboost

将划分错误的样本加大权重,再进行下一次分类

Adaboost

stacking

堆叠各种算法

分阶段,用上一阶段结果训练下一阶段

支持向量机support vector machine

决策边界

目标是是点到线的最大距离,即优化方向

是有监督算法

目标函数

有边界点的向量(x1,x3)支撑起来

引入松弛因子(C 大,松弛因子小)

核函数

核函数

增加一个维度将红点绿点分开,z轴为xy时,可将红绿点用平面划分

高斯核函数

神经网络算法-深度学习

机器学习 特征工程占首位

需要人工选出合适特征选择算法进行建模然后评估

深度学习为了解决人工挑选特征问题,更智能,解决特征工程问题。

能学习什么特征时最合适的,选好特征用常用算法(RF、SVM)效果就会很好

K近邻

在一定范围内,哪一类数量多,未知量就判断为哪一类

计算绿点距每个类别点的距离,然后确定范围

神经网络基础

线性函数

分类为10,则有是个权重参数w,每个权重参数含3072个像素值

b为偏置参数,权重参数起决定作用,偏置参数微调

三分类任务

w值越大说明对应x越重要,正值促进,负值抑制

预测值437.9最大,结果预测为狗,因此需要修改权重参数

神经网络主要工作:需要根据监督标签调整权重参数,进行学习

损失函数

如何衡量分类结果

取 错误得分-正确得分+1或0中最大值为损失值

前向传播

求损失值

分类问题需要将得分转化成概率(sigmoid函数)

通过exp函数,将得分结果放大,然后归一化得到结果概率值

对数函数求损失,预测结果概率接近1,损失越小

反向传播

梯度下降,减小损失值

分步求偏导

通过对原始数据进行权重计算,选出重要的特征,然后进行权重迭代计算

链式法则

从后往前逐步对w求偏导,逼近loss最小值

理解即可

整体计算(几步流程时完成一个公式,因此可以对公式求偏导)

门单元

计算涉及求导

加法对x、y求偏导均等;

乘法对x求偏导得出y的函数即互换;

max门单元,将梯度给大的值,不给小的?

整体架构

全连接:中间全连接为赋予权重参数,原数据转化为新的矩阵数据

非线性:神经网络是非线性的,不能有W4,代替W2,因为这是有顺序的

神经元:神经元越多,过拟合风险越大

神经网络就是找最优的w解,使得损失函数最小,预测概率最正确

神经元为1(类似画1条线)

神经元为2(类似画2条线)

神经元为3(类似画3条线)

神经元为5

神经元为10

神经元为20

过拟合

绿色是异常值,该点更应为红色

神经网络优势

能够做其他算法做不到的分类

比如随机数据,其他算法无法得出规律,神经网络可进行分类

神经网络正则化

激活函数

不用sigmoid因为其梯度(偏导)会接近0,传递梯度0,作用不大

数据预处理

去中心化(减均值)

归一化(除标准差)

参数初始化

乘0.01保证w波动变化均匀

drop out

训练阶段:在每一个hidden layer中随机选择一定比例的神经元进行杀死

整体流程

前向传播:数据预处理-赋予权重-激活函数-赋予权重-激活函数-赋予权重-loss

反向传播:求出loss-对w3求偏导-对激活函数求偏导-对w2求偏导-对激活函数求偏导-对w1求偏导

什么样的权重参数最适合与当前任务,将w里的值求出来神经网络即完成(过拟合问题必出现,解决过拟合问题很重要)

贝叶斯算法

正向概率

已知概率

逆向概率

未知概率,通过现象判断概率

先验概率

不同任务先验概率P(h)不一样

p(h1)为文本库中than出现的概率

p(h2)为文本库中the出现的概率

p(D|h)为将the拼成tha的概率(需要自己定规则)

朴素贝叶斯

假设特征之间条件无关,用来化简时候用

关联规则

两个或以上变量值之间有关联

项集

特征之间的组合

支持度

X、Y项集同时出现/项集总数

置信度

X、Y项集同时出现/购买X项集的数量

提升度

可能A、B之间独立,但是置信度很高

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值