python与机器学习

  • Post author:
  • Post category:python


机器学习

数据挖掘、CV、NLP、语音识别、统计学习、模式识别

套路:1.数据收集处理;2.特征选择与模型构建;3.评估与预测

站点:kaggle  github

python库

科学计算库numpy

pandas

线性回归

例子:工资x1、年龄x2、贷款额度y关系关系:;

预测一个值,这个值有区间。工资和年龄是特征;贷款额度是目标或者标签;

拟合一个面分割的过程;y= a+b*x1+c*x2;a偏置参数对结果影响小;bc权重参数,对结果影响大。

真实值y与预测值y’的误差
\varepsilon
;一万个样本一万个
\varepsilon
,这些误差满足:独立同分布,均值0方差为~的高斯分析。

独立即两个贷款人样本不相关。

同分布即都来同一个银行贷款。

高斯分布即贷款浮动满足正太分布,浮动不会大。

似然函数:乘积,用来根据样本数据估计参数值。

最大似然估计:似然函数越大越好—-预测值成为真实值的可能性。

目标函数求偏导数=0,求极小值。

凸优化–凸函数

X即工资和年龄,Y是贷款额。

评估方法:R方

梯度下降策略

就是找山谷最低点,即目标函数的极值点。什么样的参数能使目标函数达到极值点。

按照一定方向、步伐更新参数。

批量梯度下降:速度慢。

随机梯度下降:不定收敛。

小批量梯度下降:常用。学习率,步长,小一点。批处理数量,32,64,128等。考虑内存和效率。

逻辑回归算法

做的是二分类任务。

机器学习算法一般先用逻辑回归简单算法,不行再复杂点的算法。

非线性即高阶函数。逻辑回归可以处理非线性问题。

例子:预测大学生是否被录取,大量申请人的历史数据作训练集。

损失函数就是上边的对数似然函数去负号再求平均。

求梯度;

定义停止策略;1.迭代次数;2.损失变化;3.根据梯度;

数据洗牌,提高泛化能力;np.random.shuffle(data)

实验对比过程:

1.调节停止策略;迭代次数;损失;梯度;

2.调节学习率;

3.使用mini-batch替代批量梯度下降;

4.数据标准化;

评估指标:精度;

案例:交易数据异常检测

1.背景

pandas读取csv数据;

第一行是已经提取好的特征;

0是正常;1是异常;本质是个分类任务;故使用使用逻辑回归二分类。

2.数据处理

正负样本比例统计-》样本不均衡的解决方法-》下采样与过采样方案;

sklearn库-》预处理模块,数据处理fit_transform()得到新的特征;

drop无用的特征;

正常的数据下采样到异常一样的数据;index;


交叉验证:

80%训练集-20%测试集,数据切分;80%的训练集又分出验证机集-》交叉验证求平均。

klearn.cross_validation


模型评估:

recall召回率;

TP:true positive,预测对了,预测成了正样本;

FP,false positive;错误判断成正样本;存伪;

FN,false negative;错误判断成了负样本;

TN,true negative;预测对了,预测成了负样本;

recall = TP/(TP+FN)

混淆矩阵:

实际兼顾精度与召回;


正则化惩罚项:

loss后边加上L1/L2正则项;惩罚力度有个因子;

SMOTE数据上采样生成:

1.找出少数种类,计算欧氏距离得到k近邻排序;

2.采样倍率;

3.生成新数据;

决策树算法

分类树和回归树都可以。

从根节点到叶子节点,来决策,完成分类或者回归。

根节点是最重要的因素;

非叶子节点:中间过程;

叶子节点:决策结果;

增加一个节点相当于数据切一刀分开;

训练:构造决策树-》选择节点-》衡量标准-》熵值;

测试:数据走一遍即可;

熵值:随机变量的不确定性;混乱程度;熵值越高,越乱,越不稳定;


信息增益

:表示特征X使得类别Y的熵值减小(不确定性减小)的程度。

即分类后,类内同类的多,即熵值小;

信息增益率:考虑自身熵值;

GINI系数:

越小则越 接近1,越确定,熵值越小;

决策树剪枝:防止过拟合;

预剪枝:边建立边剪枝;限制树深度,叶子节点个数,叶子节点样本数,信息增益等。

后剪枝:建立完再剪枝;一定的衡量标准来判定;

sklearn决策树参数:

内置数据集:


可视化graphviz包:

sklearn构建:

切分训练集与测试集;

参数选择:gridSearchCV模块;

集成算法


ensemble learning

bagging集成模型

并行训练多个分类器取平均;

随机森林:多个决策树并行放在一起;数据采样随机;特征选择随机;->提高泛化能力;

树模型个数并不是越多越好;达到一定量就不提高了;

特征重要性衡量:特征破坏看误差;作用:特征筛选;

boosting提升模型

adaboost: 根据前一次的分类效果调整数据权重;前边训练错了,后边权重则增加;

xgboost:后边;

stacking堆叠模型

聚合多个分类或回归模型;如KNN,SVM, RF;

第一阶段得出各自结果;第二阶段再用前一阶段的结果训练;

准确率提升,速度慢;

案例实战:泰坦尼克获救预测

船员数据分析:label;特征:性别,年龄,名字,老人和孩子数量,票编号,票价,站点;

数据预处理:

pandas读取csv;

缺失值处理:去掉列 or 缺失值填充:均值;

male与female替换成0和1;

构建算法模型:

线性回归:sklearn,交叉验证分割数据集;

逻辑回归:sklearn;

随机森林分类也可以:调参,树的个数;特征工程,加特征,造特征;

随机森林特征重要性分析:

贝叶斯算法

逆概问题;正向概率,逆向概率;

贝叶斯公式:

拼写纠正实例:

垃圾邮件过滤实例:

朴素贝叶斯问题假设特征之间独立,互不影响;

拼写检查器实例:

文本数据分析:新闻分类任务

停用词表;stop words;

Tf-idf:关键词提取;Term Frequency (TF)词频统计;

idf: 逆文档频率;



版权声明:本文为qq_22424571原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。