机器学习问题处理流程

1.加载数据,查看总体情况pandas。如果文件过大则用chunck分块

  • head()
  • info()
  • describe() 注意缺失值

2.数据预处理

  • 离群点 根据数据说明判断是否要去除
  • 数据是否符合正态分布。如果用回归模型则考虑转换
  • 数据之间关联性 使用corr
  • 如果数据有id这样的自增数据,删除 。抽取label字段

3.特征工程

  • 丢失值

    • 填充0 或者None看数据说明
    • Counter后如果分布很少,缺失的非常多考虑去除该列
    • 填充:中位数 平均数 众数(考虑使用groupby对相似列分组后进行填充。
  • 编码

    • one-hot 编码
    • 数字编码 LabelEncoder
    • 增加新的特征 组合特征等

4.建立模型准备

  • 训练集标准化 fit_transform(train) transform(test)

  • kfold 分组交叉验证

  • 参数网格搜索

  • 评价函数定义

    • 回归mse mae

    • 分类 混淆矩阵

      • 精度(查准率) 检测出来的正样本有多少是真的正样本
      • 召回率 (查全率)所有的正样本有多少被检测到了
      • F1score (1/(1/精度 + 1/召回)) 综合精度和召回的缺点
      • ROC 召回和负实例曲线 AUC ROC的面积 越大越好

      这里可以将所有的样本准确率从高到底排序,那么精度越高就是顶端的数据。如果阈值设置很高精度是高了。但是丢掉了很多正样本,所以调低阈值可以让召回增大,但是这样势必会增很多错误的,精度下降。所以f1score或roc目的是使得准确率的排序质量越来越高。

5.建立模型

  • 岭回归 损失函数+l2范式也就是平方 缩小不重要特征 但不会消除

  • Lasso回归 损失函数+l1倾向消除不重要的特征 一次项容易达到拐点

  • ElasticNet弹性网络 综合岭回归和lasso

  • SVM

    • SVR 回归
    • SVC 分类
    • 非线性SVM可以添加特征 使用核技巧对输入x增加变换 例如x^2等

    min1/2 * w^2 t(wx+b)>=1 使用拉格朗日乘子法

    使用SMO求解 基本思想是限定两个变量求取

    svm损失函数 类似hinge函数 最小化损失函数 使得每个点都在边界两边。

  • 决策树

    • ID3信息增益
    • 信息增益率
    • CART jini系数 进行的是二值划分 gini-0说明该分支是纯的
  • bagging 采样放回 pasting采样不放回 产生多个分类器预测再汇总结果

  • 随机森林 随机取样本+随机取特征

  • GBRT梯度提升树(残差)GBDT梯度决策树 样本-tree1->–残差–>tree2

  • Adaboost 不同于GBRT ,这里是对分类错的样本调整权重 样本-tree1->–调整权重–>tree2

  • XGBoost 样本->tree1->根据一个复杂的公式->tree2->…

    f = rT+1/2 * d* sum(w^2) r叶子个数 w叶子权重 即分枝时考虑树的复杂度

  • Lightbgm 处理大数据集更具优势

  • catboost 自动处理类别变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值