Credit Scoring / Credit Rating / Customer Risk

(This workflow can be found on the KNIME Workflow Public Server under
       050_Applications/050002_CreditScoring
)

This KNIME workflow focuses on creating a credit scoring model based on historical data. As with all data mining modeling activities, it is unclear in advance which analytic method is most suitable. This workflow therefore uses three different methods simultaneously – Decision Trees, Neural Networking and SVM – then automatically determines which model is most accurate and writes that model out for further use.

This workflow manipulates the data so it is suitable for a variety of modeling techniques by converting nominals to numerics. The data was enhanced so that understandable labels are used. It uses metanodes to “package” each technique suitable for reuse. Each Model uses a Test / Learn and cross validated process to ensure accuracy. The workflow writes out the model in the official PMML format, so that other applications can use the model.

The data is German Credit data provided by

Professor Dr. Hans Hofmann
Institut für Statistik und Ökonometrie
Universität Hamburg
FB Wirtschaftswissenschaften
Von-Melle-Park 5
2000 Hamburg 13

Available at http://archive.ics.uci.edu/ml/datasets/Statlog+%28German+Credit+Data%29

备忘--简单比较SPSS、RapidMiner、KNIME以及Kettle四款数据分析工具 

SPSS、RapidMiner、KNIME以及Kettle四款工具都可以用来进行数据分析,只是彼此有各自的侧重点和有劣势。它们都可以逐步的定义数据分析过程,也同样都可以对数据进行ETL处理。笔者从自己关心的角度简单对比以上四款数据分析工具。

SPSS不用多说,一款成功的商业数据分析软件,涵盖了统计分析、数据挖掘分析等各种数据分析方法。界面简单易用,分析过程定义时非常直观方便。因为,没有源码,无从知道其过程的调度机制。

RapidMiner一款出色的开源数据分析工具。有非常丰富的数据分析算法。过程定义界面也简单易用,帮助文档也很全面。过程定义时的每一步操作都有端口的概念,不同的端口可以接入和输出不同意义的数据,但数据的结构是一样的,这意味着可以将任意两个端口进行连接,只是有时无法得到正确的结论。粗看了下RapidMiner的源码,发现其整个过程是单线程调用的。这样的调用方式,在处理较大数据集时可能会有一定的影响。其过程定义文件是用xml语言进行描述的,格式很工整,体现了前期良好的设计,唯一不足的是,将调试用的断点也设计进了过程定义文件当中。

KNIME也是一款出色的开源数据分析工具,但其使用起来不是很好上手。其每一步操作与RapidMiner一样,也带有端口的概念。但是其端口间的连接关系有严格的约定。就是一个操作的输出端口只能连其它固定几种操作的输入端口,否则你是无法将这两个操作建立前后执行顺序的。从一定意义上讲,这样的约束可以帮助人们减少定义过程中的错误。单就程序实现讲,其复杂度也是提升了的。但对于笔者这样的使用者来说,怎么都创建不了一个分析过程,(主要是用的不熟,总违反端口连接约束)顿时失去大半兴趣,没有对其进行再进一步的研究了。

Kettle最早的定位是一个ETL工具,它有非常丰富的数据处理操作,后面的版本中也加入了部分数据分析功能。其过程定义界面也非常简单直观,与SPSS一样,操作都没有端口的概念。操作间的关系是建立在操作与操作之上的。但其设计中,正因为没有端口概念的出现,当其进行错误信息的处理流程时,我们看其过程定义生成的xml文件会发现,错误流定义在XML文件中加入的很不规整,是以补丁的方式加入的,影响了系统整体设计的完整性与美观度。不过,其可以对错误流进行处理的概念是这几款产品中独有的,还是要特别表扬一下。另外,通过Kettle的源代码我们可以知道,其调度是多线程并发进行的。即读数据操作每读到一定的数据就传给后面的处理操作,然后继续读数据。在数据很大的情况下,有可能是读操作还在继续读数据,而早期读出的数据在处理完后,都在向外写出数据了。Kettle的调用机制更利于对较大数据的分析处理,占用的内存相对会较少,多线程并发的处理速度相对也会比较高。

以上四款工具都是单机版工具,都不太适用于对海量数据的分析处理。

如何用KNIME进行情感分析

文 | 数据挖掘小组 邵海涵 周亚楠

