문제

코딩 스타일을 기반으로 학생의 코드 득점을 자동화 할 수 있는지 여부를 연구하고 있습니다. 여기에는 중복 코드를 피하거나 코드를 주석 처리하고 변수의 잘못된 이름 지정 등이 포함됩니다.

우리는 지난 한 학기 구성 점수 (1-3부터 범위)를 기반으로 배우려고 노력하고 있으며 이는 멋지게 학습을 쉽게합니다. 기본 아이디어는 학생의 제출물에서 기능을 추출하고 Feature_Vector를 만들고 Scikit-Learn을 사용하여 물류 회귀를 통해 실행하는 것입니다. 우리는 또한 차원을 줄이기 위해 기능 벡터에서 PCA를 실행하는 것을 포함하여 다양한 것들을 시도했습니다.

우리의 분류자는 단순히 가장 빈번한 클래스를 추측하고 있습니다. 2. 우리의 특징은 어떤 방식 으로든 우리의 기능이 예측되지 않기 때문입니다. 은 지배적 인 학급을 추측 할 수있는 감독 된 학습 알고리즘만을위한 다른 가능한 이유가 있습니까? 은 이것을 방지 할 수있는 방법이 있습니까?

나는 그것이 예측이 아니라는 기능 때문에 "좋은"기능이 무엇이 될지 결정할 수있는 방법이 있습니까? (좋은 것으로, 나는 차별적이거나 예측되는 것을 의미합니다).

참고 : 측면 실험으로서 우리는 이미 등급이 매겨진 독자 학년 과제를 갖는 과거의 성적이 얼마나 일관되게되었는지 테스트했습니다. 그들 중 55 %만이 프로젝트에 대해 동일한 구성 점수 (1-3)를주었습니다. 이는 인간이 일관되게 등급이 될 수 없기 때문에이 데이터 집합이 단순히 분류 할 수없는 것을 의미 할 수 있습니다. 다른 아이디어에 대한 모든 팁? 또는 사실이 있는지 여부는 사실입니까?

특징은 다음과 같습니다. 중복 코드 줄, 평균 기능 길이, 1 문자 변수 수, 주석 처리 코드, 최대 선 길이, 사용되지 않은 가져 오기, 사용되지 않는 변수의 수를 포함하는 행 수 , 미사용 매개 변수. 몇 가지 더 ... 우리는 모든 기능을 시각화했으며 평균이 점수와 상관 관계가있는 동안 변이가 정말로 크지 않아 (유망하지 않음)

편집 : 프로젝트의 범위 : 우리는 한 명의 클래스에서 특정 프로젝트 (해골 코드가 주어진)에서만 배우려고 노력하고 있습니다. 우리는 아직 일반적으로 일반화 할 필요가 없습니다.

도움이 되었습니까?

해결책

그냥 생각 - Andrew NG는 Coursera ( "Nofollow"> https : //www.coursera에서 기계 학습 과정을 가르칩니다.org / 코스 / ml ).학생들이 클래스를 통해 제출하는 몇 가지 프로그래밍 할당이 있습니다.나는 독서를 기억합니다 (불행히도 나는 학생들이 과제를 만드는 흔한 실수가있는 직감으로 학생을 제출 한 프로그래밍 과제를 클래스로부터 묶는 지속적인 연구가 있었음을 기억합니다 (지금은 이제)./ P>

이것이 당신을 돕는지 확실하지는 않지만, 이것을 감독하지 않은 학습 문제로 치료하는 것이 더 의미가있을 수 있습니다 (예 : 비슷한 점수가 비슷한 코드 샘플이 비슷한 점수를 받아야한다는 직감을 가진 다른 코드 샘플에서 유사점을 찾고 있습니다)..

다른 팁

특징은 다음과 같습니다. 중복 코드, 평균 기능 길이, 1 문자 변수 수, 주석 처리 코드, 최대 선 길이, 사용되지 않은 가져 오기, 사용되지 않은 변수, 미사용 매개 변수가 포함 된 행 수. 몇 가지 더 ..

기능을 정상화하려고 시도 했습니까? 주어진 코드를 카테고리로 분류 할 수있는 신경망을 훈련시키고 싶은 것 같습니다. 이제는 다른 코드가 다른 수의 중복 코드와 다른 수의 사용되지 않는 변수를 말할 수 있으므로 똑같이 나쁘게 될 수 있습니다. 이러한 이유로 '유용한'코드의 전체 줄을 말한다면 매개 변수를 정규화해야합니다.

좋은 기능을 찾지 못하고 매우 어려움이 있습니다. 정체 될 때 항상 당신의 직감을 따르십시오. 인간이 작업을 수행 할 수 있으면 컴퓨터를 할 수 있습니다. 귀하의 기능은 주어진 코드를 평가하는 데 상당히 겸손한 것처럼 보입니다.

요약 : 피처의 정규화가 문제를 해결해야합니다.

  1. 타겟 클래스의 균형을 유지하려는 (1,2,3 점 점수 가깝게) 균형을 유지하려고합니다.무작위로 과도한 클래스, 부트 스트랩 샘플 밑에있는 클래스를 무작위로 샘플링하거나, 불균형 한 데이터에 대해 설명하는 알고리즘 (Python Do에서 확실하지 않음).

  2. 오버 피팅을 방지하기 위해 가교 검증되어 있는지 확인하십시오

  3. 중요한 속성을 알아내는 몇 가지 방법이 있습니다.

    • 속성의 모든 조합을 시도해보십시오.
    • 또는 모든 속성 조합을 시도해보십시오. 모든
    • 로 시작하십시오.
    • 또는 무작위로 (또는 W 유전자 알고)에서 속성 조합을 시도하십시오
  4. 가장 높은 상호 검증 된 정확도로 콤보 속성을 선택하십시오.

    속성 열의 제품을 사용하여 효과를 함께 수행하는지 확인할 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top