2013-09-03 3 views
2

문제는 제목만큼 간단합니다.LinearRegression 모델에서 순위 유지 스코어 함수를 어떻게 정의 할 수 있습니까?

내 점수 기능을 기반으로 모델을 훈련시키고 싶습니다. LinearRegression이 사용하는 최소 거리가 아닙니다.

내 점수 함수를 선언 한 유일한 곳은 모델 평가 알고리즘입니다.

사용하려는 점수 함수는 두 데이터 집합의 단조가 얼마나 가까운 지 (하나의 테스트, 한 번의 훈련)를 기준으로 점수를 반환하는 점수 함수입니다.

def monotony_score_signed(y_true, y_pred): 

    assert y_true.ndim == 1 
    assert y_true.shape == y_pred.shape 
    true_order = y_true.argsort(0); 

    pred_sign = np.sign(np.diff(y_pred[true_order])) 
    true_sign = np.sign(np.diff(y_true[true_order])) 
    accuracy = float(np.count_nonzero(pred_sign == true_sign)/float(pred_sign.shape[0] - 1)) 
    return accuracy 
+1

[ "Learning to Rank"] (http://en.wikipedia.org/wiki/Learning_to_rank) 문제에 대해 묻는 것으로 보입니다. – ely

답변

2

손실/점수 기능은 무엇입니까? 그라디언트 (일괄 또는 확률 적으로 그래디언트 상승) 및 가능하면 헤 시안 (준 뉴톤 방법)을 제공하는 일종의 자동 차동 루틴을 찾고 있습니까?

scikits.learn은 최적화 라이브러리가 아니라 일반적인 추론 및 기계 학습 알고리즘에 대한 래퍼이므로 기존의 점수 함수가 아닌 경우 라이브러리에서 허용하지 않을 수 있습니다.

비용 함수에 그라디언트와 헤 시안에 대한 잘 알려진 함수 형식이있는 경우 이미 해당 형식의 모델에 맞는 루틴이 내장되어있을 것입니다. 그러나 우리가 결정할 수 있기 전에 비용 함수를 알아야 할 것입니다.

추가 된 후 업데이트

당신이 설명하는 문제는 당신이 (관련 출력을 예측하는 기능 입력에 적용되는 가중치를 배울 수있는 방법입니다) "선형 회귀"를 호출하는 것에 대해 적합하지 않습니다. 회귀에서 함축적 인 목표는 기능적 형태를 배우는 것입니다. 또한 소음이있는 경우 기능적 양식을 동시에 습득하고 기능적 양식이 데이터 세트의 순위를 유지하도록하려면 극히 심각하고 부 자연스러운 가정이 필요합니다.

설명하는 비용 함수를 기반으로 데이터의 순위 순서를 유지하는 문제에 관심이있는 것 같습니다.

이 문제는 "Learning to Rank" 문제로 알려져 있습니다. "scikits.learn ranking model" Google을 검색하면 도움이 될만한 결과 인 including this example이 표시됩니다.

기존 방법에 비용 기능을 연결하는 쉬운 방법은 없을 것이라고 생각합니다. 또한 비용 함수가 잡음이 많은 순위 순서 보존을 모델링하는 가장 좋은 방법인지 확실하지 않습니다.

+0

제목에 점수 기능을 추가했습니다. 나는 실제 값이 아닌 데이터의 단조 로움을 정확하게 예측하는 모델을 만들어야한다. –

+0

답변을 조금 더 확대했습니다. – ely

+0

나는 당신의 대답을 좋아했습니다.그것은 내가 처음에 질문 한 것이 아니었지만, 내 특정 문제에 대한 대답을 주었다 :) –

0

단조 출력 대 1D 입력의 제한 조건 하에서 회귀 모델을 작성하려면 IsotonicRegression 클래스를 사용할 수 있습니다.

사용자 지정 목표 함수에 대해 선형 모델 (또는 비선형 모델)을 실제로 최적화하려는 경우 예를 들어 scipy.optimize, climin 또는 cvxopt에서 사용할 수있는 일반 옵티 마이저를 사용할 수 있습니다.