실제 머신 러닝에 관한 모든 것이 무엇입니까?


11

나는 기계 학습 (일부 통계)의 새로운 이민자이며, 학습 지식 (감독 / 감독되지 않은 학습 알고리즘, 관련 최적화 방법, 정규화, 일부 철학 (예 : 편향 분산 절충)?)입니다. 나는 실제 연습이 없으면 기계 학습에 대한 깊은 이해를 얻지 못할 것이라는 것을 알고 있습니다.

따라서 실제 데이터에 대한 분류 문제부터 시작합니다 (예 : MNIST). 놀랍게도, 기능 학습 / 엔지니어링 없이 원시 픽셀 값을 입력으로 사용하는 랜덤 포레스트 분류기를 사용하면 정확도가 0.97에 도달합니다. 또한 매개 변수가 조정 된 SVM, LR과 같은 다른 학습 알고리즘을 시도했습니다.

그렇다면 길을 잃었습니다. 너무 쉬울까요, 아니면 여기에 빠진 것이 있습니까? 툴킷에서 학습 알고리즘을 선택하고 일부 매개 변수를 조정하십시오.

그것이 실제로 머신 러닝에 관한 것이면, 나는이 분야에 대한 관심을 잃을 것입니다. 며칠 동안 블로그를 생각하고 읽었으며 결론을 얻었습니다.

  1. 실제로 머신 러닝의 가장 중요한 부분은 기능 엔지니어링입니다 . 즉, 데이터가 주어지면 기능을 더 잘 표현할 수 있습니다.

  2. 어떤 학습 알고리즘을 사용해야하는지, 매개 변수 튜닝도 중요하지만 최종 선택은 실험에 관한 것입니다.

누군가가 나를 교정하고 실제로 기계 학습에 대한 제안을 할 수 있기를 바랍니다.


1
나는 당신의 질문에 전체적으로 대답 할 수는 없다고 생각하지만, 기능 / 품질이 열악한 것 외에도 알고리즘 / 도구가 불만족스러운 많은 문제가 있음을 안심하고 싶습니다 (사회 과학은 경험이 풍부합니다) 두 상황 모두). 나는 그것이 당신의 유일한 관심사라고 생각하지는 않지만, 지금까지 프로젝트의 용이성으로 인해 불편 해 보입니다.

1
@Matthew, 그렇습니다. 실제로 하나의 문제에 직면했을 때 어디서부터 시작 해야할지 몰랐습니다. 데이터를 분석하여 유용한 기능을 추출하거나 학습 알고리즘을 선택하고 실행할 수 있도록 자연을 찾아야합니까?
아보카도

나는 100에서 97 번 올바르게 비행하는 비행기를 타지 않을 것이다.
lcrmorin

답변:


12

실제로 머신 러닝 (ML)은 ML의 목표가 무엇인지에 달려 있습니다. 경우에 따라 견고한 사전 처리 및 즉시 사용 가능한 ML 방법 모음을 적용하는 것으로 충분할 수 있습니다. 그러나 이러한 상황에서도 문제가 발생할 때 문제를 해결하려면 방법이 어떻게 작동하는지 이해하는 것이 중요합니다. 그러나 실제로 ML은 이보다 훨씬 많을 수 있으며 MNIST가 그 좋은 예입니다.

MNIST 데이터 세트에서 '좋은'성능을 얻는 것은 믿을 수 없을 정도로 쉽습니다. 예를 들어, MNIST 성능에 관한 Yann Le Cun의 웹 사이트에 따르면 , 유클리드 거리 측정법 (L2)을 사용하는 K 가장 가까운 이웃 (K-NN)도 3 %의 오류율을 가지고 있습니다. 숲. L2 K-NN은 ML 알고리즘만큼 간단합니다. 반면, Leon & Patrick의 최고인 Yann, Yoshua는이 데이터 세트 인 LeNet-4에서 처음으로 촬영 한 오류율이 0.7 %이고 0.7 %가 3 %의 4 %보다 작으므로이 시스템을 손으로 쓴 숫자를 읽는 연습을하는 순진 알고리즘은 오류를 수정하기 위해 인간의 노력보다 4 배 많은 노력이 필요합니다.

