Documentation
¶
Index ¶
- func Evaluate(estimator MatrixFactorization, testSet, trainSet dataset.CFSplit, ...) []float32
- func GetModelName(m Model) string
- func HR(targetSet mapset.Set[int32], rankList []int32) float32
- func MAP(targetSet mapset.Set[int32], rankList []int32) float32
- func MRR(targetSet mapset.Set[int32], rankList []int32) float32
- func MarshalModel(w io.Writer, m Model) error
- func NDCG(targetSet mapset.Set[int32], rankList []int32) float32
- func Precision(targetSet mapset.Set[int32], rankList []int32) float32
- func Rank(model MatrixFactorization, userId int32, candidates []int32, topN int) []int32
- func Recall(targetSet mapset.Set[int32], rankList []int32) float32
- type ALS
- func (als *ALS) Fit(ctx context.Context, trainSet, valSet dataset.CFSplit, config *FitConfig) Score
- func (als *ALS) Init(trainSet dataset.CFSplit)
- func (als *ALS) Marshal(w io.Writer) error
- func (als *ALS) SetParams(params model.Params)
- func (als *ALS) SuggestParams(trial goptuna.Trial) model.Params
- func (als *ALS) Unmarshal(r io.Reader) error
- type BPR
- func (bpr *BPR) Fit(ctx context.Context, trainSet, valSet dataset.CFSplit, config *FitConfig) Score
- func (bpr *BPR) Init(trainSet dataset.CFSplit)
- func (bpr *BPR) Marshal(w io.Writer) error
- func (bpr *BPR) SetParams(params model.Params)
- func (bpr *BPR) SuggestParams(trial goptuna.Trial) model.Params
- func (bpr *BPR) Unmarshal(r io.Reader) error
- type BaseMatrixFactorization
- func (baseModel *BaseMatrixFactorization) Clear()
- func (baseModel *BaseMatrixFactorization) GetItemFactor(itemIndex int32) []float32
- func (baseModel *BaseMatrixFactorization) GetItemIndex() *dataset.FreqDict
- func (baseModel *BaseMatrixFactorization) GetUserFactor(userIndex int32) []float32
- func (baseModel *BaseMatrixFactorization) GetUserIndex() *dataset.FreqDict
- func (baseModel *BaseMatrixFactorization) Init(trainSet dataset.CFSplit)
- func (baseModel *BaseMatrixFactorization) Invalid() bool
- func (baseModel *BaseMatrixFactorization) IsItemPredictable(itemIndex int32) bool
- func (baseModel *BaseMatrixFactorization) IsUserPredictable(userIndex int32) bool
- func (baseModel *BaseMatrixFactorization) Marshal(w io.Writer) error
- func (baseModel *BaseMatrixFactorization) Predict(userId, itemId string) float32
- func (baseModel *BaseMatrixFactorization) Unmarshal(r io.Reader) error
- type FitConfig
- type MatrixFactorization
- type Metric
- type Model
- type ModelCreator
- type ModelSearch
- type Score
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Evaluate ¶
func Evaluate(estimator MatrixFactorization, testSet, trainSet dataset.CFSplit, topK, numCandidates, nJobs int, scorers ...Metric) []float32
Evaluate evaluates a model in top-n tasks.
func GetModelName ¶
func MAP ¶
MAP means Mean Average Precision. mAP: http://sdsawtelle.github.io/blog/output/mean-average-precision-MAP-for-recommender-systems.html
func MRR ¶
MRR means Mean Reciprocal Rank.
The mean reciprocal rank is a statistic measure for evaluating any process that produces a list of possible responses to a sample of queries, ordered by probability of correctness. The reciprocal rank of a query response is the multiplicative inverse of the rank of the first correct answer: 1 for first place, 1⁄2 for second place, 1⁄3 for third place and so on. The mean reciprocal rank is the average of the reciprocal ranks of results for a sample of queries Q:
MRR = \frac{1}{Q} \sum^{|Q|}_{i=1} \frac{1}{rank_i}
func Precision ¶
Precision is the fraction of relevant ItemFeedback among the recommended ItemFeedback.
\frac{|relevant documents| \cap |retrieved documents|} {|{retrieved documents}|}
Types ¶
type ALS ¶
type ALS struct {
BaseMatrixFactorization
// contains filtered or unexported fields
}
type BPR ¶
type BPR struct {
BaseMatrixFactorization
// contains filtered or unexported fields
}
BPR means Bayesian Personal Ranking, is a pairwise learning algorithm for matrix factorization model with implicit feedback. The pairwise ranking between item i and j for user u is estimated by:
p(i >_u j) = \sigma( p_u^T (q_i - q_j) )
Hyper-parameters:
Reg - The regularization parameter of the cost function that is optimized. Default is 0.01. Lr - The learning rate of SGD. Default is 0.05. nFactors - The number of latent factors. Default is 10. NEpochs - The number of iteration of the SGD procedure. Default is 100. InitMean - The mean of initial random latent factors. Default is 0. InitStdDev - The standard deviation of initial random latent factors. Default is 0.001.
type BaseMatrixFactorization ¶
type BaseMatrixFactorization struct {
model.BaseModel
UserIndex *dataset.FreqDict
ItemIndex *dataset.FreqDict
UserPredictable *bitset.BitSet
ItemPredictable *bitset.BitSet
// Model parameters
UserFactor [][]float32 // p_u
ItemFactor [][]float32 // q_i
}
func (*BaseMatrixFactorization) Clear ¶
func (baseModel *BaseMatrixFactorization) Clear()
func (*BaseMatrixFactorization) GetItemFactor ¶
func (baseModel *BaseMatrixFactorization) GetItemFactor(itemIndex int32) []float32
GetItemFactor returns the latent factor of an item.
func (*BaseMatrixFactorization) GetItemIndex ¶
func (baseModel *BaseMatrixFactorization) GetItemIndex() *dataset.FreqDict
func (*BaseMatrixFactorization) GetUserFactor ¶
func (baseModel *BaseMatrixFactorization) GetUserFactor(userIndex int32) []float32
GetUserFactor returns the latent factor of a user.
func (*BaseMatrixFactorization) GetUserIndex ¶
func (baseModel *BaseMatrixFactorization) GetUserIndex() *dataset.FreqDict
func (*BaseMatrixFactorization) Init ¶
func (baseModel *BaseMatrixFactorization) Init(trainSet dataset.CFSplit)
func (*BaseMatrixFactorization) Invalid ¶
func (baseModel *BaseMatrixFactorization) Invalid() bool
func (*BaseMatrixFactorization) IsItemPredictable ¶
func (baseModel *BaseMatrixFactorization) IsItemPredictable(itemIndex int32) bool
IsItemPredictable returns false if item has no feedback and its embedding vector never be trained.
func (*BaseMatrixFactorization) IsUserPredictable ¶
func (baseModel *BaseMatrixFactorization) IsUserPredictable(userIndex int32) bool
IsUserPredictable returns false if user has no feedback and its embedding vector never be trained.
func (*BaseMatrixFactorization) Marshal ¶
func (baseModel *BaseMatrixFactorization) Marshal(w io.Writer) error
Marshal model into byte stream.
func (*BaseMatrixFactorization) Predict ¶
func (baseModel *BaseMatrixFactorization) Predict(userId, itemId string) float32
type FitConfig ¶
func NewFitConfig ¶
func NewFitConfig() *FitConfig
func (*FitConfig) SetPatience ¶
func (*FitConfig) SetVerbose ¶
type MatrixFactorization ¶
type MatrixFactorization interface {
Model
// Predict the rating given by a user (userId) to a item (itemId).
Predict(userId, itemId string) float32
// GetUserIndex returns user index.
GetUserIndex() *dataset.FreqDict
// GetItemIndex returns item index.
GetItemIndex() *dataset.FreqDict
// IsUserPredictable returns false if user has no feedback and its embedding vector never be trained.
IsUserPredictable(userIndex int32) bool
// IsItemPredictable returns false if item has no feedback and its embedding vector never be trained.
IsItemPredictable(itemIndex int32) bool
// Marshal model into byte stream.
Marshal(w io.Writer) error
// Unmarshal model from byte stream.
Unmarshal(r io.Reader) error
// contains filtered or unexported methods
}
func UnmarshalModel ¶
func UnmarshalModel(r io.Reader) (MatrixFactorization, error)
type Model ¶
type Model interface {
model.Model
// Fit a model with a train set and parameters.
Fit(ctx context.Context, trainSet, validateSet dataset.CFSplit, config *FitConfig) Score
// GetItemIndex returns item index.
GetItemIndex() *dataset.FreqDict
// Marshal model into byte stream.
Marshal(w io.Writer) error
// Unmarshal model from byte stream.
Unmarshal(r io.Reader) error
// GetUserFactor returns latent factor of a user.
GetUserFactor(userIndex int32) []float32
// GetItemFactor returns latent factor of an item.
GetItemFactor(itemIndex int32) []float32
}
type ModelCreator ¶
type ModelCreator func() MatrixFactorization
type ModelSearch ¶
type ModelSearch struct {
// contains filtered or unexported fields
}
func NewModelSearch ¶
func NewModelSearch(models map[string]ModelCreator, trainSet, valSet dataset.CFSplit, config *FitConfig) *ModelSearch
func (*ModelSearch) Objective ¶
func (ms *ModelSearch) Objective(trial goptuna.Trial) (float64, error)
func (*ModelSearch) WithContext ¶
func (ms *ModelSearch) WithContext(ctx context.Context) *ModelSearch
func (*ModelSearch) WithSpan ¶
func (ms *ModelSearch) WithSpan(span *monitor.Span) *ModelSearch