교육분야에서 인공지능을 활용하기 위해서는 가장 기본적이고 대표적으로 데이터셋이 필요합니다. 그래서 공개된 학습이력 데이터셋 5가지 정도를 공유하고자 합니다.
1. ASSISTment 2009-2010 datasets
가장 먼저, ASSISTment 2009-2010 데이터셋으로 일반적으로 Knowledge Tracing 모델 성능검증을 위해 가장 많이 사용되는 데이터 셋입니다. 해당데이터 셋은 skill_builder 와 non_skill_builder 타입 두가지로 나뉘어져 있으며, 이 중 특정 개념을 마스터 한 것으로 간주 될때는 더이상 문제를 출제하지 않았다는 skill_builder 데이터셋을 기준으로 작성하였습니다. 아래 링크에서 데이터셋을 다운로드 받을 수 있습니다.
https://sites.google.com/site/assistmentsdata/home/2009-2010-assistment-data
ASSISTmentsData - 2009-2010 ASSISTment Data
Data Description for This is the ASSISTment data that gathered in the school year 2009~2010. The full dataset is separated into two different files, one is all skill builder data, one is all non skill builder data. Skill builder data is also called mastery
sites.google.com
각 사용자별 문항별 정오답 여부(맞힘/틀림)를 시간순으로 확인할 수 있으며, 각 문항이 어떤 skill 에 관한 것인지를 알 수 있습니다.
해당 데이터 셋에는 총 30개의 feature가 존재하며, 그 중 주요하다 생각되는 몇가지를 골라보았습니다. 전체 feature 설명은 위 링크에서 모두 확인가능합니다.
features | 설명 |
order_id | 이력 Log를 기반으로 시간순서대로 매긴 ID |
assignment_id | assignment ID (각 assignment는 선생님/학급에 할당) |
user_id | 학생 ID |
assistment_id | assistment ID (하나 이상의 문제) |
problem_id | 문항 ID |
correct | 정오답 (맞힘 : 1 / 틀림 : 0) |
attempt_count | 이 문제에 대한 학생의 시도 횟수 |
sequence_id | 문제 세트 ID (동일한 문제 셋, 동일한 assignment) |
skill_id | 문항과 관련한 Skill(개념) ID (Skill이 여러개라면 중복 row로 표현) |
skill_name | 문항과 관련한 Skill(개념) 이름 (Skill이 여러개라면 중복 row로 표현) |
answer_id | 학생이 선택한 보기 ID (객관식) |
answer_text | 학생이 입력한 답 (주관식) |
skill_name에는 'Box and Whisker' , 'Circle Graph' 등의 값을 확인할 수 있었으며, 이를 통해 미국 수학 중등과정임을 추측할 수 있습니다. 추가로 위 설명처럼, 한 문항이 포함하는 개념의 수가 여러개라면 해당 풀이이력은 개념 수만큼 row가 중복되어 태깅됩니다. 아래 예시처럼요!
order_id | user_id | skill_id | skill_name | correct |
12345 | 1228 | 2 | Circle graph | O |
12345 | 1228 | 70 | Percent Of | O |
약간 모호하다고 생각된 feature는 assignment, assistment, sequence 였습니다. 제가 이해한 것을 기반으로 제 언어로 다시 작성해보았습니다! 혹시 다른 의견이 있다면 언제든 댓글 달아주세요 :) 각 피쳐의 의미에 따라 활용하기 좋을 듯 하네요.
assignment : 김선생님의 1반, 박선생님의 2반에서만 내는 과제 (문항묶음) (같은 교재를 사용하지만 문항 구성은 다를 수 있음.)
assistment : 교재에서 이미 묶여 출간된 단원평가 같은것, 과제와 상관없음.
sequence : 같은 구성을 가지는 문항 세트, 다른 반에서 출제한 다른 과제라도 우연히 문항 구성이 같다면 같은 sequence 라고 봄.
또, 해당 데이터셋을 통해 얻을 수 있다고 생각하는 유의미한 정보는 사용자 입력이라고 생각합니다. answer_id 와 answer_text를 통해 학생이 어떤 답을 선택했는지를 파악할 수 있으며, 더 세부적인 분석이 가능해질 듯합니다.
skill_builder_data set 을 기준으로, 데이터의 정량적 정보는 아래와 같습니다.
데이터 건수 | 525,535 건 |
사용자 수 | 4,218 명 |
기간 | 2009 ~ 2010년 (날짜기록 없음) |
개념(Skill) 수 | 110 개 |
2. ASSISTment 2015 datasets
다음은 ASSISTment 2015 데이터셋입니다. ASSIST2009 데이터와 같은 시리즈로, feature 구성은 좀 다릅니다. 마찬가지로 아래 링크에서 다운로드 가능합니다.
https://sites.google.com/site/assistmentsdata/home/2015-assistments-skill-builder-data?pli=1
ASSISTmentsData - 2015-assistments-skill-builder-data
We have move this to here
sites.google.com
해당 데이터는 2015년에 수집되었으며, 학생 응답수가 가장 많은 상위 100개의 개념에 대한 이력만 포함하고 있다고 합니다. feature는 user_id , log_id, sequence_id, correct 로 구성되어 있었습니다.
ASSIST 2009 데이터와 크게 달랐던 점은, 문항별 정오답이 1과 0으로 태깅되어 있는것이 아닌, 로그, sequence별로 0 에서 1사이의 점수로 태깅되어 있다는 점이었습니다. 문항별 정오답과 어떤 개념인지 알수 없어 아쉬웠지만, 로그별 점수를 추적할 수 있다는 점에서 활용가능합니다.
ASSISTment 시리즈의 데이터셋에서 풀이된 문항들을 다운로드 받을 수 있다고 합니다. 자세한 사항은 https://sites.google.com/site/assistmentsdata/datasets/assistments-problems_1?authuser=0 을 참조해주세요 :)
=> 23.01 확인결과 미국에서 재직중인 교수님들께만 문항 제공가능하다고 하네요 ㅠㅠ
3. Algebra 2006-2007 datasets
다음은 Algebra 2006-2007 데이터입니다. 설명에 따르면 컴퓨터로 풀이된 평가에 대한 학생들의 풀이이력으로, 2006~2007년에 수집된 데이터인 듯 하지만 왜인지 실제 데이터에는 1991년 이후 데이터도 다량 포함되어 있었습니다. 마찬가지로 아래 링크에서 로그인 후 다운로드 가능합니다.
https://pslcdatashop.web.cmu.edu/KDDCup/downloads.jsp
KDD Cup 2010: Educational Data Mining Challenge > Dataset Downloads
Download the development and challenge data sets. Note: If you use any of these data sets in your research, please cite them as follows: Stamper, J., Niculescu-Mizil, A., Ritter, S., Gordon, G.J., & Koedinger, K.R. (2010). [Data set name]. [Challenge/Devel
pslcdatashop.web.cmu.edu
각 사용자별 문항별 정오답 여부(맞힘/틀림)를 시간순으로 확인할 수 있으며, 각 문항이 어떤 KC(Knowlege Component)에 관한 것인지를 알 수 있습니다. KC는 쉽게 학습 개념이라 생각하면 됩니다.
해당 데이터 셋에는 총 18개의 feature가 존재하며, 그 중 주요하다 생각되는 feature들을 몇가지 정리하였습니다.
features | 설명 |
Anon student Id | 사용자 ID |
Problem Hierarchy | 문항의 커리큘럼 수준 (단원, 세션) |
Problem Name | 문항 고유 이름 |
Step Duration (sec) | 문항을 풀이한 시간(초) |
Correct first Attempt | 학생의 첫번째 시도 정오답(맞힘 : 1 / 틀림 : 0) |
KC(Default) | 문항이 포함하는 학습개념 (여러개일 경우 ~~로 구분) |
다른 데이터셋에서는 찾아볼 수 없었던 정보인 Step Duration이 존재했습니다. 학생이 문항을 풀이하는 데 소요된 시간을 알 수 있었습니다! 시간에 따른 성취도의 변화를 분석해볼 수 있겠네요.
이 외에 문제를 풀이한 년,월,일, 시간, 초 단위로 상세히 기록되어 있기 때문에 RNN 계열의 KT 모델 또한 적용 가능해 보입니다. 특이한 점은, 해당 문항에 대한 시도횟수와 틀린 횟수 또한 포함되어 있어 시도횟수에 따른 더 다양한 분석이 가능해보입니다.
또한 다운로드를 받으면, train / test 셋이 미리 나뉘어져있네요. 챌린지를 위한 공개 데이터셋이라 그런가 봅니다.
데이터의 건 수와 사용자 수는 아래와 같습니다. KC는 '~~'로 구분되어 여러 KC를 연결해 둔 값만 제외하여 카운팅하였습니다. ex 'combine-like-terms-whole-sp~~perform-mult-row2-sp'
데이터 건 수 | 2,270,364 건 (train set 기준) |
사용자 수 | 1,338 개 |
KC 수 | 480 개 (~~로 구분된 값 제외 기준) |
4. EdNet
EdNet은 산타토익 AI 서비스를 만든 뤼이드 의 데이터입니다. 산타토익을 통해 2년간 얻은 사용자의 컨텐츠 수강 이력 및 풀이이력이 담겨있습니다.
EdNet은 크게 4가지 수준으로 데이터를 분류하고 있는데, 가장 기초적인 문제풀이 로그 (KT1) 부터, 영상 플레이, 영상 멈춤, 답안 지움 등 다양한 사용자의 활동을 포함하는 데이터 (KT4) 까지 존재합니다. 해당 데이터셋의 다운로드와 자세한 설명은 아래 링크에서 확인하실 수 있습니다.
https://github.com/riiid/ednet
GitHub - riiid/ednet: EdNet is the dataset of all student-system interactions collected over 2 years by Santa, a multi-platform
EdNet is the dataset of all student-system interactions collected over 2 years by Santa, a multi-platform AI tutoring service with more than 780K users in Korea available through Android, iOS and w...
github.com
데이터를 확인하기 전, 토익은 문항에 대한 답을 4지선택으로, (a), (b), (c), (d) 로 함을 알고 데이터를 보면 이해가 빠를 듯 합니다:)
KT 1
KT1은 기본적인 RNN 계열의 Knowledge Tracing 을 위해 필요한 꽤 다양한 정보를 제공합니다. 시간순서대로 사용자가 풀이한 bundle(문제 묶음) 별 문항의 사용자 입력답이 포함되어 있고, 문항을 풀이하는 데 소요한 시간도 나와있습니다!
데이터를 다운로드 받으면 파일명이 u+{숫자} 구성으로 되어있는데요. 데이터가 사용자별로 수집되어 있어, 한 파일이 한 사용자에 대한 풀이이력임을 의미합니다. 데이터를 모두 확인해보진 않았지만 사용자별로 적으면 4문항(한 bundle), 많으면 19000문항 이상 정도까지 풀이한 것을 확인할 수 있었습니다.
features | 설명 |
timestamp | 학생에게 질문이 주어진 순간의 타임스탬프 |
solving_id | 문제 묶음 ID |
question_id | 문항 ID |
user_answer | 학생의 답변 (a,b,c,d) |
elapsed_time | 풀이하는 데 경과된 시간(ms) |
KT 2
KT2는 학생이 헷갈려 하고 있는 문항에 대해 감지하겠다는 목표를 가지고 수집된 데이터입니다. 예를 들어 a번과 c번 중에서 어떤 답을 할 지 학생이 고민했지만, KT1에서는 최종적으로 선택한 답만 표현되고 있기 때문에 학생의 여러 시도를 모두 확인할 수는 없었습니다. 이를 위해 KT2에서는 학생의 조금 더 세부적인 행동을 action_type으로 구분하여 표현하고 있습니다.
action_type에는 총3가지의 종류가 있습니다.
enter | 문제 UI 입장 |
respond | 최종 답변 제출 전에 선택했던 보기 |
submit | 최종 답변 제출 |
최종 답안 선택 전 다른 답에 대해 선택했다가 바꾼 경우에 한해서, 최종 답변 제출 전 선택했던 하나의 보기를 respond로 구분하여 표현하고 있습니다. 고민하지 않고 제출했다면 학생의 로그에는 enter와 submit 만 존재하게 되는 것이죠!
KT3
KT3에서는 단순히 문제풀이 이력 뿐 아니라, 강사의 설명을 읽거나 강의를 시청하는 등의 이력을 표현하고 있습니다.
문제를 풀이하고 난 후 해당 문제에 대한 해설이 제공되는 데 이를 읽거나, 강의를 시청하는 크게 두가지의 행동으로 구분하고 있으며 이 중 선택될 수 있는 타입은 'source'라는 컬럼으로 세분화 됩니다.
sprint | (문항 해설) 풀이 후 해설 확인 |
review | (문항 해설) 복습을 위한 해설 확인 |
my_note | (문항 해설) 해설을 내 노트에 저장 후 다시 읽기 |
archive | (강의 시청) 커리큘럼에 따른 강의 시청 |
adaptive_offer | (강의 시청) 맞춤형 강의 제공 |
위 source가 의미하는 것은 어떤 경로, 방법으로 해당 행동에 이르렀는지를 표현하는 듯 합니다.
KT4
KT4에서는 산타토익이 수집할 수 있는 모든 행동을 세분화하여 표현하였습니다.
action_type | 설명 |
erase_choice / undo_erase_choice | 답변 선택을 지우거나, 지웠던 답변을 다시 살림 |
play_audio / pause_audio / play_video / pause_video | 오디오와 비디오를 재생하거나 멈춤 |
pay / refund | 돈을 지불하면 모든 문항에 대해 접근할 수 있게 되며, 이에 대한 행동 |
enroll_coupon | 프로모션 쿠폰 코드를 입력한 행동 |
마지막으로, 풀이이력에 대한 사용자의 답변은 있지만 해당 문항에 대한 정답은 데이터에 나와있지 않았습니다. EdNet은 이를 따로 관리하고 있었는데요.
문항.csv 를 통해 각 문항이 포함되는 묶음 ID, 해설 ID, 정답 등을 확인할 수 있었습니다. 특히 tags는 문항이 포함하는 학습개념으로, 문항에 여러 개념이 포함된 경우 ;로 구분하여 표시하고 있습니다.
문항 정보 외 coupons, lectures, payments 정보 또한 확인할 수 있었으며, 뤼이드 github 를 통해 확인가능합니다.
5. AI허브 수학분야 학습자 역량 측정 데이터
다음은 미국 수학과정도, 토익도 아닌 한국 초등, 중등, 고등 과정의 학습 데이터를 확인할 수 있는 데이터입니다! 아쉽게도 풀이이력과 IRT에 대한 정보는 초, 중등에 한정되어 구축되었으며 고등과정은 중등과정의 어떤 교육과정과 연관되어있는 지를 표현한 '수학 지식체계 데이터 세트' 라는 이름으로 수학 계통도 처럼 구축되어 있었습니다.
자세한 구축 과정과 데이터 설명 등을 아래 링크에서 확인하실 수 있습니다.
https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100&dataSetSn=133
AI-Hub
※ 내국인만 데이터 신청이 가능합니다. 목록 데이터 개요 데이터 변경이력 데이터 변경이력 버전 일자 변경내용 비고 1.1 2021-12-28 원천데이터 수정 1.0 2021-06-18 원천데이터 수정 데이터 히스토리
aihub.or.kr
먼저, 분석 적용을 위한 데이터를 아래 예시처럼 구축하고 있었습니다.
사용자별 문항에 대한 정오답을 나타낸 것으로, 맞혔다면 1, 틀렸다면 0으로 태그하고 있었습니다.
원천 데이터를 살펴보니, 사용자 정보와 평가정보, 유형 등을 확인할 수 있었는데요.
{"learnerID": "A090000914", "learnerProfile": "M;S01;9", "testID": "A090000001", "assessmentItemID": "A090001001", "answerCode": "0", "Timestamp": "2021-05-30 11:56:11"}
features | 설명 |
learnerID | 학생 ID |
learnerProfile | 학생 성별;학교급;학년 |
testID | 평가 ID |
assessmentItemID | 문항 ID |
answerCode | 정오답 (맞힘 : 1 / 틀림 : 0) |
assessmentType | 평가 유형(default : 단원평가) |
timeStamp | 데이터 생성 시간 |
학생들의 학습일, 평가 구분 및 문항별 정오답을 통해 KT 적용이 무난해보였습니다. 특히 평가 정보를 활용해 IRT 적용또한 가능해보였는데요, 문항별 IRT 결과를 이미 데이터로 제공하고 있었습니다. 3모수 모델로 난이도, 변별도, 추측도를 모두 제공하고 있었으며, AI허브에서 모두 다운로드 가능합니다.
마지막으로, 수학 교육과정 간의 지식체계를 구축하고 있었으며, 아래 예시를 보면 쉽게 이해가 가능할 듯합니다.
"0": {
"fromConcept": {
"id": 3249,
"name": "거듭제곱",
"semester": "고등-수1-전체",
"description": "임의의 수 $a$와 양의 정수 $n$에 대하여 $a$를 $n$개 거듭하여 곱한 것을 $a$의 $n$제곱이라 하고 $a^n$으로 나타낸다. 또 $a,a^2,a^3,\\cdots,a^n,\\cdots$을 통틀어 $a$의 거듭제곱이라 한다.",
"chapter": {
"id": "587",
"name": "지수함수와 로그함수 > 지수 > 거듭제곱과 거듭제곱근"
},
"achievement": {
"id": "314",
"name": "거듭제곱과 거듭제곱근의 뜻을 알고, 그 성질을 설명할 수 있다."
}
},
"toConcept": {
"id": 1442,
"name": "거듭제곱",
"semester": "중등-중2-1학기",
"description": "같은 수나 문자를 거듭하여 곱한 것을 간단히 나타낸 것",
"chapter": {
"id": "481",
"name": "식의 계산 > 단항식의 계산 > 지수법칙"
},
"achievement": {
"id": "88",
"name": "지수법칙을 이해한다."
}
}
},
위 예시처럼, 고등학교 특정 수학과목의 특정 단원과 목표가 태그되어 있으며, 이는 이전 교육과정에서 어떤 교육과정과 연결되어 있는지에 대한 위계구조를 나타내고 있습니다.
추가로, 적용할 수 있는 Knowledge Tracing 모델을 제공하고 있었습니다. DKT+ 모델을 사용했으며, 친절히 데이터 로더부터 테스트 결과 출력 모듈까지 제공하고 있었습니다.
이렇게 5가지 공개 데이터를 살펴보았습니다. 이 외 작성하지 못한 statics 2011 데이터가 있습니다. 이는 데이터 access 요청이 필요해, 직접 데이터 활용은 해보았지만, 블로그 공유는 생략하였습니다. 궁금하신 분들은 아래 링크를 통해 확인하시면 좋을 듯합니다! 저는 하루만에 수락되어 사용할 수 있었습니다.
https://pslcdatashop.web.cmu.edu/DatasetInfo?datasetId=507
DataShop > Dataset Info
Dataset Info / Samples A sample is a proper subset of a dataset and is composed of one or more filters, specific conditions that narrow down your sample. This page lists samples shared by others, as well as those owned by you. You can use samples to: Compa
pslcdatashop.web.cmu.edu
'AI' 카테고리의 다른 글
Prompt Engineering 은 어떻게 하는걸까? : ChatGPT 활용 예제와 함께 완벽히 정리하기 (기본편) (1) | 2023.06.18 |
---|---|
Matrix Factorization : 개요와 원리부터, 최적화(SGD, ALS)까지 이해하기 (0) | 2023.06.01 |
FM(Factorization Machines)을 활용한 학생별 문항 맞힐확률 예측하기 (0) | 2023.02.26 |
시간에 따른 숙련도를 모델링한, DKT(Deep Knowledge Tracing) - 논문정리 및 코드(Pytorch) (0) | 2022.12.30 |
협업필터링(CF)을 통해 유사한 학습개념 및 유사한 수준의 학생 찾기 (0) | 2022.12.24 |