Git Product home page Git Product logo

kgc-rec's Introduction

Recommending Knowledge Concepts on MOOC Platforms with Meta-path-based Representation Learning

This repository contains the implementation for EDM2021 paper - "Recommending Knowledge Concepts on MOOC Platforms with Meta-path-based Representation Learning". This work is inspired by and built on top of ACKRec.

Abstract

Massive Open Online Courses (MOOCs) which enable large- scale open online learning for massive users have been playing an important role in modern education for both students as well as professionals. To keep users' interest in MOOCs, recommender systems have been studied and deployed to recommend courses or videos that a user might be interested in. However, recommending courses and videos which usually cover a wide range of knowledge concepts does not consider user interests or learning needs regarding some specific concepts. This paper focuses on the task of recommending knowledge concepts of interest to users, which is challenging due to the sparsity of user-concept interactions given a large number of concepts.

In this paper, we propose an approach by modeling information on MOOC platforms (e.g., teacher, video, course, and school) as a Heterogeneous Information Network (HIN) to learn user and concept representations using Graph Convolutional Networks based on user-user and concept-concept relationships via meta-paths in the HIN. We incorporate those learned user and concept representations into an extended matrix factorization frame- work to predict the preference of concepts for each user. Our experiments on a real-world MOOC dataset show that the proposed approach outperforms several baselines and state- of-the-art methods for predicting and recommending concepts of interest to users.

Main environments

Laptop used for experiments: Intel(R) Core(TM) i5-8365U processor laptop with 16GB RAM

Main packages: Python 3.6; Tensorflow 1.13.1

Folder structure

├── data          # the folder contains MOOCCube data (input) used for experiments
├── output        # output folder 
requirements.txt  # packages to be installed using pip install -r requirements.txt
data_utils.py     # for evaluation of predicted results using trained model
data_utils.ipynb  # for data preprocessing
m_train.py        # for training the model
m_inits.py
m_layers.py
m_models.py
m_utils.py
metrics.py

Usage

Use the following command to train our method $MOOCIR_{a1}$ on the MOOCCube dataset. The output include m_rating_pred_bestmrr.p file for predicted item score matrix for all users.

$ python m_train.py

After the above step, you can use data_utils.py to get the results regarding evaluation metrics on the test set. The default setting m_rating_pred_bestmrr.p from above for the variable pred_matrix_f in the data_utils.py.

$ python data_utils.py

Citation

Guangyuan Piao, "Recommending Knowledge Concepts on MOOC Platforms with Meta-path-based Representation Learning", Educational Data Mining, Paris, France, 2021. [PDF] [BibTex]

kgc-rec's People

Contributors

parklize avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

kgc-rec's Issues

data

Hello, your data set is downloaded by git lfs, and the data is a little big. Could you please provide the data that can be downloaded directly? Thank you very much.

code

Hello,Sorry to bother you.I want to further understand this paper.If possible,could you please provide the code for data preprocessing.I will appreciate it very much if you give me your code.

Train error

WARNING:tensorflow:From D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\util\dispatch.py:201: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use rate instead of keep_prob. Rate should be set to rate = 1 - keep_prob.
Traceback (most recent call last):
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\framework\tensor_util.py", line 549, in make_tensor_proto
str_values = [compat.as_bytes(x) for x in proto_values]
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\framework\tensor_util.py", line 549, in
str_values = [compat.as_bytes(x) for x in proto_values]
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\util\compat.py", line 86, in as_bytes
raise TypeError('Expected binary or unicode string, got %r' %
TypeError: Expected binary or unicode string, got None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "E:/kgc-rec-main/kgc-rec-main/m_train.py", line 77, in
model = MOOCUM(placeholders,
File "E:\kgc-rec-main\kgc-rec-main\m_models.py", line 173, in init
self.userModel = GCN(placeholders=self.placeholders, input_dim=input_dim_user, tag='user', length=user_dim,
File "E:\kgc-rec-main\kgc-rec-main\m_models.py", line 95, in init
self.build()
File "E:\kgc-rec-main\kgc-rec-main\m_models.py", line 49, in build
hidden = self.layersi
File "E:\kgc-rec-main\kgc-rec-main\m_layers.py", line 415, in call
w_omega = tf.get_variable(initializer=tf.random_normal([hidden_size, self.attention_size], stddev=0.1),
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\util\dispatch.py", line 201, in wrapper
return target(*args, **kwargs)
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\ops\random_ops.py", line 90, in random_normal
shape_tensor = tensor_util.shape_tensor(shape)
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\framework\tensor_util.py", line 1035, in shape_tensor
return ops.convert_to_tensor(shape, dtype=dtype, name="shape")
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\profiler\trace.py", line 163, in wrapped
return func(*args, **kwargs)
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\framework\ops.py", line 1540, in convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\framework\constant_op.py", line 339, in _constant_tensor_conversion_function
return constant(v, dtype=dtype, name=name)
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\framework\constant_op.py", line 264, in constant
return _constant_impl(value, dtype, shape, name, verify_shape=False,
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\framework\constant_op.py", line 281, in _constant_impl
tensor_util.make_tensor_proto(
File "D:\anacoda\envs\pytorch\lib\site-packages\tensorflow\python\framework\tensor_util.py", line 551, in make_tensor_proto
raise TypeError("Failed to convert object of type %s to Tensor. "
TypeError: Failed to convert object of type <class 'tuple'> to Tensor. Contents: (None, 32). Consider casting elements to a supported type.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.