机器学习问题总结(05)

文章目录

    • 1. Hadoop、Spark
      • 1.1 hadoop
      • 1.2 spark
      • 1.3 MapReduce
      • 1.3.1 概念
        • 1.3.1 MapReduce执行流程
    • 2、机器学习场景
    • 3、推荐系统(预测电影等级)
    • 4、CTR(点击通过率 -> 广告)
    • 5、SVM
      • 5.1 svm的原理
      • 5.2 SVM的核技巧
    • 6、K-means
      • 6.1 K-means算法
      • 6.2、如何用 hadoop 实现 k-means
    • 7、naive bayes和logistic regression的区别
    • 8、生成模型、判别模型
    • 9、LDA的原理和推导
    • 10、做广告点击率(CTR)预测,用哪些数据什么算法
      • 10.1 特征选择与使用
      • 10.2 点击率模型的评估方法
      • 10.3 LR+人工 特征工程 风光不再
        • 10.4、逻辑回归
    • 11、常见计算广告点击率(CTR)预估算法
      • 11.1**CTR架构**
      • 11.2主要算法
        • 1.Logistic Regression
        • 2.PLOY2:通过特征的二项式组合来建模
        • 3.Factorization Machine(FM)
        • 4.Field-aware FM(FFM)
        • 5.FNN(前向神经网络在CTR中的应用)
        • 6.CCPM(卷积神经网络在CTR中的应用)
        • 7.PNN
        • 8.DeepFM
        • 9.其他方法:
    • 12、推荐系统的算法中KNN和矩阵分解各自适用场景
      • 12.1 矩阵分解
      • 12.2 矩阵分解的优劣

1. Hadoop、Spark

1.1 hadoop

Apache Hadoop软件库是一个允许使用简单编程模型跨计算机集群处理大型数据集合的框架,其设计的初衷是将单个服务器扩展成上千个机器组成的一个集群为大数据提供计算服务,其中每个机器都提供本地计算和存储服务。

主要解决两大核心问题:大数据存储 && 大数据处理

1.2 spark

spark是一个和Hadoop一样思路的大数据处理框架,但是Hadoop是基于磁盘计算的,而spark是基于内存计算的。

spark相比于Hadoop的优势

  • 速度快:Apache Spark拥有先进的DAG调度器、查询优化器以及物理执行引擎从而高性能的实现批处理和流数据处理
  • 易用性:可以使用Java,Scala,Python,R以及SQL快速的写Spark应用
  • 通用性:支持SQL,流数据处理以及复杂分析,Spark拥有一系列库,包括SQL和DataFrame,用于机器学习的MLib,支持图计算GraphX以及流计算模块Streaming。你可以在一个应用中同时组合这些库。
  • 支持多种模式运行:平台包括Hadoop,Apache Mesos,Kubernete,standalone或者云上,也可以获取各种数据源上的数据

1.3 MapReduce

1.3.1 概念

MapReduce是一种并行可扩展计算模型
MapReduce由JobTracker和TaskTracker组成。JobTracker负责资源管理和作业控制,TaskTracker负责任务的运行。

1.3.1 MapReduce执行流程

(1) 开发人员编写好MapReduce program,将程序打包运行。
(2) JobClient向JobTracker申请可用Job,JobTracker返回JobClient一个可用Job ID。
(3) JobClient得到Job ID后,将运行Job所需要的资源拷贝到共享文件系统HDFS中。
(4) 资源准备完备后,JobClient向JobTracker提交Job。
(5) JobTracker收到提交的Job后,初始化Job。
(6) 初始化完成后,JobTracker从HDFS中获取输入splits(作业可以该启动多少Mapper任务)。
(7) 与此同时,TaskTracker不断地向JobTracker汇报心跳信息,并且返回要执行的任务。
(8) TaskTracker得到JobTracker分配(尽量满足数据本地化)的任务后,向HDFS获取Job资源(若数据是本地的,不需拷贝数据)。
(9) 获取资源后,TaskTracker会开启JVM子进程运行任务

MapReduce编程主要组件

在这里插入图片描述

2、机器学习场景

搜索、广告、垃圾过滤、安全、推荐系统…

3、推荐系统(预测电影等级)

对于机器学习来说,特征是非常重要的(对ML算法影响很大)
推荐系统:自动的替你学习到一组很好的特征量
这里写图片描述

4、CTR(点击通过率 -> 广告)

