게으른 초보자를 위한 기계 학습
게으른 초보자를 위한 기계 학습
이 글은 내가 본 추문으로 인해 일어난 것이다. 이 추문은 기계 학습 서비스를 어떻게 훈련시켜 3개의 서로 다른 데이터 집합의 새로운 구성원을 식별하는지 연습해야 한다.
@rem: Being lazy here: I'm after a (machine learning) service that I can feed three separate datasets (to train with), and then I want to ask: "which dataset is this new bit of content most like".
Is there a walkthrough/cheatsheet/service for this?
나의 첫 번째 생각은 이것은 classification 임무처럼 들린다. 3조의 데이터가 있다는 생각은 반대로 해야 한다. 한 조의 데이터가 있는데 그 중에서 항목마다 3개의 라벨 중 하나가 있다.
나는 연습을 생각해 본 적이 없지만, 분류기를 어떻게 훈련해서 이 정확한 임무를 수행하는지 확실히 알고 있기 때문에, 여기는 내가 자바스크립트를 사용하여 텍스트 문서를 분류하는 연습이다.
당신은 충분한 감독이 있습니까?
기계 학습은 감독이 있는 것과 감독이 없는 두 종류로 나눌 수 있다.후자는 당신이 알고리즘에 제공한 데이터에 예정된 라벨이 없는 문제를 가리킨다.텍스트 문서가 한 무더기 있을 수도 있습니다. 유사한 종류로 조합할 수 있는지 알고 싶습니다. 이것은 clustering 의 예입니다.
감독 학습은 네가 이미 결과를 알고 있는 곳이다.귀하는 하나의 데이터를 가지고 있습니다. 그 중에서 모든 구성원은 n개의 종류 중의 하나에 속합니다. 예를 들어 귀하의 전자상거래 플랫폼의 고객 데이터 그룹은 그들이 흥미를 느낄 수 있는 제품 종류에 따라 표시합니다.당신은 이 데이터에 근거하여 당신의 모델을 훈련시키고 그것을 이용하여 어떤 새로운 고객이 구매에 흥미를 느낄 수 있는지 예측합니다. 이것은 분류 예입니다.
훈련에 참가하다
분류 임무에 대해 우리는 이미 알고 있는 라벨의 데이터에 근거하여 훈련 모델을 만들었다고 말했다.이것은 우리가 데이터가 집중된 모든 실례를 분류기에 입력하고 어떤 라벨이 있어야 하는지를 가리키는 것을 의미한다.그리고 우리는 분류기에 새로운 실례를 전달할 수 있다. 이 실례의 라벨은 이전에 본 상황에 따라 어떤 종류에 적합할지 예측할 수 없다.
natural
라는 Javascript 패키지가 있습니다. 텍스트 문서 (자연어) 를 처리하는 데 몇 개의 다른 분류기가 있습니다.다음 중 하나를 사용합니다.
const { BayesClassifier } = require('natural');
const classifier = new BayesClassifier();
// Feed documents in, labelled either 'nice' or 'nasty'
classifier.addDocument('You are lovely', 'nice');
classifier.addDocument('I really like you', 'nice');
classifier.addDocument('You are horrible', 'nasty');
classifier.addDocument('I do not like you', 'nasty');
// Train the model
classifier.train();
// Predict which label these documents should have
classifier.classify('You smell horrible');
// nasty
classifier.classify('I like your face');
// 'nice'
classifier.classify('You are nice');
// 'nice'
우리는 표기 데이터, 훈련 모델을 추가한 후에 그것을 사용하여 이전에 보지 못했던 텍스트 종류를 예측할 수 있다.대단히 좋다
성능 분석
분명히 네 개의 실례적인 데이터 집합으로 기계 학습 모델을 훈련시키는 것은 그리 유용하지 않다. 문제 분야의 경험은 매우 제한적이다.기계 학습과 빅데이터는 어느 정도 동의어이다. 왜냐하면 당신이 가진 데이터가 많을수록 당신의 모델을 더욱 잘 훈련시킬 수 있기 때문이다. 마치 사람들이 어떤 주제에 대한 경험이 많을수록 그들은 그것을 알 수 있기 때문이다.그렇다면 우리는 우리의 모델이 얼마나 똑똑한지 어떻게 알 수 있을까?
우리가 감독 학습 모델을 평가하는 방법은 데이터를 하나의 훈련집과 하나의 테스트집으로 나누어 그 중 하나를 사용하여 훈련을 한 다음에 다른 것을 사용하여 테스트를 하는 것이다.훈련에 집중된 데이터는 많을수록 좋다.
우리가 테스트 데이터의 예측을 얻었을 때, 우리는 모델이 각 항목의 표기 유형을 정확하게 예측했는지 확인할 수 있다.성공과 오류를 합치면 우리는 분류기가 얼마나 좋은지 나타낼 수 있는 숫자를 얻을 수 있다.예를 들어 처리의 전체 실례에서 얻은 성공은 우리의 정확성이다.오차는 총 오차를 나누면 오차율이다.이 그림은 예측에 비해 실제 클래스를 보여줍니다.
리얼
아름답다
더럽다
예측
아름답다
21
이.
더럽다
일.
십
다른 클래스가 아닌 한 클래스를 잘못 예측할 수 있을 때 성능 평가에 매우 가치가 있다.예를 들어 말기 질환을 검사할 때 가짜 양성을 선호하고 의사가 수동으로 영상을 검사하도록 하는 것이 좋다. 일부 환자에게 모든 정보를 잘못 제공하는 것이 아니라.
혼동 행렬
모든 데이터에 대한 훈련
가능한 한 많은 데이터를 사용하여 훈련을 하는 방법 중 하나는 사용
이다. 우리는 데이터에서 일부분을 추출하여 테스트를 하고 나머지는 훈련에 사용한다.일종의 상용 기술은 k-접합 교차 검증이다. 그 중에서 데이터 집합은 k개의 서로 다른 서브집합(k는 어떠한 수량, 심지어 데이터 집합의 실례적인 수량)으로 나뉘는데 각 서브집합은 테스트 집합으로 사용되고 나머지 부분은 훈련-이 과정을 반복하여 각 서브집합이 테스트, 즉 k회에 사용될 때까지 사용한다.
cross validation
추문 데이터 예
나는 natural
자바스크립트 패키지로 예시를 하나 썼다.트위터에서 데이터를 얻고 3개의 다른hashtag를 검색한 다음 이 3개의hashtag를 클래스로 삼아 훈련 모델의 성능을 평가한다.출력은 다음과 같습니다.
$ node gather.js
Found 93 for #javascript
Found 100 for #clojure
Found 68 for #python
$ node train.js
{ positives: 251, negatives: 10 }
Accuracy: 96.17%
Error: 3.83%
코드는 Github에 있습니다.
분류 js
기계 학습이 그렇게 쉬워요?!
알았어, 아니야. 이 예는 정말 자질구레해. 수집된 데이터에 대한 사전 처리가 없어. 텍스트에서 검색된 탭을 제거하지 않았어. ("#Python"이 포함되지 않은 파이썬에 대한 추문을 예측하기 어려울 수도 있다는 뜻이야.)이것은
(예를 들어 a 또는, 진정으로 어떤 가치도 증가하지 않은 단어를 삭제하지 않습니다. 사실상, natural
우리가 문서를 입력할 때 우리를 위해 이렇게 할 것입니다. 그러나 우리는 모른다.확장 텍스트에 단축된 URL이 없습니다. (learnjavascript.com이 t.co보다 더 중요할 것입니다.)사용하기 전에, 우리는 심지어 수집된 데이터를 보지 않을 것이다. 예를 들어 주파수를 그려서 우리가 무엇을 얻었는지 알 수 있다. 뱀 애호가들의 일부'python'추문이 그들의 유리 용기에 대해 이야기하고 있는가?
톰 래러의 말을 인용하면, 기계 학습은 하수도와 같다. 당신이 얻는 것은 당신이 무엇을 투입하느냐에 달려 있다.
문자 중지
끝내다
본고는 분류 임무를 수행하기 위해 기계 학습 모델을 어떻게 훈련시키는지 개술하고자 한다.초보자들에게는 어느 정도 수수께끼가 풀렸으면 좋겠다.
표지 사진 작성자:
Reference
이 문제에 관하여(게으른 초보자를 위한 기계 학습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/grahamlyons/machine-learning-for-the-lazy-beginner--3c1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
@rem: Being lazy here: I'm after a (machine learning) service that I can feed three separate datasets (to train with), and then I want to ask: "which dataset is this new bit of content most like".
Is there a walkthrough/cheatsheet/service for this?
const { BayesClassifier } = require('natural');
const classifier = new BayesClassifier();
// Feed documents in, labelled either 'nice' or 'nasty'
classifier.addDocument('You are lovely', 'nice');
classifier.addDocument('I really like you', 'nice');
classifier.addDocument('You are horrible', 'nasty');
classifier.addDocument('I do not like you', 'nasty');
// Train the model
classifier.train();
// Predict which label these documents should have
classifier.classify('You smell horrible');
// nasty
classifier.classify('I like your face');
// 'nice'
classifier.classify('You are nice');
// 'nice'
$ node gather.js
Found 93 for #javascript
Found 100 for #clojure
Found 68 for #python
$ node train.js
{ positives: 251, negatives: 10 }
Accuracy: 96.17%
Error: 3.83%
Reference
이 문제에 관하여(게으른 초보자를 위한 기계 학습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/grahamlyons/machine-learning-for-the-lazy-beginner--3c1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)