过滤器:
Filters can be very powerful 合适的过滤可以提高分类的准确度并且使分类结果更加清晰
Undo撤销
Save保存过滤的数据集
(1) 选择
unsupervised learning
中的Remove,选择下标3删除原来的Humidity属性
(2) 删除所有Humidity属性为high的实例
选择unsupervised learning/instance/RemoveWithValues
(3) 删除某些属性可能提高分类算法的分类准确率
例如glass数据集,我删除特征Fe和Si,再用分类算法J48,得到的分类准确率比原来要高
Cross-validation交叉验证可以降低评估误差
Repeated holdout 重复预留法(2.3)
选择9:1的训练集和测试集的比例,然后更改种子,重复10次
交叉验证原理
:
在交叉验证中,我们只分割一次,但是我们分成10份,然后用其中的9份作为训练集,剩余的一份作为测试集,接着还是用之前分隔好的数据,我们再选择另外的一组9份作为训练数据,剩余的一份作为测试集,我们这样重复10次,每次都是用分割出的不同的数据作为测试集。最后取这十次结果的平均,这就是10层交叉验证
Test option > Cross-validation Folds 10
-
Cross‐validation really is better than repeated holdout
-
It reduces the variance of the estimate
There are many kinds of simple structure eg:
-
One attribute does all the work
-
Attribute contribute equally and independently
-
A decision tree that tests a few attributes
-
Calculate distance from training instances
rules.OneR:一个属性决定一切
OneR的基本原理:
-
我们选择某个属性(如Outlook)开始,然后为它的每个值建立一个分支
-
将这个分支(如Sunny)所含的最多的类(如No)作为它的分类
-
错误率是在这个分支中不属于最多分类的实例的比例
-
我们选择错误率(Total errors)最小的属性
我们建立一棵只在根结点根据某个属性分叉的树
例如天气数据集,我们将展望、温度、湿度、风速建立一组规则
Outlook有三个分类值 Sunny, Rainy, Overcast
任何机器学习算法都有可能过度拟合训练数据
当创建的分类器过度拟合训练数据时,就很难推广到独立的测试数据
Our model doesn’t generalize well from our training data to unseen data.
This is known as overfitting, and it’s a common problem in machine learning and data science.
过拟合(overfitting)与欠拟合(underfitting)是统计学中的一组现象。过拟合是在统计模型中,由于使用的
参数过多
而导致模型对观测数据(训练数据)过度拟合,以至于用该模型来预测其他测试样本输出的时候与实际输出或者期望值相差很大的现象。欠拟合则刚好相反,是由于统计模型使用的参数过少,以至于得到的模型难以拟合观测数据(训练数据)的现象。
我们总是希望在机器学习训练时,机器学习模型能在新样本上很好的表现。过拟合时,通常是因为模型过于复杂,学习器把训练样本学得“太好了”,很可能
把一些训练样本自身的特性当成了所有潜在样本的共性了
,这样一来模型的泛化性能就下降了。欠拟合时,模型又过于简单,学习器没有很好地学到训练样本的一般性质,所以不论在训练数据还是测试数据中表现都很差。我们形象的打个比方吧,
你考试复习,复习题都搞懂了,但是一到考试就不会了,那是过拟合;如果你连复习题都还没搞懂,更不用说考试了,那就是欠拟合。所以,在机器学习中,这两种现象都是需要极力避免的
。
它对于训练数据非常准确,但是却很难适用于独立的测试数据。因为它规则过度(参数过多)拟合训练数据,它就很难推广到独立的测试数据——这就是一个过拟合的例子
Naive Bayes: Use all the attributes
假设在决策过程中,所有属性是有平等的、独立的贡献。
独立指的是根据已知属性的值不能推测出其他属性的值。
Independence assumption is never correct!
But … often works well in practice
可以看到Weka对每个实例都加了个1,这是为了防止有些实例的概率是0,从而使最终结果为0
对于零次数问题 zero-frequency-problem, Weka的最常用的解决方案是在对每个数加1
J48是自上而下的归纳决策树(基于信息论去选择属性)
决策树算法原理:
Top‐down: recursive divide‐and‐conquer
-
Select attribute for root node
Create branch for each possible attribute value
-
Split instances into subsets
One for each branch extending from the node
-
Repeat recursively for each branch
using only instances that reach the branch
-
Stop
if all instances have the same class
每次选择信息增益做多的属性(你可以用很多标准来选择属性,这里使用的是信息增益)
需要修剪的情况是:原始的未修剪的决策树过度拟合训练数据集
如何剪枝How to prune?
-
Don’t continue splitting if the nodes get very small (J48 minNumObj parameter, default value 2)
-
Build full tree and then work back from the leaves, applying a statistical test at each stage
(confidenceFactor parameter, default value 0.25)
-
Sometimes it’s good to prune an interior node, raising the subtree beneath it up one level
(subtreeRaising, default true)
-
Messy … complicated … not particularly illuminating
修剪后决策树的结点变少,而且预测实例的准确率会更高,所以Weka默认是修剪的
修剪方法经常会大大简化决策树,就像乳腺癌
breast-cancer
例子
修剪pruning实际上是防止过拟合的一个通用技术
一般来说,J48是一个常见的有效的数据挖掘算法
最近邻机器学习方法(基于实例的学习方法)
这个算法只记忆训练实例,然后为了给新的实例分类,寻找训练数据集汇总与新实例最相似的实例
To classify a new instance, search training set for one that’s “most like” it
-
the instances themselves represent the “knowledge”
-
lazy learning: do nothing until you have to make predictions
-
“Instance‐based” learning = “nearest‐neighbor” learning
(最近邻算法)
如果是名词类属性,我们需要定义不同的属性之间的差异,通常人们认为属性值不同的距离是1,属性值相同的距离是0
怎么处理有噪音的数据集?
如果遇到了分类错误的训练实例作为测试实例最邻近的实例怎么办
Nearest-neighbor —> k-nearest-neighbors
k-nearest-neighbors
– choose majority class among several neighbors (k of them)
In Weka
Lazy.IBk (instance-based learning)
在Weka中k近邻算法叫做IBk,这是一种懒惰学习方法
Investigate effect of changing k
-
Glass dataset
-
lazy.LBk k = 1, 5, 20
-
10-fold cross-validation
数据挖掘的过程
最大的问题是提出合适的问题,你需要做的是回答这个问题,而不是盲目地处理数据
然后你需要收集些你能收集到的,能用数据挖掘技术帮助你回答这个问题的数据
收集数据是很难的
,你可能有一个初始数据集,但是你可能需要增加一些人口数据、气候数据等,你可以上网搜索一些信息来补充你的数据集,然后你把所有这些组合起来:创建一个数据集,它包括了你认为有必要(Weka需要的)的数据
接着你需要
清理数据
:坏消息是现实生活中的数据总是非常杂乱,研究数据、理解数据、找出异常、确定是否提出些数据是一个漫长而痛苦的过程,这会花费一些时间
然后你需要
定义一些新的特征
:这是特征工程的过程,是数据挖掘能够成功的关键步骤
最后使用Weka,你可能需要重复这个循环几次,才能得到好的分类算法,然后你需要在现实世界中使用算法
Ask a question
-
what do you want to know?
-
“tell me something cool about the data” is not enough!
Gather data
-
there’s soooo much around …
-
… but … we need (expert?) classifications
-
more data beats a clever algorithm
Clean the data
Define new features
-
feature engineering—the key to data mining
Deploy the result
-
technical implementation
-
convince your boss!
特征工程的一些过滤器:可以自定义特征或属性
(Selected) filters for feature engineering
AddExpression (MathExpression)
-
Apply a math expression to existing attributes to create new one (or modify existing one)
Center (Normalize) (Standardize)
-
Transform numeric attributes to have zero mean (or into a given numeric range) (or to have zero mean and unit variance)
Discretize (also supervised discretization)
-
Discretize numeric attributes to have nominal values
PrincipalComponents
-
Perform a principal components analysis/transformation of the data
RemoveUseless
-
Remove attributes that do not vary at all, or vary too much
TimeSeriesDelta, TimeSeriesTranslate
-
Replace attribute values with successive differences between this instance and the next
(自定义属性)
Weka is only a small part
(unfortunately)
“may all your problems be technical ones” – old programmer’s blessing
-
Learn 4.2-4.6 and 5.2-5.4
-
Learn Advanced Data Mining with Weka
-
Learn More Data Mining with Weka
文章目录1.1 Introduction1.2 Exploring the Explorer1.3 Exploring datasets1.4 Building a classifier1.5 Using a filter1.6 Visualizing your data2.1 Be a classifier2.2 Training and testing2.3 Repeated training...
NumericToNominal filter=new NumericToNominal();
String options[]=new String[2];
options[0]="
-
R";
options[1]="3,10";filter.setOptions(options);
DataSource dataSource=new DataSource(trainFile[0].getAbso
本文
中
使用的
weka
版本为3.6版本,参阅的API也是3.6的
相关的包(
weka
.jar,
weka
-
src.jar,libsvm.jar.wlsvm.jar)可以在以下链接下载:
http://pan.baidu.com/s/1kTHW3un
在Eclipse项目
中
导入
weka
包,本文
中
使用BP神经网络的算法,只用添加
weka
.jar即可,若要使用libsvm的算法,还需要添加libs
1、注意待预测数据集和训练用数据集各个属性的设置必须是一致的。即使你没有待预测数据集的Class属性的值,你也要添加这个属性,可以将该属性在各实例上的值均设成缺失值。比如你可以将欲预测的类别设为?即缺失值。
2、在“Test Opion”
中
选择“Supplied test set”,并且“Set”成你要
应用
模型的数据集。
3、右键点击“Result list”
中
刚产生的那一项,选择“...
训练数据经过机器
学习
算法(ML Algorithm)可以得到分类器,再将测试数据放入分类器,则可得到评估结果。
训练集和测试集应来源于同一个数据集,但为两个不相交的集合。比如:将一个数据集的1/3作为测试集,2/3作为训练集。
接下来通过一个简单的实验进一步理解训练与测试数据:
1、打开Explorer界面,选择数据集segment
-
challenge.arff。
### 回答1:
weka
-
3
-
8
-
6
-
azul
-
zulu
-
windows.exe是一款用于
数据挖掘
和机器
学习
的免费开源软件
Weka
的安装程序。它采用了Azul Zulu OpenJDK平台,可在Windows系统上运行。
Weka
可以处理各种数据,并提供大量
数据挖掘
和机器
学习
算法,以帮助用户发现数据
中
的规律和模式。它还具有图形用户界面和命令行界面,使其易于使用。
Weka
被广泛用于学术界和工业界,它的
应用
包括医疗、金融、商业和社交媒体等领域。对于那些对
数据挖掘
和机器
学习
感兴趣的人来说,
Weka
是一个强大的工具,可以帮助他们分析和理解数据。
### 回答2:
weka
-
3
-
8
-
6
-
azul
-
zulu
-
windows.exe 是一款开源的机器
学习
软件
WeKa
的安装包,适用于Windows操作系统。
WeKa
是由新西兰Waikato大学开发的一款
数据挖掘
工具,它提供了一系列的机器
学习
算法和数据预处理工具,包括分类、聚类、回归等常见的算法。azul
-
zulu是一款Java运行时环境,用于运行基于Java编写的
应用
程序。因此,
weka
-
3
-
8
-
6
-
azul
-
zulu
-
windows.exe
中
包含了
WeKa
软件及其所需的Java运行时环境。
下载
weka
-
3
-
8
-
6
-
azul
-
zulu
-
windows.exe后,用户可以通过简单的安装流程将
WeKa
软件及其依赖的Java环境安装到自己的电脑上。安装完成后,用户可以通过
WeKa
提供的图形界面或者命令行界面进行
数据挖掘
和机器
学习
任务的分析和建模。
WeKa
被广泛
应用
于
数据挖掘
和机器
学习
领域,可以帮助用户处理和分析各种类型和规模的数据集。同时,
WeKa
还提供了丰富的文档和示例,方便用户
学习
和使用。总之,
weka
-
3
-
8
-
6
-
azul
-
zulu
-
windows.exe是一款非常实用的
数据挖掘
工具软件,可以帮助用户掌握和
应用
机器
学习
技术,从而更好地处理和分析数据。