CTR(Click-Through-Rate)即点击通过率,是互联网广告常用的术语,指网络广告(图片广告/文字广告/关键词广告/排名广告/视频广告等)的点击到达率,即该广告的实际点击次数除以广告的展现量。
CTR是衡量互联网广告效果的一项重要指标

CTR指在搜索引擎中输入关键词后进行搜索,然后按竞价等因素把相关的网页按顺序进行排列出来,然后用户会选择自己感兴趣的网站点击进去;把一个网站所有搜索出来的次数作为总次数,把用户点击并进入网站的次数占总次数的比例叫点击率。

5、SVM

5.1 svm的原理

(1)大间隔分类超平面,(线性二分类)找到一条更“胖”,更健壮的分割线

(2)分割线的确定只与支持向量有关

(3)噪声点是造成过拟合的主要原因

(4)分界面与支持向量的距离: 1/||w||

为什么???

5.2 SVM的核技巧

  • 将特征转换、z空间内积计算 合起来,会简化计算

6、K-means

6.1 K-means算法

K-means是聚类算法中最简单的一种,将样本聚类成k个簇(cluster)

K均值是一个迭代方法:
1.簇分配
2.移动聚类中心
3.当聚类中心不再变化时,聚类完成

K值的选择
肘部法则(统计不同K下的模型的性能,找到性能突然降低的那个点为拐点则为我们的K),场景需求

  • 优点:算法简单、簇类时效果好
  • 缺点:大数据计算开销大,K值难以估计,随机初始影响大

6.2、如何用 hadoop 实现 k-means

写mapreduce程序实现kmeans算法,我们的思路可能是这样的
1 用一个全局变量存放上一次迭代后的质心

2 map里,计算每个质心与样本之间的距离,得到与样本距离最短的质心,以这个质心作为key,样本作为value,输出

3 reduce里,输入的key是质心,value是其他的样本,这时重新计算聚类中心,将聚类中心put到一个全部变量t中。

4在main里比较前一次的质心和本次的质心是否发生变化,如果变化,则继续迭代,否则退出。

本文的思路基本上是按照上面的步骤来做的,只不过有几个问题需要解决

1 Hadoop是不存在自定义的全局变量的,所以上面定义一个全局变量存放质心的想法是实现不了的,所以一个替代的思路是将质心存放在文件中

2 存放质心的文件在什么地方读取,如果在map中读取,那么可以肯定我们是不能用一个mapreduce实现一次迭代,所以我们选择在main函数里读取质心,然后将质心set到configuration中,configuration在map和reduce都是可读

7、naive bayes和logistic regression的区别

  • Naive Bayes是一个生成模型,在计算P(y|x)之前,先要从训练数据中计算P(x|y)和P(y)的概率,从而利用贝叶斯公式计算P(y|x)。Logistic Regression是一个判别模型,它通过在训练数据集上最大化判别函数P(y|x)学习得到,不需要知道P(x|y)和P(y)。

  • Naive Bayes是建立在条件独立假设基础之上的,设特征X含有n个特征属性(X1,X2,…Xn),那么在给定Y的情况下,X1,X2,…Xn是条件独立的。Logistic Regression的限制则要宽松很多,如果数据满足条件独立假设,Logistic Regression能够取得非常好的效果;当数据不满度条件独立假设时,Logistic Regression仍然能够通过调整参数让模型最大化的符合数据的分布,从而训练得到在现有数据集下的一个最优模型。

  • 当数据集比较小的时候,应该选用Naive Bayes,为了能够取得很好的效果,数据的需求量为O(log n);当数据集比较大的时候,应该选用Logistic Regression,为了能够取得很好的效果,数据的需求量为O( n)

  • Naive Bayes运用了比较严格的条件独立假设,为了计算P(y|x),我们可以利用统计的方法统计数据集中P(x|y)和P(y)出现的次数,从而求得P(x|y)和P(y)。因而其所需的数据量要小一些,为O(log n).Logistic Regression在计算时,是在整个参数空间进行线性搜索的,需要的数据集就更大,为O( n)

8、生成模型、判别模型


9、LDA的原理和推导

LDA,将高维样本投影到具有最佳判别效果的低维矢量空间,使得降维样本在新的子空间内类间距离最大,而类内距离最小,即在该低维空间内有最大的可分性。

LDA 既可以实现降维,也能完成分类。