如何能够让机器“读懂”人的情感?情感分析提供了解决的一个思路。这也使得它成为自然语言分析(Natural Language Processing)中最令人神往的山对面的“风景”。

什么是情感分类(sentiment classification)

简单说,就是对于一句或一段话,判断说话者的情感,是正向(积极)的,还是负向(消极)的。这种情感分类任务可以看作一个二分类问题。

完成情感分类的核心问题

决定分类准确率的关键在于特征的选取与语料的质量。其中特征问题解决的是:用什么样的特征来抽取,得到的文本才足够原始呢?每个词看似已经是文本的足够底层的特征,但其实也是经过高度抽象的。这也会给深度学习在自然语言领域的应用带来一些困难。同样,这也是提高模型准确度的一个有效的方法。

在上一篇情感分析的讲解中,我们已经知道如何使用KNIME构造一个情感分析模型。这一篇中,我们将使用N元语法(N-gram),借助KNIME来探究如何选取词语特征,获得的模型能够实现更准确地分类。

N元语法

在计算语言学中,n-gram指的是文本中连续的n个item。n-gram中如果n=1则为unigram,n=2则为bigram,n=3则为trigram。n>4后,则直接用数字指称,如4-gram,5gram。(Wikipedia)

以 I would like to go to Beijing. 这句话为例。

bigram为:

I would

would like

like to

to go

go to

to Beijing

结点概览

1.读取CSV格式文件

使用CSV reader结点读取一个CSV格式文件,该文件写入了1500条载于IMBD上的影评,并且给出了情感向量即POS(positive)和NEG(negative)。

2.字符串转化为文档格式

接下来将字符串转化为文档格式,继而使用“过滤”节点删除无关列,使文件只留下储存文档对象的一列。

以上结点内属于Document creation元结点

3.数据预处理

首先计算特征词语需要在文档中出现最小次数N。利用java语句计算:out_MinDF = (Number_Rows / 100) * Min_Percentage

继而进行删除标点,删除数字,删除文档中出现次数小于N的词汇,将大写转化为小写,提取词语主干(stemmed)和删除停用词(stop word)。至此我们可以完成预处理。但是由于我们想探索的是双词分类与单词分类的效果差异,所以这里花开两朵各表一枝,双词分类的这一支不需要做主干提取和停用词删除的工作。

(stemmed意指将词的变形归类,使得机器在处理文本时减少需要跟踪的独特词汇,这会加快“标签化”处理的过程。停用词是人类语言中没有实际意义或功用的词语,如助词,限定词等)

4.通过单词或双词建立文本特征向量

想象在一个巨大的文档集合,里面一共有M个文档,而文档里面的所有单词提取出来后,一起构成一个包含N个单词的词典,利用词袋(Bag-of-words)模型,每个文档都可以被表示成为一个N维向量(将每篇文档表示为一个向量,每一维度代表一个词语,其数值代表词语在该文档中的出现次数)。这样,就可以利用计算机来完成海量文档的分类过程。

一般来说,太多的特征会降低分类的准确度,所以需要使用一定的方法,来“选择”出信息量最丰富的特征,再使用这些特征来分类。

特征选择遵循如下步骤:

1. 计算出整个语料里面每个词的信息量

2. 根据信息量进行倒序排序,选择排名靠前的信息量的词

3. 把这些词作为特征

5.构建模型

通过决策树算法构建模型在上一篇已经讲过,需要注意的是本篇需要对1-gram特征和1-gram 2-gram集合特征分别构建模型,以进行比较。这里不再赘述。

6.ROC曲线对比

在文档向量集创建后,词汇的情感分类已经被提取出来,系统自动创建了两种预测模型并打分。一个模型基于一个单独词汇的特征建立,第二个模型基于1-gram和2gram集合的特征。接着通过ROC接收器操作特性曲线(receiver operating characteristic curve)对这两个进行比较。

可以看出,在分析影评这一文本的情感态度时,使用N元语法构建出来的情感分类模型,诊断准确度更高,为85.05%。这样有助于我们针对“何种情感分类模型对NLP分析更为有效”这一问题时做出决策。

