Flink 学习笔记十四

2017/07/06 Flink

Flink2 学习笔记十四

处理超时情况下的模式识别

在使用时间窗口的情况下,数据可能会超出时间窗口。为了处理过期的消息,selectflatSelect方法允许有一个超时处理器,这个处理方法会针对每一次的超时的消息Pattern调用。 select方法包含也两个参数,PatternSelectFunctionPatternTimeoutFunction。超时数据处理函数的返回值和select函数的返回值包装成了Either.Right和Either.Left。 例如: Java:

PatternStream<Event> patternStream=CEP.pattern(input,pattern);

DataStream<Either<TimeoutEvent,ComplexEvent>> result= patternStream.select(new PatternTimeoutFunction<Event,TimeoutEvent>(){...},new PatternSelectFunction<Event,ComplexEvent>(){...}
);

DataStream<Either<TimeoutEvent,ComplexEvent>> flatResult=PatternStream.flatSelect(new PatternFlatTimeoutFunction<Event,TimeoutEvent>(){...}),new PatternFlatSelectFunction<Event,ComplexEvent>(){...}
);


Scala:

//select API
val patternStream:PatternStream[Event]=CEP.pattern(input,pattern)

DataStream[Either[TimeoutEvent,ComplexEvent]] result=patternStream.select{
    (pattern:mutable.Map[String,Event],timestamp:Long) => TimeoutEvent()
    }{
        pattern:mutable.Map[String,Event] => ComplexEvent()
    }

//flatSelect API
val patternStream:PatternStream[Event] = CEP.pattern(input,pattern)

DataStream[Either[TimeoutEvent,ComplexEvent]] result = patternStream.flatSelect{
    (pattern:mutable.Map[String,Event],timestamp:Long,out:Collector[TimeoutEvent]) => out.collect(TimeoutEvent())
}{
    (pattern:mutable.Map[String,Event]),out:Collector[ComplexEvent]) => out.collect(ComplexEvent())
}

FlinkML 机器学习

机器学习有三大类

  • 监督学习
  • 无监督学习
  • 半监督学习 如图所示: 图一 图中展示了机器学习算法粗略的归类。

监督学习

监督学习中,我们通常会输入数据集,是真实数据的历史数据,同时也会输入期望的结果数据。通过历史数据,可以选择数据中的权重。从而使得我们可以做出预测。 监督学习可以分成两种:

回归

在回归问题中,试图通过一个连续函数预测从输入结果中预测输出结果。回归意味着从一些值中预测其它值。被预测的值被称为criterion,用来预测的值称为predictor。 可以有一个或者多个predictor。我们需要找到最值的回归函数。 常用的回归函数如下:

  • 逻辑回归
  • 决策树
  • SVM
  • 朴素贝叶斯
  • 随机森林算法
  • 线性回归
  • 多项式回归

分类

在分类中,我们预测输出结果是离散的,需要我们输入测试值和结果。 为了理解监督学习的作用,可以用一个例子:回归可以用来预测股票的价格,分类可以用来判断是不是应该买。

无监督学习

在无监督学习中,不用告诉输入结果样例。 和监督学习不同,无监督学习没有办法验证输出的正确性,意味着没有办法确定机器是对的还是错的。无监督学习主要是用聚类算法完成的。

聚类

可以通过数据的关系完成聚类操作,不需要有训练值和结果,只需要有数据特征和数据即可。常用的聚类方法有:

  • K-means 聚类
  • 层次聚类
  • 隐形马尔可夫模型

    关联

    机器学习在关联问题中使用的更多一些,通过定义推荐规则来做推荐系统。常用在销售推荐系统中,常用的算法是:

  • Apriori 算法
  • Eclat 算法
  • FPD growth 算法

半监督学习

半监督学习是监督学习的一个子集,通常来说,在训练的过程中,大量的没有标签化的数据和少量的非标签化的数据就可以训练。大量的实践发现,如果非标签化的数据和标签化的数据结合处理的话,结果会更加准确。

Show Disqus Comments

Search

    Table of Contents