PCA和LDA非常相似,最终都是解一个矩阵特征值的问题
这里写图片描述

10、做广告点击率(CTR)预测,用哪些数据什么算法

logistic regression模型是比较简单而且实用的
在训练方法确定后,对ctr预估起到决定性作用的是选用的特征

10.1 特征选择与使用

  • 做点击率预估需要两方面的数据,一方面是广告的数据,另一方面是用户的数据,现在所有的数据都有,那么工作就是利用这两方面的数据评估用户点击这个广告的可能性(也就是概率)。
  • 用户的特征是比较多的:用户的年龄,性别,地域,职业,学校,手机平台等等。
  • 广告的特征:如广告大小,广告文本,广告所属行业,广告图片。
  • 反馈的特征:如每个广告的实时ctr,广告跟性别交叉的ctr

1.特征选择

2.特征处理

  • 离散化特征(年龄20-30之间用1个)
  • 交叉
  • 连续特征离散化

3.特征的过滤和修正
经过修正后的ctr再做特征,实际线上效果有了比较大的提升。()

10.2 点击率模型的评估方法

评估点击率模型的好坏,有各种定性的或定量的、线上的或线下的方法。但是不论什么样的评测方法,其本质都是一样,就是要看这个模型被点击的展示与没被点击的展示之间的区别。当然,如果能找到一个离线可以计算的量化指标,是再好不过了。

这样的指标是有一个,ROC曲线下的面积,术语上称为AUC

10.3 LR+人工 特征工程 风光不再

Kdd 2012年起的各届冠军,这些比赛型的选手,基本占据了前十的位置,从使用的模型上,基本以fm和gbdt,还有神经网络这些非线性模型为主。可以这么说,在比赛里,逻辑回归加大量的人工特征工程的方案已经很难排到比赛前列,靠逻辑回归一个模型包打天下,已经成为过去时

10.4、逻辑回归

11、常见计算广告点击率(CTR)预估算法

11.1CTR架构

这里写图片描述
如上图,主要包括两大部分:离线部分、在线部分,其中离线部分目标主要是训练出可用模型,而在线部分则考虑模型上线后,性能可能随时间而出现下降,弱出现这种情况,可选择使用Online-Learning来在线更新模型

11.2主要算法

1.Logistic Regression

2.PLOY2:通过特征的二项式组合来建模

PLOY2就是通过特征的二项式组合来建模这类特征的复杂的内在关系,二项式部分如下图公式

PLOY2有一个明显的问题,就是在实际场景中,大部分特征都是稀疏的,即大部分特征值为0,对这些稀疏的特征做二项式组合,会发现最后大部分特征值都是0,而在梯度更新时,当大部分feature为0时,其实梯度并不更新,所以PLOY2的方法在实际场景中并不能比较好地解决这类特征组合来建模更复杂线性关系的问题。

3.Factorization Machine(FM)

FM的基本原理是将这些二项式矩阵做矩阵分解,将高维稀疏的特征向量映射到低维连续向量空间,然后根据内积表示二项式特征关系:

FM通过对二项式稀疏进行低维连续空间的转换,能够有效地解决PLOY2中存在的二次项系数在大规模系数数据下不更新的问题,另外由于训练预测复杂度均为线性,PLOY2+SVM这样逻辑下由于要计算多项式核,复杂度是n^2,由于FM的这几个特征,在实际场景中,FM也大规模的应用在CTR中,尤其是在数据极其系数的场景下,FM效果相对于其他算法有很明星的改善。

4.Field-aware FM(FFM)

FMM全程是 Field-aware FactorizationMachine,相对于FM增加了Field信息,每个特征属于一个field

5.FNN(前向神经网络在CTR中的应用)

6.CCPM(卷积神经网络在CTR中的应用)

7.PNN

主要是在深度学习网络中增加了一个inner/outer product layer,用来建模特征之前的关系,如下图,Product layer部分Z是weight_feature,P部分weight_I(feature_i,feature_j)用来建模二项式关系

8.DeepFM

9.其他方法:

  • GBDT+LR:Facebook提出利用GBDT探索海量特征空间的特征组合,减少特征工程工作量,性能很好;
  • MLR:阿里妈妈提出的一种增强LR模型,将region的划分考虑进去来建模非线性关系,感觉类似于深度学习的Attention机制,据说在阿里妈妈相关业务提升很多;