如何用KNIME进行情感分析的更多相关文章

  1. R语言︱词典型情感分析文本操作技巧汇总(打标签、词典与数据匹配等)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:情感分析中对文本处理的数据的小技巧要 ...

  2. 基于 Spark 的文本情感分析

    转载自:https://www.ibm.com/developerworks/cn/cognitive/library/cc-1606-spark-seniment-analysis/index.ht ...

  3. Spark 的情感分析

    Spark 的情感分析 本文描述了基于 Spark 如何构建一个文本情感分析系统.文章首先介绍文本情感分析基本概念和应用场景,其次描述采用 Spark 作为分析的基础技术平台的原因和本文使用到技术组件 ...

  4. 文本情感分析(一):基于词袋模型(VSM、LSA、n-gram)的文本表示

    现在自然语言处理用深度学习做的比较多,我还没试过用传统的监督学习方法做分类器,比如SVM.Xgboost.随机森林,来训练模型.因此,用Kaggle上经典的电影评论情感分析题,来学习如何用传统机器学习 ...

  5. 【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研

    摘要:自从学习API后,仿佛解锁了新技能,可别小看了一个小小的API接口,用好了都是能力无穷.这不,用情感分析API来做用户偏好调研,没想到这么一个小创意给公司省了20万调研费用. 上次借着高考热点整 ...

  6. 朴素贝叶斯算法下的情感分析——C#编程实现

    这篇文章做了什么 朴素贝叶斯算法是机器学习中非常重要的分类算法,用途十分广泛,如垃圾邮件处理等.而情感分析(Sentiment Analysis)是自然语言处理(Natural Language Pr ...

  7. Stanford NLP学习笔记:7. 情感分析(Sentiment)

    1. 什么是情感分析(别名:观点提取,主题分析,情感挖掘...) 应用: 1)正面VS负面的影评(影片分类问题) 2)产品/品牌评价: Google产品搜索 3)twitter情感预测股票市场行情/消 ...

  8. 情感分析的现代方法(包含word2vec Doc2Vec)

    英文原文地址:https://districtdatalabs.silvrback.com/modern-methods-for-sentiment-analysis 转载文章地址:http://da ...

  9. SA: 情感分析资源(Corpus、Dictionary)

    先主要摘自一篇中文Survey,http://wenku.baidu.com/view/0c33af946bec0975f465e277.html   4.2 情感分析的资源建设 4.2.1 情感分析 ...

随机推荐

  1. springboot核心技术(五)-----消息(rabbitmq)

    消息 1. 大多应用中,可通过消息服务中间件来提升系统异步通信.扩展解耦能力 2. 消息服务中两个重要概念: 消息代理(message broker)和目的地(destination) 当消息发送者发 ...

  2. linux 获取外网ip地址

    curl ifconfig.me 私有ip地址,获取公网ip

  3. 机器学习中的隐马尔科夫模型(HMM)详解

    机器学习中的隐马尔科夫模型(HMM)详解 在之前介绍贝叶斯网络的博文中,我们已经讨论过概率图模型(PGM)的概念了.Russell等在文献[1]中指出:"在统计学中,图模型这个术语指包含贝叶 ...

  4. JS的闭包问题

    1.什么是“闭包” 是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 2.闭包的应用场景 (1)保护变量的安全实现JS私有属性和私有方法 (2)在 ...

  5. 移动相关的css

    1.首先认识第一个apple-mobile-web-app-capable 删除默认的苹果工具栏和菜单栏. <meta name="apple-mobile-web-app-capab ...

  6. UVA11916 Emoogle Grid

    Emoogle Grid You have to color an M × N (1 ≤ M, N ≤ 108 ) two dimensional grid. You will be provided ...

  7. Luogu P2678 跳石头(二分)

    P2678 跳石头 题意 题目背景 一年一度的"跳石头"比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起 ...

  8. jquery版本冲突问题

    开发过程中,我们常常会遇到这种问题: 我们需要做一个新的功能,需要插入一个新的插件,使用新版的jquery,但原版的jquery已经被很多函数使用,不能直接修改.这时候我们可以现将$转移给$170($ ...

  9. PHP获取搜索引擎关键词

    有时候我们需要知道用户通过哪个搜索引擎,通过拿个关键词访问我们页面,当然js也可以实现,这里介绍下php的实现代码,包含(百度.谷歌.雅虎.搜狗.搜搜.必应.有道)几大搜索引擎的获取方法. //获取来 ...

  10. step()动画

    <style type="text/css"> .hi { width: 50px; height: 72px; background-image: url(" ...