申明:本文作者才识有限,仅作为学习记录,如有差错,欢迎指正!也希望对他人有些许助益.
在R语言中有一些关于教育诊断的一些包,我试着进入R包的CRAN,进行关键词检索,找到我想要试玩的那些教育数据挖掘(或许叫教育诊断更为恰当),我搜索的关键词有Item Response Theory(项目反应理论), Knowledge Space(知识空间), education.
首先,我要试玩的是kst(Knowledge Space Theory),kst的基本思想是一个学生对某领域知识的掌握程度可以通过该学生对问题的应答情况来体现,问题可以被学生答对打错。知识空间通俗意义上讲为构成某一领域知识的所有可能的知识状态的集合。
要想了解学生的知识状态,首先我们要精心设计一系列能够具体测试相应知识点的问题,然后让学生参加测试,这样能够正确回答的问题就可以表征学生的知识状态。
知识空间现已应用在数学、物理学、化学、医学等学科领域。如果想应用于计算机领域也未尝不可。
但知识空间的构建,往往需要领域专家进行构建,但这往往太过费时,且精度不一。这也是知识空间不能广泛应用于实际的关键问题,如何摆脱专家进行构建知识点及其相互关联这是才要点。
杨文正等人提出了让学生在学习的过程中自己构建知识点及其相互关联,相应的让专家也构建该领域的知识点及其关联,然后进行对比分析,但文章提到使用知识空间技术进行分析,却没有提供更多的使用知识空间进行分析的研究细节,只是简单的使用了知识空间的概念。
对于知识空间理论来说,测试学生对某一领域知识的掌握程度可以转换为学生解答相应知识点构成问题的对与错的个数,而按章节组织的知识可以更加容易的构成知识空间领域的知识点,且知识间相互关系也更加容易被算法所获得。
首先,引入关键词:
知识结构:Knowledge structure
知识空间:Knowledge space
猜测关系:Surmise relation
蕴含关系:Entail relation
知识空间理论基于集合理论框架,提供了在特定知识领域里使用数学的形式来操作知识结构.kst包提供了基础的函数来产生/处理/操作知识结构和知识空间。知识空间了理论中最基础的假设是每个知识域(domain)可以由问题(problems)集合或者项目(items)集合进行表示.知识空间理论中假设给定的项目之间相互关系,即一个项目是另一个项目的前提条件。这种前提关系被定义为猜测关系(surmise relations),它在不同项目间建立了拟序关系(quasi-order)。这种猜测关系的优势在于减少了知识状态的数量,提供了更加可靠的知识状态。
输入:install.packages(“kst”),进行安装R包。
加载kst包:library(kst)
定义:知识结构被表示为 (Q,K) ,其中 Q 是一个非空集合, K 是 Q 形成的子集,它至少包含了 Q 和空集 ∅ . 集合 Q 成为知识结构 (Q,K) 的域(domain),且 ∪K=Q .
通俗意义上讲,Q是由一系列的问题构成,称为知识结构的域(domain),K是由Q的子集组成的集合,其中的集合元素称为知识状态,且K至少包含了Q以及空集 ∅ .
对于给定的知识结构( Q, K) , ≤是定义在Q上的关系: r≤q⟺Kr⊇Kq , 其中 r,q∈Q,Kr,Kq ∈K表示包含问题r,q的知
识状态的集合。 当r,q之间满足上述关系时, 称r可以从q猜测出来。 在应用上可以理解为: 从问题r的解决猜测出学生也可以解决问题q, 或者说解决问题q是解决问题r的前提, 对应的关系≤称为猜测关系, 猜测关系的存在可以大大方便知识结构的建立过程, 我们也可以从猜测关系的存在可知并不是所有子集都能成为知识状态。
kstructure()函数是包kst中构建知识结构的函数。
>kst <- kstructure(set(set("d"),set("a","c"),set("e","f")
,set("a","b","c"),set("a","c","d"),set("d","e","f"),set("a","b","c","d")
,set("a","c","e","f"),set("a","c","d","e","f")))
> kst
{{"d"}, {"a", "c"}, {"e", "f"}, {"a", "b", "c"},
{"a", "c", "d"}, {"d", "e", "f"}, {"a", "b",
"c", "d"}, {"a", "c", "e", "f"}, {"a", "c", "d",
"e", "f"}}
> sets_options("quote",FALSE) #去掉引号
> kst
{{d}, {a, c}, {e, f}, {a, b, c}, {a, c, d}, {d,
e, f}, {a, b, c, d}, {a, c, e, f}, {a, c, d, e,
f}}
#输入在cmd框上输入kstructure,即可看其源码:
> kstructure
dependencies:library(sets),library(relations)
function (x)
{
#检查x
if (!inherits(x, "relation") & !inherits(x, "set")) {
stop(sprintf("%s must be a relation or a set of subsets.",
dQuote("x")))
}
#将关系转换成集合
if (inherits(x, "relation")) {
relmat <- relation_incidence(x)
mode(relmat) <- "logical"
x <- as.set(apply(relmat, 2, function(z) as.set(names(which(z)))))
}
else {
x <- as.set(lapply(lapply(x, as.character), as.set))
}
names(x) <- NULL
class(x) <- unique(c("kstructure", class(x)))
x
}
安装R包Rgraphviz:
source("http://bioconductor.org/biocLite.R") biocLite("Rgraphviz")
1.knowledge space
2. kst源码
3. 杨文正, 邹霞. 运用知识空间理论分析概念图[J]. 中国电化教育, 2011(3):83-87.
4. 傅骞, 孙波. 知识空间理论与项目反应理论对比研究[J]. 中国电化教育, 2004(5):75-76.
5. 傅骞, 刘志波, 陈良柱. 基于扩展知识空间理论的新一代教育资源平台研究[J]. 电化教育研究, 2006(4):39-42.