**总结 **
前面讨论了一些CTR常见的方法,重点介绍了Factorization Machine及其变种Field-Aware Factorization Machine,还有和深度学习的结合,个人感觉PNN的逻辑比较有意思,完全使用神经网络的思维模型重塑了FM,为后面DeepFM扩展wide and deep的工作打下基础,减少了wide and deep中需要的一些基本的特征工程工作(wide部分二次项工作),上面只是涉及到模型的算法部分,在实际中可以去探讨,并不能说明一定性能就好,另外由于架构的限制,综合考虑其他方面的因素,如请求时间、模型复杂度,也是最终是否采用相关算法的考虑因素

12、推荐系统的算法中KNN和矩阵分解各自适用场景

12.1 矩阵分解

我们从二分类的线性回归的式子可以看出,其实最终学习到的模型就是对特征X的加权求和,而我们通过数据学习到的就是加权中的权重。在实际的生产环境中,原始的数据或存在大量的零,尤其是在对类别型的数据作完one-hot编码处理后,而且未经过特征提取的数据直接用于训练效果较差。因此,在推荐和广告领域,我们经常要做的就是对特征进行组合,比较传统的方法是对特征来两两进行组合。但是正如前面所说的,实际开发环境中,特征X会有非常多的零,通过简单的两两组合只会生成更加大的稀疏矩阵,这对于很多机器学习模型都是致命的,尤其是以梯度下降优化算法的模型,所以我们就想着能不能对这个高维的稀疏矩阵分解成2个低维的稠密矩阵。这便是矩阵分解的方法由来;但是直接对矩阵进行分解,随着矩阵大小的增加,求解的复杂度增加,所以为啥不直接将模型的优化直接考虑进矩阵的分解中,最终得到的矩阵直接就是模型的参数。FM便是这样的技术,通过对原始数据矩阵的分解,通过迭代的方法通过求解矩阵分解后使损失函数最小情况下的权重矩阵,然后改权重矩阵便是最终模型的参数。

12.2 矩阵分解的优劣

优点是:

  • 比较容易编程实现
  • 比较低的时间和空间复杂度
  • 预测的精度比较高
  • 非常好的扩展性

缺点:
推荐的结果不具有很好的可解释性。因为把ratings matrix分解成user-factor matrix和item-factor matrix,这里的factor很难用实际意义的概念来解释。不过,矩阵分解的过程相当于一个软聚类的过程,得到的每一个factor相当于每一个聚类后的分组,只是我们没有一个通用的方法来为这些分组命名。
但是在实际的应用中,我们可以提取这些分组中最突出的特点来给这些factor命名。比如,拿新闻资讯类的推荐系统来说,做好分解之后,每个factor都可以看成是一类资讯,可以从这些资讯中提取一些特征来给这个factor命名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Socket的UDP和TCP编程介绍

一、概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议。 TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流,TCP套接口是字节流套接口(streamsocket)的一种。 UDP:用户数据报协议。U…

Java多线程——基本概念

线程和多线程 程序:是一段静态的代码,是应用软件执行的蓝本 进程:是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程 线程:是比…

textCNN初探

文章目录目录1.什么是textCNN1.1 textCNN 提出的背景1.2 textCNN 合理性分析2.textCNN相比于传统图像领域的CNN有什么特点?3.textCNN例子讲解3.1 参数和超参数3.2 textCNN的数据3.3 textCNN的网络结构定义3.4 代码目录 1.什么是textCNN 1.1 textCNN 提出的背景 我…

词嵌入初探

文章目录目录1.词嵌入产生的背景1.1 NLP关键:语言的表示1.2 NLP词的表示方法类型1.2.1 独热表示one-hot1.2.2 词的分布式表示distributed representation1.3 NLP中的语言模型1.4 词的分布表示1.4.1 基于矩阵的分布表示1.4.2 基于聚类的分布表示1.4.3 基于神经网络的…

VIM使用系列之一——配置VIM下编程和代码阅读环境

作者:gnuhpc from http://blog.csdn.net/gnuhpc http://gnuhpc.wordpress.com/ 本文环境:ubuntu 10.10/vim7.2 前言:一年前写过一篇关于VIM的C/C编程环境的文字,一年中又接触了很多东西,深入使用中发现其实还是需要有…

fastText初探