Yann과 동료들이 사용했던 컨볼 루션 신경망 (convolutional neural network)은이 작업과 일치하지만 데이터를 이해하고 그 이해를 학습 알고리즘으로 인코딩하기 위해 노력하는 것처럼 '기능 엔지니어링 (feature engineering)'이라고 부를 수는 없습니다.

그래서 교훈은 무엇입니까?

  1. 즉시 사용 가능한 방법과 우수한 전처리를 사용하여 순진한 성능 기준에 쉽게 도달 할 수 있습니다. 기준선의 위치와이 성능 수준이 요구 사항에 적합한 지 여부를 알 수 있도록 항상이 작업을 수행해야합니다. 그러나, 즉시 사용 가능한 ML 방법은 '취 성적'입니다. 즉, 전처리에 놀라 울 정도로 민감합니다. 즉시 사용 가능한 방법을 모두 익힌 후에는 항상 포장을 시도하는 것이 좋습니다.
  2. 어려운 문제는 해결하기 위해 도메인 별 지식이나 더 많은 데이터 또는 둘 다가 필요합니다. 피처 엔지니어링은 도메인 별 지식을 사용하여 ML 알고리즘을 돕는 것을 의미합니다. 그러나 데이터가 충분하고 복잡한 기능을 익히기 위해 해당 데이터를 활용할 수있는 알고리즘 (또는 접근 방식) 및이 알고리즘을 적용하는 전문가가있는 경우 때때로이 지식을 포기할 수 있습니다 (예 : Kaggle Merck challenge ). 또한 도메인 전문가가 좋은 기능이 무엇인지 잘못 판단하기도합니다. 더 많은 데이터와 ML 전문 지식이 항상 도움이됩니다.
  3. 정확도가 아닌 오류율을 고려하십시오. 정확도가 99 % 인 ML 방법은 정확도가 98 % 인 오류의 절반을 만듭니다. 때로는 이것이 중요합니다.

2
+1 감사합니다. 답변을 읽으면서 기능 엔지니어링을 수행 할 도메인 별 지식이 없으면 주어진 데이터를 사용하여 기능 학습을 수행하고 다른 학습 알고리즘을 시도하는 좋은 방법을 발명하는 데 중점을 두어야합니다.
아보카도

@loganecolss 또는 다른 사람들이 비슷한 데이터로 수행 한 작업을 읽거나 도메인 전문가와 대화 할 수도 있습니다.
qdjm

7

블로그 나 웹 사이트에서 찾은 예제는 일반적인 방법이 잘 작동하는 것으로 알려진 예라고 생각합니다 (물론 개선 될 수 있음에도 불구하고).

저의 전문 분야는 기능 엔지니어링에 있으며 표준 알고리즘이 전혀 작동하지 않는 경우가 종종 있습니다. (나는 그 분야에 대한 지식이 없지만 종종 그것을 가진 사람들과 함께 일합니다.).

여기에 6 개월 동안 일한 실제 문제가 있습니다. 환자의 유전 적 가치를 나타내는 100 개의 샘플과 10000 개의 변수와 뼈의 밀도를 나타내는 100 x 1의 출력 y를 갖는 행렬 X가 주어집니다.

어떤 유전자가 뼈의 밀도에 영향을 미치는지 말해 줄 수 있습니까?

이제 다른 문제를 해결하고 있습니다. 2000 개의 샘플과 12000 개의 변수가있는 제조 생산 데이터 세트가 있습니다. 상사는이 데이터 세트에서 감독되지 않은 방식으로 30 개 이하의 변수를 추출하려고합니다.
몇 가지 알고리즘을 시도했지만 600 개 미만의 변수를 선택할 수는 없습니다. (나는 아직도이 일을하고있다 ...)

고려해야 할 또 다른 중요한 생각은 다양한 알고리즘의 속도 성능입니다. 많은 상황에서 결과를 기다리는 20 분을 기다릴 수 없습니다. 예를 들어, NIPALS를 사용하는시기와 SVD를 사용하여 PCA를 계산하는시기를 알아야합니다.

이것이 ml에서 일반적인 문제에 대한 아이디어를 줄 수 있기를 바랍니다.


n<<p
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.