目录:1、应用场景2、优缺点3、FastText的原理4、FastText词向量与word2vec对比 目录: 1、应用场景 fastText是一种Facebook AI Research在16年开源的一个文本分类器。 其特点就是fast。相对于其它文本分类模型,如SVM,Logistic …

python中使用“if __name__ == '__main__'”语句的作用

首先用最简洁的语言来说明一下 if __name__ __main__: 的作用:防止在被其他文件导入时显示多余的程序主体部分。 先举个例子,如果不用if __name__ __main__: 会发生什么事: 首先在yy.py中调用cs.py #yy.pyimport csprint(引用cs)cs.cs()p…

redis——sentinel

什么是哨兵机制 Redis的哨兵(sentinel) 系统用于管理/多个 Redis 服务器,该系统执行以下三个任务: 监控: 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。 提醒:当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他…

FM,FFM及其实现

在推荐系统和计算广告业务中,点击率CTR(click-through rate)和转化率CVR(conversion rate)是衡量流量转化的两个关键指标。准确的估计CTR、CVR对于提高流量的价值,增加广告及电商收入有重要的指导作用。业界…

linux-在cenos上安装大全(nginx/JRE/maven/Tomcat/MYSQL/redis/kafka/es...)

云服务器 阿里云 腾讯云 七牛云 百度云 天翼云 华为云 西部数码 自己购买一个,学生和企业用户都有优惠的。 putty 自己下载一个putty,用来操作云服务器。 putty.org 一路下一步就ok。 点击putty.exe,输入你的ip或域名 最好改成20&#xff1…

KKT条件初步理解

最近学习的时候用到了最优化理论,但是我没有多少这方面的理论基础。于是翻了很多大神的博客把容易理解的内容记载到这篇博客中。因此这是篇汇总博客,不算是全部原创,但是基础理论,应该也都差不多吧。因才疏学浅,有纰漏…

redis——实战点赞

点赞功能随处可见,我们都知道点赞是一个非常高频的操作,redis就非常适合做这种工作。 实现效果: 分析:三种类型:给帖子点赞,给评论点赞,给回复点赞 我们只实现查看点赞数量的话,只…

大数据学习(10)--流计算

文章目录目录1.流计算的概述1.1 什么是流数据?1.2 批量计算和实时计算1.3 流计算的概念1.4 流计算和Hadoop1.5 流计算框架2.流计算的处理流程2.1 流计算处理基本概念2.2 数数据的实时获取2.3 数据的实时计算2.4 实时查询任务3.流计算的应用和开源框架Strom3.1 流计算…

redis——实战关注

效果: 思路:很好想,把自己的粉丝和自己关注的人都存起来(set即可),做增删改查。 package com.now.community.community.service;import com.now.community.community.entity.User; import com.now.commun…

神经网络中的优化算法总结

在调整模型更新权重和偏差参数的方式时,你是否考虑过哪种优化算法能使模型产生更好且更快的效果?应该用梯度下降,随机梯度下降,还是Adam方法? 这篇文章介绍了不同优化算法之间的主要区别,以及如何选择最佳的…

Java开发需要知道的HTML知识

概述 HTML(HyperText Markup Language) 不是一门编程语言,而是一种用来告知浏览器如何组织页面的标记语言。 HTML 可复杂、可简单,一切取决于开发者。它由一系列的元素组成,这些元素可以用来包围不同部分的内容,使其以某种方式呈…

处理机调度与死锁

处理机调度与死锁 处理机调度的层次 高级调度 高级调度又称为作业调度或长程调度,其主要功能是根据某种算法,把外存上处于后备队列中的那些作业调入内存,也就是说,它的调度对象是作业。 1.作业和作业步 作业:一个比程…

各种卷积

从最开始的卷积层,发展至今,卷积已不再是当初的卷积,而是一个研究方向。在反卷积这篇博客中,介绍了一些常见的卷积的关系,本篇博客就是要梳理这些有趣的卷积结构。 阅读本篇博客之前,建议将这篇博客结合在一…

springboot——kaptcha

导入包&#xff1a; <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency> 配置类&#xff1a; package com.now.community.community.config;import…

NLP复习资料(7)-机器翻译、文本分类、情感分析

NLP复习资料国科大&#xff0c;宗老师《自然语言处理》课程复习笔记&#xff0c;个人整理&#xff0c;仅供参考。此部分为手稿&#xff0c;高清图下载见链接&#xff1a;https://download.csdn.net/download/sinat_40624829/11662412